ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:1.26MB ,
资源ID:4843473      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(本科毕业设计--基于51单片机设计的多功能数字时钟.doc)为本站上传会员【人****来】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

本科毕业设计--基于51单片机设计的多功能数字时钟.doc

1、 基于51单片机多功能数字时钟 姓名:刘波 学号:01105120 1 系统设计1.1 设计要求设计制作一个24小时制多功能数字钟。1.1.1 主要性能指标1、数字显示年、月、周、日、时、分、秒。1.1.2 创意部分要求准确的进行年、月、周、日、时、分、秒的转换,切换两种显示模式。1.2 总体设计方案1.2.1 概述及设计思路该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天)。1.2.2 方案论证(1)时钟模块【方案一】采用单片机内置定时/计数器。

2、它的处理过程主要是先设定单片机内部定时/计数器的工作方式,对机器周期计数确定基准时间,然后用另外一个定时器软件计数的方法对基准时间形成秒,秒计60次形成分,分计60次形成小时。依此类推,获取日期也是采用相同的方法。该方案在具体实现过程中,计时存在较大的误差。如果晶振受到其他外界信号干扰,或者基准时间计算不准确,都会导致时间显示错误。【方案二】采用555多谐振荡器。由555定时器组成一个多谐振荡器,产生周期为100HZ的脉冲,然后经过两个74LS160组成的分频器得到1HZ的秒脉冲。多谐振荡器的稳定度及频率的准确度决定了数字钟计时的准确程度,通常选用成品晶振构成振荡器电路。计时精度取决于振荡器的

3、频率,振荡器频率越高计时精度越高。【方案三】采用DS1302时钟芯片。DS1302是一种高性能、超低功耗的实时时钟芯片,附加31字节静态RAM,可以通过串行接口与单片机进行通信。实时时钟提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。芯片内部集成备用电源,当外围电路电路有电源供应的时候,备用电源充电储能。当外围电路掉电时,DS1302芯片工作在休眠状态,以备用电源供电。当外围电路再次供电,即可唤醒休眠进入正常工作状态,显示时间无任何异常。该系统设计中,采用方案三。(2)数据显示【方案一】采用LED数码管显

4、示数据。LED数码管是由若干个发光二极管组成的显示字段的显示器件,当数码管中的某个发光二极管导通的时候,相应的一个字段便发光,不导通则不发光。一般来说,LED数码管的控制可分为段选控制和位选控制。段选是LED所显示的字段,如:a,b,c,d,e,f,g,dp,当a,b,c同时点亮时显示数字7;当a,b,d,e,g同时点亮时显示数字2。位选则是显示该数字的位。根据以上控制原理,可实现对时间和温度的显示。【方案二】采用LCD1602液晶屏显示数据。液晶屏的应用非常广泛,比如日常生活中的手表、时钟、计算器、仪器仪表、家电、医疗器械、车船仪表、声象设备文体用品、通讯设备视频图像显示和大画面显示等等。L

5、CD1602 液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。 如清除显示指令 01H,光标复位到地址 00H 位置 ;光标复位指令00H,光标返回到地址。LCD1602液晶屏具有字符发生器,可以直观的显示汉字、图形、字符,并且显示容量大,进行数据的实时显示简单方便。该系统设计中,需要显示的数据比较多。如果使用LED数码管,那么就要用分屏切换来显示数据,那样既不直观又不方便,并且对单片机的I/O口开销比较大。若使用LCD液晶屏显示数据,则不需要分屏切换,而且还节省了I/O资源。因此,采用方案二。2 系统组成与工作原理 2.1 系统框图及工作原理AT89S51键盘输入LCD 液晶显

6、示DS18B02DS1302图2-1 系统框架图工作原理:本设计采用STC89C51单片机作为本次课程设计的控制模块。单片机可把由DS18B20、DS1302中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历的显示。以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。2.2 单元电路设计2.2.1 MC-51单片机89S51各引脚功能介绍:VCC:89S51 电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上

