1200秒倒计时报警器设计单片机课程设计.docx

上传人:小飞机 文档编号:3141299 上传时间:2023-03-11 格式:DOCX 页数:13 大小:42.05KB
返回 下载 相关 举报
1200秒倒计时报警器设计单片机课程设计.docx_第1页
第1页 / 共13页
1200秒倒计时报警器设计单片机课程设计.docx_第2页
第2页 / 共13页
1200秒倒计时报警器设计单片机课程设计.docx_第3页
第3页 / 共13页
1200秒倒计时报警器设计单片机课程设计.docx_第4页
第4页 / 共13页
1200秒倒计时报警器设计单片机课程设计.docx_第5页
第5页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《1200秒倒计时报警器设计单片机课程设计.docx》由会员分享,可在线阅读,更多相关《1200秒倒计时报警器设计单片机课程设计.docx(13页珍藏版)》请在三一办公上搜索。

1、1200秒倒计时报警器设计单片机课程设计课程设计说明书 目录 第一章 系统概述 1.1 设计目的 . 1 1.2 设计内容.1 1.3 设计要求.1 第二章 系统方案 .2 2.1 总体方案. .2 2.2 方案组成.2 第三章 软件设计.3 3.1 主程序设计.3 3.1.1 倒计时模块. 4 3.1.2 键盘扫描模块.4 3.1.3显示程序模块.5 3.1.4 实施结果.6 第四章 总结体会.6 4.1设计心得及体会.6 4.2 参考文献.7 附录程序清单. .8 1 第一章 系统概述 1.1 设计目的 此次设计是我们更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,

2、巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。通过解决实际问题,巩固和加深“单片微型计算机原理与接口技术”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,学习定时器的使用方法、独立按键程序编写、多位数码管扩展方法,提高实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更

3、进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。 1.2设计内容 设计一个1-200秒倒计时报警器,报警时间可调,用数码管显示报警时间,用两个按键可调节报警范围,一个按键启动,一个按键设置/修改。 画出程序流程图并编写程序实现上述功能。 1.3 设计要求 1、能够实现秒的倒计时功能; 2、倒计时结束,报警提示; 3、通过按键能够设置倒计时报警器的初始值; 2 第二章 系统方案 2.1 总体方案 设计时可采用模块化程序设计方法。模块划分时应遵循下述原则: 每个模块应具有独立的功能,能产生一个明确的结果。 模块之间的控制参数应尽量简单,数据参数应尽量少。 根据

4、模块的划分原则,将该程序划分成5个模块,如图2-2所示。 主程序 数码管动态扫描模块当前时间倒计时模块输入倒计时时间模块指示灯显示模块重设倒计时图2-2 倒计时器设计框图 2.2 方案组成 硬件部分由重设按钮、启动按钮、AT89C51单片机、一个6位共阴极LED显示器等组成。 软件部分主程序主要由系统初始化段、键盘识别、键值处理,以及6位共阴极LED显示器扫描显示子程序,T1中断。 3 第三章 软件设计 3.1 主程序设计 所以主程序的设计一般包括:主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序调用等等。 程序的起始地址 MCS-51系列单片机复位后,=0

5、000H,而0003H002BH分别为个中断源的入口地址。所以,编程也应在0000H处写一跳转指令。 当CPU接受到中断请求信号并予以响应后,CPU把当前的PC内容压入栈中进行保护,然后转入响应的中断服务程序入口处执行。一般在响应的中断服务程序入口处写一条跳转指令,并以跳转指令的目标地址作为中断服务程序的其始地址进行编程。 主程序的初始化内容 所谓初始化,是对用到的单片机内部部件或拓展芯片进行初始工作状态设定。 在本例中,使用了两个中断,即T1。其中: 1.T1中断:采用T1定时中断工作方式,完成倒计时。 主程序流程图 主程序 设置各中断服务程序的入口地址 相关寄存器清零 设置数码管显示初始状

6、态 按键扫描 显示按下的数字 进行倒计时 N 时间是否超出 Y 指示灯亮灭 4 在这里介绍几个主要的模块: 3.1.1 倒计时模块设计 定时器T1计数初值 T1计数初值为:TH1=/256;TL1=MOD 256 工作方式TMOD=00000001H=01H 流程图如图4-2所示 3.1.2 键盘扫描模块 扫描按键情况,并显示在数码管的分数值位。 按键去抖动的处理。由于机械触点的弹性作用,在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间长短由按键的机械特性决定,一般为510ms。而按键稳定闭合时间的长5 开始倒计时 寄存器清零 设置定时器1工作方式 N 判断按键次数 启动定时器1 关闭定时器1

7、 通过SET设指示灯亮灭 等待中断 短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次,为了确保CPU对键的一次闭合仅做一次处理,键抖动可用硬件和软件两种方法消除。本设计采用软件方法。 6 3.1.3 显示程序模块 由于该系统使用的是六位LED显示器显示倒计时,因此显示采用动态扫描显示方法,即由显示器扫描显示子程序控制显示器逐个循环从左至右依次点亮各个显示器。这样虽然在任一时刻只要一个显示器点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果一样。如下面的图所示: 7 开始 从89C51的P1口送显示器位码 读相应位存储单元数据 由读得数据查表

