单片机应用技术(4)(数字时钟lcd+ds1302修订版)课件

上传人:F****n 文档编号:88147632 上传时间:2019-04-20 格式:PPT 页数:61 大小:1.99MB
返回 下载 相关 举报
单片机应用技术(4)(数字时钟lcd+ds1302修订版)课件_第1页
第1页 / 共61页
单片机应用技术(4)(数字时钟lcd+ds1302修订版)课件_第2页
第2页 / 共61页
单片机应用技术(4)(数字时钟lcd+ds1302修订版)课件_第3页
第3页 / 共61页
单片机应用技术(4)(数字时钟lcd+ds1302修订版)课件_第4页
第4页 / 共61页
单片机应用技术(4)(数字时钟lcd+ds1302修订版)课件_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《单片机应用技术(4)(数字时钟lcd+ds1302修订版)课件》由会员分享,可在线阅读,更多相关《单片机应用技术(4)(数字时钟lcd+ds1302修订版)课件(61页珍藏版)》请在金锄头文库上搜索。

1、单片机应用技术 传感器测试系统的数据显示与报警(1),数字时钟(LCD+DS1302),1.数字时钟(定时器中断+LCD显示) 2.数字时钟(DS1302+LCD显示),案例1:利用单片机的定时器功能实现数字时钟,并用LCD显示出来。,1.数字时钟(LCD+定时器中断),1.1 用LCD显示数字9,LM016L型(字符型),1.1.1 LCD液晶简介,LCD(Liquid Crystal Display)液晶显示器,显示方式可分为两种: 文字型LCD 绘图型LCD 常见文字型LCD有16字X2列、20字X2列、40字X2列,液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电

2、就有显示,这样即可以显示出图形。 液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。,HD44780 是集驱动器与控制器于一体,专用于字符显示的液晶显示控制驱动集成电路。,16*2 字符型液晶显示模块的内部结构,此时书中使用的LM016L使用了HD44780.,HD44780内部组成结构,1.1.2 如何控制LCD的显示数据,关键点: (1)LCD初始化 (2)如何写地址到LCD中去 (3)如何写数据到LCD中去,图1 1602型LCD的驱动程序流程图,调用LCD初始化函数。,调用写入显示地址

3、的函数,调用写入数据的函数,图2 1602型LCD初始化流程图,指令设置,(1)LCD初始化,LCD初始化函数,/* 函数功能:对LCD的显示模式进行初始化设置 */ void LcdInitiate(void) delay(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38); /显示模式设置:162显示,57点阵,8位数据接口 delay(5); /延时5ms WriteInstruction(0x38); delay(5); WriteInstruction(0x38); delay(5); WriteInstruction(0

4、x0c); /显示模式设置:显示开,有光标,光标闪烁(D,C,B) delay(5); WriteInstruction(0x06); /显示模式设置:光标右移,字符不移 (N,S) delay(5); WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除 delay(5); ,如何写命令字?,功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电 平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。,置显示地址: 第一行为:00H-0FH; 第二行为:40H-4FH。,(2)写指令到LCD中去,指令

5、设置,图3 1602型LCD写指令流程图,除了初始化的时候不用检测忙信号,其他时候对LCD进行操作均需要进行忙信号检测。,/函数功能:写指令到LCD中去 /入口参数: dictate,需要写入的命令字节 /返回参数:无 void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置“0“ _nop_(); _nop_(); /空

6、操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 ,(3)如何写数据到LCD中去,如何写数据?,状态、数据选择,读、写,写要显示的数据到LCD中去,图4 1602型LCD写数据流程图,/函数功能:写数据到LCD中去 /入口参数:y ,需要显示的数据

7、的ASCII /返回参数:无 void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置“0“ P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,

8、给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 ,1.2 如何在LCD上显示字符9,设定LCD使用模式为16X2显示,8位元5X7点阵 设定屏幕与光标状态 清除屏幕(CMD=1) 设定定显示位址 将A写入资料暂存器,(1)初始化设置 (2)设置显示位地址,基址,(3)LCD上显示9,LcdInitiate(); /调用LCD初始化函数 WriteAddress(0x07); /将显示地址指定为第0行第8列 WriteData(9); /将字符常量A写入液晶模块,1.3 定时器中断控制LCD显示,案例:控制LCD显示一个十六进制的数字,该数字以500ms的时间间隔自

