|
電子專業(yè)設(shè)計(jì)
51單片機(jī)+MAX7219做數(shù)碼管顯示,8位數(shù)碼管,0-9循環(huán)顯示
附件內(nèi)有protues仿真電路和源碼
MAX7219是美國MAXIM(美信)公司生產(chǎn)的串行輸入/輸出共陰極顯示驅(qū)動(dòng)器。它采用了3線串行接口,傳送速率達(dá)10M數(shù)據(jù),能驅(qū)動(dòng)8位七段數(shù)字型LED或條形顯示器或64只獨(dú)立的LED。MAX7219內(nèi)置BCD碼譯碼器、多路掃描電路、段和數(shù)字驅(qū)動(dòng)器和存儲(chǔ)每一位的8*8靜態(tài)RAM。能方便的用模擬或數(shù)字方法控制段電流的大小,改變顯示器的數(shù)量;能進(jìn)入低功耗的關(guān)斷模式(僅消耗150uA電流,數(shù)據(jù)保留);能方便地進(jìn)行級(jí)聯(lián)。可廣泛用于條形圖顯示、七段顯示、工業(yè)控制、儀器儀表面板等領(lǐng)域。而且其最重要的一點(diǎn)是,每個(gè)顯示位都能個(gè)別尋址和刷新,而不需要重寫其他的顯示位,這使得軟件編程十分簡單且靈活。MAX719后綴表示其封裝方式和工作溫度,如表所示:
單片機(jī)源程序如下:
- /**********************************************************************/
- #include <reg52.h>
- #include <stdio.h>
- #define uchar unsigned char
- void delayms(unsigned int ms);
- /************************************************************************
- I/O定義
- *************************************************************************/
- sbit DIN=P0^0;//數(shù)據(jù)輸入端
- sbit LOAD=P0^1;//地址鎖存端
- sbit CLK=P0^2; //時(shí)鐘輸入端
- sbit P2_0=P2^0;
- sbit P2_1=P2^1;
- sbit P2_2=P2^2;
- sbit P2_5=P2^5;
- sbit P2_6=P2^6;
- sbit P2_7=P2^7;
- /************************************************************************
- 數(shù)據(jù)輸入
- *************************************************************************/
- void send(uchar add,uchar dat)
- {
- uchar ADS,i,j;
- CLK=0;
- LOAD=0;
- DIN=0;
- i=4;
- while(i<16)
- {
- if(i<8)
- {
- ADS=add;
- }
- else
- {
- ADS=dat;
- }
- for(j=8;j>=1;j--)
- {
- if((ADS&0x80)==0)
- {
- DIN=0 ;
- }
- else
- {
- DIN=1;
- }
- ADS=ADS<<1;
- CLK=1;
- CLK=0;
- }
- i=i+8;
- }
- LOAD=1;
- }
- /************************************************************************
- 主函數(shù)
- *************************************************************************/
- void main(void)
- {
- uchar d=0;
-
- send(0x0c,0x01);//正常狀態(tài)
- send(0x0b,0x07);//設(shè)置掃描范圍DIG0-7
- send(0x0a,0x05);//設(shè)置亮度11/32
- send(0x09,0xff);//采用譯碼方式
- while(1)
- {
- for(d=0;d<10;d++)
- {
- switch(d)
- {
- case 0:send(0x01,0x00);send(0x02,0x01);send(0x03,0x02);send(0x04,0x03);send(0x05,0x04);send(0x06,0x05);send(0x07,0x06);send(0x08,0x07);break;
- case 1:send(0x01,0x01);send(0x02,0x02);send(0x03,0x03);send(0x04,0x04);send(0x05,0x05);send(0x06,0x06);send(0x07,0x07);send(0x08,0x08);break;
- case 2:send(0x01,0x02);send(0x02,0x03);send(0x03,0x04);send(0x04,0x05);send(0x05,0x06);send(0x06,0x07);send(0x07,0x08);send(0x08,0x09);break;
- case 3:send(0x01,0x03);send(0x02,0x04);send(0x03,0x05);send(0x04,0x06);send(0x05,0x07);send(0x06,0x08);send(0x07,0x09);send(0x08,0x00);break;
- case 4:send(0x01,0x04);send(0x02,0x05);send(0x03,0x06);send(0x04,0x07);send(0x05,0x08);send(0x06,0x09);send(0x07,0x00);send(0x08,0x01);break;
- case 5:send(0x01,0x05);send(0x02,0x06);send(0x03,0x07);send(0x04,0x08);send(0x05,0x09);send(0x06,0x00);send(0x07,0x01);send(0x08,0x02);break;
- case 6:send(0x01,0x06);send(0x02,0x07);send(0x03,0x08);send(0x04,0x09);send(0x05,0x00);send(0x06,0x01);send(0x07,0x02);send(0x08,0x03);break;
- case 7:send(0x01,0x07);send(0x02,0x08);send(0x03,0x09);send(0x04,0x00);send(0x05,0x01);send(0x06,0x02);send(0x07,0x03);send(0x08,0x04);break;
- case 8:send(0x01,0x08);send(0x02,0x09);send(0x03,0x00);send(0x04,0x01);send(0x05,0x02);send(0x06,0x03);send(0x07,0x04);send(0x08,0x05);break;
- case 9:send(0x01,0x09);send(0x02,0x00);send(0x03,0x01);send(0x04,0x02);send(0x05,0x03);send(0x06,0x04);send(0x07,0x05);send(0x08,0x06);break;
- default:send(0x01,0x00);send(0x02,0x00);send(0x03,0x00);send(0x04,0x00);send(0x05,0x00);send(0x06,0x00);send(0x07,0x00);send(0x08,0x00);break;
- }
- delayms(1000);
- // send(0x01,0x00);send(0x02,0x02);
- // send(0x01,0x04);send(0x02,0x07);
- // send(0x01,0x08);send(0x02,0x05);
- }
- }
- }
- void delayms(unsigned int ms)
- {
- unsigned int i,j;
- for(j=0;j<ms;j++)
- for(i=0;i<115;i++);
- }
復(fù)制代碼
所有資料51hei提供下載:
MAX7219應(yīng)用.zip
(320.77 KB, 下載次數(shù): 30)
2019-6-9 18:47 上傳
點(diǎn)擊文件名下載附件
|
|