标题:
基于51单片机10000s内数码管计时仿真+源码
[打印本页]
作者:
33332
时间:
2018-7-1 11:11
标题:
基于51单片机10000s内数码管计时仿真+源码
初学者 分享设计 大神不吐槽哈,这是实训时的作业设计。
源程序在附件中更清晰。有注释
大神们若有学习的好建议一起分享哈
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
1236.JPG
(146.55 KB, 下载次数: 37)
下载附件
2018-7-1 11:08 上传
单片机源程序:
#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;
}
}
复制代码
0.png
(7.57 KB, 下载次数: 43)
下载附件
2018-7-1 16:38 上传
全部资料51hei下载地址:
10000s内数码管计时.zip
(23.14 KB, 下载次数: 23)
2018-7-1 11:08 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1