8、确定段码由89C51送相应显示器位 结束 3.1.4 实施结果 首先开始找到主程序入口地址,运行程序; 按A时间加,按B时间减,时间在1到200,按C开始倒计时。倒计时的时候可以随时按A或者B更改时间。 倒计时的时候可以随时按A或者B更改时间。 倒计时结束二极管亮起,蜂鸣器响三秒结束后可以重新赋值。 8 第四章 总结体会 4.1设计心得及体会 该倒计时器是基于定时而设计的实现计时报警的装置。由键盘扫描、动态LED显示电路、指示灯亮三大部分构成。装置利用AT89S51单片机构成电路,以实现对计时时间的控制。同时装置还用一个由电平控制的指示灯的亮灭装置,用以实现倒计时时间到时提示,以及错出现时候的

9、提示。 本装置的最大特点是实时性强,可操作性好。因为采用了矩阵式键盘控制,能够随时9 改变倒计时时间,所以装置能够应对不同的要求而做出相应的调整,以适应不同的环境。 看事物要辩证的看。本装置也存在一些缺点值得注意。如当按键开关出现问题时,系统会出现错误,出现指示灯亮的状态。 我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。 我在整个设计过程中懂得了许多东西,当遇到一不了的问题,跟同伴一起商量、合作,或许能收到事半功倍的效果。不管学什么,一定要打好基础,并将其学好、学精,但空

10、有知识也不一定就能说明什么,还得能为己所用;还有更重要的是培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力, 使自己充分体会到了在设计过程中的成功喜悦。虽然这个设计做的不是很完美,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益;最后,也是我感触比较深的一点,这次课程设计时为数不多的独立完成的一次,虽然过程中遇到很多困难,让自己犯愁过,彷徨过,急躁过,可当自己很快调整好心态,从跌倒的地方爬起来继续,最后取得成功,不止是成功后的喜悦,也是一次锻炼! 本次课程设计总的来说是比较成功的,但在设计及

11、操作过程中也遇到了不少的问题。这个过程当然也就少不了老师和同学的帮助,所以我们要感谢给予我们帮助和支持的老师和同学。在设计过程中,我们始终得到他们的悉心教导和认真指点,使得我们在理论知识和动手操作方面都有了很大的提高!通过这次课程设计使我们懂得了理论与实际结合是很重要的,只有理论知识是远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正服务于社会,从而提高自己的实际动手和独立思考的能力。同时在设计的过程中我们也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过这次课程设计之后,也把以前所学过的知识重新进行了温故。它不仅锻炼了我们的实际操作能力,还

12、与我们的专业零距离接触,更主要的是我们学到了书本上没有的知识,尤其感到自身对于书本知识的掌握太死板,并不能灵活运用。这样就使我们的理论知识更加实践化了,让我们对书本上的知识也更加重视了,不再像以前那样盲目,同时通过这次设计,对以后的毕业设计也奠定了一定的基础,更为重要的是对我们自己的将来有了更为明确的奋斗目标。 10 4.2参考文献 1 张毅刚. 单片机原理及接口技术M .哈尔滨:哈尔滨工业大学出版社,2010. 附录程序: #include sbit b_1 = P20; /数码管引脚定义 sbit b_2 = P21; /数码管引脚定义 sbit b_3 = P22; /数码管引脚定义 s

13、bit b_4 = P23; /数码管引脚定义 sbit key_1 = P10; /累加 sbit key_2 = P11; /移位 sbit key_3 = P12; /移位 sbit BEEP = P17; int number = 0; int number_flag = 0; bit start = 1; unsigned char dis = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf; /数码管引脚定义 0123456789 - 11 unsigned int count=0; /计数标量 unsigne

14、d char bit_1 = 0; /数码管显示的四位标量 unsigned char bit_2 = 0; /数码管显示的四位标量 unsigned char bit_3 = 0; /数码管显示的四位标量 unsigned char bit_4 = 0; /数码管显示的四位标量 void delay10ms(char d) /误差 0us unsigned char a,b,c; for(c=d;c0;c-) for(b=38;b0;b-) for(a=130;a0;a-); char flag=0; void main TMOD = 0X01; /设置定时器T0 16位 EA = 1; /

15、打开中断 ET0 = 1; /打开TO定时器 TR0 = 1; /关闭中断 12 TH0 = (65536-5000)/256; TL0 = (65536-5000)%256; BEEP = 0; start = 0; while(1) if(key_1=0) /标量+ while(key_1=0) number+; if(number=200) number=200; delay10ms(10); /按键时间调整 if(key_2=0) /标量- while(key_2=0) flag=3; number-; 13 if(number=200) count = 0; number-; if(

16、number=0) /5ms /5ms15 产生一次中断 产生一次中断 number=0; bit_1 = number/1000; bit_2 = (number%1000)/100; bit_3 = (number%100)/10; bit_4 = number%10; b_1 = b_2 = b_3 = b_4 =0; /消隐 switch(count % 4) case 0: /数码管1位 b_1 = 1; b_4 = b_3 = b_2 =0; P0 = disbit_1; break; case 1: /数码管2位 b_2 = 1; b_1 = b_3 = b_4 =0; 16 P0 = disbit_2; break; case 2: /数码管3位 b_3 = 1; b_1 = b_2 = b_4 =0; P0 = disbit_3; break; case 3: /数码管4位 b_4 = 1; b_2 = b_3 = b_1 =0; P0 = disbit_4; break; 17

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号