仿真原版本:proteus 7.8
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0017
讲解视频
仿真讲解+代码讲解
基于51单片机的反向计时倒计时秒表protues仿真设计
功能说明:
该设计为99-0秒反向计时的秒表,能够通过数码管或液晶显示读秒,该系统主要包括单片机最小系统、显示单元、定时计数器设计。
系统要求启动秒表后,从99开始计时,计到0秒停止,中途可以通过按键控制暂停/继续读秒,复位后能够重新从99开始读秒。
仿真电路
倒计时开始
倒计时到62秒
程序
主函数
主要完成定时器,外部中断的初始化和循环显示倒计时数值。
void main()
{
EA=1; //开总中断
EX0=1;//外部中断0
EX1=1;//外部中断1
IT0=1;//设置下降沿触发中断0
IT1=1;//设置下降沿触发中断1
TMOD=0X01;//T0的工作模式为模式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//12M晶振 定时器1定时50毫秒溢出初值
ET0=1; //允许定时器1中断
TR0=1;//启动定时器0
sec_cnt =0;
while(1)
{
led_sacn(); //数码管显示,时刻刷新
if(flag1s&&state) //一秒执行一次
{
flag1s=0;
if(sec_cnt<99){
sec_cnt++; //秒数递增
}
}
}
}
数码管显示
void led_sacn()
{
seg_disp(sec_cnt/10,0);//显示W0控制的数码管 时刻刷新
seg_disp(sec_cnt%10,1);//显示W1控制的数码管
}
void seg_disp(uchar number,uchar wei)//数码管动态显示程序 wei代表数码管W0 W1 W2 W3的位选
{
P0=0XFF;//清零,防止重影
if(wei == 0){//显示第一位
W0=0;
W1=1;
P0=seg_du[number];
delay_ms(2);
W0=1;
}
if(wei == 1){//显示第二位
W0=1;
W1=0;
P0=seg_du[number];
delay_ms(2);
W1=1;
}
}
void delay_ms(ms) //延时 大概精度
{
uchar value=ms,i;
while(value--)
for(i=0;i<110;i++);
}
百度云下载链接
- 常见使用问题及解决方法–必读!!!!
- 源程序
- proteus仿真
- 功能说明
- 讲解视频
- 开题报告
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开嘉盛单片机51 STM32单片机课程毕业设计.url
----下载----
阅读全文