7、只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8752 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PR

8、OG:端口3的管脚设置:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。2.2.2 复位电路MCS-51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。上电复位:上电复位电路是种简单的复

9、位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。图2-2-2 复位电路2.2.3 时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的

10、速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式(如图3-3所示)。MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。图2-2-3 时钟电路2.2.4 显示电路采用LCD显示,LCD显示具有丰富多样性,灵活性,电路简单、易于控制而且功耗小,对于信息量多的系统,是比较适合的,LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作室电流仅2.0m

11、A/5.0V。通过编程实现总动关闭屏幕能够更有效地降低功耗。LCD1602分两行显示,每行可现实多达16个字符,其内部的字符发生器已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制。LCD1602的特性: +5V电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM 内建有160个5X7点阵的字型的字符发生器CGROM 8个可由用户自定义的5X7的字符发生器CGRAM图2-2-4 显示电路图2.2.5 按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形

12、成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。P2.2口表示功能移位键,按键选择要调整的时十位、时个位、分十位或分个位。 P2.1口表示数字“+“键,按一下则对应的数字加1。P2.0口表示数字“-”键,按一下则对应的数字减1。 图 2-2-5 按键控制模块 P2.3口表示时间表的切换

13、,程序默认为日常时间表,当按下该开关,使输入为低电平时,表示当前执行的是温度显示。再按键,使键抬起,输入维高电平时,表示当前执行的是日常作息时间表。3 软件设计3.1 程序流程图开始系统初始化调用DS1302子程序调用DS18B20子程序调用LCD液晶子程序数据显示3.2 系统程序#include #include #include#define LCM_RS P1_3 /定义引脚#define LCM_RW P1_4#define LCM_E P1_5#define LCM_Data P0#define Busy 0x80 /用于检测LCM状态字中的Busy标识#define uchar u

14、nsigned charuchar id,timecount,dipsmodid;bit lmcinit_or_not; /是否需要清屏标志位“1”为需要“0”为不需要bit flag,sflag; /flag是时钟冒号闪烁标志,sflag是温度负号显示标志void Disp_line1(void); /显示屏幕第一行 void Disp_line2(void); /显示屏幕第二行void id_case1_key();void Disp_mod0(void);/显示模式0void Disp_mod1(void);/显示模式1/* DS1302 时间显示定义部分sbit T_CLK=P10;s

15、bit T_IO =P11;sbit T_RST=P12;sbit ACC0=ACC0;sbit ACC7=ACC7;void Set(uchar,uchar); /根据选择调整相应项目void RTInputByte(uchar); /* 输入 1Byte */uchar RTOutputByte(void); /* 输出 1Byte */void W1302(uchar, uchar); / 向DS1302写入一个字节uchar R1302(uchar); / 从DS1302读出一个字节void Set1302(unsigned char * ); / 设置时间 bit sec,min,h

