单片机倒计时器设计说明书
单片机设计24秒倒计时

单片机设计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秒倒计时的功能要求。
同时,该设计可以在实际中进行必要的优化和改进,以满足具体的应用需求。
单片机设计说明书

单片机课程设计报告(电气工程学院)设计题目:倒计时计时器设计专业班级:指导教师:学生姓名:设计地点:第二实验楼设计日期: 2016.6.12—2016。
6.19设计任务书目录摘要 (1)第一章设计方案 (1)1.1 设计任务书分析 (1)1。
2 设计思路 (1)1。
3 设计方案 (1)第二章硬件设计 (3)2.1 功能模块设计 (3)2.2 芯片介绍 (3)第三章程序设计 (5)3.1 程序设计思路 (5)3.2 程序设计工具简介 (5)3。
3 程序流程框图 (5)第四章系统调试 (6)4。
1 调试思路 (6)4.2 调试方法及过程 (6)4。
3 问题及解决措施 (6)第五章总结 (7)5.1硬件 (7)5。
2 程序 (7)心得体会 (8)参考文献 (9)附录一电路原理图 (10)附录二源程序清单 (11)倒计时计数器设计摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动着传统控制检测日新月异的更新。
由于单片机具有体积小、易于产品化、面向控制、集成度高、功能强、可靠性高、价格低等特点,其在工业控制、机电一体化、智能仪表、通信等诸多领域中得到了广泛的应用。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用。
但是仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本课程设计针对倒计时系统的设计的需求,介绍了STC15F204EA单片机和数码显示管的部分基本原理,如STC15单片机元件和四位数码显示管在电路板上焊接,电路原理图的介绍,以及写定时器程序等等。
通过Keils软件撰写倒计时定时器程序并且用Proteus仿真电路的绘制并仿真成功,之后把程序输入到单片机中,再做最后的调试工作。
关键词:STC15F204EA单片机;Keils软件;Proteus仿真软件。
In recent years, with the penetration of computer in the social field, SCM applications are constantly go, drive the traditional control detection update changing at the same time。
单片机倒计时器

单片机倒计时器设计一电路原理倒计时采用stc89c52, 74hc573驱动四位数码管以及按键构成。
原理图如下:RP1为上拉10k排阻晶振采用12Mhz无缘晶振数码管为四位共阴数码管74hc573起所存作用四个按键分别连P3.4~P3.7二工作过程单片机上电初始化,P0口输出0,并把四位数码管全部打开,数码管显示四个0。
检测按键如果按键key1 按下那么数码管第一位加1。
如果按键key2 按下那么数码管第一位加1。
如果按键key3 按下那么启动定时器,开始倒计时。
如果按键key4 按下倒计时暂停,数码管显示停留在当前数值。
倒计时器用到了计时器工作方式0和t0溢出中断设定计时器初值为TH0=(65536-50000)/256;TL0=(65536-50000)%256;即50ms中断一次20次记一秒从而达到记时一秒的目的。
三软件程序程序由Keil uVision4软件用c语言编写,内容如下#include<reg52.h>#include<intrins.h>#define uc unsigned char;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x79,0x38,0x3f,0};sbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4;sbit key2=P3^5;sbit key3=P3^6;sbit key4=P3^7;uc shu,shi,ge,bai,t0,num,ss;void shuma(shi,ge,ss);void delay(unsigned int z);void init ();void main(){P3=0xff;init();while(1){if(key4==0){TR0=0;}if(key3==0)TR0=1;if(key1==0){delay(5);if(key1==0){shi++;if(shi==10)shi=0;}while(!key1);delay(5);while(!key1);}dula=1;P0=table[shi];dula=0;if(key2==0){delay(5);if(key2==0){ge++;if(ge==10)ge=0;}while(!key2);delay(5);while(!key2);}dula=1;P0=table[ge];dula=0;shuma(shi,ge,ss);}}void init(){shi=0;ge=0;ss=0;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;EX0=1;}void time0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(t0==2){t0=0;if(ss==0){if(ge==0){if(shi==0)TR0=0;else{ge=9;shi--;ss=9;}}else{ss=9;ge--;}}elsess--;}}void shuma(shi,ge,ss){dula=1;P0=table[shi];dula=0;P0=0xff;delay(10);wela=1;P0=0xfe;wela=0;delay(10);dula=1;P0=table[ge];dula=0;P0=0xff;delay(10);wela=1;P0=0xfd;wela=0;delay(10);dula=1;P0=table[ss];dula=0;P0=0xff;delay(10);wela=1;P0=0xfb ;wela=0;delay(10);}void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=124;y>0;y--);}四实验总结通过这次试验使我们的动手能力得到了很强的锻炼。
基于80C51单片机的倒计时器

