全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2760
推到 Plurk!
推到 Facebook!

Hctl-2020晶片測試

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


發表:1
回覆:6
積分:1
註冊:2007-12-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-06 18:25:17 IP:140.124.xxx.xxx 訂閱
請各位大大幫忙看一下:
在hctl2020上,再d0~d7各串接一顆電阻 一顆led,OE接地,SEL
接5V,110592的石英震盪器一隻接CLK另一隻接地,CHA、CHB接encoder(MES-21-1000P,解析度為1000P)
VDD接5V,VSS接地,轉encoder之後,LED仍不會有動作,請問是哪裡有問題?
感謝各位大大
addn
高階會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-06 18:55:47 IP:218.171.xxx.xxx 訂閱
boomexist
一般會員


發表:1
回覆:6
積分:1
註冊:2007-12-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-06 20:07:30 IP:140.124.xxx.xxx 訂閱
您好addn:
謝謝您的回答。我想先測試低8位元的訊息,若用8051控制,將2020的D0~D7接電阻在接LED
P1.0=1接SEL,P1.1=0接OE,P1.2=1接RES,2020的CLK接110592石英震盪器
VCC接5V,VSS接地。但是LED還是沒辦法閃爍,請問這是哪邊出問題?
謝謝
addn
高階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-06 20:39:52 IP:218.171.xxx.xxx 訂閱
您好
OE不能一直是0接地
datasheet上說的很清楚
要讀取的計數器值,並不是直接由計數器輸出
而是經過栓鎖器將計數值鎖住後再經由D7~D0輸出

如果一直讓OE為0,而沒照時序操作的話
栓鎖器將一直鎖住舊值,當然值就不會更新也就不會變化

建議先將datasheet詳細研讀理解後
再開始實驗才會事半功倍

編輯記錄
addn 重新編輯於 2007-12-06 20:43:03, 註解 無‧
boomexist
一般會員


發表:1
回覆:6
積分:1
註冊:2007-12-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-12-07 20:33:41 IP:140.124.xxx.xxx 訂閱
很謝謝您回覆 addn
因為我也是看到addn回覆給別人的那篇所以才照接看看!!請問一下,clk真的只要接石英震盪器就好了嗎不用外接什麼電阻或電容嗎??我的是兩隻腳的所以我一隻接2020的clk第二隻腳而石英震盪器的另一隻接地!!而我現在還沒轉動encoder而燈就會一直閃爍請問是哪裡有問題!!還有datesheet中提到OE為0,SEL為1時會產生RESET的動作,請問這是真的會有產生嗎?
還有addn所說的考慮你的AB相訊號有快那是怎麼知道他多快用示波器測試嗎??
addn
高階會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-12-07 21:32:34 IP:218.171.xxx.xxx 訂閱
您好

1.我說的石英震盪器是四支腳的那種,不是石英晶體請參考
http://delphi.ktop.com.tw/board.php?cid=173&fid=1167&tid=67466

2.OE,SEL,CLK的關西就如表figure10所示,inhibit signal為1時表示鎖住latch
為0時則解除latch,分析一下figure11那個圖就可了解其動作原理
讀值時需完整跑完step1->step2->step3程序
figure10表裡說的RESET是將figure11輸出清為0的意思,不是計數器的RESET

3.可以用示波器來觀測,讓馬達跑你系統的最快速度,然後觀測encoder的CHA or CHB

還是建議將DATASHEET看懂先

編輯記錄
addn 重新編輯於 2007-12-07 21:39:36, 註解 無‧
boomexist
一般會員


發表:1
回覆:6
積分:1
註冊:2007-12-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-12-08 17:48:47 IP:140.124.xxx.xxx 訂閱
你好!!addn
我們有用KeilC51寫程式了!!但感覺還是怪怪的不知哪有錯您可以幫我們看一下哪有錯嗎
我們用2020D0~D7接至8051P2,由P0顯示,2020 sel腳位接至8051 P1,2020 oe腳位接至8051 P2,2020 clk街一顆2隻腳石英震盪器(我們目前只有兩隻腳的,clk接石英一隻腳再串接30P電容後接地,石英另一隻腳也串接30P電容後接地)因為目前不知是電路還是程式方面哪個有問題!!!
#include
#include
#define baudrate 4800
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
int i;
int ED[20];
void com_initalize(void)
{
TMOD=0x21;
TH1=256-(28800/(baudrate));
TR1=1;
SCON=0x52;
}
void IntTimer(void)
{
TL0=(65536-100)%6;
TH0=(65536-100)/256;
TR0=1;
}
void main(void)
{
P1_0=1; //SEL
P1_1=1; //OE
P1_2=1; //RESET
P1_2=0;
P1_2=1;
P1_3=1; //test
com_initalize();
IntTimer();
IE=0xA2;

while(1)
{
//P1_3=0;
P1_1=0; //當oe等於0存值
ED[0]=P2_0;//我把2022的D0~D7先接至8051的P2
ED[1]=P2_1;
ED[2]=P2_2;
ED[3]=P2_3;
ED[4]=P2_4;
ED[5]=P2_5;
ED[6]=P2_6;
ED[7]=P2_7;
P0_0=ED[0];//之後用8051的P0先顯示低八位元
P0_1=ED[1];
P0_2=ED[2];
P0_3=ED[3];
P0_4=ED[4];
P0_5=ED[5];
P0_6=ED[6];
P0_7=ED[7];
P1_0=0; //當P1為0時
ED[8]=P2_0; //我把2022的D0~D7先接至8051的P2
ED[9]=P2_1;
ED[10]=P2_2;
ED[11]=P2_3;
ED[12]=P2_4;
ED[13]=P2_5;
ED[14]=P2_6;
ED[15]=P2_7;
P0_0=ED[8]; //之後用8051的P0先顯示高八位元
P0_1=ED[9];
P0_2=ED[10];
P0_3=ED[11];
P0_4=ED[12];
P0_5=ED[13];
P0_6=ED[14];
P0_7=ED[15];
P1_1=1;
//P1_3=0;
for (i=0;i<=10000;i )
{}
}
}
addn
高階會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-12-08 22:23:50 IP:218.171.xxx.xxx 訂閱
您好
已經告訴你不能用石英晶體(兩隻腳的那種),不曉為何執意要如此接,2020不是8051不能這樣接
建議將datasheet讀懂及將51的基礎學好
自然就能解決你的問題
boomexist
一般會員


