線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:6205
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

hctl-2020的測試使用

答題得分者是:addn
love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-14 16:56:36 IP:163.23.xxx.xxx 訂閱
最近在測試hctl-2022.D0~D7我接LED來看它的輸出訊號變化
SE1.SE2.OE接指撥開關來調整H跟L
AB也有接光學.但是卻都沒有反應@@
有人可以PO測試電路之類的方法教教我嗎?
謝謝^^

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-12-15 10:28:17 IP:211.75.xxx.xxx 未訂閱
Please.. Datasheet 看完它...OK?
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-12-15 18:43:51 IP:218.162.xxx.xxx 訂閱
data sheet有看過
但是不知道為什麼接出來就是不會動
我是按照datasheet上面的需求去接線的
那上面好像沒有接線圖的樣子
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-12-15 21:18:49 IP:218.171.xxx.xxx 訂閱
您好
如果你一定要用指撥開關來模擬讀取時序的話
最好經過反彈跳處理後在接到IC輸入
建議用單晶片來做會比用指撥開關手動方式來的好
要注意的是讀取動作一定要如DATASHEET上面所列Figure15
1~5之程序步驟完整做完,否則內部栓鎖訊號會無法正常解除


版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-12-15 21:23:21 IP:219.70.xxx.xxx 未訂閱
OE, SEL, RST, CLK 你都怎麼接?
D0~D7 輸出直接接 LED?
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-12-17 18:04:15 IP:218.174.xxx.xxx 訂閱
D0~D7的輸出我接10K歐姆在接LED
CLK我用信號產生器.至於OE跟SEL我是用電壓去輸入.RET沒接0.0
這樣可以嗎?
doubletime
一般會員


發表:4
回覆:17
積分:9
註冊:2004-11-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-12-17 20:59:24 IP:218.169.xxx.xxx 訂閱
------
http://tw.myblog.yahoo.com/sn903209ss
您的指教是我成長的動力!
love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-12-20 16:46:06 IP:163.23.xxx.xxx 訂閱
如果我要用8051去控制SEL跟OE的話.有人可以指導我一下嗎@@
大致上要如何接到SEL1.SEL2跟OE呢?
謝謝各位!
doubletime
一般會員


發表:4
回覆:17
積分:9
註冊:2004-11-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2006-12-20 18:51:41 IP:61.229.xxx.xxx 訂閱
不知道您那裡看不懂
至於小弟比較看不懂的是,不是就只有OE與SEL嗎? 怎麼會有SEL1與SEL2?讓小弟很不解
我想照著ADDN大大的說法應該很清楚才是,OE與SEL需照著時序才能動作,不然您可以再看一次DATASHEET或許會有更多的收獲才是
------
http://tw.myblog.yahoo.com/sn903209ss
您的指教是我成長的動力!
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2006-12-20 20:08:10 IP:218.171.xxx.xxx 訂閱
您好
HCTL-2016/2020計數器16位元
HCTL-2022/2032計數器為32位元
所以2022/2032會有SEL1,SEL2來選擇要讀取哪一個BYTE
基本上要用單晶片來控制讀取2022是很簡單的,可是要看的懂他的時序
所以建議再將他的DATASHEET好好的K完,並徹底理解他的內容


love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2006-12-20 23:54:03 IP:218.170.xxx.xxx 訂閱
你好.addn
datasheet.圖15的時序我有看了.如果我用8051來去給HCTL-2022的SEL1.2還有OE的時序這樣可以嗎?
不好意思..剛開始研究這方面的東西所以問題好多@@
有沒有這方面的書可以介紹一下呢?
謝謝^

addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#12 引用回覆 回覆 發表時間:2006-12-21 07:30:32 IP:218.171.xxx.xxx 訂閱
您好
可以將D0~D7接到P0
SEL1,SEL2,OE接到P1,P2 或 P3的任何一隻腳
然後就寫程式造出讀取波形
我是不曉得有沒有介紹這方面的書,你可以找看看