基于80C51单片机的倒计时器摘要 ------------------------------------------------------------------------------------------------------ 1前言 -------------------------------------------------------------------------------------------------------- 2第一章倒计时系统简介 ------------------------------------------------------------------------------ 3第一节功能说明---------------------------------------------------------------------------------- 3一、设计要求 ------------------------------------------------------------------------------ 3二、方案说明 ------------------------------------------------------------------------------ 3三、系统功能 ------------------------------------------------------------------------------ 4第二章80C51 单片机组成 -------------------------------------------------------------------------- 4第一节80C51 单片机结构-------------------------------------------------------------------- 4第二节、80C51芯片介绍-------------------------------------------------------------------- 4第三节、80C51单片机的引脚功能----------------------------------------------------- 5第四节、80C51单片机的中断------------------------------------------------------------- 7一、中断源---------------------------------------------------------------------------------- 7二、中断控制 ------------------------------------------------------------------------------ 8三、中断源优先级 ------------------------------------------------------------------------ 8四、串行口中断RI 或TI --------------------------------------------------------------- 9第三章硬件设计 ---------------------------------------------------------------------------------------- 9第一节硬件设计------------------------------------------------------------------------------- 9第二节硬件电路设计及电路图 ------------------------------------------------------------ 10第三节LED 数码显示器的结构 ---------------------------------------------------------- 10第四节流程图 ----------------------------------------------------------------------------------- 11第五节总体接线图 ---------------------------------------------------------------------------- 12第五章程序仿真 -------------------------------------------------------------------------------------- 13第六节本章小结 -------------------------------------------------------------------------------------- 15参考文献------------------------------------------------------------------------------------------------ 15附件 1 程序 ------------------------------------------------------------------------------------------- 16摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动着传统控制检测日新月异的更新。
基于单片机的倒计时器(计数器)设计

目录目录 (1)摘要 (3)ABSTRACT (4)第一章设计要求与方案确定 (5)1.1设计意义 (5)1.2设计要求 (5)1.3方案确定 (5)第二章硬件电路 (6)2.1单片机概述 (6)2.1.1 单片机基础 (6)2.1.2单片机与单片机系统 (7)2.1.3 单片机的产生与发展 (7)2.2MCS-51系列单片机介绍 (8)2.2.1 80C51 芯片介绍 (8)2.2.3 最小系统 (9)2.2.4 定时与中断的概念 (10)2.4LED显示电路设计与器件选择 (12)2.4.1.LED显示器的选择 (13)2.4.2LED驱动芯片选择 (13)2.5按键电路设计 (13)2.6蜂鸣器电路的设计 (14)第三章倒计时器的设计 (15)3.1倒计时器系统设计方案及框图 (15)3.2程序设计 (15)3.2.1主程序设计 (15)3.2.2倒计时模块设计 (17)3.2.3键盘扫描数码管显示程序 (17)第四章倒计时器设计仿真 (18)4.1设置倒计时初值 (18)4.2开始倒计时 (18)4.3倒计时结束并报警 (18)总结 (20)参考文献 (21)致谢 (22)附录1 倒计时器设计源程序 (23)附录2 所用元器件清单 (23)摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断的走向深入,同时带动传统控制检测日新月异更新。
在实时控制和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本系统由单片机系统、矩阵式键盘、蜂鸣器和LED数码管显示系统组成。
装置利用AT89C51单片机与74LS245驱动器驱动LED数码管显示。
通过按键控制设定倒计时时间,再通过中断控制系统开始倒计时。
当倒计时时间到时,由P1.0口驱动蜂鸣器发声报警。
为了简化电路,降低成本,采用以软件为主的的接口方法。
PIC单片机课程设计-三位倒计时器(含全部汇编程序清单)

