|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
哪位有用過普通I/O與74HC164來驅(qū)動LED阿? |
| 作者:piter_tan 欄目:單片機(jī) |
怎樣才能實(shí)現(xiàn)數(shù)據(jù)傳送的,是不是先把十六進(jìn)制數(shù)轉(zhuǎn)換二進(jìn)制數(shù)再傳送的!具 體是怎樣,各位大俠可以擔(dān)供個例子讓小的參考參考嗎? |
| 2樓: | >>參與討論 |
| 作者: mmax 于 2005/6/11 23:38:00 發(fā)布:
就是你說的那樣。 Data要一位一位的配合CLK發(fā)出去。 就是CPU的IO驅(qū)動能力夠不夠,可以給CLK和DATA加一個驅(qū)動,或上拉電阻。 |
|
| 3樓: | >>參與討論 |
| 作者: yadog 于 2005/6/12 10:05:00 發(fā)布:
有個比較笨的 /*數(shù)碼管顯示*/ static LONG xdata led_data; #include <Reg52.h> #include <absacc.h> #include <intrins.h> #define uint unsigned int uchar Out377=0; //#define P377 0xaf00 #define addr_led_clock 0xfe #define addr_led_data 0xf7 #define addr_led_enable 0xef void show_led(uint); uchar code led_show_code[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; //數(shù)碼管字型碼定義 void caculate_led_data(uint show_data) //計算出顯示數(shù)據(jù)的代碼 { //參數(shù)意義: which 是哪個位上 :0 : 個位 1: 十位 2 :把百位 LONG idata led_show_data = 0x00000000; //將數(shù)據(jù)清零 uchar idata i=0 ; uchar a[3]; led_data = 0x00000000; a[2]=(uchar)(show_data/100); //計算出led數(shù)據(jù)的百位 a[1]=(uchar)(show_data%100/10); //計算出十位 a[0]=(uchar)(show_data%10); //計算出個位 for(i= 0 ; i <3 ; i++) { SWITCH (a[i]) { case 0 : led_show_data |= 0x000000FC ; break; case 1 : led_show_data |= 0x00000060 ; break; case 2 : led_show_data |= 0x000000DA ; break; case 3 : led_show_data |= 0x000000F2 ; break; case 4 : led_show_data |= 0x00000066 ; break; case 5 : led_show_data |= 0x000000B6 ; break; case 6 : led_show_data |= 0x000000BE ; break; case 7 : led_show_data |= 0x000000E0 ; break; case 8 : led_show_data |= 0x000000FE ; break; case 9 : led_show_data |= 0x000000F6 ; break; } led_show_data <<=(8*i) ; led_data |= led_show_data ; led_show_data = 0x00000000; } if(a[2]== 0) led_data &= 0x0000ffff ; //如果百位為零則應(yīng)該不顯示0 led_data |= 0x00000100 ; //在對應(yīng)的位置顯示小數(shù)點(diǎn) } void set_data_to_led(void) {uchar i,j; static bit flag=0; Out377=Out377&addr_led_enable; XBYTE[P377] = Out377; for(i=0;i<32;i++) {Out377=Out377&addr_led_clock;//先讓時鐘輸出低電平 XBYTE[P377] = Out377; for(j=0;j<10;j++); //延時 if(led_data>>i&0x00000001==0x01) //如果應(yīng)該輸出高電平,輸出高 {Out377=Out377|(~addr_led_data); XBYTE[P377] = Out377; flag=1; } else {Out377=Out377&addr_led_data;//如果應(yīng)該是低,輸出低 XBYTE[P377] = Out377; flag=0; } for(j=0;j<10;j++); //延時 Out377=Out377|(~addr_led_clock);//時鐘位變高,將數(shù)據(jù)輸出到LED XBYTE[P377] = Out377; for(j=0;j<5;j++); //延時 } Out377=Out377|(~addr_led_enable); XBYTE[P377] = Out377; for(j=0;j<5;j++); //延時 } void show_led(uint show_data) { caculate_led_data(show_data); set_data_to_led(); } 歡迎大家指正 |
|
| 4樓: | >>參與討論 |
| 作者: yadog 于 2005/6/12 10:06:00 發(fā)布:
補(bǔ)充 p377接的是驅(qū)動芯片的使能 |
|
| 5樓: | >>參與討論 |
| 作者: bucker 于 2005/6/13 0:40:00 發(fā)布:
參與一下 51單片機(jī)驅(qū)動HC164可使用移位寄存器的方式,但用51的IO驅(qū)動LED的公共極就有問題,起碼亮度就不會很大。我曾經(jīng)用74HC直接驅(qū)動過共陽極的LED,不加限流電阻,當(dāng)時是模仿了市面上的搖擺運(yùn)動器的電路。 |
|
| 6樓: | >>參與討論 |
| 作者: wj8389 于 2005/6/13 1:32:00 發(fā)布:
回 164串行顯示我以前做過,現(xiàn)在我有它的匯編程序 具體如下: org 0000h ;串行顯示程序,正確 ajmp MAIN ORG 0030H MAIN:MOV SP,#60H MOV 30H,#01H ;8個LED 30到37H是數(shù)據(jù)存儲區(qū) MOV 31H,#01H MOV 32H,#01H MOV 33H,#01H MOV 34H,#02H MOV 35H,#02H MOV 36H,#02H MOV 37H,#02H MOV R2,#00H MOV R0,#30H LOOP: MOV A,@R0 MOV DPTR,#TAB MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC R0 INC R2 CJNE R2,#08H,LOOP AJMP $ TAB: DB 0C0H,0CFH,64H,46H,4BH,52H,50H DB 040H,0C7H,042H END |
|
| 7樓: | >>參與討論 |
| 作者: piter_tan 于 2005/6/13 7:36:00 發(fā)布:
謝謝各位! 謝謝各位了!哪位還有HT或義隆普通I/O口與164串行顯示的程序呀,再上傳上來給我參考參考阿! |
|
| 8樓: | >>參與討論 |
| 作者: hexiaoxiao 于 2005/6/13 8:10:00 發(fā)布:
HA 我自己做了一個,不過是8051的普通I/O通訊.你可以把它改成C.你可要謝謝我哦! DISP_SDA bit P2.0 ;;顯示74HC164的AB端串行輸入 DISP_SCL bit P2.1 ;;顯示74HC164的CLK端上升沿有效 =============================================== DISP_D: MOV R7, #08 ;顯示串輸出數(shù)據(jù)8位 MOV A,R6 ;R6里存的是8位數(shù)據(jù) LOOP: CLR C CLR DISP_SCL RLC A MOV DISP_SDA,C SETB DISP_SCL DJNZ R7,LOOP RET =============================================== |
|
| 9樓: | >>參與討論 |
| 作者: piter_tan 于 2005/6/13 9:39:00 發(fā)布:
TO:hexiaoxiao 非常感謝hexiaoxiao !可以加你為Q友嗎?我的Q號:50203123 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |