单片机倒数程序
单片机设计24秒倒计时
![单片机设计24秒倒计时](https://img.taocdn.com/s3/m/6e582e2af4335a8102d276a20029bd64783e6292.png)
单片机设计24秒倒计时1.引言倒计时器是一种常见的电子设备,被广泛应用于体育比赛、倒计时游戏、厨房计时等场景中。
本文介绍了使用单片机设计一个24秒倒计时器的方法和过程。
2.设计原理本设计使用的单片机为51系列单片机,采用倒计时的方式进行计时,显示剩余时间,并发出声音提示时间结束。
具体实现主要包括以下几个步骤:-初始化单片机的定时器和功能引脚;-设置定时器的工作模式和计时时间;-编写程序控制定时器开始计时;-显示剩余时间并发出声音提示;-定时器到达设定时间后,停止计时并显示时间结束。
3.硬件设计硬件设计主要包括51系列单片机、LED数码管和蜂鸣器。
-单片机需要通过引脚连接LED数码管,用于显示剩余时间;-单片机通过一个GPIO引脚连接蜂鸣器,用于发出时间结束的提示声音。
4.软件设计软件设计主要包括初始化、计时、显示和提示等功能。
-初始化函数主要用于设置单片机的定时器和GPIO引脚;-计时函数用于设定倒计时的时间,并开始计时;-显示函数用于将剩余时间显示在LED数码管上;-提示函数用于判断是否到达设定时间,如果是则停止计时并发出提示声音。
5.实验结果经过调试和测试,实验结果表明该24秒倒计时器可以正常工作。
在开始计时后,数码管上会显示剩余时间,同时蜂鸣器会发出定时器结束的提示音。
6.结论本文介绍了使用单片机设计24秒倒计时器的方法和过程。
该设计通过初始化、计时、显示和提示等功能,实现了24秒倒计时的功能要求。
同时,该设计可以在实际中进行必要的优化和改进,以满足具体的应用需求。
7.致谢感谢本文参考的相关文献和资料,以及为本文提供实验设备和技术支持的相关人员。
[1]《51单片机原理与应用》[2]《C语言微机原理与接口技术》总结:本文主要介绍了使用单片机设计24秒倒计时器的方法和过程。
通过初始化、计时、显示和提示等功能,实现了24秒倒计时的功能要求。
同时,该设计可以在实际中进行必要的优化和改进,以满足具体的应用需求。
单片机:手动设定倒计时时间,0报警
![单片机:手动设定倒计时时间,0报警](https://img.taocdn.com/s3/m/7c8ea6225b8102d276a20029bd64783e09127da8.png)
单⽚机:⼿动设定倒计时时间,0报警⾸先显⽰”时.分“,K1时增加,K2分增加(如果不修改时分默认5分钟:300秒倒计时)K3开始倒计时,显⽰秒倒计时,到时报警BEEPK4停⽌报警,并返回到”时分“状态,⼜可以设置倒计时时间,来回循环#include<reg51.h>#define uchar unsigned char;#define uint unsigned int;uchar position;uchar tt,bz=0,bza=1;uint second;uchar minute;uchar hour;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0--9sbit smg_q = P2^0;sbit smg_b = P2^1;sbit smg_s = P2^2;sbit smg_g = P2^3;sbit key1=P3^2;sbit key2=P3^3;sbit key3=P3^4;sbit key4=P3^5;sbit led1=P1^0;sbit led2=P1^1;sbit led3=P1^2;sbit led4=P1^3;sbit led5=P1^4;sbit led6=P1^5;sbit beep=P2^5;void keyscan();void display(unsigned char hour,unsigned char minute);void displaym(unsigned int second);void delay(unsigned int timer);void init();void main(){init();while(1){if(tt==20){ led1=~led1;led2=~led2;tt=0;if(second==0 && bz==1){while (bza==1){beep=0;delay(100);beep=1;break;}}elsesecond--;}keyscan();if (bz==0)display(hour,minute);elsedisplaym(second);delay(1);}}void keyscan(){ if(key1==0){TR0=0;hour++;if(hour==24)hour=0;delay(200) ;}if(key2==0){TR0=0;minute++;}if(key3==0){bz=1;bza=1;TR0=0;second=hour*3600+minute*60;if (second==0)second=300;delay(200) ;TR0=1;}if(key4==0){beep=1;bz=0;bza=0;minute=0;TR0=0;led1=1;led2=1;second=0;hour=0;minute=0;}}void init(){tt=0;bza=1;position=0;second=0;minute=0;hour=0;smg_q=1;smg_b=1;smg_s=1;smg_g=1;key1=1;key2=1;TMOD=0X01;TH0=0x4c;TL0=0x00;EA=1;ET0=1;TR0=0;}void t0() interrupt 1{TH0=0x4c;TL0=0x00;tt++;}void display(unsigned char hour,unsigned char minute){ P0=0XFF;switch(position){case0: smg_g=1;smg_q=0;P0=table[hour/10]; break;case1: smg_q=1;smg_b=0; P0=table[hour%10];if(tt>=10) P0&=0x7f; break;case2: smg_b=1;smg_s=0;P0=table[minute/10];break;case3: smg_s=1;smg_g=0;P0=table[minute%10];break;}position++;if(position>3)position=0;}void displaym(unsigned int second){ P0=0XFF;switch(position){case0: smg_g=1;smg_q=0;P0=table[second/1000]; break;case1: smg_q=1;smg_b=0; P0=table[second/100%10]; break;case2: smg_b=1;smg_s=0;P0=table[second/10%10];break;case3: smg_s=1;smg_g=0;P0=table[second%10];if(tt>=10) P0&=0x7f;break; }position++;if(position>3)position=0;}for(x=time;x>0;x--)for(y=110;y>0;y--);}更新:显⽰四位以上的秒时:显⽰最后四位的秒数,第⼀位数码管右侧的点亮。
单片机99秒倒计时课程设计用74ls246
![单片机99秒倒计时课程设计用74ls246](https://img.taocdn.com/s3/m/57787775326c1eb91a37f111f18583d049640f13.png)
单片机99秒倒计时课程设计用74ls246
首先需要明确的是,经典的倒计时电路设计使用的是74LS192或74LS193计数器芯片,而74LS246是一个8位三态缓冲器,与倒计时电路设计关系不大。
下面给出使用74LS192或74LS193实现99秒倒计时的电路设计流程简述:
1. 确定时钟源
在倒计时电路中,需要一个时钟源来驱动计数器进行计数。
可以使用555定时器或水晶振荡器作为时钟源。
2. 设计计数器
使用74LS192或74LS193计数器芯片设计倒计时电路,需要考虑电路的初始状态以及计数器输出的电平状态。
3. 确定触发计数的条件
可以使用按键或外部信号触发计数开始。
在计数进行的过程中,需要在常开触点上接入继电器,当倒计时完成时,继电器断开触点,使接入的负载失去电源。
4. 设计显示器件
倒计时电路需要一个显示设备,可以使用LED或七段数码管等显示设备。
在使用七段数码管时,需要使用译码器将计数器的当前值转化为七段数码管的驱动信号,以实现数字显示。
以上是倒计时电路设计流程的简述,具体实现过程涉及到电路原理图的绘制、元器件的选型和焊接调试等环节,在设计过程中需要注意选用合适功耗和电性能指标的元器件,并加以保护,以确保电路的安全性和稳定性。
在实现过程中,应遵循相关的安全要求和规范,特别是对于高电压和高温度的电路部分,需要注意安全操作和防危控制。
单片机课程设计60秒倒计时
![单片机课程设计60秒倒计时](https://img.taocdn.com/s3/m/b38fe4cd482fb4daa48d4bc6.png)
单片机课程设计60秒倒计时前言在生活和生产的各领域中,凡是有自动控制要求的地方都会有单片机的身影出现;从简单到复杂,从空中、地面到地下,凡是能想像到的地方几乎都有使用单片的需求。
现在尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目,因此,单片机的应用大有想像和拓展空间。
单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证安全等。
但是,单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。
从前必须有模拟电路或数字电路实现的大部分功能,现在已能使用单片机通过软件(编程序)方法实现了。
这种以软件取代硬件并提高系统性能的控制系统“软化”技术,称之为微控制技术。
微控制技术是一种全新的概念,是对传统控制技术的一次革命。
随着单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。
近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
模拟多通道压力系统是利用压力传感器采集当前压力并反映在显示器上,它可以分析压力过量程,并发出报警。
并采用电子秤原理可根据输入单价准确的计算出物体的金额。
本篇论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的四位LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。
第一章方案论证1.1课程设计的目的和要求1.目的课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不可少的,是非常必要的。
基于c语言单片机倒数计时器课程设计
![基于c语言单片机倒数计时器课程设计](https://img.taocdn.com/s3/m/9c36f5e04afe04a1b071de83.png)
课程设计报告课程名称:单片机报告题目:倒数计数器学生姓名:所在学院:专业班级:学生学号: 14指导教师:2013年12月25 日课程设计任务书摘要本设计是基于AT89C51单片机的倒数计数器,根据单片机技术原理,主要通过软件设计,制作出的倒数计数器能稳定运行,并当计数完成时能发出声音.本设计主要用到数码管,LED灯,键盘,蜂鸣器,定时器/计数器等学习单片机中所必须掌握的部分.利用Keil uVision4作为编程软件进行源程序设计及调试。
同时利用STC-ISP-V483作为程序下载器,将源程序烧入单片机中。
关键词:单片机键盘计数器蜂鸣器 LED灯数码管目录一、概述 (1)二、设计方案 (2)1方案总体思路 (2)2.程序流程图 (2)三、程序 (3)四、总原理图及元器件清单 (4)五、结论与心得 (6)六、参考文献 (6)一、概述单片机是20世纪中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。
AT89C51是一种低功耗、高性能CMOS8位微控制器,具有8K 在线系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
本例利用AT89C51单片机设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,则发出声响,通知倒计数终了。
二、设计方案1. 方案总体思路用8051单片机控制程序执行,通过LED动态扫描来显示倒计时。
买次执行中断时判断计时是否继续倒计时,同时通过按键扫描的方式来判断是否有输入更改倒计时的控制信息。
单片机课程设计--音乐倒数计数器
![单片机课程设计--音乐倒数计数器](https://img.taocdn.com/s3/m/725d9d42ae1ffc4ffe4733687e21af45b307fede.png)
单片机课程设计--音乐倒数计数器单片机课程设计--音乐倒数计数器任务书设计任务:利用STC89C52单片机结合字符型LCD显示器设计一个简易的倒数计数器。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
设计要求:1.字符型LCD(16×2)显示器,显示格式为“TIME 分分:秒秒”。
2.用4个按键操作来设置当前想要倒计数的时间。
3.一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
4.程序执行后工作指示灯LCD闪动,表示程序开始执行,按下操作键K1~K4动作如下:●K1---可调整倒计数的时间1~60分钟。
●K2---设置倒计数的时间为5分钟,显示“0500”。
●K2---设置倒计数的时间为10分钟,显示“1000”。
●K2---设置倒计数的时间为20分钟,显示“2000”。
5.复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD上显示出设置画面。
此时,若:按K2键---增加倒计数的时间1分钟。
按K2键---减少倒计数的时间1分钟。
按K4键---设置完成。
目录任务书............................................................ I 1 绪论 (2)1.1 单片机基础知识 (2)1.2 单片机的发展趋势 (3)1.3 项目设计任务与要求 (3)2 系统设计 (5)2.1 框图设计 (5)2.2部分硬件方案论述 (6)2.3电路原理图 (6)2.4元件清单 (7)2.4.1STC89C52芯片 (7)2.4.2字符型LCD1602 ..................... 错误!未定义书签。
2.4.3按键控制模块 (8)2.4.4其它元件 (12)3软件设计 (14)3.1 程序流程图 (14)4 系统的仿真与调试 (12)4.1 硬件调试 (12)4.2 软件调试 (12)4.3 软硬件调试 (12)5总结 (13)参考文献 (14)附录程序 (25)1 绪论1.1 单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
用单片机做的倒计时15s
![用单片机做的倒计时15s](https://img.taocdn.com/s3/m/43541def5ef7ba0d4a733bc2.png)
用单片机设计15s倒计时器跳线设置:默认跳线位置,注意蜂鸣器选择跳线J5要选23端程序效果:利用单片机的定时/计数器设计一个15到0倒计时器,按S4后启动,要求精确显示到百分之一秒。
发挥部分:1、定时结束后有提示音报警,并可重新定时2、定时过程中按独立键盘s5可暂停,按S4继续运行环境:51hei单片机学习板*/ORG 0000HLJMP START //主程序必须避开地址000BHORG 000BH //定时器0的中段服务程序,起始地址为000BHLJMP IT00ORG 0030HSTART: MOV TH0,#0EBH //装入初始值,定时时间为10msMOV TL0,#64HMOV TMOD,#01H //工作方式1MOV 33H,#01 //显示初值为15sMOV 32H,#05MOV 31H,#00MOV 30H,#00SETB ET0 //打开定时0SETB EA //开总中断LOOP1: JB P3.6,LOOP //判断高低位,即按键KEY0是否按下LCALL DISPLAY //为低,即按键按下,延时消抖LCALL DISPLAYJB P3.6,LOOP //按键真的按下,并不是外界的干扰SETB TR0 //启动定时器HERE: LCALL DISPLAY //调用显示JB P3.7,LOOP3 //判断高低,即KEY1按键是否按下CLR TR0 //按下,关闭定时器,这里并没有消抖LJMP LOOP1 //等待KEY0的按下LOOP3: SJMP HERE //KEY1没有按下,就需显示LOOP: LCALL DISPLAY //KEY1没有按下,就需显示LJMP LOOP1//减10ms子程序SUB1: DEC 30H //百分位减1MOV A,30HCJNE A,#0FFH,LOOP2 //判断百分位减到0之后是否再减1MOV 30H,#09 //是,装入初值9DEC 31H //十分位减1MOV A,31HCJNE A,#0FFH,LOOP2 //判断百分位减到0之后是否再减1MOV 31H,#09MOV A,32HCJNE A,#0FFH,LOOP2MOV 32H,#09DEC 33HMOV A,33HCJNE A,#0FFH,LOOP2clr P2.2 //从15s减到0s后,驱动蜂鸣器 LCALL DELAY //延时LCALL DELAYSETB P2.2 //关闭蜂鸣器MOV 33H,#01 //装入初值15sMOV 32H,#05MOV 31H,#00MOV 30H,#00LOOP2: NOP //空指令RET //返回//显示子程序DISPLAY: MOV DPTR,#TAB //赋表首地址MOV A,#0FBHSETB P2.7MOV P0,A //亮最左边的数码管CLR P2.7XCH A,R0 //暂存A的值MOV A,33HMOVC A,@A+DPTR //根据表值查找所需的值 SETB P2.6MOV P0,A //显示值CLR P2.6LCALL DELAY //延时XCH A,R0 //恢复原值RL A //循环左移,为下次做准备SETB P2.7MOV P0,ACLR P2.7XCH A,R0MOV A,32HMOVC A,@A+DPTRSETB P2.6MOV P0,ACLR P2.6LCALL DELAYXCH A,R0RL AMOV P0,Aclr P2.7XCH A,R0MOV A,31HMOVC A,@A+DPTRSETB P2.6MOV P0,Aclr P2.6LCALL DELAYXCH A,R0RL ASETB P2.7MOV P0,Aclr P2.7XCH A,R0MOV A,30HMOVC A,@A+DPTRSETB P2.6MOV P0,Aclr P2.6LCALL DELAYRETTAB: DB 3FH,06H,5BH,4FH,66H ;数码管显示的数值DB 6DH,7DH,07H,7FH,6FHIT00: MOV TH0,#0EBH //装入初值,时间为10msMOV TL0,#64HLCALL SUB1 //减10msRETI //返回DELAY: MOV R7,#04 //延时子程序,时间大约为:2us*4*250DEL2: MOV R6,#250DEL1: DJNZ R6,DEL1DJNZ R7,DEL2RETEND //结束单片机AT89C51 00——99带倒计时计数器[日期:2008-01-29 ] [来源:东哥开发网() 作者:佚名] [字体:大中小] (投递新闻)1.设计任务(1.上电时显示“00”,第一次按下SP1后就开始计数。
单片机lcd显示屏,100-0倒计时代码
![单片机lcd显示屏,100-0倒计时代码](https://img.taocdn.com/s3/m/c2d730c19f3143323968011ca300a6c30c22f18c.png)
单片机lcd显示屏,100-0倒计时代码这是一个基于8051单片机的LCD显示屏,能够实现从100到0的倒计时代码。
```#include<reg52.h>#include<intrins.h>unsigned char code table[] = {"0123456789"};void display(unsigned int num) //数码管显示函数{unsigned char x,y,z;x=num/100;y=num%100/10;z=num%10;P2=0x0f;P0=table[x];P2=0x1f;P2=0x0f;P0=table[y];P2=0x2f;P2=0x0f;P0=table[z];P2=0x3f;}void delay_ms(unsigned int ms) //延时函数{unsigned int i,n;for(i=0;i<ms;i++)for(n=0;n<125;n++);}void init() //LCD初始化函数{delay_ms(15);P0=0x38;P2=0x03;P2=0x02;P0=0x0c;P2=0x03;P2=0x02;P0=0x06;P2=0x03;P2=0x02;P0=0x01;P2=0x03;P2=0x02;}void main() //主函数{unsigned int i;init();while(1){for(i=100;i>=0;i--) //倒计时 {display(i);delay_ms(1000);}}}```在这个代码中,我们使用了一个数码管显示函数`display()`来实现LCD的数字显示。
我们还使用了一个`delay_ms()`函数来实现延时功能。
主函数中使用了一个for循环来实现倒计时,每隔1秒更新一次LCD屏幕上显示的数字。
51单片机倒计时源程序
![51单片机倒计时源程序](https://img.taocdn.com/s3/m/bf65001842323968011ca300a6c30c225901f0ec.png)
51单片机倒计时源程序#include<reg52.h> //51头文件//#include<472405468.h>//51头文件#define uchar unsigned char //宏定义#define uint unsigned int //宏定义#define s0 P2^0 // 时加键#define s1 P2^1 // 分加键#define s2 P2^2 // 倒时加键//0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6F #define s3 P2^3 // 倒分加键#define s4 P2^4 // 倒秒加键#define s5 P2^5 // 开始倒计时键总共6个按键uint tt1,tt0;uchar num=0;uchar biaozhi=11;uchar up;uchar z,han,jun,qiang,cishu,count,num1; //函数变量声明char shi,fen,miao,pao_miao; //定义有符号变量声明chardao_shi=23,dao_miao=59,dao_fen=59,dao_paomiao=99;sbit sky1=P1^0; //断控sbit sky2=P1^1; //位控sbit feng=P1^2; //控蜂鸣器const uchar code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极显示代码//****************** 函数声明 *****************************void feng_ming_qi(uchar); //报时函数void init(); //定时器的初始化(T1)void fenjie(); //函数声明void delay(uchar); //延时函数声明void dao_fenjie(); //倒计时显示函数uchar key_scan(); //按键调试函数//************************************************************void delay(uchar z) //一毫秒延时函数{uchar x,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}void init()//TR1初始化{TMOD=0x22; // TMOD=0x20; 开定时 1TH1=0x06; //T1 250微妙TL1=0x06; //装初值EA=1; //打开总中断TR1=1; ////初始化先打开定时器1ET1=1;feng=0;///////////////////////////////////////////////TH0=0x06; //T0 也是 250 微妙中断一次TL0=0x06; //装初值//EA=1; //打开总中断TR0=0; //初始化先关闭定时器0ET0=1; // IEIP=0x20;}/////////////////////////////////////////////////////////////////// /////////////////////////void dao_fenjie() //分解倒秒,倒分,倒时。
单片机12分钟倒计时
![单片机12分钟倒计时](https://img.taocdn.com/s3/m/f10d2413ff00bed5b9f31dda.png)
比赛时间还原、暂停、倒计时设置按键1用来还原比赛的时间。
本设计设定的每节比赛的时间为12分钟。
当按下1键时,每节比赛剩余时间还原为“12:00”,并显示在数码管上。
时间还原后比赛就可以开始了,如果裁判吹响开始的哨声,则应立即按下2键使倒计时开始。
如果出现死球情况,就要按下3键,使倒计时停止。
暂停时间到时,再按下2键继续倒计时,直至结束。
key1 key2 key3程序:#include<reg52.h>#define uint unsigned intvoid delay(uint);unsigned char DUANZHI[]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义0~9指针unsigned char dpsbf[]={0,0,0,0};unsigned char A[]={0xfe,0xfd,0xfb,0xf7};sbit key1=P3^0;sbit key2=P3^1;sbit key3=P3^2;unsigned char num,msecond=1,mminute=1; unsigned char i,key1_1=0,key2_1=0,key3_1=0; void display();void Time0_Init() //中断初始化{TMOD=0X01;IE=0X82;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;}void main() //主函数{num=0;Time0_Init();for(;;){if(key1==0){msecond=1;mminute=13;key3_1=0;}if(key2==0)key3_1=1;if(key3==0)key3_1=0;display();}}void delay(uint x) //延迟{uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void T0_time()interrupt 1 // 中断{TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(key3_1==1)num++;}void display() //显示{if(key3_1==1){if(num>=20){num=0;msecond--;if(msecond<=0){msecond=60;mminute--;if(mminute<=0){msecond=1;mminute=1;key3_1=0;}}}}dpsbf[3]=(msecond-1)%10;dpsbf[2]=(msecond-1)/10;dpsbf[1]=(mminute-1)%10;dpsbf[0]=(mminute-1)/10;for(i=0;i<=3;i++){P1=A[i];P0=DUANZHI[dpsbf[i]];delay(3);}}。
单片机设计60秒倒计时正计时+Proteus仿真
![单片机设计60秒倒计时正计时+Proteus仿真](https://img.taocdn.com/s3/m/35a5947e6edb6f1afe001f06.png)
60秒倒计时设计一:1.目的课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
2.要求单片机控制的60s倒计时(1)用单片机AT89C51的定时器实现60s倒计时。
(2)用PROTEUS设计,仿真基于AT89c51单片机的60s倒计时实验。
3. 目标通过课程设计,使自己深刻理解并掌握基本概念,掌握单片机的基本应用程序设计及综合应用程序设计的方法。
2:方案选择图2.1:60秒倒计时总体电路设计本设计由硬件设计和软件设计两部分组成,总电路框图如图2.1所示。
具体设计:通过AT89C51型号单片机,由P1和P2两组I/O引脚分别控制两个7SEG–COM –ANODE型号数码管,分十位控制和个位控制,达到显示60秒倒计时的目的。
通过复位电路,在仿真过程中点击开关实现60复位3.1 AT89C51外形及引脚排列如图3.1所示图3.1:89C51的核心电路框图主要特性·与MCS-51 兼容·4K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路管脚说明(1)电源及时钟引脚(4个)Vcc: 电源接入引脚Vss:接地引脚XTAL1:晶振震荡器接入的一个引脚(采用外部振荡器时,此引脚接地);XTAL2:晶体振荡器的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器信号的输入端)。
(2)控制线引脚(4个)RST/Vpd:复位信号输入引脚/备用电源输入引脚;ALE:地址锁存允许信号输出引脚/编程脉冲输入引脚:EA:内外存储器选择引脚/片外EPROM编程电压输入引脚;PSEN:外部程序存储器选通信号输出引脚。
基于51单片机的倒计时程序
![基于51单片机的倒计时程序](https://img.taocdn.com/s3/m/993f533e43323968011c92dc.png)
kk1 bit b.1kk2 bit b.2ORG 0000HLJMP STARTORG 000BHLJMP CTC0TT1 EQU 37H ;50msTT2 EQU 38H ;秒TT3 EQU 39H ;分TT4 EQU 3AH ;时YUESHI EQU 40HYUEFEN EQU 41HORG 42HVIEW0:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H , 92H , 82H, 0F8HDB 80H , 90H, 88H , 83H , 0C6H, 0A1H, 86H, 84HORG 0A0HTEMP_TAB: DB 00H,01H,02H,03H,04H,05H,06H,07H DB 08H,09H,10H,11H,12H,13H,14H,15HDB 16H,17H,18H,19H,20H,21H,22H,23HDB 24H,25H,26H,27H,28H,29H,30H,31HDB 32H,33H,34H,35H,36H,37H,38H,39HDB 40H,41H,42H,43H,44H,45H,46H,47HDB 48H,49H,50H,51H,52H,53H,54H,55HDB 56H,57H,58H,59H,60HORG 100HSTART: MOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHSETB EASETB ET0SETB TR0SETB P2.4 ;SETB P2.5JB P1.6,NEXT;JMP ZHUNEXT: MOV A,#00HMOV R2,#17H ;24小时MOV YUESHI,#00HMOV YUEFEN,#00HMOV R3,#3BH ;60SETB KK1SETB KK2mainline:JB P1.3,KEY1CLR KK1KEY1: JNB p1.3,KEY2 ;当p1.3高电平时就往下执行,但是只要执行一次后,kk1就为1,往后就不再执行JB KK1,KEY2INC YUESHISETB KK1 ;这以段的任务是不用延时也能消除按键抖动的程序KEY2: JB P1.4,KEY3CLR KK2KEY3: JNB P1.4,RESJB KK2, RESSETB KK2INC YUEFENRES:MOV A,YUESHISUBB A,R2JNZ BUDAOSHIMOV YUESHI,#00HBUDAOSHI:MOV A,YUEFENSUBB A,R3JNZ BUDAOFENMOV YUEFEN,#00HBUDAOFEN:MOV A,YUESHIMOV DPTR,#TEMP_TABMOVC A,@A+DPTRMOV R0,AANL A,#0FH;送小时的个位MOV DPTR,#VIEW0MOVC A,@A+DPTRMOV P0,ASETB P2.0SETB P2.1CLR P2.2SETB P2.3LCALL DELAYMOV A,R0SWAP AANL A,#0FHMOVC A,@A+DPTRMOV P0,A ;显示时的十位SETB P2.0SETB P2.1SETB P2.2CLR P2.3LCALL DELAYMOV A,YUEFENMOV DPTR,#TEMP_TABMOVC A,@A+DPTRMOV R0,AANL A,#0FH;送分的个位MOV DPTR,#VIEW0MOVC A,@A+DPTRMOV P0,ACLR P2.0SETB P2.1SETB P2.2SETB P2.3LCALL DELAYMOV A,R0SWAP AANL A,#0FHMOVC A,@A+DPTRMOV P0,A ;显示分的十位SETB P2.0CLR P2.1SETB P2.2SETB P2.3LCALL DELAYJNB P2.2, NEXT2;按下就进入定时煮饭的阶段LJMP mainlineDELAY: MOV R5,#08H ;40ms延时子程序L7: MOV R6,#0FAHL8: DJNZ R6,L8DJNZ R5,L7RETNEXT2: MOV A,#00HMOV TT1,A ;让TT1重新清零这一步是必须的 MOV TT2,#00HMOV A,YUEFENMOV TT3,AMOV A,YUESHILOOP1: MOV A,TT4JZ AINI1LCALL TIMEING1AINI1: MOV A,TT4JNZ AINI2LCALL TIMEING2;-------------定时程序:--------------------AINI2: MOV A,TT1;CJNE A,#14H,RET001SUBB A,#14H ;20×50ms=1sJNZ RET001MOV TT1,A ;TT1清零DEC TT2MOV A,TT2SUBB A,#0FFH ;到零?JNZ RET001MOV TT2,#3BH ;重新送数DEC TT3MOV A,TT3SUBB A,#0FFHJNZ RET001MOV TT3,#3BHDEC TT4MOV A,TT4SUBB A,0FFHJNZ RET001HERE: CLR P1.5;定时中止SJMP HERE;RET001: LJMP LOOP1;-----------显示倒计时1:-------------- TIMEING1:MOV A,TT4MOV DPTR,#TEMP_TABMOVC A,@A+DPTRMOV R0,AANL A,#0FH;送小时的个位MOV DPTR,#VIEW0MOVC A,@A+DPTRSETB P2.0SETB P2.1CLR P2.2SETB P2.3LCALL DELAYMOV A,R0SWAP AANL A,#0FHMOVC A,@A+DPTRCLR P2.3MOV P0,A ;显示时的十位SETB P2.0SETB P2.1SETB P2.2CLR P2.3LCALL DELAYMOV A,TT3MOV DPTR,#TEMP_TAB MOVC A,@A+DPTRMOV R0,AANL A,#0FH;送分的个位MOV DPTR,#VIEW0MOVC A,@A+DPTRMOV P0,ACLR P2.0SETB P2.1SETB P2.2SETB P2.3LCALL DELAYMOV A,R0SWAP AANL A,#0FHMOVC A,@A+DPTRMOV P0,A ;显示分的十位SETB P2.0CLR P2.1SETB P2.2SETB P2.3LCALL DELAYRET;-----------显示倒计时2:-------------- TIMEING2:MOV A,TT3MOV DPTR,#TEMP_TABMOVC A,@A+DPTRMOV R0,AANL A,#0FH;送分的个位MOV DPTR,#VIEW0MOVC A,@A+DPTRSETB P2.0SETB P2.1CLR P2.2SETB P2.3MOV P0,ALCALL DELAYMOV A,R0SWAP AANL A,#0FHMOVC A,@A+DPTRSETB P2.0SETB P2.1SETB P2.2CLR P2.3MOV P0,A ;显示分的十位LCALL DELAYMOV A,TT2MOV DPTR,#TEMP_TABMOVC A,@A+DPTRMOV R0,AANL A,#0FH;送秒的个位MOV DPTR,#VIEW0MOVC A,@A+DPTRCLR P2.0SETB P2.1SETB P2.2SETB P2.3MOV P0,ALCALL DELAYMOV A,R0SWAP AANL A,#0FHMOVC A,@A+DPTRSETB P2.0CLR P2.1SETB P2.2SETB P2.3MOV P0,A ;显示秒的十位LCALL DELAYRET;**************定时中断子程序**************************************** CTC0: MOV TL0,#0B0H ;定时50msMOV TH0,#3CHINC TT1RETIEND。
51单片机数码管倒计时汇编语言代码
![51单片机数码管倒计时汇编语言代码](https://img.taocdn.com/s3/m/734e89e627fff705cc1755270722192e453658f2.png)
51单片机数码管倒计时汇编语言代码数码管是一种电子元器件,常用于倒计时、计时和显示数字等场景中。
其中,51单片机作为一种常见的控制芯片,能够对数码管进行比较精确的控制。
本文将介绍51单片机在数码管倒计时中的应用,并给出相应的汇编语言代码。
一、硬件准备首先,我们需要准备一些硬件设备。
具体来说,我们需要一块51单片机的开发板、一组共阳数码管、一个蜂鸣器、一枚按键开关、若干杜邦线和面包板。
在连接各个模块时,需要注意接线的正确性和稳定性。
二、倒计时实现接下来,我们就可以开始编写汇编语言代码了。
代码实现中,需要注意数码管的显示方式以及倒计时时间的设定等细节。
首先,我们定义一些常数,如:COUNT_MAX EQU10;倒计时时长为10sCLK_FREQ EQU12000000;时钟频率为12MHzDELAY_US EQU CLK_FREQ/1000000其中,COUNT_MAX表示倒计时的最大时长,CLK_FREQ表示单片机的时钟频率,DELAY_US表示1us延时所需的机器周期数。
其次,需要定义一些数据段:ORG0SJMP MAINORG0BHDELAY_CNT:DB0ORG0CHMODE_CNT:DB0其中,DELAY_CNT是延时计数器,MODE_CNT是模式计数器。
接着,我们定义主函数:MAIN:CLR P1.5CLR P1.6CLR P1.7MOV TMOD,#01H;设置定时器0为模式1SETB TR0;启动定时器0SETB EASETB ET0SETB EX0MOV R6,#DELAY_USSJMP MODE_SEL首先,需要清空P1.5、P1.6和P1.7引脚,以便控制数码管的显示。
然后,设置定时器0为模式1,并启动定时器0。
接着,开启总中断、定时器0中断和外部中断,设置延时计数器,并跳转到MODE_SEL 模式选择功能。
接下来是MODE_SEL模式选择功能:MODE_SEL:MOV A,MODE_CNTCPL AMOV MODE_CNT,AANL A,#03HJZ MODE_0CJNE A,#01H,MODE_SEL_ENDSJMP MODE_1CJNE A,#02H,MODE_SEL_ENDSJMP MODE_2MODE_SEL_END:CLR TR0CLR EARETI在这个模式下,程序每执行一次,模式计数器加1,并且A寄存器与3进行与操作,最后根据A的值跳转到相应的倒计时模式。
单片机倒计时系统
![单片机倒计时系统](https://img.taocdn.com/s3/m/2c85dfab988fcc22bcd126fff705cc1755275fb9.png)
单片机倒计时系统单片机倒计时系统可以采用8051单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计。
具体功能包括:1.六位LED显示,从59分59秒99开始倒计时。
2.倒计时精度为0.01秒,能正确地进行倒计时。
3.复位后倒计时重新回到初始状态。
单片机倒计时系统的制作方法包括以下步骤:1.确定系统的基本要求:例如数码管上显示计时的时间,可以通过按键实现1小时内初始时间的设定(以秒为分度),并且完成计时,可随时暂停并且重新设置计时时间等。
2.选择合适的单片机型号:根据需要实现的倒计时功能以及控制要求,选择适合的8051单片机型号,例如AT89C51等。
3.设计电路:根据所选的单片机型号和功能要求,设计外围电路,包括按键电路、复位电路、晶振电路、LED显示电路等。
4.编写程序:使用C语言等编程语言编写程序,实现倒计时的功能。
程序应该包括主程序、中断服务程序等。
在编写程序时需要考虑按键的输入、时间的计算、LED的显示等细节问题。
5.调试程序:通过调试程序可以确保程序的正确性和可靠性。
在调试时需要使用调试工具,例如示波器、逻辑分析仪等,对程序的各个部分进行测试和验证。
6.制作电路板:将设计好的电路制作成电路板,将各个元器件按照设计好的位置和连接方式焊接在电路板上。
7.测试系统:完成电路板的制作后,需要进行系统测试,验证是否实现了预期的倒计时功能。
测试时需要使用测试工具,例如电源、按键、LED显示器等,对系统的各个部分进行测试和验证。
总之,单片机倒计时系统是一个比较复杂的系统,需要设计电路、编写程序、制作电路板和测试系统等多个步骤。
在制作过程中需要注意细节问题,确保系统的正确性和可靠性。