倒计时器实习报告.docx
《倒计时器实习报告.docx》由会员分享,可在线阅读,更多相关《倒计时器实习报告.docx(7页珍藏版)》请在冰豆网上搜索。
![倒计时器实习报告.docx](https://file1.bdocx.com/fileroot1/2023-1/21/5f27ba0f-4e33-4729-a91d-929402d45c3a/5f27ba0f-4e33-4729-a91d-929402d45c3a1.gif)
倒计时器实习报告
东北石油大学
实习总结报告
实习类型生产实习
实习单位电子科学学院实习基地
实习起止时间2015年7月4日至2015年7月23日
指导教师
所在院(系)电子科学学院
班级
学生姓名
学号
2015年7月23日
课题名称:
倒计时器设计
一、课题目的
1.1设计目的及意义
1).掌握51系列单片机的基本硬件结构及工作原理;.
2).掌握51系列单片机的编程语言及基本程序设计方法。
3).学习并掌握使用51系列单片机开发控制系统的基本步骤及方法。
1.2设计要求
1).可设置计时初值十进制数00~99;
2).采用两位数码管显示定时值,并具备锁存功能;
3).采用一个按键设置计时初值;
4).采用一个按键控制倒计时开始;
5).采用一个按键控制计时停止;
6).采用一个按键清空计时值。
1.3总体设计方案
1.3.1总体方案设计
1).使用89C51单片机作为核心控制部件,采用12M晶体振荡器及30PF微小电容构成振荡电路;用1个两位一体共阳极数码显示管作为显示部分,构成数字式秒表的主体结构,配合独立式键盘和复位电路完成此秒表的计时、清零、停止、增减初始时间等各项功能。
2).系统总体设计框图
图1-3系统设计总体框图
1.3.2单元电路设计
89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,89C51在众多嵌入式控制应用系统中得到广泛应用AT89C51单片机由微处理器,存储器,I/O口以及特殊功能寄存器SFR等部分构成。
其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4KB,片内数据存储器为128个字节。
89C51单片机有4个8位的并行I/O口:
P0口,P1口,P2口和P3口。
各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。
P1口是唯一的单功能口,仅能用作通用的数据输入/输出口。
P3口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如P3.0是串行输入口线,P3.1口是串行输出口线。
在需要外部程序存储器和数据存储器扩展时,P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。
P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。
图1.3.2单片机系统
1.3.3振荡电路
如同所示为单片机晶体振荡电路。
在本系统设计中晶振选择频率为12MHz,其中两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地,一般在几十皮法,它会影响到晶振的谐振频率和输出幅度。
多数情况下电容取值在20pF-30pF左右,在本系统中取电容为30pF。
图1.3.3振荡电路
1.3.4显示电路
在显示方面,有着多种选择,但是8段LED数码管足以满足此次设计的要求了。
LED数码显示器是一种有LED发光二极管组合显示字符的显示器件。
它使用了8个LED发光二极管,其中7个用于显示字符,一个用于显示小数点,故通常称之为8段发光二极管数码器,这里数码管采用共阳极接
LED数码显示器有如下两种连接方法:
共阳极接法:
把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。
共阴极接法:
把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。
每个发光二极管的阳极通过电阻与输入端相连。
图1.3.4显示电路
1.3.5系统复位电路的设计
智能系统一般应有手动或上电复位电路。
复位电路的实现通常有两种方式:
1)RC复位电路;2)专用µP监控电路。
前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。
对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。
本次课程设计采用了上电按钮电平复位电路如图所示。
图1.3.5复位电路
二、软件编程
1.软件总体设计流程图
三、调试分析
3.1硬件调试
硬件组装前首先要仔细核对硬件系统设计原理的正确性,包括参数选用的正确性和原理的正确性,对没有把握的电路可以通过在通用实验板上直接焊接实际电路来进行实物调试和验证,调试分为断电调试和通电调试。
(1)断电调试
为了安全起见,首先必须进行断电调试,断电调试的内容至少包含短路检测和原理正确性确认;系统电路焊接完成后,首先对实物进行原理正确性的确认,其次必须进行短路检测,选用合适的万用表欧姆档,用红表笔接到电路板的+5V电源的+、—极,如果存在充放电现象,最后电阻稳定在一个合适的位置,则基本上可排除系统短路现象。
(2)通电调试
A、系统时钟是否起
凡是微处理器系统,正常运行的必要条件是系统时钟稳定正常,在实际工作中,因为各种原因导致系统时钟不正常而出现系统无法正常运行的情况也时有出现,因此系统时钟是否起震应是通电检查的首要一环,检查方法包括逻辑笔发、数字万用表法、示波器法,在这里采用数字万用表法,测试晶振两端引脚电压为2.5V左右。
B、复位是否正常及关键点电压参数是否正常
复位不正常也会导致系统不工作,这里的重点是检查相关电路是否正常,同时检查相应电路的关键电压参数是否正常,进行一一排查。
3.2软件调试
单片机的程序设计调试分为两种,一种是使用软件模拟调试,即用开发单片机程序的计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的,但是软件调试存在一些问题,如计算机本身是多任务系统,划分执行时间片序,也就是说,不可能像真正的单片机运行环境那样执行的指令在同样一个时间能完成(往往比单片机慢)。
为了解决软件调试问题,第二种方法是硬件调试,硬件调试其实也需要计算机软件的配合。
软件调试与所选用的软件结构有关,如果采用模块程序设计技术,则逐个模块调好后再进行系统程序总调,如果采用实时多任务操作系统,一般是逐个任务进行调试,对于模块结构程序.要一个个子程序分别调试,调试时,一定要符合入口条件和出口条件,调试可用单步运行和断点运行方式,通过检查用者系统的CPU现场情况、RAM的内容和I/O口的状态,检测程序执行结果是否符合设计要求,有无循环错误、有无机器码错误以及转移地址的错误,同时,还可以发现用者系统中存在的硬件设计错误和软件算法错误,各程序模块通过后,则可以把相关功能块连在一起进行总调。
本设计采用Keil软件对源程序进行编译和调试,KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻,KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
开始在主程序的循环中没有添加调用显示子程序的语句,导致在没有按键按下的情况下LED数码管没有显示。
当在主程序循环检测按键的过程中添加了调用显示子程序的语句后就解决了这一问题。
由于键盘需要消抖延时和等待按键释放,所以相似的情况又出现了——按下按键后有一段时间LED数码管断续显示或者按下按键后不释放按键时LED数码管没有显示。
仔细分析后发现,问题出现的原因还是一样的,由于本设计的LED数码管采用了动态显示,故需要不断调用显示子程序,否则会导致LED数码管没有显示。
所以最终做了以下改进:
1.按键的消抖延时选择调用两次显示子程序(每次显示子程序大约用时5ms,两次即为10ms左右)来取代原来的10ms软件延时。
2.在等待按键释放时,使用循环调用显示子程序来替代原来的循环等待。
经过上述两点的改进后,LED数码管无显示或者断续显示的问题就得到了彻底的解决。
以下在Proteus环境中打开数字时钟统完整电路图,双击AT89S52,在ProgramFile:
选项中浏览选择由Keil软件编译生成的hex文件,确认保存即可进行仿真。
系统的仿真结果如图3.2.1所示。
从仿真结果看,系统满足设计要求。
图3.2.1模拟仿真
四、总结及体会
这次设计中遇到了很多问题,例如刚开始我在在仿真时程序出现了每次按按钮时总是显示测量时需要关闭仿真的字样,试了很多方法都没有找到原因,最后才知道是因为按钮太近的缘故。
很多类似的经历让我明白:
1.在设计程序之前,务必要对所学单片机课程的内容有一个系统的了解,知道单片机片内片外的内容及其功能。
2.设计程序关键要有一个清晰的思路和一个完整的软件流程图。
模块化的设计思想在程序设计中的作用是重大的,它可以为你提供一个比较清晰的思路,并且很容易找到头绪,不至于在编写一个程序时感觉到无从下手。
3.在设计程序时,不能妄想一次就将整个程序设计好,"反复修改,不断改进"是程序设计的必经之路。
程序刚开始编好时,一般情况下会存在很多错误,要不断地修改,不断的改进才能达到预期的目的,编写程序的时间并不是很长,主要是花很多时间去修改程序。
4.要养成注释程序的好习惯,让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。
刚开始我在编写程序时,很不习惯于写注释,感觉很麻烦,而且没用,但是在修改的过程中我就遇到了较大的麻烦,以至于不得不重新的作了注释,以增加程序的易读性,从而使修改过程变得容易一些。
总之,通过这次课程设计不仅使我巩固了本课程所学的基本知识,还使我具有了撰写科研报告的初步训练能力,我相信这些能力在我以后的工作或者是再学习中一定会起到不小的作用,一切的辛苦和艰难都是值得的。