|
折騰一天終于將TM1620芯片驅(qū)動(dòng)6位8段顯示搞出來了,共享一下,源碼傳上。
TM1620.JPG (82.65 KB, 下載次數(shù): 110)
下載附件
2018-4-8 19:07 上傳
單片機(jī)源程序如下:
- /*
- 文件名: TM1620
- 單片機(jī)型號(hào): stc90c52
- 開發(fā)環(huán)境: Keil uVision2
- 晶震頻率: 12M
- 功能:驅(qū)動(dòng)共陰LED數(shù)碼屏做計(jì)時(shí)顯示,可由按鍵控制時(shí)鐘暫停,開始,停止以及顯示0-9數(shù)字
- 驅(qū)動(dòng)6位8段數(shù)碼顯示完美,OK
- */
- #include<reg52.h>
- #include<intrins.h>
- #define nop _nop_();
- #define uchar unsigned char
- #define uint unsigned int
-
- sbit stb =P0^0; //定義片選通訊口
- sbit clk =P0^1; //定義時(shí)鐘通訊口
- sbit dio =P0^2; //定義數(shù)據(jù)輸入/輸出通訊口
-
- uchar cir_LED[6]={ 0x80,0x40,0x02,0x01,0x04,0x10};//數(shù)碼屏圓圈做動(dòng)態(tài)顯示,我的PCB接線方式不同所以需修改
- uchar show[12] = { 0x76,0x00,0xb5,0x0,0x15,0x0,0x15,0x0,0xd7,0x0,0x0,0x0};//初始化顯示“HELLO”字符代碼
- uchar TIME_seconds,seconds_2,sub_1,sub_2,shi_1,shi_2; //時(shí)間寄存器,依次從秒個(gè)位至小時(shí)十位
- uchar TIME_count; //定時(shí)中斷控制
- uchar count6=0;
- /*********************************
- 功能: TM1620寫數(shù)據(jù)
- **********************************/
- void write(uchar wr_data)
- {
- uchar i;
- stb =0; //給有效的片選信號(hào)(片選信號(hào)是低電平有效)
- nop;
- nop;
- for(i=0;i<8;i++)//開始傳送8位數(shù)據(jù),每循環(huán)一次傳送一位數(shù)據(jù)
- {
- clk =0;
- nop;
- nop;
- wr_data >>= 1;//移位數(shù)據(jù),低位在前!
- nop;
- dio = CY;
- nop;
- nop;
- clk =1;
- nop;
- }
- }
-
- /*********************************
- TM1620控制指令
- 功能: 驅(qū)動(dòng)LED屏做相應(yīng)的顯示
- **********************************/
- void xianshi(uchar show_led[12])
- {
- uchar h;
- stb = 1;
- clk = 1;
- dio = 1;
- write(0x02);//顯示模式設(shè)置,設(shè)置為6個(gè)GRID,8個(gè)SEG
- stb = 1;
- write(0x40);//寫數(shù)據(jù)到顯示寄存器,采用地址自動(dòng)加一
- stb = 1;
- write(0xc0);//顯示寄存器的00H單元開始
- for(h=0;h<12;h++)
- {
- write(show_led[h]);//給顯示寄存器送數(shù)據(jù),
- }
- stb=1;
- write(0x8b);//顯示控制參數(shù),點(diǎn)亮數(shù)碼屏幕,亮度可以通過改變低三位調(diào)節(jié)
- }
- /**********************************
- 定時(shí)中斷函數(shù)入口
- 功能: 每50MS中斷一次
- **********************************/
- void time0(void) interrupt 1 using 2
- {
- TH0=0x3c;
- TL0=0xb0;
- TIME_count++;
- if(TIME_count==20)
- {
- TIME_count = 0;
- TIME_seconds++; // 秒寄存器加1
- count6 +=1;
- show[2] = (show[2]^0x10);//數(shù)碼屏幕冒號(hào)驅(qū)動(dòng)位
- }
- }
- /*********************************
- 計(jì)時(shí)函數(shù)
- 功能: 處理時(shí)鐘顯示
- **********************************/
- void TIME_show()
- {
- uchar CODE[] ={0xD7,0x42,0xE5,0xE3,0x72,0xB3,0xB7,0xC2,0xF7,0xF3,0xF6,0x37,0x95,0x67,0xB5,0xB4};//my board seg code
- // {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- if(count6 == 6)
- {
- count6 = 0;
- }
- show[0] = cir_LED[count6];//0x0;//關(guān)閉第一位顯示
- show[2] = cir_LED[count6]; //數(shù)碼屏圓圈驅(qū)動(dòng)位
-
- show[10] = CODE[TIME_seconds];// 數(shù)碼屏上最后一個(gè)“8”
- show[8] = CODE[seconds_2]; //數(shù)碼屏倒數(shù)第二個(gè)“8”字,
- show[6] = CODE[sub_1];
- show[4] = CODE[sub_2];
- if(TIME_seconds == 10) //對(duì)時(shí)間數(shù)據(jù)進(jìn)行處理,以免溢出。
- {
- TIME_seconds = 0;
- seconds_2+=1;
- }
- if(seconds_2 == 6)
- {
- seconds_2 = 0;
- sub_1 +=1;
- }
- if(sub_1 == 10)
- {
- sub_1 = 0;
- sub_2 +=1;
- }
- if(sub_2 == 6)
- {
- sub_2 = 0; //時(shí)鐘每60分自動(dòng)清0
- sub_2 = 0;
- sub_1 = 0;
- seconds_2 = 0;
- TIME_seconds = 0;
- }
- }
- /********************************
- 延時(shí)函數(shù)
- 功能: 1ms延時(shí)
- **********************************/
- void delay_ms(uchar cyc)
- {
- //當(dāng)將=1的時(shí)候,延時(shí)1ms
- uchar ii,jj;
- for(jj=1;jj<=cyc;jj++)
- {
- for(ii=0;ii<200;ii++)
- {
- nop;
- }
- }
- }
- /*********************************
- 主函數(shù)
- **********************************/
- void main()
- {
- P0=0xff;
- P1=0xff;
- P2=0xff;
- P3=0xff;//初始化單片機(jī)I/O口
- TMOD=0x01; //定時(shí)器設(shè)置
- TH0=0x3c;
- TL0=0xb0;
- IE=0x82;
- TF0=1;
- xianshi(show);//初始化顯示“HELLO”字符
- delay_ms(230);
- delay_ms(230);
- delay_ms(230);
- delay_ms(230);
- delay_ms(230); //共延時(shí)1s
- TR0 = 1;
- //show[2] = 0x01;
- while(1)//循環(huán)
- {
- stb = 1;
- dio = 1;
- clk = 1;
- TIME_show(); //控制做計(jì)時(shí)顯示
- xianshi(show);//根據(jù)計(jì)時(shí)拆分的值,給顯示寄存器送相應(yīng)的顯示數(shù)據(jù)
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
test1.rar
(1.91 KB, 下載次數(shù): 269)
2018-4-8 19:07 上傳
點(diǎn)擊文件名下載附件
STC90C52RC 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|