主循环程序:循环读取按键状 态,根据按键状态执行相应的 操作
初始化程序:设置定时器、 中断、I/O口等
定时器中断服务程序:定时器 中断发生时,更新倒计时值,
并判断倒计时是否结束
显示程序:根据倒计时值, 更新LED显示内容
错误处理程序:处理可能出现 的错误,如按键错误、定时器
错误等
初始化显示模块: 设置显示模式、亮 度、对比度等参数
电源模块的设计原 则:安全、稳定、 高效
电源模块的选型: 根据系统需求选择 合适的电源模块
初始化:设置定时器、中断、I/O口等 循环:循环读取定时器值,判断是否达到预设时间 显示:根据定时器值,更新显示内容 处理中断:处理定时器中断,更新定时器值 循环结束:当定时器值达到预设时间,循环结束,显示“时间到”信息
添加标题
设计思路:根据输入信号的类型和 数量,选择合适的输入接口和处理 方式
注意事项:确保输入信号的稳定性 和准确性,避免误操作或干扰导致 的错误输入
中断源:外部中断、定时器中断、串口中断等 中断优先级:根据需求设置中断优先级 中断处理:根据中断源执行相应的处理程序 中断返回:处理完成后返回主程序或等待下一个中断
调试方法:单步 调试、断点调试、 观察变量等
常见问题:程序 运行异常、死机、 数据错误等
调试技巧:设置 合理的断点、观 察变量变化、分 析程序逻辑等
测试功能:倒计时 功能、显示功能、 报警功能等
测试方法:手动测 试、自动测试、压 力测试等
测试工具:示波器 、逻辑分析仪、万 用表等
测试结果:记录测 试数据,分析测试 结果,找出问题并 解决
测试目的:验证倒计时器的性 能和稳定性
测试环境:实验室环境或实际 应用环境
单片机设计24秒倒计时

