单片机74hc164秒表仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<iom16v.h>
- #include<macros.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define CP_L PORTC&=~BIT(0)
- #define CP_H PORTC|=BIT(0)
- #define DATA_L PORTC&=~BIT(1)
- #define DATA_H PORTC|=BIT(1)
- uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- uint num=0;
- void delay_ms()
- {
- uint i;
- for(i=0;i<1141;i++);
- }
- void delay(uchar time)
- {
- uint i;
- for(i=0;i<time;i++)
- delay_ms();
- }
- void send_data(uchar data)
- {
- uint i;
-
- for(i=0;i<8;i++)
- {
- CP_L;
- if(data&0x80)
- DATA_H;
- else
- DATA_L;
- CP_H;
- data<<=1;
- }
-
- }
- //定时1秒
- void Timer1_init()
- {
- TCCR1A=0X00;
- TCCR1B=0X04;//256分频
- TCNT1H=0x85;
- TCNT1L=0xED;
- }
- #pragma interrupt_handler miao:9
- void miao()
- {
- TCNT1H=0x85;
- TCNT1L=0xED;
- if(num==60)
- num=0;
- num++;
- }
- void Display(uchar i,uchar j)
- {
- send_data(j);
-
- PORTC&=~BIT(i);
- delay(10);
- PORTC|=BIT(i);
- }
- void main()
- {
- DDRC=0XFF;
- Timer1_init();
- TCNT1H=0x85;
- TCNT1L=0xED;
- TIMSK|=BIT(2);
- SREG|=BIT(7);
- while(1)
- {
- Display(2,table[num%10]);
- Display(3,table[num/10]);
- }
- }
复制代码
所有资料51hei提供下载:
74hc164_miao.rar
(28.65 KB, 下载次数: 21)
|