|
tm1638仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei圖片20200723140716.png (57.51 KB, 下載次數(shù): 130)
下載附件
TM1638仿真程序
2020-7-23 14:07 上傳
51hei圖片20200723140829.png (76.36 KB, 下載次數(shù): 131)
下載附件
2020-7-23 14:08 上傳
單片機(jī)源程序如下:
- #ifndef _TM1638_H
- #define _TM1638_H
- #include <REGX51.H>
- #define DATA_COMMAND 0X40
- #define DISP_COMMAND 0x80
- #define ADDR_COMMAND 0XC0
- //TM1638模塊引腳定義
- sbit DIO=P1^0;
- sbit CLK=P1^1;
- sbit STB=P1^2;
- //共陰數(shù)碼管顯示代碼
- unsigned char code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
- 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
- void TM1638_Write(unsigned char DATA) //寫(xiě)數(shù)據(jù)函數(shù)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- CLK=0;
- if(DATA&0X01)
- DIO=1;
- else
- DIO=0;
- DATA>>=1;
- CLK=1;
- }
- }
- unsigned char TM1638_Read(void) //讀數(shù)據(jù)函數(shù)
- {
- unsigned char i;
- unsigned char temp=0;
- DIO=1; //設(shè)置為輸入
- for(i=0;i<8;i++)
- {
- temp>>=1;
- CLK=0;
- if(DIO)
- temp|=0x80;
- CLK=1;
- }
- return temp;
- }
- void Write_COM(unsigned char cmd) //發(fā)送命令字
- {
- STB=0;
- TM1638_Write(cmd);
- STB=1;
- }
- unsigned char Read_key(void)
- {
- unsigned char c[4],i,key_value=0;
- STB=0;
- TM1638_Write(0x42); //讀鍵掃數(shù)據(jù) 命令
- for(i=0;i<4;i++)
- c[i]=TM1638_Read();
- STB=1; //4個(gè)字節(jié)數(shù)據(jù)合成一個(gè)字節(jié)
- for(i=0;i<4;i++)
- key_value|=c[i]<<i;
- for(i=0;i<8;i++)
- if((0x01<<i)==key_value)
- break;
- return i;
- }
- void Write_DATA(unsigned char add,unsigned char DATA) //指定地址寫(xiě)入數(shù)據(jù)
- {
- Write_COM(0x44);
- STB=0;
- TM1638_Write(0xc0|add);
- TM1638_Write(DATA);
- STB=1;
- }
- /*
- void Write_oneLED(unsigned char num,unsigned char flag) //單獨(dú)控制一個(gè)LED函數(shù),num為需要控制的led序號(hào),flag為0時(shí)熄滅,不為0時(shí)點(diǎn)亮
- {
- if(flag)
- Write_DATA(2*num+1,1);
- else
- Write_DATA(2*num+1,0);
- } */
- void Write_allLED(unsigned char LED_flag) //控制全部LED函數(shù),LED_flag表示各個(gè)LED狀態(tài)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- if(LED_flag&(1<<i))
- //Write_DATA(2*i+1,3);
- Write_DATA(2*i+1,1);
- else
- Write_DATA(2*i+1,0);
- }
- }
- //TM1638初始化函數(shù)
- void init_TM1638(void)
- {
- unsigned char i;
- Write_COM(0x8b); //亮度 (0x88-0x8f)8級(jí)亮度可調(diào)
- Write_COM(0x40); //采用地址自動(dòng)加1
- STB=0; //
- TM1638_Write(0xc0); //設(shè)置起始地址
- for(i=0;i<16;i++) //傳送16個(gè)字節(jié)的數(shù)據(jù)
- TM1638_Write(0x00);
- STB=1;
- }
- #endif
復(fù)制代碼
TM1638.DLL文件要放到MODELS目錄里面才能仿真,還有LIBRARY目錄的文件也要放進(jìn)去,要用Proteus7.8版本:
TM1638C51仿真和程序.zip
(86.13 KB, 下載次數(shù): 216)
2020-7-23 14:10 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|