当前位置:首页 > 单片机 > 单片机
[导读]1~99秒倒计时数码管显示C程序+Proteus仿真文件。优化了程序,使用51单片机内部定时器,可以实现1-99秒内倒计时。仿真效果为:源程序为:/*调试环境:Proteus 7.8AT89S52单片机8位共阴数码管功能为:实现数码管1秒~99

1~99秒倒计时数码管显示C程序+Proteus仿真文件。
优化了程序,使用51单片机内部定时器,可以实现1-99秒内倒计时。

仿真效果为:




源程序为:
/*
调试环境:Proteus 7.8AT89S52单片机8位共阴数码管
功能为:实现数码管1秒~99秒倒计时, 12M晶振
*/

#include
#define uchar unsigned char
sbit LED1=P1^1; //连的是LED1
#define MAX_NUM 13 //最大倒计时数1~99可设
#define SEGPORT P0 //定义数码管连接端口
sbit LE_DUAN = P2^0; //定义573锁存使能端口 段锁存
sbit LE_WEI = P2^1; //定义573锁存使能端口 位锁存

unsigned char code Seg_Duan[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管显示段码值 0~9
unsigned char code Seg_Wei[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管的位码,低电平有效。

static uchar second=MAX_NUM,count; //99只是一个数,可以任意改,因为这里只学习怎样实现倒计时

uchar shiwei;
uchar gewei;

void delay(unsigned int cnt)
{
while(--cnt);
}

void main()
{
TMOD"=0x01; //定时器设置 16位
TH0=(65536-50000)/256; //定时时间 50ms
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
SEGPORT = 0;
LE_DUAN = 0;
LE_WEI= 0;
while(1)
{
shiwei=second/10; //数码管10位
gewei=second%10; //数码管个位

SEGPORT=0; //清空数据,防止有交替重影
LE_DUAN=1; //段锁存
LE_DUAN=0;
delay(30);

SEGPORT = Seg_Wei[1]; //先送位码值
LE_WEI = 1; //573高电平锁存
LE_WEI = 0;
SEGPORT = Seg_Duan[shiwei]; //再送段码值,这里为 2~9
LE_DUAN = 1; //573高电平锁存
LE_DUAN = 0;
delay(300);


SEGPORT = Seg_Wei[0]; //先送位码值
LE_WEI = 1; //573高电平锁存
LE_WEI = 0;
SEGPORT = Seg_Duan[gewei]; //再送段码值,这里为 2~9
LE_DUAN = 1; //573高电平锁存
LE_DUAN = 0;
delay(300);
}
}

void tim(void) interrupt 1 //定时器0中断
{
TH0=(65536-50000)/256; //定时时间 50ms
TL0=(65536-50000)%256;
count++;
if(count==20) //50毫秒定时,50*20=1000(毫秒)=1秒
{
count=0;
second--;
if(second==0xff) /*无符号char型数值,0-1为:0xff,这里若为:0的话,则倒计到0时不显示0直接显示最大倒计数。*/
{
LED1=~LED1; //这里让LED1反转一下,表现倒计时一周。
second=MAX_NUM; //回到最大倒计数值,再次倒计,当然,可以加入其他的控制,
}

}
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

基于51单片机学习板。用S1键作为控制跑马灯的方向按键,S5键作为控制跑马灯方向的加速度按键,S9键作为控制跑马灯方向的减速度按键,S13键作为控制跑马灯方向的启动或者暂停按键。记得把输出线P0.4一直输出低电平,模拟独...

关键字: 51单片机 数码管显示 跑马灯

TM1637四位数码管模块是一个带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,驱动方式为IIC,因此只需2根信号线即可使单片机控制4位8段数码管(数码管8级亮度可调)。 模块特点如下: 显示...

关键字: 显示模块 数码管显示

你注意到了吗?还有20多天就将进入2020年,第一批90后步入30岁倒计时。 今日,淘宝双12发布《90后惜命指南》。数据显示,90后的健康焦虑更重于80后甚至70后,随着30岁即将到来,他们在淘宝天

关键字: 30岁 90后 倒计时 淘宝 购物式 惜命

在学习了单片机驱动7段数码管显示电路后,了解实际应用中多是利用的专门的数码管显示驱动芯片,例如MAX7219多功能串行LED显示驱动芯片。MAX7219是一款串行共阴极数码管动态显示驱动芯片,其峰值段电流可达40mA,最...

关键字: max7219 数码管显示

用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用LED发光二极管亮一秒钟做为提示,同时发出“叮咚”声;若密码不正...

关键字: 数码管显示 电子密码锁 4×4键盘

这里我们先要安装好51试验板上的两个轻触按钮开关,我们采用的是独立式按钮开关,也就是说将开关直接连接到电源的地和单片机的对应引脚之间,这里K1接到单片机的P3.6引脚,K2接到P3.7正常情况下单片机的P3.6P3.7都...

关键字: 倒计时 单片机 定时器

单片机控制数码管显示

关键字: 单片机控制 数码管显示

基于单片机AT89C51带倒计时的计数器

关键字: at89c51 倒计时 单片机 计数器

数字时钟(数码管显示/键盘可调)

关键字: 数字时钟 数码管显示 键盘可调

以下四幅图都是关于串口中断的问题,串口中断需要一个接收或者发送数据的触发。

关键字: proteus仿真 串口问题
关闭
关闭