基于51单片机的74HC595时钟显示
单片机源程序如下:
- #include <REGX51.H>
- #define uint unsigned int
- #define uchar unsigned char
- sbit sda=P2^0;
- sbit sclk=P2^2;
- sbit rclk=P2^1;
- uchar hou,min,sec;
- uchar code table[]= { 0x84, 0xF5, 0x4C, 0x64, 0x35, 0x26, 0x06, 0xF4, 0x04, 0x24, 0x14, 0x07, 0x8E, 0x45, 0x0E, 0x1E, 0x7F, 0xFB, 0xFF };
- void rck(void)
- {
- rclk=0;
- rclk=1;
- rclk=0;
- }
- void shift(uchar dat)
- {
- uchar i;
- rclk=0;
- dat=table[dat];
- for(i=0;i<8;i++)
- {
- sclk=0;
- sda=(dat<<i)&0x80;
- sclk=1;
- }
- }
- 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)
- {
- shift(sec%10);
- shift(sec/10);
- shift(16);
- shift(min%10);
- shift(min/10);
- shift(16);
- shift(hou%10);
- shift(hou/10);
- rck();
- sec1=sec;
- }
-
- }
- }
- 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;
- }
- }
- }
- }
- }
复制代码
所有资料51hei提供下载:
基于51单片机的74HC595时钟显示程序.rar
(12.28 KB, 下载次数: 48)
|