4位共陽595兩片模塊數碼管
4D7Seg595.jpg (211.95 KB, 下載次數: 48)
下載附件
2021-5-8 15:39 上傳
- #include <REG52.H>
- #define uint unsigned int
- #define uchar unsigned char
- sbit sda =P2^0;
- sbit sclk=P2^2;
- sbit rclk=P2^1;
- uchar hou=12,min=32,sec=40;
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x7f};//共陽數碼管段碼"0~f-."
- uchar code wela[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//共陽數碼管位碼
- uchar dis_buf[]={0,0,0xbf,0,0,0xbf,0,0};//顯示緩存
- void rck(void)
- {
- rclk=1;
- rclk=0;
- }
- void shift(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- sda=dat&0x80;//提取最高位
- sclk=1;
- sclk=0;
- dat<<=1;
- }
- }
- void DisplayScan()
- {
- static uchar i=0;
- shift(wela[i]);//送位碼
- shift(dis_buf[i]);//送段碼
- shift(wela[i]);//送位碼
- shift(dis_buf[i+4]);//送段碼
- rck();//鎖存
- i=++i%4;//循環掃描計數
- }
- void init(void)
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TR0=1;
- ET0=1;
- EA=1;
- }
- void main(void)
- {
- uchar sec1=255;
- init();
- while(1)
- {
- if(sec1!=sec)
- {
- dis_buf[7]=table[sec%10];
- dis_buf[6]=table[sec/10];
- dis_buf[4]=table[min%10];
- dis_buf[3]=table[min/10];
- dis_buf[1]=table[hou%10];
- dis_buf[0]=table[hou/10];
- sec1=sec;
- }
- DisplayScan();
- }
- }
- void time0(void) interrupt 1
- {
- static uchar tcount;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- tcount++;
- if(tcount==20)
- {
- tcount=0;
- sec++;
- if(sec==60)
- {
- sec=0;
- min++;
- if(min==60)
- {
- min=0;
- hou++;
- if(hou==24)
- {
- hou=0;
- }
- }
- }
- }
- }
復制代碼
|