ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:887.48KB ,
资源ID:5682430      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5682430.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(答辩倒计时器单片机课程设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

答辩倒计时器单片机课程设计.docx

1、答辩倒计时器单片机课程设计 课程设计任务书一、设计题目答辩倒计时器二、设计要求 设计一个答辩倒计时器,用2位数码管显示剩余分钟,2位数码管显示剩余秒 ,复位后显示10.00表示设定10分钟,并可加减修改,按开始/取消按钮开始倒计时,再次按开始/取消按钮则复位,时间到则蜂鸣音提示。总体要求如下:1、方案论证,确定总体电路原理图。 2、元器件选择,设计PCB图(或用万能电路实验板搭线)。3、绘制程序流程图,编写汇编语言源程序(或C语言源程序)。4、安装调试,实现倒计时器的基本功能。 三、设计报告内容1、写出设计方案(包括方案对比,方案确定),给出完整的电路原理图和设计程序流程图。 2、对所设计方案

2、的实现进行全面分析。3、编程调试方法和程序清单。4、安装调试过程,出现的各种现象,总结经验和体会。5、进一步完善的设想。一、设计题目答辩倒计时器二、设计目的1、巩固和加深单片机原理课程知识的理解和运用。2、进一步提高学生单片机应用系统的设计能力。3、培养学生综合分析问题、发现问题和解决问题的能力。三、设计要求设计一个答辩倒计时器,用2位数码管显示剩余分钟,2位数码管显示剩余秒 ,复位后显示10.00表示设定10分钟,并可加减修改,按开始/取消按钮开始倒计时,再次按开始/取消按钮则复位,时间到则蜂鸣音提示。总体要求如下:1、方案论证,确定总体电路原理图。 2、元器件选择,设计PCB图(或用万能电

3、路实验板搭线)。3、绘制程序流程图,编写汇编语言源程序(或C语言源程序)。4、安装调试,实现倒计时器的基本功能。四、电路总原理图根据设计要求,确定总体电路原理图,如下图1。图1 电路总原理图五、元器件清单元器件名称规格/型号单组数量单片机AT89S51 DIP401块集成电路7407 DIP141块电阻1K 1/4W1个电阻10K 1/4W5个电阻排200*81个瓷片电容30p2个独石电容0.1uF/63V2个电解电容10uF/16V1个三极管90131个蜂鸣器F10 直流5V1个石英晶振6MHZ1个IC插座40PIN DIP1个IC插座14PIN DIP1个数码管4位一体,红光,共阴1块接插

4、件IDC10(与ISP下载线接口)1套按键3个电路板15cm*8cm1块表1 元器件清单六、设备及工具清单名称单组数量备注计算机1台内有Keil编程软件和ISP下载软件数字万用表1台5V直流稳压电源1台ISP下载线1套电烙铁1个烙铁架1个吸锡枪1把剪线钳1把尖嘴钳1把镊子1把焊锡丝1卷松香1盒导线1卷0.3mm单股导线表2 设备及工具清单七、硬件介绍1、AT89S51介绍4k字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种

5、软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89S51单片机如图2。关于AT89S51的管脚说明:VCC:供电电压。GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 图2 AT89S5

6、1P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时

7、,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端

8、以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。 如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFF

9、FH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2、LED数码管显示器

10、概述 LED数码显示器是一种有LED 发光二极管组合显示字符的显示器件。它使用了8个LED 发光二极管,其中7个用于显示字符,一个用于显示小数点,故通常称之为7 段发光二极管数码器。其内部结构如 下图3所示。 LED 数码显示器有两种连接方法如下:图3 数码器结构图 共阳极接法:把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。 共阴极接法:目的要求。把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。 3、单片机最小系统最小系统就是单片机在发挥具体测控功能时所必须的组成部 分。如下图所示

11、为最小系统方框图。图4 最小系统方框图4、复位电路复位电路产生复位信号,复位信号送入 RST 后还要送至片内的施密特触发器,由片内复位电路在每个机器周器的 S5P2 时刻对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号。一般的复位电路可分为上电自动复位和按键复位,我们在此选用的是上电复位。上电自动复位原理:RST 引脚是复位信号的输入端,只要高电平的复位信号持续两个机器周期以上的有效时间,就可以使单片机上电复位。上电自动复位是通过电容充电实现的,上电瞬间,RST 端 电位与Vcc 相同,随充电电流的减少,RST 的电位逐渐下降,直到复 位信号无效。按键复位在此不在作过多的介绍,其

12、原理和上电复位是相同的。但其采用的是脉冲复位电路和电平复位电路两种。 复位电路和单片机最小系统如右图5所示。 图5 复位电路和单片机最小系统 5、晶振电路晶振与单片机的脚XTAL0和脚XTAL1构成的振荡电路中会产生偕波(也就是不希望存在的其他频率的波),这个波对电路的影响不大,但会降低电路的时钟振荡器的稳定性。为了电路的稳定性起见,ATMEL公司只是建议在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减偕波对电路的稳定性的影响,所以晶振所配的电容在10pf-50pf之间都可以的。但是主流是接入两个33pf的瓷片电容,此次电路用33PF。如图6所示。 图6 晶振电路图八、电路板的制

13、作安装根据电路总原理图和对单片机、各种原理电路的认识,以及购买的元器件清单,设备和工具清单,开始对电路板进行制作安装。安装好的电路板如图7(正面)和图8(反面)。图7 设计电路板(正面)九、程序设计1、设计程序流程图 根据实验要求,设计程序流程图。如图9。图9 设计程序流程图2、设计程序 运用C语言根据程序流程图,一步一步进行编程,实现设计要求。具体设计C语言程序见附件1。十、软硬件调试达到题目的实际要求,完成了硬件的设计、制作和软件编程后,要使系统能够按设计意图正常运作,必须进行系统调试。系统调试包括软件调试和硬件调试。不过,作为一个小计算机系统,其运行是软硬件相结合的,因此,软硬件的调试也

14、是不可能绝对分 开的,硬件的调试常常需要利用调试软件,软件的调试也可能需要对硬件的测试和控制来进行。1、软件调试:(1)、软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。(2)、程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;调试的基本步骤如下,用到了Keil C软件,集成调试环境,集成了编辑器、译码器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。本系统的程序的编写就是在Keil C软件中完成的,在程序中用到了两个定时器,为了使倒计时的时间准确,必须计算

15、对定时器的初值,当程序完成之后,生成HEX文件。再利用Proteus软件进行仿真。经过仿真,程序符合题目的要求。(3)、运行主程序调试时模块,不按下任何键,检查是否从由10.00开始正确计时,若不能正确计时则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运动而变化。(4)、调试键盘模块扫描,先用延时10ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键号是否正确,然后恢复用显示子程序延时消抖,检验与显示模块能否正常连接。(5)运行主程序联调,检查能否用键盘加减答辩倒计时器的分钟,能否开始,取消等。(6) 脱机运行。软、硬件

16、调试成功之后,可以将程序固化到AT89S51的FLASH ROM中,插入AT89S51芯片,接上电源脱机运行。2硬件调试(1)、在硬件调试时,先有万用表检查印制电路的焊接情况,检查是否有虚焊,是否有短路。在检查无误之后通电检查LED数码管的显示(2)硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。1、脱机检查。用万用表逐步按照电路原理图检查印制电路中所有器件的各引脚,尤其是电源的连接是否正确:检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正常;各限流电阻是否短路等内容。2、联机调试。暂时拔掉AT89S51芯片,将仿真器的4

17、0仿真插入AT89S51的芯片插座进行调试,检验键盘/显示接口电路是否满足要求设计。可以通过一些简单的测软件来查看接口工作是否正常。3、适当调整,装配工艺美观,已达更好效果。我们组做好的作品运行如下图,设计要求的各种功能都能实现:图10图11十一、设计报告总结经过差不多两个星期的实验,此次课程设计告一段落,虽勉强的完成了实验所需要完成的任务,但途中也遇到了很多问题,就是在这样发现问题与解决问的同时,让我获益匪浅。 实验中让我映像深刻的是,在写代码所遇到的问题,首先根据看看实验要求。具体就是怎样对51单片机编程,所幸的是之前看过一些资料,编过一些小型的代码,写起程序来也并不是太麻烦,数码管的显示

18、,中断处理,按键消抖操作,函数精准延时等程序的各个模块,相继完成了,然后在进行protues仿真,途中出了一点小插曲,但还算顺利的仿真成功,但实验效果只能大概的了解,并且仿真的效果与现实还是有较大的不同。然后问题开始焊接电路板,由于动手能力确实比较不给力,焊接花了我很长的时间,板子焊的面目全非,并且燒写程序没有反应,我悲催的一步一步的调试起来,发现芯片引脚接反了,自己真是太粗心大意了,这毛病真心要改又花了很长时间才总算调试成功,但与仿真效果确实有很大的区别,一接上电源蜂鸣器马上叫个不停,调了半天也没找到解决办法,想想了决定改改程序,程序改了改,让蜂鸣器一那个控制端口一开始就处于低电平,理论上应

19、该是可以了,但结果接上电源还是不行,我纠结了,观察了好久,让板子运行了几遍发现它又不叫了,我想了想可能是运行不够稳定,于是了我有又改了下程序,让蜂鸣器处于低电平这条指令多写了几遍,果真出现了我想要的结果。还有按键消抖的问题也是我比较纠结的,我本来全部按键都是用中断控制的。但在处理消抖问题上,中断消抖对于我来说还是比较复杂的一直没有找到好点的解决方法,我最终放弃了这条思路,于是我用查询的方式来处理按键,这样一来,按键消抖就变得简单了,但在延迟那块我没有用参考时间,我是一步一步自己慢慢调试出来,有时延时长了,手要按很久,延时慢了,又没有所要的效果自己调试的时间也几乎在参考的附近,更加验证了可靠性。

20、 这次实验让我发现了很多问题,发现了自己知识的盲点,动手能力的不足,但总的来说,正是这样的发现问题与解决问题的同时,让我真正的将单片机这门课程有了真正的理解与提高。参考文献(第二版)张毅刚编著 高等教育出版社附件1#include int a,b,c,d,i,n=0; unsigned char table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /*段选。.共阴级数码管0-9*/*unsigned char table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*

21、段选。.共阳级数码管0-9*/unsigned char select4=0x0e,0x0d,0x0b,0x07; /*位选地址高位到低位*/ sbit fmq=P10; fmg=0; void delay() /*动态显示缓冲时间*/ int f; for(f=0;f20;f+); void display() /*数码管动态扫描函数*/ P2=0x0e; P0=tablea; delay(); P2=0x0d; P0=tableb+0x80; delay(); P2=0x0b; P0=tablec; delay(); P2=0x07; P0=tabled; delay(); void de

22、lay500us() unsigned char j; for(j=0;j57;j+) /500us基准延时程序 ; void delaynms(int n) /nms基准延时程序 unsigned char j,i; for(j=0;j114;j+) for(i=0;i=1&b|c|d) a=0; void int0() interrupt 0 /*外中断0服务程序*/ b+; if(b=10) b=0;a+; if(a=1&(b|c|d) a=0; void int1() interrupt 2 /*外中断1服务程序*/ b-; if(b=-1) b=9; a+; if(a=1&(b|c|d) a=0; void time1() interrupt 3 /*外中断3服务程序*/ n+; if(n%2=1) TR0=TR0; else a=1; b=c=d=0; TR0=TR0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1