




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程设计中 文 摘 要数字钟已经成为人们日常生活中不可缺少的必需品,广发应用于家庭及办公室等公共场所,给人们的生活、学习、工作及娱乐带来了极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使得数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用方便,但鉴于单片机的定时器功能也可以完成数字钟的设计,因此进行数字的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和生活的各个角落,有力地推动了各行各业的技术改造和产品的更新换代,应用前景广阔。本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED数码显示器等),再配以相应的软件,达到制作简易数字钟的目的。硬件部分采用了单片机原理实验室的实验箱进行合理接线调试;软件部分通过keil进行了C程序的修改编译,protues软件仿真等。最终在实验箱上实现了与仿真结果相同的实际效果。关键词 单片机定时功能、AT89C51、共阴LED、Keil、Protues软件。AbstractMicroelectronics and computer technology along with the rapid development and progress, making the design of electronic systems and applications have entered a new era. The traditional manual design process is being advanced electronic design automation technology to replace. And is currently supporting modern technology has become the universal platform for electronic design, and step by step to support the development of system-level design. Only to hardware description language and logic synthesis-based top-down design methodology to meet the increasingly complex needs of digital system design. The progressive development of the taxi industry, the taxi meter is getting higher and higher requirements, the user requires not only the performance of the stability of billing, billing and accurate anti-cheat functions; and as a result of the instability in oil prices, billing system the need for regular adjustment of the meter so that users can request not to change the hardware to facilitate the billing system modifications. The system is the use of language, it can make use of digital circuits and system description, simulation and automatic design, and software as a development platform designed billing system procedures taxi and carried out a simulation program. To the achievement of pre-billing and simulation, as well as car to start, stop, pause and other functions, and dynamic scan shows the number of fares.Key Words Microcontroller、AT89C51、7SEG-MPX6-CC-RED 、Keil、Proteus 目 录中 文 摘 要IAbstractII目 录III1 设计任务描述11.1 设计题目:简易数字钟的设计11.2 设计要求:11.2.1 设计目的11.2.2 基本要求12 设计思路23 设计方框图33.1 数字钟硬件部分示意图33.2 数字钟软件部分组成框图43.2.1 时间调整的程序流程43.2.2 时钟显示程序流程54 各部分模块介绍64.1 单片机AT89C51芯片分析64.2 晶振电路模块74.3 复位电路模块74.4 显示模块84.5 时间校对按键模块95 简易数字钟源程序105.1源程序106 数字钟源程序的仿真156.1 编译、连接156.2 仿真166.2.1 生成HEX文件166.2.2 仿真结果167 数字钟硬件原理图177.1 总原理图178 主要原器件清单18小 结19致 谢20参考文献21211 设计任务描述 1.1 设计题目:简易数字钟的设计 1.2 设计要求:1.2.1 设计目的熟练使用Keil开发环境,具备编写单片机程序(汇编语言或C语言)的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。1.2.2 基本要求简要说明用单片机设计出一个数字钟。此数字钟完成自动走时和时间调整的功能。任务和要求设计简易的数字钟,该数字钟满足以下要求:设计一个数字钟,该数字钟基本功能:使用单片机的定时/计数器实现数字中的定时计数功能,秒计60次成分,分计60次成小时,小时计24次则计满一天。本设计LED显示部分采用动态显示,其中2个LED显示器显示秒,2个LED显示器显示分钟,2个LED显示器显示小时。同时为了使用方便,本题目还需要设计几个简单按键,可以通过按键实现时、分的调整,这样在主程序中需要加入键盘设置子程序。2 设计思路基于单片机的简易数字钟设计主要可以分为以下几个模块来考虑: 对于单片机AT89C51的T0,T1定时中断部分。本次设计中的单片机晶振频率采用了精准的11.0592MHZ。故对T1初值设定为:DC00h,实现了10ms的定时,然后C程序中通过定义一个变量i,对i进行i+的100次循环,如此即可达到最小1S的实现。而后在这个1S程序段的基础之上,我们可以分别编写出对时,分的程序段。对于定时器T0,我们可以将其用来作为数码管动态扫描的定时中断,本次设计设为50ms左右,初值为FC17h。这个取值通过最后的仿真及实际效果看出合理,不会出现闪烁等情况。 校时电路。本次设计要求了该简易数字钟必须具备时、分的调整功能。故必须接入2个简单的按键(本设计设置问p1.4调时、p1.5调分,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这2个独立按键的子程序。 显示电路。考虑采用动态显示部分,用P0口作为数码管数据(段选),P2口作为数码管控制(位选)。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。6位数码管,实验室的硬件是共阴极的,故我们的数码表采用0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00; 晶振电路。 在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。 复位电路。 这部分设计用来完成对单片机的复位。以上是对本次设计课题的初步分析,以下将对各部分模块设计进行详细阐述。3 设计方框图3.1 数字钟硬件部分示意图该简易数字钟硬件部分主要由晶振、手动复位、单片机AT89C51、数码管显示、时间调整按键模块组成。框图如下:图3.1 数字钟硬件系统示意图3.2 数字钟软件部分组成框图3.2.1 时间调整的程序流程YYNINT1中断服务子程序时钟分位调整时钟分位+11小时到时钟分位清零返回时钟小时位调整?时钟小时+124小时到时钟小时位清零NY图3.2 时间调整程序流程框图3.2.2 时钟显示程序流程T1中断服务子程序重置T1定时初值1秒到?秒位+11分到?分位+1、秒位清零1小时到?小时位+1、分位清零24小时到?小时位清零返回NNNN图3.3 24小时时钟4 各部分模块介绍4.1 单片机AT89C51芯片分析AT89C51单片机引脚图如下:图 4.1 AT89C51引脚图该单片机是标准的40引脚双列直插式集成电路芯片,其各个引脚功能如下:VCC:+5V电源。VSS: 接地。RST:复位信号。当输入的复位信号延续两个周期以上的高电平时即为有效,用来完成单片机的初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。PO口:P0口作为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”时对引脚输入的干扰。本次设计采用P0口作为数码管段选输出使用。P2口:内部有上拉电阻的8位I/O口,本次设计中作为数码管位选输出使用。4.2 晶振电路模块在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。图4.2 晶振电路4.3 复位电路模块 单片机复位的条件是:必须使RST/VPD或RST引脚加上两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12MHz,每个机器周期为1us,则只需要2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图所示。电路为上电复位,它利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻分压,在RESET端产生一个复位高电平。图4.3 复位电路4.4 显示模块考虑采用动态显示部分,用P0口作为数码管数据(段选),P2口作为数码管控制(位选)。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。6位数码管,实验室的硬件是共阴极的,故我们的数码表采用0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00;图4.4 显示模块4.5 时间校对按键模块本次设计要求了该简易数字钟必须具备时、分的调整功能。故必须接入2个简单的按键(本设计设置问p1.4调时、p1.5调分,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这2个独立按键的子程序。图4.5 时间校对按键电路5 简易数字钟源程序 5.1源程序#include #include unsigned char data dis_digit;unsigned char key_s, key_v;unsigned char code dis_code11=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00;unsigned char data dis_buf6;unsigned char data dis_index;unsigned char hour,min,sec;unsigned char sec100; sbitK1 = P14;sbitK2 = P15;bit scan_key();void proc_key();void inc_sec();void inc_min();void inc_hour();void display();void delayms(unsigned char ms);void main(void)P0 = 0x00;P2 = 0x00;TMOD = 0x11;/ 定时器0, 1工作模式1, 16位定时方式TH1 = 0xdc;TL1 = 0;TH0 = 0xFC;TL0 = 0x17;hour = 12;min = 00;sec = 00;sec100 = 0;dis_buf0 = dis_codehour / 10;/ 时十位dis_buf1 = dis_codehour % 10;/ 时个位dis_buf2 = dis_codemin / 10;/ 分十位dis_buf3 = dis_codemin % 10;/ 分个位dis_buf4 = dis_codesec / 10;/ 秒十位dis_buf5 = dis_codesec % 10;/ 秒个位dis_digit = 0xfe;dis_index = 0;TCON = 0x01;IE = 0x8a;/ 使能timer0,1 中断TR0 = 1;TR1 = 1;key_v = 0x03;while(1)if(scan_key()delayms(10);if(scan_key()key_v = key_s;proc_key();bit scan_key()key_s = 0x00;key_s |= K2;key_s 59)min = 0;dis_buf2 = dis_codemin / 10;/ 分十位dis_buf3 = dis_codemin % 10;/ 分个位EA = 1;void timer0() interrupt 1/ 定时器0中断服务程序, 用于数码管的动态扫描/ dis_index - 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量/ dis_digit - 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,/选通P2.0口数码管/ dis_buf - 显于缓冲区基地址TH0 = 0xFC;TL0 = 0x17;P0 = dis_bufdis_index;/ 显示代码传送到P0口P2 = dis_digit;/ dis_digit = _crol_(dis_digit,1);/ 位选通值左移, 下次中断时选通下一位数码管dis_index+;/ if(dis_index = 0x06)/ 6个数码管全部扫描完一遍之后,再回到第一个开始 / 扫描 dis_index = 0;dis_digit = 0xfe; void timer1() interrupt 3TH1 = 0xdc;sec100+;if(sec100 = 100)sec100 = 0;inc_sec();void inc_sec()sec+;if(sec 59)sec = 0;inc_min();dis_buf4 = dis_codesec / 10;/ 秒十位dis_buf5 = dis_codesec % 10;/ 秒个位void inc_min()min+;if(min 59)min = 0;inc_hour();dis_buf2 = dis_codemin / 10;/ 分十位dis_buf3 = dis_codemin % 10;/ 分个位void inc_hour()hour+;if(hour 23)hour = 0;if(hour 9)dis_buf0 = dis_codehour / 10;/ 时十位else dis_buf0 = 0x00;/ 当小时的十位为0时不显示dis_buf1 = dis_codehour % 10;/ 时个位void delayms(unsigned char ms)/ 延时子程序unsigned char i;while(ms-)for(i = 0; i 120; i+);6 数字钟源程序的仿真6.1 编译、连接将数字钟源程序输入到keil软件,建立工程项目,添加完成程序的编译、连接,通过后无错误。如图所示:图6.1 编译、连接图6.2 仿真6.2.1 生成HEX文件利用keil将编译、连接无误的源程序生成hex文件,准备与protues联调进行仿真。图 6.2.1 从keil里生成十六进制文件6.2.2 仿真结果在protues里面将HEX文件导入单片机,运行。得到仿真如下:图 6.2.2 仿真结果显示7 数字钟硬件原理图7.1 总原理图图7.1 数字钟硬件原理图8 主要原器件清单元件名称规格型号/参数数量单片机AT89C511电容15pF2晶振11.0592MHz1电容10uF1数码管7SEG-MPX6-CC-RED1电阻10K12按键BUTTON3小 结本次课程设计我们小组选择的课题是简易数字钟的设计。主要的设计思路是运用5个单元模块的组合来实现符合设计要求的数字钟。五大模块设置合理,各自发挥自己的作用,成为一个整体。分模块来调试,最终实现。课程设的三周是忙碌、充实而又紧张的。虽然临近期末考试早已结束近一个月之久,但我们不仅没有把这当成一种考试后的娱乐,去随意对待,反而调整好自己心态,把这次课程设计当作一次难得的全面复习机会。通过这次课程设计,我学会了很多书本上学不到的知识,熟练掌握了Keil的开发环境,也加深了软件的使用。这个课设从自己找相关软件、装软件、学软件再到仿真,充满许多艰辛,付出了很多汗水和时间,在同组人员互相鼓励,互相探讨,互相竞争的团队协作下,克服这探索道路上的种种困难,最后终于做成了一份完整的课程设计。心里还是不免有一种成功后的喜悦之情。刚开始拿到题目,心中不免有一丝欣喜,因为对于数字钟这个课题,我想我们大部分人拿来就会有很清晰的思路,因为我们已经做了很多运用单片机来进行定时、计数的相关习题。后来经过查找一些资料,写出了定时、循环计数、动态扫描等各部分程序段。硬件部分由于是焊接好的实验箱,极大方便了本次设计。但是在软硬件融合的阶段还是遇到了一些难题,经过几天反复的调试,最后发现是动态扫描的程序段,在循环移位的时候出现了问题,最后终于调试出来了希望得到的实际效果。对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 18618:2025 EN Dentistry - Interoperability of CAD/CAM systems
- 【正版授权】 IEC 63536:2025 EN-FR Railway applications - Signalling and control systems for non UGTMS urban rail systems
- 【正版授权】 IEC 60245-5:1994/AMD1:2003 EN-D Amendment 1 - Rubber insulated cables - Rated voltages up to and including 450/750 V - Part 5: Lift cables
- 北欧家装设计知识培训
- 校外骑车安全知识培训课件
- 校园预防偷窃安全知识培训课件
- 辩论修养试题及答案
- 电厂化学考试题及答案
- 北京面部护理知识培训班课件
- 校园安全知识培训教材课件
- 2024年数据泄露一次性赔偿合同
- 有害物质过程管理系统HSPM培训教材
- 乒乓球馆合伙人协议
- 2024至2030年中国品牌战略咨询服务市场现状研究分析与发展前景预测报告
- ISO∕TR 56004-2019创新管理评估-指南(雷泽佳译-2024)
- TSG+11-2020锅炉安全技术规程
- 从高考改卷谈对物理教学的几点启示
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 项目成本核算表模板
- 2024新版实习律师协议
- 2024辅警考试公基模拟220题及答案解析
评论
0/150
提交评论