单片机课程设计-设计并实现可编倒计时装置.doc_第1页
单片机课程设计-设计并实现可编倒计时装置.doc_第2页
单片机课程设计-设计并实现可编倒计时装置.doc_第3页
单片机课程设计-设计并实现可编倒计时装置.doc_第4页
单片机课程设计-设计并实现可编倒计时装置.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学单片机应用实践课程设计说明书课程设计任务书学生姓名: 专业班级: 电信1306班 指导教师: 工作单位: 信息工程学院 题 目: 设计并实现可编倒计时装置 初始条件:一台pc机,pc机上装有单片机开发软件;实验室提供单片机实验箱,该实验箱具有各种通用接口供同学们选择,同学们也可以购置单片机最小系统开发板作为开发基础,也可以全部购置分立元件组装。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、 设计任务一周内完成可编倒计时装置的软硬件设计、仿真、调试及制作。2、 技术要求按秒倒计时,由键盘预置分、秒各两位数,键控启动计时开始,倒计时秒数用数码管显示,计时器归零时输出一音频信号作为倒计时结束的提示信号。3、 课程设计说明书要求课程设计说明书应包括方案设计、硬件电路设计、软件设计、资源分配表、调试及结果、性能分析、总结几大部分。其中性能分析主要分析精度和误差来源,也可分析装置的反应速度、成本等。最后附参考文献。设计说明书格式应符合武汉理工大学课程设计工作规范要求。时间安排:第 1-2 天:查阅相关资料,熟悉接口实验平台及其软件开发平台,完成方案设计。第 3-4 天:完成硬件设计,画出硬件电路图。第 5-6 天:软件设计、仿真。第 7天:制作、调试。第8天:撰写课程设计说明书。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 电路方案的设计与硬件选择111 电源提供方案11.2 系统主体部分方案12 硬件模块的设计22.1数码显示模块32.2控制部分及蜂鸣器报警模块32.3输入模块43 软件设计53.1软件设计流程图53.2软件设计思路及原理63.3资源分配表64 程序代码及课程设计效果74.1 设计的源程序74.2设计效果展示135 设计中遇到问题的解决及性能分析155.1设计中遇到的问题及解决155.2 性能分析166 总结与体会167 参考文献171 电路方案的设计与硬件选择11 电源提供方案 为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案 方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。 方案二:采用单片机控制模块提供电源。方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。 综上所述,我们选择第二种方案。1.2 系统主体部分方案本次单片机课程设计要求设计可编程倒计时装置,其中分和秒都是两位数字显示,键盘预先设置要倒计时的时间,按键启动倒计时装置,数码管动态显示倒计时的画面,当倒计时归零后,发出声音,提示倒计时结束。在电路中利用at89s52单片机作为倒计时器的核心控制器,针对需要倒计时的场合实现可调时间的倒计时功能。具体的我们利用单片机的芯片的p3口作为按键的扫描接口,p2,p0口作为数码管位选和段选接口,定时器t0作为每1秒减一的定时器。当“开始”按键按下时开始倒计时,三个预置键设置数码管分秒数初值。按键启动后,数码管会动态的进行显示时间,直到最后归零。倒计时完成后,通过蜂鸣器发出指示报警音,基本完成了题目要求实现的功能。由以上分析,我们可分为三个部分进行具体的设计,即输入模块、显示模块、控制模块。第一部分是输入部分,这个部分是用于倒计时的时间设置,采用四个按键实现。特点是需要元件少而且经济。第二部分是显示部分,本设计采用4个共阴数码管显示倒计时时间。由于七段数码管需要选通4个,故采用轮询方式对每一个应该点亮的数码管进行操作,按键延时采用数码管显示模块填充,从根本上防止抖动。第三部分是控制部分,利用cpu的中断,在中断服务程序中执行倒计时,在倒计时完成后,采用蜂鸣器指示计时时间到与否。以上便是对倒计时装备的三大部分的设计思路,按照上面各个部分的设计,进行具体的设计来细化和实现相关功能。12m晶振独立按键数码显示管stc89c52蜂鸣器图1-1 系统硬件结构框图2 硬件模块的设计图2-1总体设计硬件电路图其中包括输入部分、显示部分和控制部分,这正好是设计思想的体现。2.1数码显示模块显示部分由两个4位数码管组成。采用动态扫描的方式像是输出的数字,当扫描的速度控制合理的时候,由于人眼的暂留效应和数码管二极管发光的余晖效应能动态显示输出的时间。 图2-1数码显示电路2.2控制部分及蜂鸣器报警模块 此模块作为定时时间到后的提示音作用,直接接单片机的端口输出即可。本次采用的是无源的蜂鸣器,不用接独立的电源。图2-2 蜂鸣器报警电路图2-3 控制部分仿真图at89s52对输入和输出进行对应的控制,同时蜂鸣器可以根据方波的频率发出声音信号,由此根据它对计时到与否进行判断。该设计中蜂鸣器在计时时间到后会一直响。2.3输入模块 本次控制的按键只有4个,分别为倒计时开始按键,加按键、减按键和切换分秒按键。本次采用的是独立按键,直接用电平高低控制。图2-3 独立按键电路3 软件设计3.1软件设计流程图本次使用c52芯片进行编程,首先初始化将主程序所用的到的子程序、变量等定义。输出报警信号开始其次还有数码显示程序、独立按键程序、时钟程序和倒计时程序,系统软件的程序流程图和显示部分流程图如下:系统初始化yn按键设置倒计时时间开始数码管开始倒计时倒计时时间是否归零yn 图3-1 软件设计流程图3-2 显示子程序流程图3.2软件设计思路及原理首先,按下电源开关接通电源,通过独立按键的加、减、切换按键设置倒计时初始时间。设置完毕后按下开始键,开始倒计时。倒计时的显示采用动态扫描,显示后需要延时。打开第一个数码管,显示数字,短暂延时后,关闭数码管,再打开下一个数码管,显示数字,延时,关闭该数码管,以此类推不断地重复扫描,显示。利用定时器中断程序,在中断服务程序中进行每秒一次的计时减运算,不断扫描显示的过程其实也就是等待中断的过程。通过不断对独立按键所接i/o口的扫描,按键按下相当于对应端口接地,对应端口为低电平,故检测到对应端口为低电平时执行相应的操作来完成预置数和开始计时操作。本次可编程倒计时装置采用的是外置独立的12m晶振。蜂鸣器需要输出报警音频,即需编写两种频率的报警程序,使其更像警报声,蜂鸣器是否工作也仅需一个i/o口来控制。3.3资源分配表p0口数码管段选p3.6蜂鸣器p3.4分秒切换p3.2减p2.0p2.3数码管位选p3.5独立按键开始p3.3加表3-1 资源分配表4 程序代码及课程设计效果4.1 设计的源程序#include #define uchar unsigned char sbit p2_0 = p20;sbit p2_1 = p21;sbit p2_2 = p22;sbit p2_3 = p23; /四位数码管位选sbit key_dec=p32; /减sbit key_add=p33; /加sbit key_change=p34; /切换分,秒sbit key_sta rt=p35; /开始 (一共四位独立按键)sbit beep=p36; /蜂鸣器报警装置static unsigned char second,minute,hour; /定义分、秒、时和一些变量unsigned int tcount;unsigned int a;unsigned char m;bit t;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f; /09数字void delay500(void) /报警器延时 uchar i; for(i=230;i0;i-);void delayus2x(unsigned char b) /按键消抖延时 while(-b);void delayms(unsigned char b) while(b-) /大致延时1ms delayus2x(245); delayus2x(245); void delay(uchar i) /显示延时 uchar j,k; for(j=i;j0;j-) for(k=125;k0;k-);void display() /数码管显示子程序 p0=tableminute/10; p2_0 = 0; delay(5); p2_0 = 1; p0=(tableminute%10& 0x7f); p2_1 = 0; delay(5); p2_1 = 1; p0=tablesecond/10; p2_2 = 0; delay(5); p2_2 = 1; p0=tablesecond%10; p2_3 = 0; delay(5); p2_3 = 1; void main(void)/主程序 while(1) for(a=100;a0;a-) /初始显示四个0 display(); if(!key_change) /判断分,秒转换键是否按下 delayms(10); if(!key_change) /延时去抖 t=t; if(t) if(!key_add) /判断分种加按键是否按下delayms(10);if(!key_add) /延时去抖if(minute0)minute-; if(!t) if(!key_add) /判断秒钟加按键是否按下 delayms(10);if(!key_add) /延时去抖if(second0)second-; if(!key_start) /判断开始按键是否按下 delayms(10); if(!key_start) /延时去抖break; tmod=0x02; /计时器t0初始化及开中断 th0=0x06; tl0=0x06; tr0=1; et0=1; ea=1; while(1)/循环显示且等待中断 for(a=100;a0;a-) display(); void t0(void) interrupt 1 using 0 /计时器t0中断服务程序即计时部分 tcount+; if(tcount=4000) tcount=0; second-;if(minute=0)&(second=0)/蜂鸣器报警 uchar j; while(1) for(a=100;a0;a-) display(); for(j=200;j0;j-) beep=beep; /输出频率1khz delay500(); /延时500us for(j=200;j0;j-) beep=beep; /输出频率500hz delay500(); /延时1ms delay500(); if(second=0xff) second=59; minute-; 4.2设计效果展示 将编写好的源程序用keil软件进行编程,编译,最终生成hex文件,烧写进单片机内,并在proteus上进行仿真,最后按程序连接电路图。图4-1 仿真结果最终效果图如下:开始时 00.00图4-2开始计时效果图预置时间 03.05图4-3 预置初始时间效果图倒计时开始:倒计时到02.46图4-4 倒计时运行效果图5 设计中遇到问题的解决及性能分析5.1设计中遇到的问题及解决 问题一:程序编写完成后,在keil软件上进行编译、调试生成hex文件进行仿真,一开始数码管显示不出完整的数字,但能实现设定初值和倒计时功能。原因及解决方案:经再次检查程序,发现程序中的0到9的数码管编码用的共阳型的,而实际仿真与实物里都选用了共阴数码管,导致显示不完整,把程序中数码管编码改掉之后就成功显示了。问题二:程序烧写完成后,打开单片机,数码管不显示数字,预置数可以完成,但是预置数的过程看不到。原因及解决方案:因为在刚开始预置数阶段扫描独立按键时,没有在循环内编写数码管显示程序。故在扫描独立按键循环内加入如下程序,问题解决。for(a=100;a0;a-) /初始显示四个0 display(); 问题三:独立按键预置数时,按键不灵敏需较长时间按下才会起作用。原因及解决方案:按键去抖延时过长,将去抖延时适当缩短,此问题有所改善。问题四:计时器归零时,输出音频报警信号,但是此时数码管显示乱码。原因及解决方案:在蜂鸣器报警循环程序中没有写入合适的数码管显示程序,导致出现乱码。在蜂鸣器报警循环中,写入显示四个零的程序即可解决,在报警的同时,数码管显示四个零。5.2 性能分析本次课程设计为设计并实现可编倒计时装置,通过查阅资料,对比选择方案,最终确定选用四个独立按键控制的倒计时程序。第一步程序调试成功后,生成hex文件,再进行第二步电路仿真,仿真成功后将编写的代码烧写到单片机内,检测的性能结果基本满足任务书要求。开机显示的是00-00,可以通过加、减、切换按键设置倒计时的初始时间,按下开时按键倒计时开始。倒计时归零后,蜂鸣器也会发出报警声音。不足之处在于按键的灵敏度在修改消抖延时后有所改善,但是还是不能达到理想的预期效果,按键有时会不灵敏。初步估计原因在于独立按键本身按下接触不良好以及独立按键的焊接问题。6 总结与体会作为电子信息工程专业的大三的学生,课程设计对我们来说并不陌生。通过对本次课程设计,我对自己以前所修的c语言和单片机都有了更加系统的认识。更重要的是,本次课程设计让我初次接触到了keil软件和proteus仿真软件,熟系使用这两个软件对我们今后的专业学习和课设都有很大帮助。同时,在做课设的过程中我认识到自己的很多不足之处,在实际动手操作能力的不足,在进行程序编程时,自己需要,认真审题,看懂题目的要求。课程设计的出发点就是实现它要求的性能,根据课题要求,复习相关的知识,查询相关的资料。由课设条件,找到适合的方案,找到需要的元器件及工具。具体的大致为根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序和增加额外的功能程序。然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。还

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论