16、our,year,mon,day,weekk; /闪烁标志位/初始化后设置为:04年12月2日星期4 0点0分0秒unsigned char inittime7=0x00,0x00,0x00,0x02,0x12,0x04,0x04;/ 秒 分钟 小时 日 月 年 星期/* 18B20温度显示定义部分sbit DQ=P16; /18B20 接P16口typedef unsigned char byte;typedef unsigned int word;Read_Temperature(char,char);void mychar(void);byte ow_reset(void);byte r

17、ead_byte(void);void write_byte(char val);void adjust_res(char res); /res 分别等于 0x1f, 0x3f, 0x5f 温度读数分辨率分别对应 / 0.5, 0.25, 0.125 /*温度控制部分*bit tl_flash_flag; /下限闪烁标志bit th_flash_flag; /上限闪烁标志bit tl_flag; /下限越限标志 bit th_flag; /上限越限标志 bit tl_sign,th_sign;/温度零下标志 0:零上,1:零下char tempid;void Disp_Temp(void);

18、/显示上下限温度void Set_TH_Temp(void); /设置温度上限void Set_TL_Temp(void); /设置温度下限signed char tl=20,th=45;void Compare_Temp(signed char l,signed char h); /比较温度void Tl_Al(void); /下限越限报警void Th_Al(void); /上限越限报警/* 1602LCD驱动 *void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,BuysC);un

19、signed char ReadStatusLCM(void);void LCMInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);void Delay5Ms(void);void Delay400Ms(void);unsigned char code week=Week.;void main(void) Dela

20、y400Ms(); /启动等待,等LCM讲入工作状态 LCMInit(); /LCM初始化 Delay5Ms(); /延时片刻(可不要) mychar(); TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; TR0=1; ET0=1; W1302(0x90,0xa5);/打开充电二级管 一个二级管串联一个2K电阻 W1302(0x8e,0x80);/写保护,禁止写操作 adjust_res(0x1f); /调整18B20的分辨率 0x1f:0.5; 0x3f:0.25; 0x5f:0.125 while(1) if (

21、P2_3=0) dipsmodid+; lmcinit_or_not=1; if(dipsmodid2) dipsmodid=0; while(P2_3=0); switch(dipsmodid) case 0: Disp_mod0(); break; case 1: Disp_mod1(); break; /选择显示模?void Dispmod_id_case_key() if (P0_3=0) dipsmodid+; if(dipsmodid1) dipsmodid=0; /显示模式0void Disp_mod0(void) if(lmcinit_or_not=1) LCMInit();

22、lmcinit_or_not=0; if (P2_0|P2_1)=0) /初始化 Delay5Ms(); if (P2_0|P2_1)=0) Set1302(inittime); /mychar(); /显示自定义字符 if (P2_2=0) / 设置和选择项目键 Delay5Ms(); if(P0_6=0)id+;if(id7) id=0; while(P2_2=0); switch(id) case 0: sec=0; Disp_line1(); Disp_line2(); break; case 1:/年 year=1; Disp_line1(); Disp_line2(); id_ca

23、se1_key(); break; case 2:/月 year=0;mon=1; Disp_line1(); Disp_line2(); id_case1_key(); break; case 3:/日 mon=0;day=1; Disp_line1(); Disp_line2(); id_case1_key(); break; case 4:/星期 day=0;weekk=1; Disp_line1(); Disp_line2(); id_case1_key(); break; case 5:/小时 weekk=0;hour=1; Disp_line1(); Disp_line2(); i

24、d_case1_key(); break; case 6:/分钟 hour=0;min=1; Disp_line1(); Disp_line2(); id_case1_key(); break; case 7:/秒 min=0;sec=1; Disp_line1(); Disp_line2(); id_case1_key(); break; /显示模式1void Disp_mod1(void) if(lmcinit_or_not=1) LCMInit(); lmcinit_or_not=0; Read_Temperature(1,0); DisplayOneChar(0,1,T); Displ

25、ayOneChar(1,1,L); DisplayOneChar(2,1,:); DisplayOneChar(7,1,T); DisplayOneChar(8,1,H); DisplayOneChar(9,1,:); if(P2_2=0) if(P2_2=0) tempid+; if(tempid2) tempid=0; while(P2_2=0); switch(tempid) case 0:4 实验与调试4.1 硬件测试本设计的硬件验证电路完全由按照上述理论进行焊接。其电路焊接如图4-1所示。由于电路比较简单在焊接中遇到的问题不是很多。主要遇到的问题有电路焊接时地线和电源线的排布,由于电

26、路中的电源线和地线的连接点比较多,在实际的印刷电路板中,地线一般是环绕板子而且比较粗的铜线,鉴于这个思路,我将电源线和地线分别布置在电路板的两个边上,如图4-2,4-3所示。另外,由于我们这是实验板,是验证理论用的板子,板子上的芯片经常需要拆卸,因此我选择了用双列直插底座来安装芯片,这样可以保证在拆卸芯片时不需要再重新焊接芯片,省去了很多不必要的麻烦。硬件焊接好后需要测试是否都连接好了,本设计采用的测试方法是用万用表来测量,用万用表的两个表笔分别接连线的两端,测试是否电阻为零,如果电阻为零说明连接正确,如果有电阻说明没有连接好。由于实验板上的有些焊点离的比较近,在焊接时可能由于不小心将焊锡滴落

27、在两个焊点之间造成短路,短路是对电路板最大的危害之一,因此要细心的检查每两个相邻的焊点之间是否有短路发生。本设计采用伟福编译软件来编译程序,是目前使用广泛的单片机开发软件,它集成了源程序编辑和程序调试于一体,支持汇编语言编译,另外它还支持第三方编译器,可以编译C语言和PL/M语言。源程序的编写:首先从菜单的“文件”中“新建文件”,建立文件;然后为文件选择好单片机型号,语言设置项选择伟福汇编器;确定后新的文件就算建立了。接下来进行编辑、修改等操作。如图4-2所示。编译:加载好要编译的文件,在工具栏的右上方找到编译按钮,按下编译按钮,开始编译,编译后会提示编译是否通过,如果编译通过就可以进行程序下

28、载,实验;如果编译没有通过说明程序存在错误需要修改这时会在软件下方提示哪里有错误,是什么错误类型,如图4-3所示。双击下边的错误提示,软件会将光标自动移到错误处以便于修改。编译通过后会显示编译成功提示,如图4-4所示。编译:加载好要编译的文件,在工具栏的右上方找到编译按钮,按下编译按钮,开始编译,编译后会提示编译是否通过,如果编译通过就可以进行程序下载,实验;如果编译没有通过说明程序存在错误需要修改这时会在软件下方提示哪里有错误,是什么错误类型。双击下边的错误提示,软件会将光标自动移到错误处以便于修改。编译通过后会显示编译成功提示。4.2 实物调试由于实物调试中遇到的问题可能是软件的问题也可能

29、是硬件的问题,因此需要采取好的调试过程,制定一个好的调试原则。本设计在调试时采用了遇到问题先排查是否是硬件故障,然后再排查软件故障的顺序。在排查硬件故障时可以利用已有的设计成功的软件来测试。例如在调试过程中,最先遇到的问题是液晶显示器不能显示。我在排查故障时采用了一个原有的能够正常运行的程序来测试电路是否能够显示,结果是能够显示。这说明电路的硬件连接没有问题,然后再排查软件问题,结果发现是程序中查询日历芯片时的地址赋错值了,在排除这个错误之后再烧写程序测试就能够正常显示了。程序能够正常显示时间之后是调试按键子程序,要测试是否能扫描到按键及按键功能是否正确。由于按键程序设计时跳转比较麻烦因此出了

30、些小错误,在按键调整之后总是不能返回时间显示界面。经过细心检查发现是在返回显示程序的跳转标号写错了,经过改进,终于成功了。程序能够正常显示时间之后是调试按键子程序,要测试是否能扫描到按键及按键功能是否正确。由于按键程序设计时跳转比较麻烦因此出了些小错误,在按键调整之后总是不能返回时间显示界面。经过细心检查发现是在返回显示程序的跳转标号写错了,经过改进,终于成功了。程序能够正常显示时间之后是调试按键子程序,要测试是否能扫描到按键及按键功能是否正确。由于按键程序设计时跳转比较麻烦因此出了些小错误,在按键调整之后总是不能返回时间显示界面。经过细心检查发现是在返回显示程序的跳转标号写错了,经过改进,终于成功了。元器件名称参数备注单片机AT89S51(12MHZ)1晶体DRYSTAL 12MHZ1晶体DRYSTAL 32.768MHZ1温度测量芯片DS18B201时钟模块DS13021LCD显示模块LCD16021三极管PNP90122电容47F5电容22pF5电容10F5按键BUTTON10电阻(上拉电阻)10K20电阻1K20滑动变阻器47K2限流电阻0.1K10电路原理图 19

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服