标题:
单片机秒表仿真实验源码(带三个按键)
[打印本页]
作者:
玉尚轩
时间:
2018-11-26 09:57
标题:
单片机秒表仿真实验源码(带三个按键)
标题:单片机秒表实验
内容:这是前两个星期做的秒表的文件,
单片机c语言版,里面的功能可以实现三分钟的计时,
有三个按键,一个按键按下,可以停止计数,
一个按下可以开始计数,一个按下可以复位。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
图片.png
(94.68 KB, 下载次数: 36)
下载附件
2018-11-26 09:56 上传
0.png
(15.67 KB, 下载次数: 37)
下载附件
2018-11-26 15:17 上传
单片机源程序如下:
#include"reg52.h"
#define uchar unsigned char
sbit s1=P3^2;
sbit s2=P3^3;
sbit s3=P3^4;
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar time=0; //记录中断次数
uchar second;
void delay()
{ uchar i,j;
for(i=0;i<20;i++)
for(j=0;j<20;j++);}
main()
{TMOD=0x01;
ET0=1;
EA=1;
second=0;
while(1)
{ P2=0xfe;
P0=seg[second/100];
delay();
P2=0xfd;
P0=seg[second/10%10];
delay();
P2=0xfb;
P0=seg[second%10];
delay();
if(s1==0){TH0=0xee;TL0=0x00;TR0=1;}
if(s2==0)TR0=0;
if(s3==0){second=0;
P2=0xfe; //选择第一个数码管点亮
P0=seg[second/100]; //显示秒位0
delay();
P2=0xfd; //选择第二个数码管点亮
P0=seg[second/10%10]; //显示0.1秒位0
delay();
P2=0xfb; //选择第三个数码管点亮
P0=seg[second%10]; //显示0.01秒位0
delay();
}
while(P3&0x20==0x00);//消除抖动
while(P3&0x10==0x00);//消除抖动
while(P3&0x08==0x00);}}//消除抖动
void t0() interrupt 1 using 1
{
TH0=0xee;
TL0=0x00;
time++;
if(time==200) //中断200次,共计时200*5ms=1000ms=1s
{time=0;
second++;
P2=0xfe; //选择第一个数码管点亮
P0=seg[second/100]; //显示秒位0
delay();
P2=0xfd; //选择第二个数码管点亮
P0=seg[second/10%10]; //显示0.1秒位0
delay();
P2=0xfb; //选择第三个数码管点亮
P0=seg[second%10]; //显示0.01秒位0
delay();
}
if(second==180)
{TR0=0;
second=180; }
else TR0=1;}
复制代码
所有资料51hei提供下载:
秒表.zip
(60.14 KB, 下载次数: 35)
2018-11-26 09:52 上传
点击文件名下载附件
压缩的
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1