9、增,从0F循环。 任务分析: (1)LCD如何显示一个数字; (2)如何实现500ms; (3)如何自增加 电路设计 (1)元器件选取 (2)元器件连接 程序设计(流程图) (1)主程序设计 (2)显示数字程序设计 (3)定时器中断子程序设计,1.4 经典案例: 数字时钟(LCD),案例:控制LCD显示数字时钟。 任务分析: (1)LCD如何显示成如下所示; (2)如何显示中文字符; (3)如何实现1s,如何每秒加1,每分钟加1,每小时加1,如何请零 电路设计 (1)元器件选取 (2)元器件连接 程序设计(流程图) (1)主程序设计 (2)显示日期的设计 (3)显示时间”秒、分、小时”的设计

10、(4)定时器中断子程序设计,实验内容,1.编程控制LCD,实现秒表; 2.编程控制LCD,实现数字时钟; 3.编程控制LCD,显示自定义的字符到LCD上; 4.编程控制LCD,实现万年历; 5.编程控制LCD,实现可调数字时钟。,2.数字时钟(DS1302+LCD),案例2:读取时钟芯片DS1302的秒钟信息显示在实验板的数码管上。(DS1302模块、LCD显示模块),2.1 DS1302简单介绍,时钟计数功能,年计数可达2100。 DS1302包括时钟/日历寄存器和31字节的数据暂存寄存器。,DS1302寄存器与控制命令,2.2 如何将年月日写入DS1302中,(1)如何将数据写入DS130

11、2; (2)如何将秒值写入DS1302; (3)如何写入出年月日;,(1)如何将数据写入DS1302;,DS1302写时序,DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。 数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。,(1)如何将数据写入DS1302(地址),#define SCK_SET P1 |= (1 1; ,(1)如何将数据写入DS1302,#define SCK_CLR P1 /*停止DS1302总线*/,(2)如何将秒

12、值写入DS1302;,DS1302寄存器与控制命令,为0时为写入,(2)如何将秒值写入DS1302,void ds1302_write_time(void) ds1302_write_byte(ds1302_control_add,0x00); /关闭写保护 ds1302_write_byte(ds1302_sec_add,0x80);/暂停 ds1302_write_byte(ds1302_sec_add,time_buf6);/秒 ds1302_write_byte(ds1302_day_add,time_buf7);/周 ds1302_write_byte(ds1302_control_

13、add,0x80); /打开写保护 ,(2)如何将秒值写入DS1302;,#define ds1302_sec_add 0x80 /秒数据地址,地址偶数为写、奇数为读,(2)如何将秒值写入DS1302,DS1302寄存器与控制命令,CH为1时,内部时钟不工作,暂停,(3)如何将年月日写入DS1302,DS1302寄存器与控制命令,(3)如何将年月日写入DS1302,void ds1302_write_time(void) ds1302_write_byte(ds1302_control_add,0x00); /关闭写保护 ds1302_write_byte(ds1302_sec_add,0x8

14、0); /暂停 ds1302_write_byte(ds1302_year_add,time_buf1);/年 ds1302_write_byte(ds1302_month_add,time_buf2);/月 ds1302_write_byte(ds1302_date_add,time_buf3);/日 ds1302_write_byte(ds1302_day_add,time_buf7);/周 ds1302_write_byte(ds1302_hr_add,time_buf4);/时 ds1302_write_byte(ds1302_min_add,time_buf5);/分 ds1302_

15、write_byte(ds1302_sec_add,time_buf6);/秒 ds1302_write_byte(ds1302_day_add,time_buf7);/周 ds1302_write_byte(ds1302_control_add,0x80);/打开写保护 ,2.3 如何将DS1302中的年月日读出来,(1)如何从DS1302中读出数据; (2)如何将秒从DS1302中读出; (3)如何显示出年月日;,(1)如何从DS1302中读出数据,DS1302读时序,(1)如何从DS1302中读出数据,RST_SET; /*启动DS1302总线*/ /*写入目标地址:addr*/ addr = addr | 0x01;/*最低位置高*/ for (i = 0; i 1; ,(1)如何从DS1302中读出数据,/*输出数据:temp*/ for (i = 0; i 1; if (IO_R) temp |= 0x80; else temp ,(2)如何从DS1302中读出秒,#define ds1302_sec_add 0x80

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号