1、具有24s 计时功能。
2、设置外部操作开关,控制计时器的直接清零、启动和暂停/ 连续功能。
3 、计时器为24 秒递减时,计时间隔为1 秒。
4、计时器递减到零时,数码显示器不能灭灯,同时发出光电报警信号。
5、有直接清零然后恢复到24 秒,准备重新开始计数。
学生在教师指导下,综合运用所学知识完成基于单片机的篮球比赛24 秒计时器设计。
要求设计一个24 秒计时电路,并具有时间显示的功能。
要求:1、设置外部操作开关,控制计数器的直接清零、启动和暂停/ 连续计时。
2、要求计时电路递减计时,每隔1 秒钟,计时器减1。
3、当计时器减到0 时,显示器上显示00,同时发出光电报警信号。
硬件电路:设计思路:选用AT89C51作为主控芯片,晶振是6KHz机械周期为1ms 所以循环10次为1s。
P0 口作为段码输出,、作为位控,高电平有效。
数码管是液晶显示,采用动态显示,两个串行口作为中断入口,高电平有效,启动T0 定时器/ 计数器进行计数,低电平有效。
图2.2.1 是系统硬件设计电路图一。
时间设置完后,启动定时器T0 开始定时计数。
计时采用倒计时,比如:设置的时间为24秒钟,则在LED上显示24两位数。
定时T0 计数24 秒后中断返回,继续定时计数下一个24秒;同时则在2位LED显示器上显示,表示时间已经过去1秒钟,即为23秒。
这样一直持续下去。
知道变为“ 00”时表示赛程结束。
如果比赛中裁判叫停,则只要按下键,即可暂停计时。
程序设计:根据以上流程图,可以用汇编语言编写出篮球计时器24秒倒计时程序,该程序包括主程序,中断程序,延时程序以及显示程序。
# include<># include<>#define uint unsigned int#define uchar unsigned charsbit w仁p2A0; // 十位位选sbit w2=p2A1;// 个位位选sbit key1=p1A0; // 按键为选码sbit key2=p1A1;sbit key3=p1A2;sbit BEEP=P2A7; // 报警器控制位uint num,num1,shi,ge;uchar code table[ ]={0x3f,0x06,0x5b,0x4f, //数码管相应的段选码0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(unit z){uint x,y;for(x=z;x>0;x--)for(y=1 10;y>0;y--)}/*void delay1(uchar x) //x*{uchar i;while(x--){for(i=0;i<13;i++) { }}}void beep(void){uchar i;for (i=0;i<50:i++){delay 1(4);BEEP=!BEEP; //BEEP 取反}}*//* 按键扫描函数 */void keyscan(){if(key1==0) //{delay(5); // if(key1==0){while(!key1); //TR0=1; } }if(key2==0) //{开始计算延时消抖松手检测暂停计数松手检测松手检测关闭蜂鸣器} void init()delay(5); // 延时消抖 if(key2==0){while(!key2); //TR0=0; while(!key 3);//num1=24; TR0=1; BEEP=1; //{ num1=24;TMOD=0x01;〃设置定时器0为工作方式1 TH0=(65536-50000)256; // 定时器 0 的高八位 TL0=( 65536-50000)%256; // 定时器 0 的低八位 EA=1; // 开总中断 ET0=1; // 开定时器 0 中断TR0=1; // 启动定时器 0 //TOCN 中有 TR0}/* 数码管显示函数 */void display(uchar shi,uchar ge) {P0=table[shi]; // 十位显示 w1=1; w2=0; //delay(2);P0=table[ge]; // w1=0;w2=1; // delay(2);if(num1==0) // {TR0=0; BEEP=0; } } void main(){init(); while(1)选位设置个位显示 位选设置如果 24 秒显示完成后,报警keyscan( );if(num==20){num=0;num1--;}ge=num1%10; // 个位shi=num1/10; // 十位display(shi,ge);}}void time1( ) interrupt 1 // 次中断定时器计数,50ms产生一{TH1=(65536-50000)/256;TL1=(65536-50000)%256;num++;。
基于单片机的倒计时器(计数器)设计

