|
- #include <n76e003.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define SET_BIT0 0x01
- #define SET_BIT1 0x02
- #define SET_BIT2 0x04
- sbit CLK = P1^1 ; //时钟
- sbit CS = P1^2 ; //片选
- sbit DIN = P1^0 ; //数据
- sbit BT = P0^1 ; //按键
- sbit BT1 = P0^0 ; //复位按键
- uchar shuju,shu0,shu1,shu1,shu2,shu3,shu4;
- uchar code table[]={0x7d,0x60,0x3e,0x7a,
- 0x63,0x5B,0x5f,0x70,0x7f,0x7B,0x77,0x4f,
- 0xB8,0x76,0xF8,0xE8,0x6D,0x40,0x10,0x00,0xff};
- uchar code table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//测试用,可忽略
- uchar code table2[]={0xf9,0x60,0xd6,0xf4,0x6c,0xbc,0xbe,0xe0,0xfe,0xfc};//正常情况下0-9显示
- uchar code table3[]={0x5f,0x06,0x6b,0x2f,0x36,0x3d,0x7d,0x07,0x7f,0x3f};//AIP1722取反0-9显示
- void Delay_xms(uint x)
- {
- uint i,j;
- for(i=x;i>0;i--)
- for(j=110;j>0;j--);
- }
- void Write_1722_byte(uchar DATA) //写字节
- {
- uchar i;
- CS=0;
- for(i=8;i>=1;i--)
- {
- CLK = 0; //时钟拉低,写数据
- DIN = DATA & 0x01; //DATA & 10000000,读取最高位写入max7219,最先发送高位(从左往右D7-D0)
- CLK = 1; //时钟拉高,送数据
- DATA = DATA >> 1; //左移1位,重新&运算,读取最高位写入max7219,从右往左写
- }
- }
- void Write_1722_com(uchar com) //写指令
- {
- CS=0;
- Write_1722_byte(com);
- CS=1;
- }
- void timer0() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(BT!=1) //按键
- {
- shuju++;
- while(!BT); //等待按键释放
- if(shuju==1) //1秒
- {
- shuju=0;
- shu0++; //计数
- if(shu0==10)
- {
- shu0=0;
- shu1++;
- if(shu1==10)
- {
- shu1=0;
- shu2++;
- if(shu2==10)
- {
- shu2=0;
- shu3++;
- if(shu3==10)
- {
- shu3=0;
- shu4++;
- if(shu4==10)
- {
- shu4=0;
- }
- }
- }
- }
- }
- }
- }
- if(BT1!=1)
- {
- shu0=0;
- shu1=0;
- shu2=0;
- shu3=0;
- shu4=0;
- }
- }
- void TM1722_Write_Word(uchar addr,uchar dat) //写数据
- {
- Write_1722_byte(addr);
- Write_1722_byte(dat);
- Delay_xms(10);
- CS=1;
- }
- void Init_1722(void)
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- P1M1&=~SET_BIT0;P1M2|=~SET_BIT0; //P1.0准双向
- P1M1&=~SET_BIT1;P1M2|=~SET_BIT1; //P1.1准双向
- P1M1&=~SET_BIT2;P1M2|=~SET_BIT2; //P1.2准双向
- P0M1&=~SET_BIT1;P0M2|=~SET_BIT1; //P0.1准双向
- P0M1&=~SET_BIT0;P0M2|=~SET_BIT0; //P0.0准双向
- Write_1722_com(0x00);
- Write_1722_com(0x40);
- Write_1722_com(0xc0);
- Write_1722_com(0x97); //亮度
- }
- void Init_qingping() //清屏程序
- {
- TM1722_Write_Word(0xc2,0x00);
- TM1722_Write_Word(0xc3,0x00);
- TM1722_Write_Word(0xc6,0x00);
- TM1722_Write_Word(0xc7,0x00);
- TM1722_Write_Word(0xca,0x00);
- TM1722_Write_Word(0xcb,0x00);
- TM1722_Write_Word(0xce,0x00);
- TM1722_Write_Word(0xcf,0x00);
- }
- void main(void)
- {
- Init_1722();
- Init_qingping(); //清屏程序
- Delay_xms(5);
- while(1)
- {
- TM1722_Write_Word(0xc3,table3[shu4]);
- TM1722_Write_Word(0xcf,table3[shu3]);
- TM1722_Write_Word(0xce,table3[shu2]);
- TM1722_Write_Word(0xcb,table3[shu1]);
- TM1722_Write_Word(0xc7,table3[shu0]);
- };
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|