單片機同時實現4位時鐘8位小燈閃爍的仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (11.88 KB, 下載次數: 50)
下載附件
2018-9-29 17:38 上傳
0.png (14.05 KB, 下載次數: 45)
下載附件
2018-9-29 17:39 上傳
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- /*
- sbit p20=P2^0;
- sbit p21=P2^1;
- sbit p22=P2^2;
- sbit p23=P2^3;
- */
- void Disp();
- void Delay_ms(uint delay);
- uchar code LED_Val[10] = {0xC0,0xF9,0xA4,0xb0,0x99,0x92,0x82,0xf8,0x80,0X98};//0-9
- uchar data num[4];
- uchar data led_point[4]={0xfe,0xfd,0xfb,0xf7};
- uchar i,s,m,h,second,jjjj,HHHH,LED=0XFE;
- uint ge,shi,bai,qian,display_number,bai1,shi1;
- void Disp()
- {
- qian=display_number/1000 ;
- bai1= display_number%1000 ;
- bai=bai1/100;
- shi1=bai1%100;
- shi=shi1/10;
- ge=shi1%10;
- num[0] = ge;
- num[1] = shi;
- num[2] = bai;
- num[3] =qian;
- for(i=0;i<4;i++)
- {
- P1=LED_Val[num[i]];
- P2=~led_point[i];
- Delay_ms(2);
- P1=0XFF;
- P2=~0XFF;
- }
- }
- //////////// /////////////////////////
- void Delay_ms(uint delay)
- {
- uchar j;
- while(delay--)
- {
- for(j=125;j>0;j--)
- {;}
- }
- }
- void chushihua()
- {
- TMOD=0x01;
- TH0=-52500;
- TL0=-52500;
- ET0=1;
- EA=1;
- TR0=1;
- }
- void time_t0(void ) interrupt 1 using 1
- {
- TH0=-52500;
- TL0=-52500;
- //TH0=65534;
- //TL0=65534;
- second++;
- if(second ==40)
- {
- jjjj++;
- if(jjjj==7)
- {
- P3=LED;
- LED=LED<<1;
- HHHH++;
- if(HHHH>8){LED=0XFE;HHHH=0;}
- jjjj=0;
- }
- second=0;
- s++;
- if(s == 60)
- {
- m++;
- s =0;
- if(m==60)
- {
- m=0;
- h++;
- if(h==24)
- {
- h=0;
- }
- }
- }
-
- }
- }
- ////////////////////////////////////////////////
- void main()
- {
- chushihua();
- //display_number=1234;
- while(1)
- {
- display_number=h*100+m;
- Disp();
- }
- }
復制代碼
所有資料51hei提供下載:
4位時鐘8位小燈閃爍.zip
(57.15 KB, 下載次數: 16)
2018-9-29 09:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|