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)
2022-3-7 18:13 上傳
點擊文件名下載附件
|