版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机系统课程设计课程设计名称:定时闹钟专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:2013-12-1目录TOC\o"1-2"\h\z\u1引言 41.1研究背景 41.2设计思想及基本功能 42总体方案设计 42.1方案选取 42.2系统框图 4总体方案设计 43硬件电路设计 53.1电源电路设计 53.2晶振电路 63.3复位电路 73.4时钟电路 83.5键盘电路 103.6显示电路 104系统软件设计 114.1主程序软件设计 114.2键盘程序设计 124.3定时程序设计 145总结 14参考文献 15附录源程序 151引言1.1研究背景在我们的日常生活中,需要有很多事去做,但有时候偶尔会忘记,或者有些时候不能及时的去做些事,比如早上六点,或者按时午休,按时睡觉,等等吧,往往我们需要在时间到的时候给一个提醒,这就用到我们常用的闹钟了,只要设定好时间,就会在合适的时候提醒我们。1.2设计思想及基本功能和我们常用的闹钟一样,实现基本的钟表,定时提醒的功能。(1)能做普通的钟表使用;(2)可根据需要设置和清除定时时间;2总体方案设计2.1方案选取本系统的显示信息主要有显示时间和闹钟提醒。显示方案有两个:
方案一:采用数码管显示。用数码管显示编程比较简单,价格便宜,但占用单片机IO口太多,而且显示的信息不多。
方案二:采用液晶显示器显示。用自带字符库的液晶显示模块,显示方便美观,而且人机交互界面也很友好,可显示的信息更为丰富。
综上分析:因为液晶显示较为灵活,现实的信息量也大于LED数码管,故选择方案二。2.2系统框图方案(二)的系统框图。2.3总体方案设计电子闹钟作为一个显示时间和及时提醒的电子工具,它主要是能准确的计时和在设定时间给我们以提醒,它利用晶振电路配合AT89C51内部的定时器以及1602液晶显示屏来准确地计时和显示时间,通过对独立键盘的定义来调整时间和设置定时时间,再配合蜂鸣器就能在需要的时候及时提醒。如图电子闹钟结构框图3硬件电路设计电源电路设计单片机正常工作电压为5V,因此设计的电源电路主要是提供单片机工作电压。图是为单片机提供电压的电源电路。在这个电路中采用了三端集成稳压器LM7805,可以输出5V的直流电压以供给单片机。图电源电路图3.2晶振电路电路中的晶振即石英晶体震荡器。由于石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以,石英晶体震荡器是用来产生基准频率的。通过基准频率来控制电路中的频率的准确性。同时,它还可以产生振荡电流,向单片机发出时钟信号。下图是单片机的晶振电路。片内电路与片外器件就构成一个时钟产生电路,CPU的所有操作均在时钟脉冲同步下进行。片内振荡器的振荡频率非常接近晶振频率,一般多在1.2MHz~24MHz之间选取。C1、C2是反馈电容,其值在20pF~100pF之间选取,典型值为30pF。本电路选用的电容为30pF,晶振频率为12MHz。振荡周期=;机器周期指令周期=。XTAL1接外部晶体的一个引脚,XTAL2接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振。在石英晶体的两个管脚加交变电场时,它将会产生一定频率的机械变形,而这种机械振动又会产生交变电场,上述物理现象称为压电效应。一般情况下,无论是机械振动的振幅,还是交变电场的振幅都非常小。但是,当交变电场的频率为某一特定值时,振幅骤然增大,产生共振,称之为压电振荡。这一特定频率就是石英晶体的固有频率,也称谐振频率。石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,以便使MCS-51片内的OSC电路按石英晶振相同频率自激振荡。通常,OSC的输出时钟频率fOSC为,典型值为12MHz或者。电容C1和C2可以帮助起振,典型值为30pF,调节它们可以达到微调fOSC的目的。图3.2单片机晶振电路图3.3复位电路复位电路的主要功能是使单片机进行初始化,在初始化的过程中需要在复位引脚上加大于2个机器周期的高电平。复位后的单片机地址初始化为0000H,然后继续从0000H单元开始执行程序。在复位电路中提供复位信号,等到系统电源稳定后,再撤销复位信号。但是为了在复位按键稳定的前提下,电源稳定后还要经一定的延时才撤销复位信号,以防在按键过程中引起的抖动而影响复位。图3.3所示的RC复位电路可以实现上述基本功能。图3.3复位电路图3.4时钟电路DS12887芯片和AT89C5l单片机的接口电路如图3.4图3.4时钟电路图其中DS12887的模式通过选择脚MOT接地来确定,DS12887的中断输出端IQR和89C51的外部中断INT0接口相联,R/W接口与单片机89C51的RD/WR接口相连;而DS12887的AS端口和单片机89C51的AIE端直接相联。DS12887的SQW端与单片机89C51的TO端相连。DS12887的高位地址由端口P2.7来片选,DS12887的高8位地址设定为7FH,低8位由芯片内部各单元的地址来定。DS12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失RAM,十进制/二进制累加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。DS12887引脚分配如图所示:Vcc:直流电源+5V电压。当5V电压在正常范围内时,数据可读写;当Vcc低于4.25V,读写被禁止,计时功能仍继续;当Vcc下降到3V以下时,RAM和计时器供电被切换到内部锂电池。MOT(模式选择):MOT引脚接到Vcc时,选择MOTOROLA时序,当接到GND时,选择Intel时序。SQW(方波信号输出):SQW引脚能从实时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。AD0-AD7(双向地址/数据复用线):总线接口,可与Motorola微机系列和Intel微机系列接口。AS(地址选通输入):用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。DS(数据选通或读输入):DS/RD引脚有两种操作模式,取决于MOT引脚的电平,当使用Motorola时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总线的时刻;在写周期,DS的后沿使DS12887锁存写数据。选择Intel时序时,DS称作(RD),RD与典型存贮器的允许信号(OE)的定义相同。R/W(读/写输入):R/W引脚也有两种操作模式。选Motorola时序时,R/W是低电平信号时,指示当前周期是读或写周期,DS为高电平时,R/W高电平指示读周期,R/W信号一低电平信号,称为WR。在此模式下,R/W引脚与通用RAM的写允许信号(WE)的含义相同。CS(片选输入):在访问DS12887的总线周期内,片选信号必须保持为低。IRQ(中断申请输入):低电平有效,可作微处理的中断输入。没有中断的条件满足时,IRQ处于高阻态。IRQ线是漏极开路输入,要求外接上接电阻。RESET(复位输出):当该脚保持低电平时间大于200ms,保证DS12887有效复位。3.5键盘电路键盘主要是在闹钟的使用中起时间调整和定时设置的功能,其中时间调整有小时的增减,分的增减以及定时设置中小时的增减,分的增减,再加上定时设置的复位和开启。由于使用按键数不多,所以可选用独立键盘。电路如图:键盘接口电路3.6显示电路为了获得更好的效果本设计并没有采用常见的LED,而是采用了型号为1602的
LCD。LCD有LED数码显示更好的更的直观效果,也更加经久耐用。液晶显示模块体积小功耗低、显示内容丰富,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件之一了。本LCD是2行16列液晶
可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚).
该模块也可只用
D4-D7作为四位数据分两次传送。这样的话可以节省MCU的I/O口资源。
引脚说明,见表3.1。
VDD:电源正极,4.5-5.5V,通常使用5V电压;
VL:LCD对比度调节端,电压调节范围为0-5V。接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度或者直接串接一个电阻到地;
RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;
R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据;
E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。
D0-D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。本充电器就是采用4位数据传送方式;
BLA:
LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;
BLK:
LED背光地端。4系统软件设计系统软件设计主要包括显示子程序,键盘子程序,时钟程序,部分构成。本章节系统的介绍了电子闹钟和各主要功能子程序的设计流程,具体的程序代码见附录。4.1主程序软件设计主程序构成无限循环,主要完成单片机初始化,关中断,菜单显示内容初始化,按键扫描,计时等功能。主程序的流程图如图4.1。主程序流程图主程序流程说明:流程图主要包括按键扫描与键值返回的相关操作,及定时部分和显示部分,每当有键按下是要根据键值执行相应的功能,有时间调整和定时设置之分,时间调整为调整闹钟的时间时期有现在的时间对应,定时设置,我们可根据自己的需要设置定时时间,当设置时间到,蜂鸣器发声,当设置时间过去,发声停止。4.2键盘程序设计在操作按键时,无论是按下还是松开,触点在闭合和断开时均会产生抖动,此时逻辑电平是不稳的,如果得不到正确处理,可能会引起单片机对按键命令的错误执行。解决这个问题的简单方法是利用软件延时。在单片机处理按键操作后都延时5ms,如果确定是按键后再延时20ms,这样基本可以避免键盘的抖动。然后由单片机进行键码分析,并执行相应的命令,显示并且返回。图是键盘程序设计流程图。图键盘程序流程图键盘使用说明;使用独立键盘控制,K1、K2分别为时位的加、减(可用于定时设置和时间调节);K3、K4分别为分位的加、减(可用于定时设置和时间调节);K5位定时状态和钟表状态的相互转换;K6闹钟定时状态清零;K8蜂鸣器的开通与关闭。4.3定时程序设计定时程序设置使用定时器0的方式一工作,每50MS发生一次中断,发生20次中断1S,时钟的秒位加一,依次循环,当秒位满60,清零,分位加一,分位够60,清零时位加一,时位满24清零。5总结课程设计结果展示:经过一周的资料查找和设计,我已完成了单片机的课程设计。通过这次设计学到了不少东西,动手操作后才知道,理论和实践的差别。就软件部分的程序的编写花费了好长时间,还有画图方面,都是通过自己学习后,才开始做的。同时,由于设计的时间和能力有限,还有许多功能和技术没有充分研究,可能存在不合理的地方。但是,一个完整的课程设计过程,让我掌握了单片机系统和电子操作软件等方面的知识,尤其是熟悉了用protel画电路原理图和用visio画程序流程图。这使我在动手能力方面有很大的提升,也给今后更成功、完善的设计打下坚实的基础。参考文献[1]张迎新.单片机原理、应用及接口技术.国防工业出版社,1993[2]王青林张伟赵静波Protel99se基础教程.人民邮电出版社2013/12/9[3]邓兴成.单片机原理与实践指导.北京:机械工业出版社,2010[4]阎石.数字电子技术基础.北京:高等教育出版社,2009.附录#include<reg52.h>//包含头文件,#include<intrins.h>#defineuintunsignedinttypedefunsignedcharuint8;sbitRS=P1^0;//定义端口sbitRW=P1^1;sbitDS=P1^6;sbitKQ=P1^7;sbitEN=P2^5;sbitDU=P2^0;sbitWE=P2^1;sbitBF=P0^7;sbitFM=P2^3;sbitk1=P3^0;sbitk2=P3^1;sbitk3=P3^2;sbitk4=P3^3;sbitk5=P3^4;sbitk6=P3^5;sbitk7=P3^6;sbitk8=P3^7;#defineRS_CLRRS=0#defineRS_SETRS=1#defineRW_CLRRW=0#defineRW_SETRW=1#defineEN_CLREN=0#defineEN_SETEN=1#defineDataPortP0voidcmg88()//关数码管,点阵函数{DU=1;P0=0X00;DU=0;}/*uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5uS*/voidDelayUs2x(unsignedchart){while(--t);}/*mS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编*/voidDelayMs(unsignedchart){while(t--){//大致延时1mSDelayUs2x(245); DelayUs2x(245);}}/*判忙函数*/bitLCD_Check_Busy(void){DataPort=0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return(bit)(DataPort&0x80);}/*写入命令函数*/voidLCD_Write_Com(unsignedcharcom){while(LCD_Check_Busy());//忙则等待RS_CLR;RW_CLR;EN_SET;DataPort=com;_nop_();EN_CLR;}/*写入数据函数*/voidLCD_Write_Data(unsignedcharData){while(LCD_Check_Busy());//忙则等待RS_SET;RW_CLR;EN_SET;DataPort=Data;_nop_();EN_CLR;}/*清屏函数*/voidLCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*写入字符串函数*/voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0) { LCD_Write_Com(0x80+x);//表示第一行 }else { LCD_Write_Com(0xC0+x);//表示第二行 }while(*s) {LCD_Write_Data(*s);s++; }}/*初始化函数*/voidLCD_Init(void){LCD_Write_Com(0x38);//显示模式设置DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08);/*显示关闭*/LCD_Write_Com(0x01);/*显示清屏*/LCD_Write_Com(0x06);/*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C);/*显示开及光标设置*/}voidwait(void){ P0=0xFF; do { RS=0; RW=1; EN=0; EN=1; }while(BF==1); EN=0;}voidw_dat(uint8dat){ wait(); //忙则等待 EN_CLR; DataPort=dat; RS_SET; RW_CLR; EN_SET; //下降沿有效 EN_CLR;}/*****************************************************函数功能:写命令入口参数:unint8cmd************************************************** */voidw_cmd(uint8cmd){ wait(); //忙则等待 EN_CLR; DataPort=cmd; RS_CLR; RW_CLR; EN_SET; EN_CLR;}intkeyscan() //独立按键扫描函数{if(k1==0) { DelayMs(150); if(k1==0) return1; } elseif(k2==0) { DelayMs(150); if(k2==0) return2; } elseif(k3==0) { DelayMs(150); if(k3==0) return3; } elseif(k4==0) { DelayMs(150); if(k4==0) return4; } elseif(k5==0) { DelayMs(150); if(k5==0) return5; } elseif(k6==0) { DelayMs(150); if(k6==0) return6; } elseif(k7==0) { DelayMs(150); if(k7==0) return7; } elseif(k8==0) { DelayMs(150); if(k8==0) return8; }}inta,b,c=0,e,n=0,m=0,p=0,i,q=0,r=0,d=0;voidSJXS(uintx,uinty,uintz) //版面显示函数{ LCD_Write_String(0,0,"Nowtimeis:");LCD_Write_String(2,1,":"); LCD_Write_String(5,1,":"); w_cmd(0Xc0); w_dat(0x30+x/10); w_dat(0x30+x%10); w_cmd(0Xc3); w_dat(0x30+y/10); w_dat(0x30+y%10); w_cmd(0Xc6); w_dat(0x30+z/10); w_dat(0x30+z%10);} voidBS(uintx,uinty,uintz) //报时{if(m==x&&n==y&&z) { FM=0; DelayMs(200); FM=1;}}voidKZ(uintx) //按键控制函数{switch(x) { case1: if(c==1) { m++; if(m==24) m=0; } else { a++; if(a==24) a=0; } break; case2: if(c==1) { if(m==0) m=23; else m--; } else { if(a==0) a=23; else a--; } break; case3: if(c==1) { n++; if(n==60)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中地理七年级《数智融合视域下地形图判读的进阶式探究》教学设计
- 核心素养导向下大单元视域的人教PEP五上Recycle2第2课时跨学科公开课教案
- 认知偏差对信息处理的作用-洞察与解读
- 薪酬激励与员工绩效关联-洞察与解读
- 石淋景观与空间艺术的结合-洞察与解读
- 微晶玻璃热障涂层-洞察与解读
- 急性呼吸窘迫综合征的护理配合策略
- 初中道德与法治课教学中劳动素养培育研究
- 初级汉语综合课《苹果一斤多少钱》线上教学设计
- 2026年科研伦理与学术规范期末押题宝典题库附参考答案详解(突破训练)
- 装饰装修工程施工组织设计完整版
- 特种加工第六版白基成课后习题答案
- 《滚动轴承 汽车用等速万向节及其总成》
- 左洛复心内科-解说词版
- 多唱魔镜ext4格式的母盘制作和权限修改方法
- BVI企业性公司章程汉语版
- GB/T 6003.3-1999电成型薄板试验筛
- 高三化学人教版2016二轮复习专题八 电化学原理
- GB/T 26392-2011慢回弹泡沫复原时间的测定
- GB/T 15055-2021冲压件未注公差尺寸极限偏差
- GB/T 13916-2013冲压件形状和位置未注公差
评论
0/150
提交评论