提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、实验要求
用2位数码管显示计时时间,最小计时单位为“秒”,计时范围00~99s。当第1次按一下并松开计时功能键时,秒表开始计时并显示;第2次按一下并松开计时功能键时,停止计时,将计时的时间值送到数码管显示;如果计时到99s,将重新开始从0计时;第3次按一下并松开计时功能键,秒表清0。再次按一下计时功能键,则重复上述计时过程。
二、实验代码和原理图
1.实验代码
#include"reg51.h"
#define uint unsigned int
uint count=0;
static uint temp=0;//利用静态变量来记录按下的次数
uint code SegCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint ms);
void k1();
void k2();
void k3();
void k4();
void main()
{
P0=0X00;//灯灭
P2=0X00;//等待按键按下
while(1)
{
if(P3==0x7f)
{
//测试了一下,有时候松的太快反映不过来。
delay(20);//防止误碰
if(P3==0X7F)
{
while(P3==0x7f);//松手判断
temp++;
}
}
switch (temp)
{
case 1:k1();break;
case 2:k2();break;
case 3:k3();break;
case 4:k4();break;
default:break;
}
}//防止跑飞
}
void k1()//要求1
{
while(1)
{
P0=SegCode[count/10];//显示高位
P2=SegCode[count%10];//显示低位
count++;
delay(100);//隔一秒
if(P3==0x7f)
{
while(P3==0x7f);//松手判断
temp++;
break;
}
}
}
void k2()
{
if(count==99)
count=0;
P0=SegCode[count/10];//显示高位
P2=SegCode[count%10];//显示低位
}
void k3()
{
count=0;
P0=SegCode[count/10];//显示高位
P2=SegCode[count%10];//显示低位
}
void k4()
{
temp=0;
P0=0X00;
P2=0X00;
}
void delay(uint ms)//实现每个数字显示隔一秒
{
uint i;
while(ms--)
for(i=0;i<113;i++);
}
2.原理图
proteus版本8.10文章来源:https://www.toymoban.com/news/detail-516751.html
总结
本次实验不是特别难,我所做的也只是一种方法而已。代码之路何其艰辛,条条大路通罗马,大家要是还有其他方法,可以在评论区留言。我期待与大家进行学习交流。文章来源地址https://www.toymoban.com/news/detail-516751.html
到了这里,关于C51实现0到99数字显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!