love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#13 引用回覆 回覆 發表時間:2006-12-21 11:45:04 IP:163.23.xxx.xxx 訂閱
你好.addn
你能教我最簡單的測試HCTL-2022的方法嗎?
因為我目前還是沒有辦法是hctl-2022有動作.
謝謝
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#14 引用回覆 回覆 發表時間:2006-12-21 20:06:50 IP:218.171.xxx.xxx 訂閱
您好
那回到用手動的方式來測試了
SEL1,SEL2,/OE接指撥開關(要經除彈跳處理),平時要維持HI
/RST接指撥開關,power on後先reset一下,平時為HI
D0~D7最好接一栓鎖器在接LED,直接接LED應該也可以,不過我沒試過
測試流程
POWER ON->RESET->轉動光盤產生AB相訊號->
用指撥開關產生讀取動作(觀察LED值有無產生相對的增減動作)
不過這種手動不好因為讀取程序有好幾個動作,用指撥開關來產生時序
往往會忘了現在是做到哪一個動作了,實際做過你就知道了
所以才會建議用單晶片來做,
大概就這樣你參考看看





love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#15 引用回覆 回覆 發表時間:2007-01-03 15:30:24 IP:163.23.xxx.xxx 訂閱
你好..addn
用8051去控制的話.那要怎麼給SE1.SE2.跟OE的訊號
你可以大概打個範例給我看嗎?
因為我用一般的方波好像不行
謝謝你
doubletime
一般會員


發表:4
回覆:17
積分:9
註冊:2004-11-27

發送簡訊給我
#16 引用回覆 回覆 發表時間:2007-01-03 19:25:39 IP:61.229.xxx.xxx 訂閱
就照著datasheet裡面有時序去跑
這樣你的8051就能收到了,那怎麼測試你有沒有收到就用lcd或是led來測試資料是否正確嚕
------
http://tw.myblog.yahoo.com/sn903209ss
您的指教是我成長的動力!
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#17 引用回覆 回覆 發表時間:2007-01-03 19:48:41 IP:218.171.xxx.xxx 訂閱
您好
請參考下列程式
副程式讀取2022計數值,然後儲存於記憶體中
你的測試主程式要在適當的時候去CALL副程式
然後把記憶體的內容顯示出來就好了
顯示的方式有LED,LCD,或用UART送出去再由電腦接手顯示......
方法很多
----------------------------------------------------------------------------
2022 PIN <->51 PIN
SEL1 <-> P3.5
SEL2 <-> P3.6
OE <-> P3.7

D0~D7<-> P0~P7
--------------------------------------------------------------------------
51 CODE
Buf_MSB EQU 20H
Buf_2ND EQU 21H
Buf_3RD EQU 22H
Buf_LSB EQU 23H
;-------------------------
SEL1 REG P3.5
SEL2 REG P3.6
OE REG P3.7
;-------------------------
.
.
.
ORG 000H
.
.
CLR SEL1
SETB SEL2
SETB OE
.
.
.
;----------------------------------
;讀取計數值副程式
;將32Bit計數值儲存於資料記憶體位置
;20H,21H,22H,23H
;----------------------------------
Read_Count:

CLR OE
MOV Buf_MSB,P0

SETB SEL1
SETB SEL2
MOV Buf_2ND,P0

CLR SEL1
CLR SEL2
MOV Buf_3RD,P0

SETB SEL1
CLR SEL2
MOV Buf_LSB,P0

SETB OE
CLR SEL1
SETB SEL2

RET

love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#18 引用回覆 回覆 發表時間:2007-01-04 15:09:33 IP:163.23.xxx.xxx 訂閱
你好 addn
可以打C語言的範例嗎@@
因為我看不太懂組語~"~
謝謝
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#19 引用回覆 回覆 發表時間:2007-01-04 19:37:55 IP:218.171.xxx.xxx 訂閱
您好
SEL1,SEL2,OE用sbit宣告
Buf_MSB,Buf_2ND,Buf_3RD,Buf_LSB用unsigned char宣告
main()
.
.
.
SEL1=0;
SEL2=1;
OE=1;
.
.
.
void Read_Count(void)
{
OE=0;
Buf_MSB=P0;

SEL1=1;
SEL2=1;
Buf_2ND=P0;

SEL1=0;
SEL2=0;
Buf_3RD=P0;

SEL1=1;
SEL2=0;
Buf_LSB=P0;

OE=1;
SEL1=0;
SEL2=1;

}
.
.

