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

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

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

注意事项

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

毕业设计论文-智能电子钟(lcd)应用电子专业综合.doc

1、湖北文理学院物理与电子工程学院11应用电子专业综合课程设计---------智能电子钟 专业综合课程设计报告 题目:智能电子钟(LCD) 题目智能电子钟(LCD) 一、 设计要求: 制作一个LCD显示的智能电子钟: (1) 计时:秒、分、时、日、月、年、星期。 (2) 闰年自动判别。 (3) 时间、年、月、日、星期交替显示。 (5) 自定任意时刻自动开/关屏。 (6) 计时精度:误差≤1秒/月(具有微调设置)。 二、 方案论证: 本实验可采用并行时钟芯片(DS12C887)和串行

2、时钟芯片(DS1302),DS1302要用户自己安装后备电池和串口通讯,要32.768KHz的晶振,而DS12C887自带后备电池,并口通讯,无需外围元件,并且DS12C887多了一个字节来记录世纪使用的,处在RAM的32H单元,但是其他的寄存器定义都相同。由于本实验用到了STC12C5A60S2直插40P封装的单片机、nokia5110液晶屏、独立式按键、四路2输入与门并且都是直插的,而且在实验室做PCB只能是单层板,为了节约空间和简化电路于是就选用了串行时钟芯片DS1302。 三、 理论设计: 用CAD软件绘制的硬件原理图 电源和程序下载端口,此部分的USB可提供电源和下载端口适用于

3、USB下载端口,DOWN端口适用于四角插针式下载、BAT为备用电源端口。 CPU主控部分,此部分采用的是高速51系列的STC12C5A60S2的单片机,该芯片不仅运行速度快稳定驱动能力更大,还为用户提供了内部集成8位/10位可调分辨率ADC模块(在此设计中有用到),1KB可擦写EEPROM本设计中用其设计成可调闹钟功能存放闹钟值。 此图为串行数据nokia5110的LCD显示器模块,采用可控背光和可控电源有很好的节能效果。该显示器能显示汉字,字符,图片、并且处理显示数据速度快。 此模块为串行数据实时时钟模块,此模块采用的是达拉斯公司生产的DS1302具有闰年补偿。 此图

4、为按键中断模块,在此模块中每个独立式按键都能申请外部中断及时处理按键按下的值来执行用户的操作。 此图为蜂鸣器模块此模块用于闹钟铃声设计,和开机提示。 此图为PCB版图 此图为PCB打印预览 软件流程图 开始 按键检测,判断按键是否按下 yes其他键 yes 按下目录键 NO 时间处理 初始化时钟 功能1(时间) 内部子程序,包括键值处理,加减上下,确认,背光控制,闹钟,时间日期的设置 温度处理 读数据

5、 功能2(温度) 电压处理 数据处理 功能3(电压) 显示 闹钟处理 功能4(闹钟) 返回 程序清单 完整C程序源代码 /************************************************************************************** * 主程序:顶层程序 * *

6、 显示默认功能:时间日期显示; * * 调用子程序; * * * ***************************************************************************************/ # include # include "zimo.h" //字模程序; # include "nokia5110.h"//5110驱动程序; # include "ds1302.h" //ds13

7、02驱动程序; # include "key.h" //按键扫描程序; # include "printf.h" //显示函数; # include "power.h" //电源模块; # include "main.h" //引脚定义; # include "delay.h" //延时函数; # include "macroandconst.h"//数据类型宏定义; # include "ADC.H" //ADC电压测量 # include "ds18b20.h" //温度模块; void main() { system_inint

8、); //系统初始化; //Set_RTC(); while(1) { checkclock(); caidan(); //菜单显示; if(menue==0) { if(ok==1) { LCD_clear(); //清屏幕 while(menue==0) //由此进入时钟功能 { ok=0; logo(); Read_RTC();//读取时钟; data_change();//时钟数据处理 tiaozheng_flag(); date_time(); //显示年月日时分秒; w

9、eek();//星期处理; set_date_time();//设置改变时间和日期; powervcc(); checkclock(); } LCD_clear(); //清屏幕 } } else if(menue==1) //由此进入温度检测功能 { if(ok==1) { LCD_clear(); //清屏幕 while(menue==1) { temperatuercheck(); ok=0; } LCD_clear(); //清屏幕 } } else if(menue==2)

10、 //由此进入电压测量功能 { if(ok==1) { LCD_clear(); //清屏幕 while(menue==2) { power();//电量检测 ok=0; } LCD_clear(); //清屏幕 } } else if(menue==3)//由此进入闹钟功能 { if(ok==1) { LCD_clear(); //清屏幕 while(menue==3) { clock(); ok=0; checkclock(); } L