基于单⽚机的倒计时器(计数器)设计⽬录⽬录 (1)摘要 (3)ABSTRACT (4)第⼀章设计要求与⽅案确定 (5)1.1设计意义 (5)1.2设计要求 (5)1.3⽅案确定 (5)第⼆章硬件电路 (6)2.1单⽚机概述 (6)2.1.1 单⽚机基础 (6)2.1.2单⽚机与单⽚机系统 (7)2.1.3 单⽚机的产⽣与发展 (7)2.2MCS-51系列单⽚机介绍 (8)2.2.1 80C51 芯⽚介绍 (8)2.2.3 最⼩系统 (9)2.2.4 定时与中断的概念 (10)2.4LED显⽰电路设计与器件选择 (12)2.4.1.LED显⽰器的选择 (13)2.4.2LED驱动芯⽚选择 (13)2.5按键电路设计 (13)2.6蜂鸣器电路的设计 (14)第三章倒计时器的设计 (15)3.1倒计时器系统设计⽅案及框图 (15)3.2程序设计 (15)3.2.1主程序设计 (15)3.2.2倒计时模块设计 (17)3.2.3键盘扫描数码管显⽰程序 (17)第四章倒计时器设计仿真 (18)4.1设置倒计时初值 (18)4.2开始倒计时 (18)4.3倒计时结束并报警 (18)总结 (20)参考⽂献 (21)致谢 (22)附录1 倒计时器设计源程序 (23)附录2 所⽤元器件清单 (23)摘要近年来随着计算机在社会领域的渗透,单⽚机的应⽤正在不断的⾛向深⼊,同时带动传统控制检测⽇新⽉异更新。
在实时控制和⾃动控制的单⽚机应⽤系统中,单⽚机往往是作为⼀个核⼼部件来使⽤,仅单⽚机⽅⾯知识是不够的,还应根据具体硬件结构,以及针对具体应⽤对象特点的软件结合,以作完善。
本系统由单⽚机系统、矩阵式键盘、蜂鸣器和LED数码管显⽰系统组成。
装置利⽤AT89C51单⽚机与74LS245驱动器驱动LED数码管显⽰。
通过按键控制设定倒计时时间,再通过中断控制系统开始倒计时。
当倒计时时间到时,由P1.0⼝驱动蜂鸣器发声报警。
为了简化电路,降低成本,采⽤以软件为主的的接⼝⽅法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机倒计时器设计说明书1.设计方案简介(1)4个按键组成2*2矩阵形式,接到P3口。
其中SW4接P3.6口,SW5接P3.7。
(2)通过T0定时器与P2.3引脚配合构成音频发生器,在P2.3引脚输出音频频率。
2.设计流程图3.设计原理3.1 AT89C513.1.1 AT89C51单片机简介图(a) 89C51部结构图AT89C51是美国ATMEL公司推出的系列单片机,将多种功能的8位CPU与FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比远高于同类芯片。
它与MCS-51指令系统兼容,片FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入/擦除1000次。
89C51含4KB的FPEROM,一般的EEPROM的字节擦除时间和写入时间基本上均为10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。
与EEPROM相比较,FPEROM大大缩短了存储容擦除和写入的时间,为在线改写程序提供了极大的方便,而且价格也比带EPROM87C系列单片机便宜,这更显示出了89C系列的优越性。
它还有128*8Bit的片RAM;32根I/O线;2个16位定时/计数器;5个中断源;一个全双工的异步串行口;间歇和掉电工作模式;三级程序存储器加密;全静态工作,晶振工作围:0Hz—24MHz。
3.1.2 管脚功能AT89C51单片机为40引脚芯片如图(b)所示。
(1)I/O口线: P0、P1、P2、P3共四个八位P0口是三态双向口, 通称数据总线口, 因为只有该口能直接用于对外部存储器的读ˆ写操作。
P0口也用以输出外部存储器的低8位地址。
由于是分时输出, 故应在外部加锁存器将此地址数据锁存, 地址锁存信号用ALE。
P1口是专门供用户使用的I/O口, 是准双向口。
P2口是从系统扩展时作高8位地址线用。
不扩展外部存储器时, P口也可以作为用户I/O口线使用, P2口也是准双向口。
P3口是双功能口, 该口的每一位均可独立地定义为第一I/O 功能或第二I/O功能。
作为第一功能使用时操作同P1口。
P3口的第二功能如图(c)。
图(b) 89C51引脚图(2)控制口线: PSEN (片外取控制)、AL E( 地址锁存控制)、EA (片外储器选择)、RE2SET (复位控制) ;(3)电源及时钟: CCC、VSS; XTAL 1, XTAL 2图(c) 引脚功能表3.2 实验原理图图(1) 主控制电路图(2) LED数码管控制电路图(3) 蜂鸣器控制电路4.软件流程图4.1倒计时器主程序框图4.2显示子程序框图5.带详细注释的源程序清单;************************************************; 设计选题: 倒计时器系统设计; 描述: 4位LED数码显示"倒计时器",显示时间为99秒, ; 一个"开始"键,一个"复位"键,一个"暂停"键。
; 调用子程序: 计时子程序,显示子程序,定时子程序; 所用特殊寄存器:寄存器A,寄存器C; 所用中断:外部中断INT0,定时器T0; 实验作者: 肖延文--47号,高穹誉--10号;************************************************ORG 0000HLJMP START ;主程序必须避开地址000BHORG 000BH ;定时器0的中段服务程序,起始地;址为000BHLJMP IT00ORG 0030HSTART: MOV TH0,#0D8H ;装入初始值,定时10msMOV TL0,#0F0HMOV TMOD,#01H ;工作方式1MOV 33H,#09 ;显示初值为99sMOV 32H,#09MOV 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之后是否再减1 MOV 30H,#09 ;是,装入初值9DEC 31H ;十分位减1MOV A,31HCJNE A,#0FFH,LOOP2 ;判断十分位减到0之后是否再减1 MOV 31H,#09DEC 32HMOV A,32HCJNE A,#0FFH,LOOP2MOV 32H,#09DEC 33HMOV A,33HCJNE A,#0FFH,LOOP2CLR P2.3 ;从99s减到0s后,驱动蜂鸣器 LCALL DELAY ;延时LCALL DELAYSETB P2.3 ;关闭蜂鸣器MOV 33H,#09 ;装入初值99sMOV 32H,#09MOV 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 ASETB P2.7MOV P0,ACLR P2.7XCH A,R0MOV A,31HMOVC A,A+DPTR SETB P2.6MOV P0,ACLR P2.6LCALL DELAYXCH A,R0RL ASETB P2.7MOV P0,ACLR P2.7XCH A,R0MOV A,30HMOVC A,A+DPTR SETB P2.6MOV P0,ACLR P2.6LCALL DELAYRET;************************************************; 数码管显示的数值;************************************************TAB: DB 0EDH,48H,0F4H,0B5H,99HDB 3DH,7DH,85H,0FDH,0BDH,0DDH,79H,6CH,0F1H,7CH,5CHIT00: MOV TH0,#0D8H ;装入初值10msMOV TL0,#0F0HLCALL SUB1 ;减10msRETI ;返回;************************************************;延时子程序,时间大约为:2us*10*250;************************************************DELAY: MOV R7,#10DEL2: MOV R6,#250DEL1: DJNZ R6,DEL1DJNZ R7,DEL2RETEND ;结束6.调试运行1. 接硬件图连线,为了确保四位数码管能够对应显示。
实验时,对P0口的接线做了调整。
即:P0.0接L1,P0.1接L2,P0.2接L3,P0.3接L4。
2. 从0030H单元开始连续运行,观察四个数码管显示情况是否与预期的结果一致。
如果不一致,则单步运行或断点运行进行调试,直至满足设计要求。
3. 整体运行,观察数码管显示是否符合要求。
如果不符合,则再调试,直至满足要求。
7.个人体会通过本次课程设计,我深深的体会到了作为一个硬件工程师的艰辛。
即使做一个小小的项目,都需要这么多的辛苦,必须考虑到问题的任何一个细节,否则最后也将是功败垂成。
原理图设计: 当我们选取了这样一个题目,我们就开始收集相关的各种资料,对题目有个大致的了解,规划一下设计的任务将要完成哪些功能。
然后就具体的每一项功能应该怎样具体的设计,例如用什么方法完成这一功能,这种想法是否合理。
经过长时间的查阅资料、思索、推敲,最后定出了这次设计的原理图。
编程调试:此次设计的编程,难点在于对LED数码管显示程序的编写,由于对AT89C51的工作原理不是很熟悉,所以一开始摸不着头脑。
看参考教材、上网查阅其相关资料,对AT89C51的工作原理有个大致的了解后,程序的编写也初见端倪了,所以花在编此段程序的时间最长;中断程序的编写也是常规的编写。
在整个程序的编写过程中,研究每个子程序是否好使,我是通过KeilC和proteus两个软件来实现的。
Proteus是一个单片机的仿真软件,发现它之后真的很受用,通过它可以不用连接硬件就能检查程序是否好使。
Keil C则帮助我检查程序是否存在语法错误之类的问题,还可以生成hex 文件,供proteus软件仿真使用。
通过这两个软件,我们把整个的程序调试正确。
通过上面的这个步骤,把程序调试好,接下来就是真正的硬件连接调试了。
程序既然已经在仿真的软件上通过认证,如果连接上硬件不好使的话,说明在硬件上某个部分存在一定的问题。
这点得到了验证:硬件模拟的时候,紧急情况用的开关有一个不好使,按下的时候没有反应。