love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#20 引用回覆 回覆 發表時間:2007-01-09 17:22:08 IP:163.23.xxx.xxx 訂閱
你好 addn:
我用你的程式稍為去修改了一下.
但是PO輸出沒有反應耶
請問一下再呼叫副程式那邊要怎麼呼叫呢?
還有我RST腳可以接地就好嗎?
然後HCTL2022的CLK我也用8051去產生
以下是我的主程式請你幫我看一下可以嗎?
main()
{
SEL1=0;
SEL2=1;
OE=1;
while (1)
{
P2_0=!P2_0;
delay_1m(1);
}
}
我硬體接線是PO接D0-D7在接到LCD燈

addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#21 引用回覆 回覆 發表時間:2007-01-09 20:31:32 IP:218.171.xxx.xxx 訂閱
您好
reset不能直接接地,建議用51的接腳來控制,平時要為HI
clk不能用51來產生,用震盪器或訊號產生器來當他的clk訊號源吧,
建議10M~33M,最好大大於1/(51的指令週期)
實際上還要考慮你的AB相訊號有多快,而去選用
副程式要放哪裡,就看你的寫法啊 EX:可以1秒去讀一次計數值然後顯示
可以把你寫的程式及電路完整PO上來嗎

love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#22 引用回覆 回覆 發表時間:2007-01-10 16:09:47 IP:163.23.xxx.xxx 訂閱
感謝各位前輩的幫忙
我做成功了^^
謝謝各位!!
love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#23 引用回覆 回覆 發表時間:2007-01-10 18:01:40 IP:163.23.xxx.xxx 訂閱
你好 addn:
我的光學尺在移動的時候我的LED似乎沒辦法可以正確的讀資料
以下是我的程式:
main()
{
SEL1=0;
SEL2=1;
OE=1;
delay_1m(1);
Read_Count();
}
void Read_Count(void)
{
OE=0;
Buf_MSB=P0;

SEL1=1;
SEL2=1;
Buf_2nd=P0;

SEL1=0;
SEL2=0;
Buf_3nd=P0;
SEL1=1;
SEL2=0;
Buf_LSB=P0;
SEL1=0;
SEL2=1;
OE=1;
}
void delay_1m(unsigned int dly)
{
int count;
while(dly > 0 )
{
count=120;
while (count>0) count--;
dly--;
}
}

LED顯示出來都是一起亮感覺無法抓到正確的訊號
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#24 引用回覆 回覆 發表時間:2007-01-10 19:43:15 IP:218.171.xxx.xxx 訂閱
您好
1.
SEL1,SEL2,OE,Buf_MSB...等怎沒看到你宣告定義呢,這樣compile會過嗎?
2.
void Read_Count(void)副程式只是將計數值存在Buf_MSB,..等記憶體位置中
你要自己寫程式去將Buf_MSB,...等內容用LED顯示出來
3.
由你的主程式看起來並沒有用迴圈,程式只執行一次就結束了,這樣也不對



