新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 74HC595驅動24位數碼管

        74HC595驅動24位數碼管

        作者: 時間:2012-08-10 來源:網絡 收藏

        是一個8位的數字芯片,并具有輸出鎖存和三態輸出。
        既然可以驅動了那么多的數碼管,驅動大屏點陣還是夢?絕對不是夢?

        引腳功能:

        第8腳GND,電源地。
        第16腳VCC,電源正極
        第14腳DATA,串行數據輸入口,顯示數據由此進入,必須有時鐘信號的配合才能移入。
        第13腳EN,使能口,當該引腳上為“1”時QA~QH口全部為“1”,為“0”時QA~QH的輸出由輸入的數據控制。
        第12腳STB,鎖存口,當輸入的數據在傳入寄存器后,只有供給一個鎖存信號才能將移入的數據送QA~QH口輸出。
        第11腳CLK,時鐘口,每一個時鐘信號將移入一位數據到寄存器。
        第10腳SCLR,復位口,只要有復位信號,寄存器內移入的數據將清空,顯示屏不用該腳,一般接VCC。
        第9腳DOUT,串行數據輸出端,將數據傳到下一個。
        第15、1~7腳,并行輸出口也就是驅動輸出口,驅動LED。

        附上仿真圖:
        點擊瀏覽下一頁

        驅動程序也很簡單:#includereg51.h>#includeintrins.h>#define uchar unsigned charuchar code display[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar buf[5];sbit SH=P2^0;sbit SDA=P2^1;sbit ST=P2^2;uchar count,sec,min;void delay(unsigned char i){unsigned char j=220;while(i--)while(j--);}void write_595(uchar p){uchar i,temp;temp=p;for(i=0;i8;i++){if(temp0x80) SDA=1;else SDA=0;SH=0;_nop_();_nop_();SH=1;temp=1;  }  }void init_T()   //中斷和定時器初始化{IE=0x82;  //打開總中斷,定時器T1和T0中斷TMOD=0x01;  //設定T1,T0位工作方式1TH0=0x9e;TL0=0x58;  //T0裝初值TR0=1;   //開始時鐘開始工作}void main(){uchar scan,i;init_T();while(1){buf[0]=sec%10;buf[1]=sec/10;//  buf[2]=;buf[3]=min%10;buf[4]=min/10;scan=0x01;for(i=0;i5;i++){   ST=0;ST=1;write_595(~display[buf[i]]);      write_595(~display[sec%10]);write_595(~display[sec/10]);write_595(~display[min%10]);   delay(1);P1=~scan;   scan=1;} }}void time_T0() interrupt 1    //定時器0,工作方式1,時鐘中斷{TH0=0x9e;TL0=0x58;       //T0裝初值count++;if(count==40){count=0;sec++; if(sec==60){sec=0;min++;if(min==60)min=0;}}}

        c語言相關文章:c語言教程


        c++相關文章:c++教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 云龙县| 南岸区| 华亭县| 林州市| 宝清县| 连南| 泗阳县| 洪雅县| 错那县| 兴海县| 梨树县| 满洲里市| 红安县| 钟祥市| 九江县| 泉州市| 都昌县| 旌德县| 南康市| 鹿泉市| 班玛县| 江永县| 邳州市| 贡嘎县| 宁化县| 丰原市| 元朗区| 永新县| 治多县| 凌海市| 泸定县| 平乡县| 益阳市| 平罗县| 东乌珠穆沁旗| 巴中市| 定日县| 泽库县| 阜康市| 闻喜县| 铁岭县|