11、CD_clear(); //清屏幕 } } else {LCD_clear(); caidan();} } } void extern0() interrupt 0 /*外部中断0中断函数定义;*/ { key(); } /************************************************************************************** * 子程序:底层程序 * *

12、 功能:时间日期数据处理; * * * * * ***************************************************************************************/ # include # include "macroandconst.h" # include "stc12c5a60s2.h" # include "nokia5110.h" sbit SCK = P

13、0^2; //DS1302时钟; sbit SDA = P0^1; //DS1302数据; sbit RST = P0^0;// DS1302复位; uchar l_tmpDate[]={0,0,0,1,1,1,13};//秒分时日月周年08-05-15 12:00:00 uchar l_tmpdisplay[13]; code uchar Write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年 最低位读写位 code uchar Read_RTC_address[7]={0x

14、81,0x83,0x85,0x87,0x89,0x8b,0x8d}; /******************************************************************/ /* 写一个字节 */ /******************************************************************/ void Write_Ds1302_Byte(unsigned char temp) { unsig

15、ned char i; for (i=0;i<8;i++) //循环8次 写入数据 { SCK=0; SDA=temp&0x01; //每次传输低字节 temp>>=1; //右移一位 SCK=1; } } /******************************************************************/ /* 写入DS1302 */ /*******

16、/ void Write_Ds1302( unsigned char address,unsigned char dat ) { RST=0; _nop_(); SCK=0; _nop_(); RST=1; _nop_(); //启动 Write_Ds1302_Byte(address); //发送地址 Write_Ds1302_Byte(dat); //发送数据 RS

17、T=0; //恢复 } /******************************************************************/ /* 读出DS1302数据 */ /******************************************************************/ unsigned char Read_Ds1302 ( uchar address ) { unsigned char

18、 i,temp=0x00; RST=0; _nop_(); _nop_(); SCK=0; _nop_(); _nop_(); RST=1; _nop_(); _nop_(); Write_Ds1302_Byte(address); for (i=0;i<8;i++) //循环8次 读取数据 { if(SDA) { temp|=0x80; } //每次传输低字节 temp>>=1; //右移一位 SCK=1; _nop_(); _nop_();

19、 SCK=0; } RST=0; _nop_(); //以下为DS1302复位的稳定时间 _nop_(); RST=0; SCK=0; _nop_(); _nop_(); _nop_(); _nop_(); SCK=1; _nop_(); _nop_(); SDA=0; _nop_(); _nop_(); SDA=1; _nop_(); _nop_(); return (temp); //返回 } /**************************************

20、/ /* 读时钟数据 */ /******************************************************************/ void Read_RTC(void) //读取 日历 { unsigned char i,*p; p=Read_RTC_address; //地址传递 for(i=0;i<7;i++) //分7次读取 秒分时日月周年

21、 { l_tmpDate[i]=Read_Ds1302(*p); p++; } } /******************************************************************/ /* 设定时钟数据 */ /******************************************************************/ void Set_RTC(void) //设定 日历 {

22、 uchar i,*p,tmp; for(i=0;i<7;i++) { //BCD处理 tmp=l_tmpDate[i]/10; l_tmpDate[i]=l_tmpDate[i]%10; l_tmpDate[i]=l_tmpDate[i]+tmp*16; } Write_Ds1302(0x8E,0X00); //关闭写保护; p=Write_rtc_address; //传地址 for(i=0;i<7;i++) //7次写入 秒分时日月周年 { Write_Ds1302

23、p,l_tmpDate[i]); p++; } Write_Ds1302(0x8E,0x80); //打开写保护; } /************************************************************************************** * 子程序:底层程序 * * 功能:按键处理,键值显示; * * * *

24、 * ***************************************************************************************/ # include "main.h" # include "ds1302.h" # include "nokia5110.h" # include "delay.h" # include "printf.h" # include "eeprom.h" uchar set=0; //按键选择标志位; char key_flag=0;//按键加减标志位;

25、 uchar menue=0; //菜单选择标志位; uchar ok=0; //确认标志位; char miao,fen,shi,ri,yue,zhou,nian;/*时间日期数值标志位;*/ uchar clocktable[5]; //分,时,星期; char hour=7; char minute=30; char week2=1; void Delay10ms() //@11.0592MHz { unsigned char i, j; i = 108; j = 145; do { while (--j); } whi

