51单片机实现2位一体数码管的99-1显示的代码和仿真,按键可以暂停和继续开始
可以重复实现99到1的倒计时
按键按一下为暂停,再按一次继续倒计
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include "reg52.h"
- #include <stdio.h>
- typedef unsigned int u16;
- typedef unsigned char u8;
- sbit key = P3^4;
- sbit LS0 = P3^0;
- sbit LS1= P3^1;
- unsigned char led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- void display(u8 num);
- void delay_ms(u16 num);
- void main()
- {
- u8 c;
- u8 m,n,a;
- c=99;
- while(1)
- {
- display(c);
- delay_ms(300);
- c=c-1;
- if(key==0)
- {
- a=1;
- while(a)
- {
- display(c);
- delay_ms(300);
- if(key==0)
- {
- a=0;
- }
- }
- }
- if(c<=0)
- {
- c=99;
- }
- }
- }
- void display(u8 num)
- {
- u8 m, n,j;
- m = num/10;
- n = num%10;
- for(j=0;j<2;j++)
- {
- switch(j)
- {
- case(0):
- LS0=0;LS1=1;
- P2=led_mod[m];
- break;
- case(1):
- LS0=1;LS1=0;
- P2=led_mod[n];
- break;
- }
- delay_ms(25);
- P2=0x00;
- }
- }
- void delay_ms(u16 num)
- {
- u16 x, y;
- for(x = num; x > 0; x--)
- for(y = 110; y > 0; y--);
- }
复制代码
Keil代码与Proteus仿真下载:
电子设计.7z
(61.44 KB, 下载次数: 9)
|