初学者 分享设计 大神不吐槽哈,这是实训时的作业设计。
源程序在附件中更清晰。有注释
大神们若有学习的好建议一起分享哈
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar Digits_of_6DSY[]={0,0,0,0,0,0};
- uchar Count;
- sbit Dot=P0^7;
- void DelayMS(uint ms)
- {
- uchar t;
- while(ms--) for(t=0;t<120;t++);
- }
- void main()
- {
- uchar i,j;
- P0=0x00;
- P3=0xff;
- Count=0;
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- IE=0x82;
- TR0=1;
- while(1)
- {
- j=0x7f;
- for(i=5;i!=-1;i--)
- {
- j=_crol_(j,1);
- P3=j;
- P0=DSY_CODE[Digits_of_6DSY[i]];
- if(i==1) Dot=1;
- DelayMS(2);
- }
- }
- }
- void Timer0() interrupt 1
- {
- uchar i;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(++Count!=2) return;
- Count=0;
- Digits_of_6DSY[0]++;
- for(i=0;i<=5;i++)
- {
- if(Digits_of_6DSY[i]==10)
- {
- Digits_of_6DSY[i]=0;
- if(i!=5) Digits_of_6DSY[i+1]++;
- }
- else break;
- }
- }
复制代码
全部资料51hei下载地址:
10000s内数码管计时.zip
(23.14 KB, 下载次数: 23)
|