26、le (--i); } void key() { EA=0; /*判断选择按键是否按下;如果按下了当松开的时候让背光打开;set++;*/ if(keyswitch==0) { Delay10ms(); if(keyswitch==0) { Delay10ms(); while(keyswitch==0); LCD_BLA=1; if(set>8)set=0; set++; } } /*up和down按键的检测;

27、加减标志位*/ if(keyup==0) { Delay10ms(); if(keyup==0) { LCD_BLA=1; Delay10ms(); while(keyup==0); key_flag++; } } if(keydown==0) { Delay10ms(); if(keydown==0) { LCD_BLA=1; Delay10ms(); while(keydown==0); key_flag--

28、 } } if(keymenue==0) { Delay10ms(); if(keymenue==0) //菜单选择标志位; { Delay10ms(); while(keymenue==0); LCD_BLA=1; menue++; if(menue>3)menue=0; } } if(keyok==0) { Delay10ms(); if(keyok==0) //确认标志位; { Delay10

29、ms(); while(keyok==0); ok++; if(ok>1)ok=0; set=0;LCD_BLA=0;TR0 = 0; } } if(set>=2)TR0 = 0; EA=1; } void set_date_time() { if(set==2) { // while(keyup==0|keydown==0); { miao=l_tmpdisplay[10]*10+l_tmpdisplay[11]; miao=miao+key_fla

30、g; if((key_flag<0)&(miao==0))miao=59; if(miao>59)miao=0; miao=miao%10+(miao/10)*16; Write_Ds1302(0x8E,0x00); Write_Ds1302(0x80,miao); Write_Ds1302(0x8E,0x80); } } if(set==3) { // while(keyup==0||keydown==0); { fen=l_tmpdisplay[8]*10+l_tmpdisplay[9];

31、 fen=fen+key_flag; if(fen>59) { fen=0; } if((key_flag<0)&&(fen<0)) { fen=59; } fen=fen%10+(fen/10)*16; Write_Ds1302(0x8E,0x00); Write_Ds1302(0x82,fen); Write_Ds1302(0x8E,0x80); } } if(set==4) { // while(keyup==0||keydown==0); { shi=l_tmpdisplay[6]*10+l

32、tmpdisplay[7]; shi=shi+key_flag; if(shi>23)shi=0; if((key_flag<0)&&(shi<0))shi=23; shi=shi%10+(shi/10)*16; Write_Ds1302(0x8E,0x00); Write_Ds1302(0x84,shi); Write_Ds1302(0x8E,0x80); } } if(set==5) { // while(keyup==0||keydown==0); { ri=l_tmpdisplay[4]*10+l_t

33、mpdisplay[5]; ri=ri+key_flag; if(ri>31)ri=1; if((key_flag<0)&&(ri<1))ri=31; ri=ri%10+(ri/10)*16; Write_Ds1302(0x8E,0x00); Write_Ds1302(0x86,ri); Write_Ds1302(0x8E,0x80); } } if(set==6) { //while(keyup==0||keydown==0); { yue=l_tmpdisplay[2]*10+l_tmpdisplay[3]; yue=yue+

34、key_flag; if(yue>12)yue=1; if((key_flag<0)&&(yue<1))yue=12; yue=yue%10+(yue/10)*16; Write_Ds1302(0x8E,0x00); Write_Ds1302(0x88,yue); Write_Ds1302(0x8E,0x80); } } if(set==7) { //while(keyup==0||keydown==0); { zhou=l_tmpdisplay[12]; zhou=zhou+key_flag; if(zhou>7)zhou=1;

35、 if((key_flag<0)&&(zhou<1))zhou=7; zhou=zhou%10+(zhou/10)*16; Write_Ds1302(0x8E,0x00); Write_Ds1302(0x8A,zhou); Write_Ds1302(0x8E,0x80); } } if(set==8) { // while(keyup==0||keydown==0); { nian=l_tmpdisplay[0]*10+l_tmpdisplay[1]+key_flag;; if(nian>79)nian=0; if((key_flag<0)

36、nian<0))nian=79; nian=nian%10+(nian/10)*16; Write_Ds1302(0x8E,0x00); Write_Ds1302(0x8C,nian); Write_Ds1302(0x8E,0x80); } } key_flag=0; } void caidan() { uchar counter; uchar function; /*光标显示位置控制*/ if(menue==0) { LCD_write_hanzi(0,4,10);

37、Delay1ms(120);LCD_write_hanzi(0,0,3);Delay1ms(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,10); } else if(menue==1) { LCD_write_hanzi(0,0,10);Delay1ms(120);LCD_write_hanzi(0,2,3);Delay1ms(120);LCD_write_hanzi(0,4,10);LCD_write_hanzi(4,0,10); } else if(menue==2) { LCD_writ

38、e_hanzi(0,2,10);Delay1ms(120);LCD_write_hanzi(0,4,3);Delay1ms(120);LCD_write_hanzi(0,0,10);LCD_write_hanzi(4,0,10); } else if(menue==3) {LCD_write_hanzi(0,4,10);Delay1ms(120);LCD_write_hanzi(0,0,10);Delay1ms(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,28);} else { LCD_write_h

39、anzi(0,4,10);Delay1ms(120);LCD_write_hanzi(0,0,3);Delay1ms(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,10); } for(function=0;function<2;function++) { LCD_write_hanzi(function+1,0,function+4); LCD_write_hanzi(function+1,2,function+6); LCD_write_hanzi(function+1,4,functio

40、n+8); } if(set<2) { TR0 = 1; if(TF0==1) { counter++; TF0=0; } if(counter==100) { counter=0;LCD_BLA=0;TR0 = 0; if(menue==0)ok=1; } } } /*闹钟程序 */ void clock() { Read_RTC();//读取时钟; data_change();//时钟数据处理 if(set==

41、2) { // while(keyup==0||keydown==0); { minute+=key_flag; if((key_flag<0)&(minute==0))minute=59; if(minute>59)minute=0; EA=0;//使用iap功能时关闭中断; hour=R_EROM(1,2);//读闹钟小时数据; week2=R_EROM(1,3);//读闹钟分数据; C_EROM(1); W_EROM(1,1,minute); //写闹钟分数据; W_ERO

42、M(1,2,hour); //写闹钟小时数据; W_EROM(1,3,week2);//写闹钟星期数据; EA=1;//不使用iap功能时打开中断; } key_flag=0; } if(set==3) { // while(keyup==0||keydown==0); { hour=hour+key_flag; if(hour>23)hour=0; if((key_flag<0)&&(hour<0))hour=23; } EA=0;//使用iap功能时关闭中断 minute=R_

43、EROM(1,1); week2=R_EROM(1,3); C_EROM(1); W_EROM(1,1,minute); W_EROM(1,2,hour); W_EROM(1,3,week2); EA=1;//不使用iap功能时打开中断; key_flag=0; } if(set==4) { // while(keyup==0||keydown==0); { week2=week2+key_flag; if(week2>7)week2=1; if((key_flag<0)&&(wee

44、k2<1))week2=7; } EA=0;//使用iap功能时关闭中断 minute=R_EROM(1,1); hour=R_EROM(1,2); C_EROM(1); W_EROM(1,1,minute); W_EROM(1,2,hour); W_EROM(1,3,week2); EA=1;//不使用iap功能时打开中断; key_flag=0; } EA=0;//使用iap功能时关闭中断 minute=R_EROM(1,1); hour=R_EROM(1,2

