




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务 通过理论设计和实物制作解决相应的实际问题,巩固和运用在单片机技术中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。1.2 功能要求说明设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“p.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
2、1.3 设计课题总体方案介绍及工作原理说明方案一:采用时钟芯片ds1302,该芯片可以进行时分秒的计数,ds1302通过串行方式与单片机进行数据传送,向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整,但是需在单片机外部扩展,电路较复杂,成本较高。方案二:采用单片机内部定时器,用软件对其进行秒、分、时的计数,单片机无法产生1s的定时时间,但是可以用硬件定时和软件计数相结合的方法实现,采用中断方式,即通过中断服务程序进行计数器溢出次数的累计,把定时器/计数器设定为10ms,计数溢出100次就可以得到1s,计60次为1分,60分计60次则为1小时,然后
3、通过数码管动态刷新显示出来,再设四个按键进行时间的调整,一个键用作启动/调整键,其余三个分别用于时、分、秒的调整。方案二不需要外部扩展芯片,电路较简单,成本较低,这里选用方案二。2 数字电子钟硬件系统的设计2.1 硬件总体设计 硬件系统总体设计如图2.1所示。usb接口电源 数码管显示电路 复位电路 a t 8 9 c 5 2 时钟电路数码管驱动电路 独立键盘图2.1 硬件系统总体设计2.2 数字电子钟硬件系统主要模块功能简要介绍(1) 功能芯片:本次设计采用atmel公司生产的at89c52芯片,at89c52是一个低电压,高性能cmos 8位单片机,片内含8k bytes的可反复擦写的fl
4、ash只读程序存储器和256 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和flash存储单元,功能强大的at89c52单片机可提供许多较复杂系统控制应用场合。(2) 电源和复位模块:at89c52需5v电压,所以可以采用usb接口的5v电源对其供电,复位电路可采用上电复位、按键电平复位、按键脉冲复位3种,本次采用按键电平复位。复位是单片机的初始化操作,其主要功能是把pc初始化为0000h,使单片机从0000h单元开始执行程序,并使其它功能单元处于一个确定的初始状态。本复位电路采用的是按键
5、复位,它是通过复位端经电阻与vcc电源接通而实现的,它兼具上电复位功能。因本系统的晶振的频率为12mhz,所以,复位信号持续时间应当超过2s才能完成复位操作。如电路原理图中的电源和复位模块。(3) 显示模块:系统采用动态显示方式,用p0口来控制led数码管的段控线,而用p2口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。8个欧姆电阻则起限流作用。电路结构采用动态扫描的方式,所有数码管的段控端公用单片机p0口的8根输出口线,数码管的
6、段控端a、b、c、d、e、f、g、dp分别接到p0口的p0.0、p0.1、p0.2、p0.3、p0.4、p0.5、p0.6、p0.7口线上,每个数码管的位控线单独占用单片机p2口一根输出口线,8位数码管从高位到低位分别接p2.0p2.7引脚。段控码(低电平有效)由p0口输出经上拉电阻上拉电压后送到数码管的段控端,位控码由p2口输出经三极管s9050驱动后送到数码管的位控端。(4) 键盘模块:本系统采用的是独立式键盘结构,每个按键单独占用一根i/o口线,每个按键的工作不会影响其它i/o口线的状态。它软件是采用查询式结构,首先逐位查询每根i/o口线的输入状态,如某一根i/o口线输入为低电平,则可确
7、认该i/o口线所对应的按键已按下,然后,再转向该键的功能处理程序。(5) 时钟模块:在at89c52芯片内部有一个高增益反相放大器,其输入端为芯片引脚xtal1,输出端为引脚xtal2。而在芯片内部,xtal1和xtal2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。如电路原理图中的晶振电路。2.3 数字电子钟电路原理图、pcb图、元器件布局图数字电子钟电路原理图见附录a。数字电子钟pcb图见附录b。数字电子钟元件布局图见附录c。2.4 数字电子钟元器件清单 数字电子钟元器件清单见附录d。3 数字电子钟软
8、件系统的设计3.1 数字电子钟使用单片机资源的情况(1) 在at89c52的p0口和p2口外接八个数码管,用p0口作数码管的段控码输出口(p0.0-p0.7对应于数码管的a-dp),p2.7-p2.0作数码管的位控码输出(p2.7-p2.0对应于led7-led0)。(2) 定时器0以中断方式工作,工作方式1。(3) 定时器控制寄存器tcon,通过设置该寄存器中tr0位的状态来控制定时/计数器0的启动/停止;中断允许寄存器ie,通过设置该寄存器ea/et0位的状态来设置定时/计数器0中断允许/禁止;定时/计数器工作方式寄存器tmod,设置定时/计数器0的工作方式。3.2 数字电子钟软件系统主要
9、模块功能简要介绍(1) 主程序:主程序的主要功能是进行定时器/计数器,显示缓冲区的初始化,显示,以及判断是否有功能键按下,判断按下的键并调相应的键功能程序。(2) 键功能程序:键功能程序的主要功能是执行对应的功能,menu键为启动/调整键,第一次按下则由待机状态进入运行状态启动时钟,从00-00-00开始显示,然后按下为奇数则暂停,进入调时状态,按下sec键则秒加1,按下min键则分加1,按下hour键则时加1;若按下为偶数则进入时钟运行状态。(3) 中断服务程序:中断服务程序的主要功能是进行计时操作,程序开始先判断计数溢出是否满了100次,若不满100次则表明没有达到最小计时单位秒,则中断返
10、回;若满100次表明已达到最小计时单位秒,则程序断续向下执行,进行分和时的计时。(4) 显示子程序:显示程序的主要功能是将显示缓冲区的段控码正确的显示在数码管上,采用动态显示,从右向左循环点亮每一位数码管。(5) 键扫子程序:键扫子程序的主要功能是判断是否有键按下,是哪个键按下。3.3 数字电子钟软件系统程序流程框图(1) 主程序流程框图如图3.1所示。(2) 计时1秒子程序流程框图如图3.2所示。(3) 键扫子程序流程框图如图3.3所示。(4) 显示子程序流程框图如图3.4所示。(5) 键监控子程序流程框图如图3.5所示。 图3.1 主程序流程框图 图3.2 计时1秒子程序流程框图 开始返回
11、图3.3 键扫子程序流程框图 图3.4 显示子程序流程框图图3.5 键监控子程序流程框图3.4 数字电子钟软件系统程序清单程序清单见附录e4 设计结论、仿真结果、误差分析4.1 数字电子钟的设计结论及使用说明该电子钟上电或按键复位后能自动显示系统提示符“p.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。s2键为启动/调整键,s3键为加一键,s4键为减一键,s5键转换调节内容。操作步骤如下:(1) 将+5v电源接到电
12、子钟电源插口上,接通电源开关。(2) 把电子钟电路板上的isp程序下载线连接到计算机usb接口,在计算机上通过avr_fighter软件把电子钟程序下载到单片机内。(3) 电子钟程序下载到单片机以后,电子钟进入命令状态,显示“p.”。(4) 按下s2键,电子钟从0开始运行,此时led7、led6、led4、led3、led1、led0分别显示时、分、秒。(5) 再次按下s2键,电子钟进入调时状态,此时通过s3键、s4键、s5键分别调整电子钟的时、分、秒。按一下对应的值加一。调整到想要的时间后,再次按下s2键,电子钟将以用户调整时间为起点进入运行状态。4.2 数字电子钟的仿真结果本次设计的数字电
13、子钟有三种状态:待机显示“p.”状态,显示学号效果,时钟运行状态,时钟调整状态。它们分别如图4.1、图4.2、图4.3、图4.4所示。图4.1 待机显示“p.”状态仿真结果图4.2 学号显示效果图4.3时钟运行状态仿真结果图4.4 时钟调整状态仿真结果4.3 数字电子钟的误差分析虽说采用软件方式来产生1s的基本时间,然而定时器/计数器本身不能产生标准的1s定时,产生一个标准时间之后进行循环计数得到1s,但cpu执行代码需要1-2s的时间,因此产生的1s,1分,1小时,都会略大于标准的时间。此外,单片机也易受外界环境的影响,比如温度、湿度等干扰。故应该让单片机工作在适宜的环境下,同时采用实时时钟
14、芯片,这样能将误差降低到最小。4.4 设计重点、难点,体会及不足之处重点:单片课程设计考察的是一个人理论与实践相结合的能力,要求设计者具有一定的理论知识及动手操作能力。比如用proteus软件进行单片机系统电路的仿真设计、protel软件的使用、pcb板的硬件制作,keil软件编写和调试汇编程序。难点:硬件电路的故障检测和修复,原理电路图的仿真设计,汇编程序的编写和调试。体会:现在来回想单片机的课程设计,有许多感触,从最开始接触单片机和汇编语言,到现在能独立完成一个课程设计。在本学期初期做pcb板时因布局的不科学导致最后的制作使用出现了许多麻烦,还有焊接的经验不足导致了虚焊;在c语言编程时,书
15、本上的很多知识又学的很不扎实,程序基本语句理解不够透彻,导致编一个简单程序都需要大量时间且过于复杂,真是耗时耗力耗单片机内存。 不足之处:数字电子钟的设计由于采用的是用硬件定时和软件计数的方式产生的1s,而忽略了cpu执行指令所需的时间,故时钟显示不是很精确。每尽管经过修改,每小时仍然有1到2 秒的误差参考文献1 李广弟.单片机基础m,北京:北京航空航天大学出版社,2007.06 2 阎石.数字电子技术基础(第四版).北京:高等教育出版社,1998.073 邱光源.电路(第五版).北京:高等教育出版社,2006.054 李朝青.单片机原理及接口技术m.北京:北京航空航天大学出版社,1998.5
16、 李勋等.单片机实用教程m.北京:北京航空航天大学出版社,2000.6 何为民.低功耗单片微机 系统设计m.北京:北京航空航天大学出版社,19997 李华.mcs-51单片机原理及实用接口技术m.北京:北京航空航天大学出版社,1993.8 何立民.单片机应用技术选编m.北京:北京航空航天大学出版社,1997.9 张友德.飞利浦80c51系列单片机原理与应用技术手册m.北京:北京航空航天大学出版社,1992.10 李杏春等.8098单片机原理及应用接口技术m.北京:北京航空航天大学出版社,1996. 教学建议如果老师经常强调给学生评分的主要依据是实验和课程设计,我认为这措施会很有成效。还有,老师
17、若是在课堂上常叫人起来回答问题,这将会更好的集中同学们的精神去一步一步的跟上老师的思路,希望老师可以加以考虑。再有,我觉得老师在课堂上应该再多举一些例题,这样可以让同学们对刚学到的新知识有更为清晰得认识。 而且,老师的课堂让人比较轻松,让人在轻松之余又能学到知识,这点希望老师继续保持。附录a 电路原理图附录 bpcb顶层图pcb底层图附录 c元器件布局图附录 d 数字电子钟元器件清单元器件名称规格数量at89c52 1底座 3晶振12mhz 1发光二极管 9单排插40脚1三极管 90129蜂鸣器1小按键9下载口座子十芯1六脚开关1usb电源线加接口1电阻 2001电阻4.7k1电阻10k3电阻
18、 47024电容22f1电容33pf排阻10k2短路帽2pcb板子1附录e程序清单/* p.显示程序 */* crystal=12mhz */* p2口位控口,p0口段控口 */#includereg52.h#include/*共阳数码管字型码*/*0,1,2,3,4,5,6,7,8,9,p.,灭*/ char code dis_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff,0x8c,0xbf,0xa1 ;/*p.显示代码序号*/ char find_code=11,11,11,11,11,11,11,11,1
19、1;int s=0;min=0;hour=0;int ms=0,i;sbit s1=p10; /用于开启使用/*/函数名: void delayx1ms(uint count)/功能: 延时时间为1ms/调用函数:/输入参数:count,1ms计数/输出参数:/说明:总共延时时间为1ms乘以count,crystal=12mhz/*/#define uchar unsigned char#define uint unsigned intvoid delayx1ms(uint count) uint j; while(count-!=0) for(j=0;j80;j+); /*显示函数*/voi
20、d disp() char i ,j=0xfe; char k; for(i=0;i=100) /定时1秒到 ms=0; s+; if(s=60)/*秒位*/ /秒位到60进位 s=0; min+; if(min=60)/*分位*/ min=0; hour+; if(hour=24)/*小时位*/ hour=0; find_code0=s%10; /更新显示 find_code1=s/10; find_code2=13; /数码管的第三、五个位控显示- find_code5=13; find_code3=min%10; find_code4=min/10; find_code6=hour%10
21、; find_code7=hour/10; /*主函数*/void main() int a,b,k,j,l,s0,x,y,z,m,min0,hour0,biaozhi; while(1) find_code7=10;/起始显示p. while(s1!=0) disp(); /扫描开启键 ea=1;/定时器初始化 et0=1; tr0=1; tmod=0x01; th0=(65536-10000)/256; tl0=(65536-10000)%256; while(1) if(b=1) /调秒的时侯,秒个位亮k+;if(k=1) /1k50,秒个位灭x=1; /x用来阻止秒个位灭的时候进入显示
22、更新区find_code0=11;if(k=50) /50k100秒个位亮find_code0=s0;if(k=100)k=0; if(b=2)j+;if(j=1)y=1;find_code3=11;if(j=50)find_code3=min0;if(j=100)j=0; if(b=3)l+;if(l=1)z=1;find_code6=11;if(l=50)find_code6=hour0;if(l=100)l=0; switch(key() /按键/键扫 case 0x00:disp();break; /没键按下,显示当前内容 case 0x01:a+;tr0=1;biaozhi=0;b=0;break; /a为基数启动,暂停再继续后,将一些标志及时清零 case 0x08:if(a%2=0)/调时间移位键,只能在暂停时候才用 b+; /每按一下移位键,b值改变,移到相应位调时间 if(b=4) /移到调时位,再移回调秒键 b=1; if(b=1&m=1) /m用来阻止第一次按移位键进入下面一条语句 find_code6=hour0; if(b=2) find_code0=s0; /再次移位后,秒个位还回原值 if(b=3) find_code3=min0; m=1; break; case 0x02:if(a%2=0) if(b=1)/加1键 s+;x=0; /有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度黑龙江省高校教师资格证之高等教育心理学题库练习试卷A卷附答案
- 中医康复理疗师考试选题规律试题及答案
- 数学大纲+样卷+参考答案
- 2025届广西南宁市普通高中高三下学期第二次适应性测试(二模)物理试题
- 个人成长与图书管理员试题及答案
- 二零二五年度产学研合作框架协议(生物科技研发)
- 二零二五年度传媒机构文职人员聘用合同
- 2025年度舞台剧演出门票销售合同
- 二零二五年度新三板公司股权转让与工商登记服务协议
- 二零二五年度商业空间装修合同终止执行书
- 青海交通运输厅事业单位笔试真题2024
- 2024发电企业安全风险分级管控和隐患排查治理管理办法
- 祛斑签约合同
- 环保设备检测报告
- 测速记载及流量计算表二
- (2024年)知识产权全套课件(完整)
- 信息安全原理与技术 课件 ch02-数学基础
- 2023CSCO免疫检查点抑制剂相关的毒性控制指南(全文)
- 《群英会蒋干中计》课件 2023-2024学年高教版中职语文基础模块下册
- 2024年陕煤集团榆林化学有限责任公司招聘笔试参考题库含答案解析
- 外科手术部位感染的人工智能与预测建模
评论
0/150
提交评论