love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#25 引用回覆 回覆 發表時間:2007-01-12 10:38:59 IP:163.23.xxx.xxx 訂閱
你好 addn:
不好意思.上次程式沒貼全部給你.以下是我完整的程式:
#include
sbit SEL1=0x90;
sbit SEL2=0x91;
sbit OE=0x92;
unsigned char Buf_MSB;
unsigned char Buf_2nd;
unsigned char Buf_3nd;
unsigned char Buf_LSB;
void delay_1m(unsigned int dly ) ;
void Read_Count(void);
main()
{
loop:
SEL1=0;
SEL2=1;
OE=1;
delay_1m(1);
Read_Count();
goto loop;
}
void Read_Count(void)
{
OE=0;
Buf_MSB=P0;

SEL1=1;
SEL2=1;
Buf_2nd=P0;

SEL1=0;
SEL2=0;
Buf_3nd=P0;
SEL1=1;
SEL2=0;
Buf_LSB=P0;

OE=1;
SEL1=0;
SEL2=1;

}
void delay_1m(unsigned int dly)
{
int count;
while(dly > 0 )
{
count=120;
while (count>0) count--;
dly--;
}
}

至於你說的顯示MSB.2nd......等.我有點不懂什麼意思><
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#26 引用回覆 回覆 發表時間:2007-01-12 16:51:12 IP:218.171.xxx.xxx 訂閱
您好
請問你有去了解讀取計數值副程式在做什麼動作嗎?
Buf_MSB,Buf_2nd,Buf_3nd,Buf_LSB四個變數在程式裡的作用是什麼知道嗎?
把它弄懂你的問題就解決了

love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#27 引用回覆 回覆 發表時間:2007-01-16 14:47:02 IP:163.23.xxx.xxx 訂閱
你好 addn:
我大概知道怎麼使用囉^^
謝謝.
love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#28 引用回覆 回覆 發表時間:2007-01-16 17:49:30 IP:218.170.xxx.xxx 訂閱
如果我要產生一個可以驅動hctl-2022的CLK
可以敎我怎麼接一個方波電路嗎?
頻率大概在10M以上的.使用石英震盪器的.
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#29 引用回覆 回覆 發表時間:2007-01-16 21:55:56 IP:218.171.xxx.xxx 訂閱
您好
就用石英震盪器就行了,方形矩形四隻腳那一種,一般電料行都可以買的到
不用自己在再用電路去兜


love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#30 引用回覆 回覆 發表時間:2007-01-17 01:07:15 IP:218.170.xxx.xxx 訂閱
謝謝你^_^

love73522
一般會員


發表:1
回覆:15
積分:3
註冊:2006-12-14

發送簡訊給我
#31 引用回覆 回覆 發表時間:2007-01-31 11:14:11 IP:163.23.xxx.xxx 訂閱
你好 addn:
我之前有跟你問過8051跟hctl2022的問題
我接7段顯示器怎麼好像都不會驅動
以下是我的程式.請你幫我看看問題出在哪><
#include
sbit SEL1=0x90;
sbit SEL2=0x91;
sbit OE=0x92;
int i=0,scan;
static const char Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char Buf_MSB;
unsigned char Buf_2nd;
unsigned char Buf_3nd;
unsigned char Buf_LSB;
void delay(unsigned int dly ) ;
void Read_Count(void);
main()
{
while(1)
{
SEL1=0;
SEL2=1;
OE=1;
delay(1);
Read_Count();
scan=200;
while(scan>0)
{
i=(Buf_MSB & 0x00f);
P3=Table[i];
P2=0xfe;
delay(100);

i=(Buf_MSB & 0x00f0)>>4;
P3=Table[i];
P2=0xfd;
delay(100);

i=(Buf_MSB & 0x0f00)>>8;
P3=Table[i];
P2=0xfb;
delay(100);

i=(Buf_MSB & 0xf000)>>12 ;
P3=Table[i];
P2=0xf7;
delay(100);
scan--;
}
}
}

void Read_Count(void)
{

OE=0;
Buf_MSB=P0;

SEL1=1;
SEL2=1;
Buf_2nd=P0;

SEL1=0;
SEL2=0;
Buf_3nd=P0;

SEL1=1;
SEL2=0;
Buf_LSB=P0;

OE=1;

}

void delay(unsigned int dly)
{
int count;
while(dly > 0 )
{
count=120;
while (count>0) count--;
dly--;
}

麻煩你指導一下
剛開始學做單晶片控制遇到好多問題
[<<] [1] [2] [>>]
系統時間:2024-05-19 22:01:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!