45、); week2=R_EROM(1,3); EA=1;//不使用iap功能时打开中断; clocktable[0]=minute/10;//分十位; clocktable[1]=minute%10;//分个位 clocktable[2]=hour/10; //时十位 clocktable[3]=hour%10; //时个位 clocktable[4]=week2; //星期; LCD_write_hanzi(2,0,28); LCD_write_shu(1,2,clocktable[2]); LCD_wri

46、te_shu(2,2,clocktable[3]);//时 LCD_write_shu(3,2,64); LCD_write_shu(4,2,clocktable[0]); LCD_write_shu(5,2,clocktable[1]);//分; if(clocktable[4]==1) { LCD_write_6x8shu(10,3,23); LCD_write_6x8shu(11,3,25); LCD_write_6x8shu(12,3,24); } if(clocktable[4]==2) { LCD_w

47、rite_6x8shu(10,3,30); LCD_write_6x8shu(11,3,31); LCD_write_6x8shu(12,3,15); } if(clocktable[4]==3) { LCD_write_6x8shu(10,3,33); LCD_write_6x8shu(11,3,15); LCD_write_6x8shu(12,3,14); } if(clocktable[4]==4) { LCD_write_6x8shu(10,3,30); LCD_write_6x8shu(11,3

48、18); LCD_write_6x8shu(12,3,31); } if(clocktable[4]==5) { LCD_write_6x8shu(10,3,16); LCD_write_6x8shu(11,3,28); LCD_write_6x8shu(12,3,19); } if(clocktable[4]==6) { LCD_write_6x8shu(10,3,29); LCD_write_6x8shu(11,3,11); LCD_write_6x8shu(12,3,30); } if(

49、week2==7) { LCD_write_6x8shu(10,3,29); LCD_write_6x8shu(11,3,31); LCD_write_6x8shu(12,3,24); } switch(set) { case 0: LCD_write_6x8shu(10,4,96);LCD_write_6x8shu(11,4,96);LCD_write_6x8shu(12,4,96);LCD_write_6x8shu(13,4,96);break; case 1: LCD_write_6x8shu(10,4,96);LCD_write_6

50、x8shu(11,4,96);LCD_write_6x8shu(12,4,96);LCD_write_6x8shu(13,4,96);break; case 2: Delay100ms();LCD_write_shu(4,2,76);LCD_write_shu(5,2,76);Delay100ms(); LCD_write_6x8shu(10,4,96);LCD_write_6x8shu(11,4,23);LCD_write_6x8shu(12,4,45);LCD_write_6x8shu(13,4,50);break; case 3: Delay100ms();LCD_

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服