1、二、主要研究内容:本设计为软件,硬件相结合的一组设计。在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。基本的要了解一些主要器件的基本功能和作用。本设计以STC89C52单片机为控制核心,将时间数据通过LCD1602显示出来,同时通过相应的按键调整相应的值。通过温度传感器将采集到的温度实时的显示在显示屏上。本设计可分为以下模块进行设计:显示模块,时间计算模块,设置模块,温度采集模块。显示模块采用用液晶显示器LCD1602显示,通过P2.0、P2.1、P2.2和P0给1602送指令和数据来控制想要显示的位置和数据;时间计算模块使用时钟芯片DS1302来进行
2、时间和日期的计算,采用的是SPI总线,单片机通过模拟SPI接口来与它进行通信,他只有三条线与单片机连接,其他接晶振、电源和地线;设置模块为键盘模块,有两个按键分别接到单片机的外部中断,其他三个采用的是键盘扫描,并且在程序中进行了按键消抖,温度采集模块使用的是DS18B20,它直接将模拟的温度量转换为数字量,采用单总线与单片机相连,这样可以省出大量的I/O口,供给其他芯片使用,在电路中还加入了闹钟的功能,闹钟的程序采用定时器控制,这样在显示时间和日期的同时,闹钟同时起作用。三、设计的方法及步骤:1、整个系统由主控模块和显示模块两大模块组成,主控模块包括主控芯片、温度检测、实时时钟电路及键盘接口电
3、路,系统构成框图如下图(1)所示。图(1) 系统框图2、设计步骤(1)将LCD液晶的数据口接到P0口,P0口接上拉电阻,P2.0、P2.1、P2.2分别接到1602的RS、RW和E端口。(2)将DS1302的SCLK,I/O,复位键接到P1.0,P1.1,P1.2;(3)将温度芯片DS18B20接到P2.3。(4)按键接到P3口上,通过P3.7来控制蜂鸣器的发声,起到闹钟的目的。四、实验设计(相关原理框图):1、主程序流程图(2)图(2) 主程序流程图时间调整部分的设计流程图(3):图(3) 时间调整主程序:#include intrins.h#include ds1302.hLCD1602.
4、hds18b20.h#define uchar unsigned char#define uint unsigned int sbit gon=P34 ;sbit e=P33 ;sbit xiang=P37;sbit jia=P36 ;sbit jian=P35 ;sbit a1=P13;sbit a2=P14 ;sbit a3=P15 ;sbit a4=P16 ;sbit a5=P17 ;void gong_neng();void dingshi();void key();uchar times9;uchar date9;uchar huan;uchar tp=0,temp1=0,temp2
5、=0,temp3=0,temp4=0,temp5=0,neng=0,d_shi=0,d_fen=5,d_shi_g=0, d_fen_g=5,d_shi_s=0,d_fen_s=0,d_flag=0,kai=0,s_flag=0,mingzi=0,temp6=0,temp7=0; uint deng=0;void change() / 时间的转换 times0=time_13022/10+0;times1=time_13022%10+times2=:times3=time_13021/10+times4=time_13021%10+times5=times6=time_13020/10+tim
6、es7=time_13020%10+/ 日期的转换 date0=time_13026/10+date1=time_13026%10+date2=-date3=time_13024/10+date4=time_13024%10+ date5=date6=time_13023/10+date7=time_13023%10+ void xiangling(); void Disp_Temperature() display4=temp_data0&0x0f; display0=ditabdisplay4+0x30; /查表得小数位的值 display4=(temp_data0&0xf0)4)|(te
7、mp_data1&0x0f)4); display3=display4/100+0x30; display1=display4%100; display2=display1/10+0x30; display1=display1%10+0x30;if(display3=0x30) /高位为0,不显示 display3=0x20; if(display2=0x30) /次高位为0,不显示 display2=0x20; gotoxy(11,1) ; /在LCD第一行显示 LCD_write_data(display3); /百位数显示 gotoxy(12,1) ; LCD_write_data(di
8、splay2); /十位数显示 gotoxy(13,1) ; LCD_write_data(display1); gotoxy(14,1) ; LCD_write_data(0x2e); /xiao数显示 gotoxy(15,1) ; LCD_write_data(display0); gotoxy(14,2) ; LCD_write_data(0xdf); gotoxy(15,2) ; LCD_write_data(C); void main() EA=1; EX0=1; IT0=1; EX1=1; IT1=1; ET0=1; TMOD=0X01; TH0=(65535-5000)/256;
9、 TL0=(65535-5000)%256; TR0=1; LCD_init();/LCD初始化 init_1302(time_1302); gotoxy(0,1); LCD_display(s: gotoxy(0,2);r: times8=0/ date8= huan=1; P3=0xff; xiang=0; if(kai=0) gotoxy(11,1); LCD_write_data(0xef); while(1) while(huan=1) gong_neng(); key(); gotoxy(0,1); LCD_display(t: gotoxy(0,2);d: get_1302(ti
10、me_1302); change(); gotoxy(2,1); LCD_display(times); gotoxy(2,2); LCD_display(date); if(huan=2) LCD_init(); dingshi() ; if(!(kai) gotoxy(11,1); LCD_write_data(0xef); else gotoxy(11,1); LCD_write_data(0x20); while(huan=2) if(mingzi=1) gotoxy(0,1); LCD_display(yu tong gotoxy(0,2);he guang hao if(mingzi=3) gotoxy(0,1); LCD_display(z m,shaob gotoxy(0,2); LCD_display(sun yan xiu if(mingzi=5) gotoxy(0,1);xie xie gotoxy(0
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1