ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:424.98KB ,
资源ID:10644846      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实时日历时钟温度方案与实现.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实时日历时钟温度方案与实现.docx

1、实时日历时钟温度方案与实现单片机原理及应用课程设计1课程设计题目与要求1.1课程设计内容利用STC89C52RC单片机设计实现实时日历/时间/温度在LCD1602上的显示1.2主要设备与器材PC机一台,HOT51增强型单片机开发板,STC89C52RC单片机一块,LCD1602液晶屏,DS1302时钟芯片,DS18B20温度传感器等,其它器材任选。1.3设计要求1)在LCD1602上显示年月日,星期,时分秒,温度,通过3个独立按键修改时间。,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(

2、.OBJ。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。使用独立的Keil仿真器时,注意事项:* 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。* 仿真器上的复位按钮只复位仿真芯片,不复位目标系统。* 仿真芯片的31脚/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31

3、脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM 打开STC-ISP,如下图界面,在 Type栏目下选中单片机,如STC90C516RC。如图2.2所示:图2.2 ISP操作界面(2查看设备管理器中的,波特率一般保持默认,如果遇到下载问题,可以适当下调一些。(3 先确认硬件连接正确,点击“打开文件”并在对话框内找到您要下载的文件。(4选择所要下载的文件,这样可以使您在每次编译时HEX代码能自动加载到STC-ISP,点击“Download/下载”。(5手动按下电源开关便即可把HEX写入到单片机内,如图1.2是写入程序截图。(6程序写入完毕,目标板开始运行程序结果。3方案分析与确

4、定3.1 方案思路分析由题目要求,根据设置的年月日的显示全年的年月公历、星期等信息。由于需要显示去年的日期以及星期等信息,普通的LED数码管显然已经不能胜任,为此,我们可以选择LCD1602液晶显示器完成课设要求。目前所具备的设备只有一块STC89C52RC的单片机,PC机。课设要求显示日期、温度等信息,因此,我们需要一块DS1302时钟芯片和一个DS18B20温度传感器,该时钟芯片可以产生年份,月份,日期,星期,时,分,秒的数据,温度传感器可以实时采集当前环境的温度,完全可以完成课程设计的各项要求。基于以上分析,我们可以利用DS1302产生的各种时钟数据,DS18B20采集当前环境温度,由单

5、片机完成对数据的读取,然后通过单片机将数据写至LCD1602,以显示数据,达到可视化的效果。如图3.1所示:图3.1 整体设计框架图3.2 方案流程图根据以上分析,以及使用各种芯片的操作流程,我们可以大致确定课程设计的软件设计方案方案,其大致流程如图3.2所示:图3.2 设计流程图4单元芯片电路的设置及总体设计4.1 DS1302芯片引脚功能DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或

6、RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动

7、所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向,后面有详细说明。SCLK为时钟输入端。如图4.1所示:图4.1 DS1302引脚定义图引脚描述:X1 X2 32.768KHz 晶振管脚GND 接地RST 复位脚

8、I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚ACC=dat。 RST=1。 for(a=8。a0。a- IO=ACC0。 SCLK=0。 SCLK=1。 ACC=ACC1。 /* 功能:读一个字节*/uchar read_byte( RST=1。 for(a=8。a0。a- ACC7=IO。 SCLK=1。 SCLK=0。 ACC=ACC1。 return (ACC。/*功能:向1302芯片写函数,指定写入地址,数据*/void write_1302(uchar add,uchar dat RST=0。 SCLK=0。 RST=1。 write_byte(add

9、。 write_byte(dat。 SCLK=1。 RST=0。/*功能:从1302读数据函数,指定读取数据来源地址*/uchar read_1302(uchar add/ uchar temp。 RST=0。 SCLK=0。 RST=1。 write_byte(add。 temp=read_byte(。 SCLK=1。 RST=0。 return(temp。/*功能:1302芯片初始化子函数*/void ds1302_init( /1302芯片初始化子函数(2018-01-07,12:00:00,week4RST=0。SCLK=0。write_1302(0x8e,0x00。 /允许写,禁止写

10、保护 write_1302(0x8e,0x80。 /打开写保护4.3 DS18B20芯片引脚功能DS18B20是DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。它具有3引脚TO92小体积封装形式,温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并

11、联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。引脚定义图如图4.2所示:图4.2 DS18B20引脚定义图在TO-92和SO-8的封装中引脚有所不同,具体差别请查阅PDF手册,在TO-92封装中引脚分配如下: 1GND):地2DQ):单线运用的数据输入输出引脚3VDD):可选的电源引脚DS18B20工作过程一般遵循以下协议:初始化ROM操作命令存储器操作命令处理数据这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9 unsigned char

12、x=0。 DQ=0。 /发送复位脉冲 DS18_delay(29。 /延时480ms DQ=1。 /拉高数据线 DS18_delay(3。 /等待 等待存在脉冲 x=DQ。 /获得存在信号(用于判断是否有器件 DS18_delay(25。 / 等待时间隙结束 return(x。 /返回存在信号,0 = 器件存在, 1 = 无器件/*函数功能:向DS18B20读一字节数据*/ReadOneChar(void unsigned char i=0。 unsigned char dat=0。 for (i=8。i0。i- DQ=1。 DS18_delay(1。 DQ=0。 dat=1。/等效dat=d

13、at1(dat=dat右移一位后的值 DQ=1。 if(DQ dat|=0x80。 DS18_delay(4。 return(dat。/*函数功能:向DS18B20写一字节数据*/WriteOneChar(unsigned char dat unsigned char i=0。 for(i=8。i0。i- DQ=0。 DQ=dat&0x01。 DS18_delay(5。 DQ=1。 dat=1。/复合赋值运算,等效dat=dat1(dat=dat右移一位后的值 DS18_delay(4。/*函数功能:向DS18B20读温度值*/unsigned int ReadTemperature(void

14、 Init_DS18B20(。 WriteOneChar(0xcc。 WriteOneChar(0x44。 DS18_delay(125。 Init_DS18B20(。 WriteOneChar(0xcc。 WriteOneChar(0xbe。 tempL=ReadOneChar(。 tempH=ReadOneChar(。4.5 LCD1602引脚功能1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所

15、以他不能显示图形n1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块显示字符和数字)。引脚图如图4.3所示:图4.3 LCD1602引脚图1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高端为使能(enable端。第714脚:D0D7为8位双向数据端。第1516脚:空116脚背光负极。4.6 LCD1602的使用write_1602com(uchar com/*液晶写入指令函数* rs=0。 rw=0。 P0=com。 delay(1。 en=1。 d

16、elay(1。 en=0。 write_1602dat(uchar dat/*液晶写入数据函数* rs=1。 rw=0。 P0=dat。 delay(1。 en=1。 delay(1。 en=0。 lcd_init(/*液晶初始化函数* write_1602com(0x38。 write_1602com(0x0c。 write_1602com(0x06。 write_1602com(0x01。 write_1602com(yh+1。/ for(a=0。a write_1602dat(tab1a。 write_1602com(er+2。 for(a=0。a write_1602dat(tab2a

17、。 5整体电路设计和程序源代码由上面的分析可以得到实验的电路图如图5.1所示:图5.1 系统原理图设计源代码如下:/*程序名称: LCD1602.C*/#include#includeDS18B20.H#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp。/flag用于读取头文件中的温度值,和显示温度值#define yh 0x80 /LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1/延时函数,有参函数 uint x,y

18、。 for(x=xms。x0。x- for(y=110。y0。y-。write_1602com(uchar com/*液晶写入指令函数* rs=0。/数据/指令选择置为指令 rw=0。 /读写选择置为写 P0=com。/送入数据 delay(1。 en=1。/拉高使能端,为制造有效的下降沿做准备 delay(1。 en=0。/en由高变低,产生下降沿,液晶执行命令write_1602dat(uchar dat/*液晶写入数据函数* rs=1。/数据/指令选择置为数据 rw=0。 /读写选择置为写 P0=dat。/送入数据 delay(1。 en=1。 /en置高电平,为制造下降沿做准备 del

19、ay(1。 en=0。 /en由高变低,产生下降沿,液晶执行命令lcd_init(/*液晶初始化函数* write_1602com(0x38。/设置液晶工作模式 write_1602com(0x0c。/开显示不显示光标 write_1602com(0x06。/整屏不移动,光标自动右移 write_1602com(0x01。/清显示 write_1602com(yh+1。/日历显示 for(a=0。a write_1602dat(tab1a。/向液晶屏写日历显示的固定符号部分 write_1602com(er+2。/时间显示固定符号写入位置 for(a=0。a write_1602dat(tab

20、2a。/写显示时间固定符号,两个冒号 /*DS1302有关子函数*/void write_byte(uchar dat/写一个字节 ACC=dat。 RST=1。 for(a=8。a0。a- IO=ACC0。 SCLK=0。 SCLK=1。 ACC=ACC1。 uchar read_byte(/读一个字节 RST=1。 for(a=8。a0。a- ACC7=IO。 SCLK=1。 SCLK=0。 ACC=ACC1。 return (ACC。void write_1302(uchar add,uchar dat/向1302芯片写函数,指定写入地址 RST=0。 SCLK=0。 RST=1。 write_byte(add。 write_byte(dat。 SCLK=1。 RST=0。uchar read_1302(uchar add/从1302读数据函数,指定读取数据来源地址 uchar temp。 RST=0。 SCLK=0。 RST=1。 write_byte(add。 temp=read_byte(。 SCLK=1。 RST=0。 return(temp。uchar BCD_Decimal(uchar bcd/BCD码转十进制函数

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1