《2022年基于DS1302多功能数字钟电子电工课程设计.docx》由会员分享,可在线阅读,更多相关《2022年基于DS1302多功能数字钟电子电工课程设计.docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源物理与电子科学学院电子电工试验基于 DS1302 多功能数字时钟 -万年历试验报告试验名称: 基于 DS1302 多功能数字钟试验日期: 2021 年 01 月 05 日专 业: 电子信息工程姓 名: 刘 斌班 级: 物电 1105 班学 号:2021112030560欢迎下载精品学习资源一、 设计理念:电子万年历是一个应用特别广泛地有用日常计时工具,带有显示温度,显示世纪, 年,月,日,星期,时,分,秒和按键可调时间及其按键设置闹钟地功能,同时具有月末自动更新,闰年补偿功能,整点报时等多种功能.环境温度检测系统在日常生活和工业应用特别广泛,能实时采集四周地温度信息进行显示.此系统
2、是基于 STC89C52 单片机设计地,包含液晶显示模块, DS1302 实时时钟模块,DS18B20 温度采集模块,键盘扫描模块,蜂鸣器报警模块 .STC89C52 作为掌握核心,具有功耗低,功能强等特点,电压可选 3 到 5V 电源供电 .显示模块采纳 1602 液晶动态显示,相对数码管而言经济有用,占用空间小,对于显示数字、字母最为合适,而且与单片机连线简洁,占用 IO 口相对较少 .实时时钟芯片 DS1302 是一款经济实惠功能强大地较新型产品, 该器件供应RTC/ 日历,可外加器件实现定时闹钟等功能,假如检测到主电源故障,该器件可自动切换到备用电源供电,可以保证在断电情形下精准走时,
3、计时.温度检测显示模块采纳数字式温度传感器DS18B20 ,该芯片具有精度高,测量范畴广等优点,易与单片机连接,模块电路组成简洁并同时具有温度报警功能.关键词: STC89C52 , DS1302, DS18B20 , 1602 液晶显示,电子万年历,采集设备四周环境温度、整点报时,闹钟时分通过按键设置,时、分、秒、年、月、日、星期通过按键进行调剂校准 二、 设计思路 :核心掌握体: STC89C52 单片机实时时钟芯片: DS1302数字式温度传感器: DS18B20总共设有四个按键,为节省资源考虑,每个按键都有多种功能.四个按键分别标号为key1,key2,key3,key4. 第一次按下
4、 key2,key3,key4 都没有反应,第一按下key1 键可挑选指针位置, key2 键为加键, key3 为减键, key4 键为闹钟设置清零键.操作简洁,按键敏捷 .整点报时功能,可以按下key4 键终止报警 .系统设计框图:1602 显示模块主时钟模块控键盘扫描模块模温度检测显示块闹钟模块系统硬件需求介绍:STC89C52 单片机一片, DS1302 实时时钟芯片一个, DS18B20 数字式温度传感器一欢迎下载精品学习资源个, +5V 无源蜂鸣器一个,12MHZ 、32KHZ晶振各一个,多个按键和开关,常用电容电阻,连接线,三极管,二极管如干,滑动变阻器一个,+3V 纽扣电池一个
5、 .三、 实施方案:1、单片机核心掌握模块:核心掌握器件选用 STC89C52 单片机 .STC89C52 单片机为 40 管脚双列直插芯片,它是一种高性能,低功耗地 8 位 CMOS 微处理器芯片,市场应用最多 .而且价格廉价,掌握便利,便于应用有 4 个 I/O 口分别为 P1,P2,P3,P4.其中每一个管脚都能做独立地输入输出管脚,它地第 9 脚位复位管脚,接上电容和上拉电阻再带个开关构成复位电路 .18,19 管脚接外部晶振和两个微调电容构成外部晶振电路 .单片机,复位电路,晶振, 5V 电源构成单片机最小系统 .其中与 AT89C52 单片机管脚连接如下图:2、实时时钟电路模块:
6、DS1302 引脚排列 :如下图引脚说明:11 脚, Vcc2 :后备电源,此设计中接+3V 纽扣电池; 8 脚, VCC1 :主电源,接 +5V. 在主电源关闭地情形下,也能保持时钟地连续运行.DS1302 由 Vcc1 或 Vcc2 两者中地较大者供电 .当 Vcc2 大于 Vcc1 0.2V 时, Vcc2 给 DS1302 供电 .当 Vcc2 小于 Vcc1 时, DS1302 由 Vcc1 供电 .2) X1 、X2 即 2 脚 3 脚:振荡源,外接32.768kHz 晶振 .3) 4 脚 END ,接地端 .4) 5 脚 RST :复位 / 片选线,通过把RST 输入驱动置高电平
7、来启动全部地数据传送.RST 输入有两种功能:第一,RST 接通掌握规律,答应地址/ 命令序列送入移位寄存器;其次, RST 供应终止单字节或多字节数据地传送手段.当 RST 为高电平常,全部地数欢迎下载精品学习资源据传送被初始化,答应对DS1302 进行操作 .假如在传送过程中RST 置为低电平,就会终止此次数据传送, I/O 引脚变为高阻态 .上电运行时,在Vcc2.0V之前, RST 必需保持低电平.只有在 SCLK 为低电平常,才能将RST 置为高电平 .5) I/O 为串行数据输入输出端双向) .6) SCLK 为时钟输入端 .* 特殊留意: 5, 6,7 脚在硬件电路实现中,必需接
8、上拉电阻,接+5V.3、DS18B20DS18B20工作模块地温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强一个工作周期可分为两个部分,即温度检测和数据处理.DS18B20地主要特点: 全数字温度转换及输出 .先进地单总线数据通信 .最高 12位辨论率,精度可达土 0.5摄氏度.12位辨论率时地最大工作周期为 750毫秒.可挑选寄生工作方式 .检测温度范畴为 55C +125C 67F +257F内置 EEPRO,M 限温报警功能 .64位光刻 ROM,内置产品序列号,便利多机挂接 .多样封装形式,适应不同硬件系统 .:.其4、液晶显示模块:1602 字符型液晶显示模块是一种特地
9、用于显示字母、数字、符号等点阵式LCD ,本设欢迎下载精品学习资源计采纳 16 列 *2 行地字符型 LCD1602 带背光地液晶显示屏 .引脚接口说明:第1脚: VSS为地电源 .第2脚: VDD 接5V 正电源 .第3脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生 “鬼影 ”,使用时可以通过一个10K 地电位器调整对比度 .第4脚: RS为寄存器挑选,高电平常挑选数据寄存器、低电平常挑选指令寄存器.第5脚: R/W 为读写信号线,高电平常进行读操作,低电平常进行写操作.当RS和R/W 共同为低电平常可以写入指令或者显示地址,当RS为低电平
10、R/W 为高电平常可以读忙信号,当RS为高电平 R/W 为低电平常可以写入数据.第6脚: E端为使能端,当 E端由高电平跳变成低电平常,液晶模块执行命令.第7 14脚: D0 D7 为8位双向数据线 .第15脚:背光源正极 .第16脚:背光源负极 .5、蜂鸣器电路模块本试验设计中蜂鸣器用CS8050 三极管驱动,蜂鸣器用5V 地无源蜂鸣器,并接一个发光二极管作为指示灯,同时在负极串接一个限流电阻,数据端口接P37.欢迎下载精品学习资源四、 Proteus 仿真原理总框图:欢迎下载精品学习资源五、 硬件电路实现:六、 源程序:Shuzizhong.c #include #includeds18b
11、20.h#define uchar unsigned char #define uint unsigned intuchar shi,fen,miao,ringshi,ringfen,nian,yue,ri,week,temp,count,m;sbit rs=P22 ;sbit rw=P23 ;sbit en=P24;sbit key1=P34 ; / 设置键sbit key2=P35 ; / 加键sbit key3=P36 ;sbit key4=P37 ;sbit IO=P11 ; / DS1302 数据线sbit SCLK=P12 ;/DS1302 时钟线sbit RST=P10 ; /D
12、S1302 复位线sbit beep=P14;sbit ACC0=ACC0 ;sbit ACC7=ACC7 ;uchar codetable=20 - - ;uchar codetable1= : : ;uchar codetone=212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0 ;uchar codelon=9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,2
13、4,0 ;void delayuint z欢迎下载精品学习资源uint x,y ;forx=z ;x0 ;x- fory=120 ;y0 ;y- ;void yinyueuint i,j,k=0,l ;forl=0 ;l26 ; l+fori=0 ;icodelonk*20 ; i+ ifkey4=0beep=0;break; beep=beep;forj=0 ;jcodetonek/3 ;j+ ;delay10 ;k+;void write_LCD_comuchar comrs=0 ;rw=0 ;P0=com;delay5 ;en=1;delay5 ;en=0;void write_LCD_
14、dauchar data1rs=1 ;rw=0 ;P0=data1;delay5 ;en=1;delay5 ;en=0;void Init_LCDuchar num ;write_LCD_com0x38 ; delay1 ;write_LCD_com0x01 ; delay1 ;write_LCD_com0x06 ; delay1 ;write_LCD_com0x0c ; delay1 ;write_LCD_com0x80 ;fornum=0 ;num10 ;num+write_LCD_dacodetablenum;delay1 ;欢迎下载精品学习资源write_LCD_com0x80+0x4
15、0;fornum=0 ;num0 ;i-IO=ACC0 ;SCLK=0 ;SCLK=1 ;ACC=ACC1 ;uchar DS1302_read_byteuchar j ;RST=1 ;forj=8 ; j0 ;j-ACC7=IO ;SCLK=1 ;SCLK=0 ;ACC=ACC1 ;returnACC ;void DS1302_write_dateuchar addr,uchar dat/ 写数据RST=0 ;SCLK=0 ;RST=1 ;DS1302_write_byteaddr ;DS1302_write_bytedat ;SCLK=1 ;欢迎下载精品学习资源RST=0 ;uchar D
16、S1302_read_dateuchar addruchar dat1,b ;RST=0 ;SCLK=0 ;RST=1 ;DS1302_write_byteaddr ;dat1=DS1302_read_byte ;SCLK=1 ;RST=0 ;b=dat1/16*10+dat1%16 ;returnb ;void DS1302_InitSCLK=0 ;RST=0 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x8e,0x80 ;void keyscanifkey1=0ifkey1=0while.key1 ;count+ ;ifcount=11 c
17、ount=1 ;switchcount case 1:TR0=0 ;write_LCD_com0x80+0x40+0x0f;write_LCD_daM ;m=miao/10*16+miao%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x80,0x80|m ;DS1302_write_date0x8e,0x80 ;break;case 2:write_LCD_com0x80+0x40+0x0f;write_LCD_daF ;break;case 3:write_LCD_com0x80+0x40+0x0f;write_LCD_daS ;bre
18、ak;欢迎下载精品学习资源case 4:write_LCD_com0x80+0x40+0x0f;write_LCD_daW ;break;case 5:write_LCD_com0x80+0x40+0x0f;write_LCD_daR ;break;case 6:write_LCD_com0x80+0x40+0x0f;write_LCD_daY ;break;case 7:write_LCD_com0x80+0x40+0x0f;write_LCD_daN ;break;case 8:write_LCD_com0x80+0x40+0x0e;write_LCD_daR ; delay3 ;writ
19、e_LCD_com0x80+0x40+0x0f;write_LCD_daF ; delay3 ;write_LCD_com0x80+0x40+0x04; break;case 9:write_LCD_com0x80+0x40+0x0e;write_LCD_daR ; delay3 ;write_LCD_com0x80+0x40+0x0f;write_LCD_daS ; delay3 ;write_LCD_com0x80+0x40+0x01;break;case 10:write_LCD_com0x80+0x40+0x0e;write_LCD_da0 ; delay3 ;write_LCD_co
20、m0x80+0x40+0x0f;write_LCD_da0 ; delay3 ;delay3 ;write_LCD_com0x0c;TR0=1 ;欢迎下载精品学习资源ifkey2=0break ;ifcount.=0m=miao/10*16+miao%10;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x80,0x00|m ;DS1302_write_date0x8e,0x80 ;欢迎下载精品学习资源delay10 ;ifkey2=0while.key2 ;switch countcase 1:miao+ ;欢迎下载精品学习资源ifmiao=60m
21、iao=0 ;欢迎下载精品学习资源case 2:fen+;iffen=60case 3:shi+;ifshi=24write_LCDsfm0x06,miao;m=miao/10*16+miao%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x80,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x40+0x07;break;fen=0; write_LCDsfm0x03,fen;m=fen/10*16+fen%10 ;DS1302_write_date0x8e,0x00 ;DS1302_w
22、rite_date0x82,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x40+0x04;break;shi=0 ;write_LCDsfm0x00,shi;m=shi/10*16+shi%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x84,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x40+0x01;break;欢迎下载精品学习资源case 4:week+;ifweek=8week=0 ;write_LCDweekweek ;
23、m=week/10*16+week%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x8a,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x0d;break;case 5:ri+;ifri=32ri=0 ;write_LCDnyr0x08,ri;m=ri/10*16+ri%10 ;欢迎下载精品学习资源DS1302_write_date0x8e,0x00 ;DS1302_write_date0x86,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x
24、80+0x09;break;case 6:yue+;ifyue=13欢迎下载精品学习资源case 7:nian+;ifnian=51yue=1; write_LCDnyr0x05,yue;m=yue/10*16+yue%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x88,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x06;break;nian=0; write_LCDnyr0x02,nian;m=nian/10*16+nian%10 ;DS1302_write_date0x8e,0x
25、00 ;DS1302_write_date0x8c,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x03;break;欢迎下载精品学习资源case 8:ringfen+ ;ifringfen=60ringfen=0 ;write_LCDsfm0x03,ringfen;write_LCD_com0x80+0x40+0x04;break;case 9:ringshi+ ;ifringshi=24ringshi=0 ;write_LCDsfm0x00,ringshi;write_LCD_com0x80+0x40+0x01;break;ifkey3
26、=0delay10 ;ifkey3=0while.key3;switch countcase 1:miao- ;ifmiao=-1欢迎下载精品学习资源case 2:fen-;iffen=-1case 3:shi-;ifshi=-1miao=59 ;write_LCDsfm0x06,miao;m=miao/10*16+miao%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x80,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x40+0x07;break;fen=59 ;write_LCD
27、sfm0x03,fen;m=fen/10*16+fen%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x82,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x40+0x04;break;shi=23 ;write_LCDsfm0x00,shi;m=shi/10*16+shi%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x84,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x40+
28、0x01;break;欢迎下载精品学习资源case 4:week-;ifweek=0week=7 ;write_LCDweekweek ;m=week/10*16+week%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x8a,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x0d;break;case 5:ri-;ifri=0ri=31 ;write_LCDnyr0x08,ri;m=ri/10*16+ri%10 ;DS1302_write_date0x8e,0x00 ;欢迎下载精品学习资
29、源case 6:yue-;ifyue=0case 7:nian-;DS1302_write_date0x86,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x09;break;yue=12; write_LCDnyr0x05,yue;m=yue/10*16+yue%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x88,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x06;break;欢迎下载精品学习资源ifnian=-1nian=50
30、;write_LCDnyr0x02,nian;m=nian/10*16+nian%10 ;DS1302_write_date0x8e,0x00 ;DS1302_write_date0x8c,m ;DS1302_write_date0x8e,0x80 ;write_LCD_com0x80+0x03;break;case 8:ringfen-;ifringfen=-1ringfen=59 ;write_LCDsfm0x03,ringfen;write_LCD_com0x80+0x40+0x04;break;case 9:ringshi- ;ifringshi=-1ringshi=23 ;write
31、_LCDsfm0x00,ringshi;write_LCD_com0x80+0x40+0x01;break;void set_dingshiqiTMOD=0x01;TH0=64536/256 ;TL0=64536%256 ;EA=1 ;ET0=1 ;TR0=1 ;欢迎下载精品学习资源void gettime beep=0 ;temp=Read_Temperature;miao=DS1302_read_date0x81 ;fen=DS1302_read_date0x83 ;shi=DS1302_read_date0x85 ;week=DS1302_read_date0x8b ;ri=DS1302
32、_read_date0x87 ;yue=DS1302_read_date0x89 ;nian=DS1302_read_date0x8d ;write_LCDsfm0x00,shi;write_LCDsfm0x03,fen;write_LCDsfm0x06,miao;ifmiao=0&fen=0&shi8&shi21yinyue ;iffen=ringfen&shi=ringshiyinyue ;ifkey4=0ringshi=0;ringfen=0 ;write_LCDweekweek ;write_LCDnyr0x08,ri;write_LCDnyr0x05,yue;write_LCDnyr
33、0x02,nian;write_LCD_Temperature0x09,temp ;void main Init_LCD;DS1302_Init ;set_dingshiqi ;while1 keyscan ;void timer0 interrupt 1 TH0=64536/256 ;TL0=64536%256 ;gettime ;keyscan ;Ds18b20.hsbit DQ=P17 ;欢迎下载精品学习资源/unsigned char wendu ;/unsigned char tempbuf3 ;void delay0unsigned char z whilez- ; void in
34、it_ds18b20unsigned char x=0 ;DQ=1 ;/DQ 复位delay08 ;DQ=0 ;/ 单片机将 DQ 拉低delay080 ; / 延时 480us960us DQ=1 ;/ 拉高总线delay014 ; / 等待 15us60u.x=DQ ;delay080 ; / 低电平至少要连续60240usvoid write_onecharunsigned char datunsigned char i=0 ;fori=0 ;i=1 ;delay05 ;unsigned char read_onecharunsigned char i=0 ;unsigned char
35、dat=0;fori=0 ;i=1 ;DQ=1 ;ifDQ dat|=0x80 ;delay020 ;returndat ;欢迎下载精品学习资源unsigned char Read_Temperatureunsigned char a,b; unsigned char temp_value;init_ds18b20 ;write_onechar0xCC ; /跳过读序列号地操作write_onechar0x44 ; / 启动温度转换init_ds18b20 ;write_onechar0xCC ; /跳过读序列号地操作write_onechar0xBE ; /读取温度寄存器等(共可读9 个寄存器) 前两个就是温度a=read_onechar;b=read_onechar;b=b4;temp_value=b|a;returntemp_value ; 欢迎下载