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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(基于stc51单片机的LCD1602显示时间的电子万年历显示当前温度分析Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于stc51单片机的LCD1602显示时间的电子万年历显示当前温度分析Word文件下载.docx

1、操作说明如下:(1) 打开STC-ISP,如下图界面,在MCU Type栏目下选中单片机,如STC89C52RC。图1.2 ISP操作界面(2) 根据您的9针数据线连接情况选中COM端口,波特率一般保持默认,如果遇到下载问题,可以适当下调一些。(3) 先确认硬件连接正确,点击“打开文件”并在对话框内找到您要下载的HEX文件。图1.3 选择HEX文件(4)选择所要下载的文件,这样可以使您在每次编译KEIL时HEX代码能自动加载到STC-ISP,点击“Download/下载”。(5) 手动按下电源开关便即可把可执行文件HEX写入到单片机内,如图是正在写入程序截图。(6)程序写入完毕,目标板开始运行

2、程序结果。2 方案分析与确定2.1 方案思路分析 由题目要求,根据设置的年份日的显示全年的年月公历、星期等信息。由于需要显示去年的日期以及星期等信息,普通的LED数码管显然已经不能胜任,为此,我们可以选择LCD1602液晶显示器完成课设要求。目前所具备的设备只有一块以STC89C52为内核的单片机,PC机。 课设要求显示日期等信息,我们可以充分利用单片机上面集成的DS1302时钟芯片。该芯片可以产生年份,月份,日期,星期,时,分,秒的数据,因此,完全可以完成实验的各项要求。基于以上分析,我们可以利用DS1302产生的各种时钟数据,由CPU完成对数据的读取,然后通过CPU将数据写至LCD1602

3、,以显示数据,达到可视化的效果。对于课程设计的拓展部分,我们可以利用单片机开发板上面集成的DS18B20温度传感器来测试周围环境的温度,同样通过LCD1602来显示。此外可以通过测试按键是否闭合来改变各种时间数据,已达到校准的目的。图2.1 整体设计框架图2.2 方案流程图根据以上分析,以及使用各种芯片的操作流程,我们可以大致确定课程设计的软件设计方案方案,其大致流程如下:图2.2 设计流程图3 单元芯片电路的设置及总体设计3.1 DS1302芯片引脚功能 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰

4、年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。 DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302

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

6、下图为DS1302的引脚功能图:图3.1 DS1302引脚图管脚描述:X1 X2 32.768KHz 晶振管脚GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚 此外,拓展中用到了DS18B20温度传感器,其使用与DS1302比较类似,因此这里不再赘述。3.2 DS1302的使用方法使用DS1302时,要对其引脚和寄存器进行特殊设置,以实现所需功能。引脚设置后面会提及,这里不做说明,主要讲一下程序的编写。DS1302的的工作过程中包过读写一个字节数据等过程,下面做相应的解释。/* 功 能:往DS1302写入数据*/void W1302(ucha

7、r ucAddr, uchar ucDa) T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(ucAddr); /* 地址,命令 */ RTInputByte(ucDa); /* 写1Byte数据*/ T_CLK = 1;/* 读取DS1302某地址的数据uchar R1302(uchar ucAddr) uchar ucData; ucData = RTOutputByte(); /* 读1Byte数据 */ return(ucData);/*设置初始时间*/void Set1302(uchar *pClock) uchar i; uchar ucAd

8、dr = 0x80; EA = 0; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/ for(i =7; i0; i-) W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */ pClock+; ucAddr +=2; W1302(0x8e,0x80); /* 控制命令,WP=1,写保护? EA = 1;/*读取DS1302当前时间*/void Get1302(uchar ucCurtime) uchar ucAddr = 0x81; for (i=0; i7; i+) ucCurtimei = R1302(ucAddr);/*格式为

9、: 秒 分 时 日 月 星期 年 */ ucAddr += 2;3.3 LCD1602引脚功能1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形 n1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 图3.2 LCD1602引脚图1602采用标准的16脚接口,其中:第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液

10、晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。3.4 LCD1602的使用LCD1602的使用与前面的DS1302的使用有类似的地方,包括引脚的设置和对应的编程,引脚的设置后面会提及到,这里只涉及对应

11、的编程。/*LCD1602 延时*/void Lcd_delay(uchar ms) uchar j; while(ms-) for(j=0;j250;j+) ; /*LCD1602 忙等待*/void Lcd_busy_wait() Lcd_rs = 0; Lcd_rw = 1; Lcd_en = 1; Lcd_data = 0xff; while (Lcd_data&0x80); Lcd_en = 0;/*LCD1602 命令字写入*/void Lcd_command_write(uchar command) Lcd_busy_wait(); Lcd_rw = 0; Lcd_data =

12、command;/*LCD1602 初始化*/void Init_lcd() Lcd_delay(20); Lcd_command_write(0x38); Lcd_delay(100); Lcd_comman/*LCD1602 延时*/d_write(0x38); Lcd_delay(50); Lcd_delay(10); Lcd_command_write(0x08); Lcd_command_write(0x01); Lcd_command_write(0x06); Lcd_command_write(0x0c); /*释放数据端口*/void Lcd_char_write(uchar

13、x_pos,y_pos,lcd_dat) /*LCD1602 字符写入*/ x_pos &= 0x0f; /* X位置范围 015 */ y_pos &= 0x01; /* Y位置范围 0 1 */ if(y_pos=1) x_pos += 0x40; x_pos += 0x80; Lcd_command_write(x_pos); Lcd_rs = 1; Lcd_data = lcd_dat;4 整体电路设计和程序由上面的分析可以得到实验的电路图如下:图4.1 仿真电路图设计源代码如下:/*程序名称: LCD1602显示时间 显示当前温度 */*头文件*/#include intrins.h

14、#define uint unsigned int#define uchar unsigned char#define nop() _nop_()sbit s1=P10;sbit s2=P11;sbit s3=P12;sbit s4=P13;sbit DQ =P13; /定义DS18B20通信端口sbit lcd_rs_port = P24; /*定义LCD控制端口*/sbit lcd_rw_port = P25;sbit lcd_en_port = P26;#define lcd_data_port P0sbit led_latch_port = P25; /*发光二极管寄存器LE引脚*/s

15、bit sled_latch_port = P36; /*数码管寄存器LE引脚*/sbit T_CLK = P36; /*实时时钟时钟线引脚 */sbit T_IO = P34; /*实时时钟数据线引脚 */sbit T_RST = P35; /*实时时钟复位线引脚 */sbit ACC0 = ACC0;sbit ACC7 = ACC7;uchar code mun_to_char = 0123456789ABCDEF; /*定义数字跟ASCII码的关系*/uchar data time_data_buff7=0x50,0x59,0x23,0x31,0x12,0x04,0x12;uchar d

16、ata lcd1602_line1= 2000/00/00 000 uchar data lcd1602_line2= 00:00:00 00.0uchar code Weeks3=SUN,MONTUEWEDTHUFRISAT;/* 函 数 名:RTInputByte()实时时钟写入一字节 说 明:往DS1302写入1Byte数据 (内部函数) 入口参数:d 写入的数据 返 回 值:无 */void RTInputByte(uchar d) ACC = d; for(i=8; T_IO = ACC0; /*相当于汇编中的 RRC */ ACC = ACC 1;RTOutputByte()实时时

17、钟读取一字节从DS1302读取1Byte数据 (内部函数)ACCuchar RTOutputByte(void) 1; ACC7 = T_IO; return(ACC);W1302()先写地址,后写命令/数据 (内部函数) 调 用:RTInputByte() , RTOutputByte()ucAddr: DS1302地址, ucData: 要写的数据无*/void W1302(uchar ucAddr, uchar ucDa) /* 函 数 名:R1302()先写地址,后读命令/数据 (内部函数) DS1302地址ucData :读取的数据*/uchar R1302(uchar ucAddr)Set1302()先写地址,后读命令/数据(寄存器多字节方式)pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年 7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B*/void Set1302(uchar *pClock) Get1302()R1302() ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B*

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

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