發表:1
回覆:6
積分:1
註冊:2007-12-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-12-08 22:42:36 IP:140.124.xxx.xxx 訂閱
你好addn
明天我會去買石英震盪器(4隻腳),我有看果你PO的資料,那請問一下他的型號是多少?在光華買的到嗎?
很抱歉!因為才剛進入這個領域所以很多東西都不會.
addn
高階會員


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-12-08 23:20:01 IP:218.171.xxx.xxx 訂閱
您好
一般電子材料行都買的到,沒有型號一般都是告訴店員你要幾M HZ的
看你應該還是學生吧,有問題其實找老師請教是最快最有效率的方式
尤其是初學者,要善用這資源
boomexist
一般會員


發表:1
回覆:6
積分:1
註冊:2007-12-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-12-09 16:14:49 IP:140.124.xxx.xxx 訂閱
你好addn
我想問一下,四隻腳的石英震盪器C/N腳位是要接至HCTL2020的哪隻腳,而石英震盪器output腳位是接在HCTL2020的哪隻腳位?
還有我8051是用11.0592MHZ的石英晶體,那您PO那邊說要大大於1/(51的指令週期)
那我可以用11.0592MHZ以上的石英震盪器接至HCTL2020嗎?
謝謝!!!
addn
高階會員


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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-12-09 19:02:03 IP:218.171.xxx.xxx 訂閱
您好
1.N/C表示不用接,OUTPUT接至2020 CLK
2.DATASHEET上有說可接到14M HZ
boomexist
一般會員


發表:1
回覆:6
積分:1
註冊:2007-12-06

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-12-09 21:39:39 IP:140.124.xxx.xxx 訂閱
你好addn
由於我們買完石英震盪器才看到您的回覆所以我們買到的是20MHZ(不知道會不會跟您說的14MHZ有差)很謝謝你,現在我們可以讓燈閃爍了
但只用低八位元顯示而若用高八位元顯示以下是我寫的程式您可以幫我們看一下這樣寫OK嗎?

/*之前的是只用低八位元,而在 /*到*/之間是高八位元請問這樣寫對嗎
還有抱歉我還是有點不懂您說的RESET是什麼意思,以及DATASHEET上說的RESET是說HCTL2020內部邏輯會RESET還是我們要用HCTL20202的RESET腳位給他在那個時各輸入RESET呢?

#include
#include
#define baudrate 4800
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
int i;
int ED[20];
void com_initalize(void)
{
TMOD=0x21;
TH1=256-(28800/(baudrate));
TR1=1;
SCON=0x52;
}
void IntTimer(void)
{
TL0=(65536-100)%6;
TH0=(65536-100)/256;
TR0=1;
}
void main(void)
{
P1_0=1; //SEL
P1_1=1; //OE
P1_2=1; //RES
P1_2=0;
P1_2=1;
P1_3=1; //test
com_initalize();
IntTimer();
IE=0xA2;

while(1)
{
P1_3=0;
for (i=0;i<=10000;i )
{}
P1_1=0; //當oe等於0存值
ED[0]=P2_0;//我把2020的D0~D7先接至8051的P2
ED[1]=P2_1;
ED[2]=P2_2;
ED[3]=P2_3;
ED[4]=P2_4;
ED[5]=P2_5;
ED[6]=P2_6;
ED[7]=P2_7;
P0_0=ED[0];//之後用8051的P0先顯示低八位元
P0_1=ED[1];
P0_2=ED[2];
P0_3=ED[3];
P0_4=ED[4];
P0_5=ED[5];
P0_6=ED[6];
P0_7=ED[7];
/*P1_0=0; //當P1為0時
ED[8]=P2_0; //我把2020的D0~D7先接至8051的P2
ED[9]=P2_1;
ED[10]=P2_2;
ED[11]=P2_3;
ED[12]=P2_4;
ED[13]=P2_5;
ED[14]=P2_6;
ED[15]=P2_7;
P0_0=ED[8]; //之後用8051的P0先顯示高八位元
P0_1=ED[9];
P0_2=ED[10];
P0_3=ED[11];
P0_4=ED[12];
P0_5=ED[13];
P0_6=ED[14];
P0_7=ED[15];
P1_2=0;
P1_2=1;
P1_0=1;*/
P1_1=1;
P1_3=1;
for (i=0;i<=10000;i )
{}
}
}
addn
高階會員


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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2007-12-10 00:08:24 IP:218.171.xxx.xxx 訂閱
您好
datasheet上最高頻率為14M HZ
不建議超過這個頻率
系統時間:2024-05-08 0:30:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!