单片机应用技术(4)(数字时钟LCD+DS1302修订版)课件.ppt

上传人(卖家):三亚风情 文档编号:3042546 上传时间:2022-06-25 格式:PPT 页数:61 大小:2.09MB
下载 相关 举报
单片机应用技术(4)(数字时钟LCD+DS1302修订版)课件.ppt_第1页
第1页 / 共61页
单片机应用技术(4)(数字时钟LCD+DS1302修订版)课件.ppt_第2页
第2页 / 共61页
单片机应用技术(4)(数字时钟LCD+DS1302修订版)课件.ppt_第3页
第3页 / 共61页
单片机应用技术(4)(数字时钟LCD+DS1302修订版)课件.ppt_第4页
第4页 / 共61页
单片机应用技术(4)(数字时钟LCD+DS1302修订版)课件.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

1、单片机应用技术传感器测试系统的数据显示与报警(1)数字时钟(LCD+DS1302)1.数字时钟(定时器中断+LCD显示)2.数字时钟(DS1302+LCD显示)案例1:利用单片机的定时器功能实现数字时钟,并用LCD显示出来。1.数字时钟(LCD+定时器中断)1.1 用LCD显示数字9LM016L型(字符型)1.1.1 LCD液晶简介 LCD(Liquid Crystal Display)液晶液晶显显示器,示器,显显示方式可分示方式可分为两种为两种: 文字型文字型LCD 绘图绘图型型LCD 常常见见文字型文字型LCD有有16字字X2列、列、20字字X2列、列、40字字X2列列U?LCDDB714

2、DB613DB512DB411DB310DB29DB18DB07E6R/W5RS4VL3VCC2GND1液晶显示的原理是利用液晶的物理特性,通过电压对液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显其显示区域进行控制,有电就有显示,这样即可以显示出图形。示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、应用在便携式电脑、数字摄像机、PDA移动通信工具移动通信工具等众多领域。等众多

3、领域。号号引脚引脚功能功能1Vcc电电源源 +5V2GND接地接地 3VLLCD亮度亮度调整电压输调整电压输入入 4RS暂存器选择暂存器选择 : 0:指令指令暂暂存器,存器,1:资料暂资料暂存器存器 5R/W读取读取取取/写写入入选择选择: 1:READ,0:WRITE 6E读写使能读写使能714DB0DB7八位元的八位元的双双向向资料资料 U?LCDDB714DB613DB512DB411DB310DB29DB18DB07E6R/W5RS4VL3VCC2GND1 HD44780 是集驱动器与控制器于一体,专用于字符显示的液晶显示控制驱动集成电路。16*2 字符型液晶显示模块的内部结构字符型液

4、晶显示模块的内部结构此时书中使用的LM016L使用了HD44780.HD44780内部组成结构内部组成结构1.1.2 如何控制如何控制LCD的显示数据的显示数据关键点:(1)LCD初始化(2)如何写地址到LCD中去(3)如何写数据到LCD中去图1 1602型LCD的驱动程序流程图调用调用LCDLCD初始化初始化函数。函数。调用写入显示地调用写入显示地址的函数址的函数调用写入数据的调用写入数据的函数函数该该操操作作重重复复设设置置3遍遍图2 1602型LCD初始化流程图指令设置指令设置(1)LCD初始化/*函数功能:对LCD的显示模式进行初始化设置*/void LcdInitiate(void)

5、 delay(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0 x38); /显示模式设置:162显示,57点阵,8位数据接口delay(5); /延时5msWriteInstruction(0 x38);delay(5);WriteInstruction(0 x38);delay(5);WriteInstruction(0 x0c); /显示模式设置:显示开,有光标,光标闪烁(D,C,B)delay(5);WriteInstruction(0 x06); /显示模式设置:光标右移,字符不移(N,S)delay(5);WriteInstr

6、uction(0 x01); /清屏幕指令,将以前的显示内容清除delay(5); 如何写命令字?RSR/WE00高脉冲D7D6D5D4D3D2D1D0001DLNF*00001DCB0000000CMD000001NS1显示地址(2)写指令到LCD中去指令设置指令设置图3 1602型LCD写指令流程图除了初始化的时候不用检测除了初始化的时候不用检测忙信号,其他时候对忙信号,其他时候对LCD进进行操作均需要进行忙信号检行操作均需要进行忙信号检测。测。/函数功能:写指令到LCD中去/入口参数: dictate,需要写入的命令字节/返回参数:无void WriteInstruction (unsi

7、gned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(

8、); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 (3)如何写数据到LCD中去如何写数据?RSR/WE10高脉冲D7D6D5D4D3D2D1D0 xxxxxxxx状态、数据选择读、写图4 1602型LCD写数据流程图/函数功能:写数据到LCD中去/入口参数:y ,需要显示的数据的ASCII/返回参数:无void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时

9、,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 1.2 如何在LCD上显示字符9设定LCD使用模式为16X2显示,8位元5X7点阵设定屏幕与光标状态清除屏幕(CMD=1)设定定显示位址将A写入资料暂存器(1)初始化设置(2)设

10、置显示位地址80H81H82H83H90H91H92H93HC0HC1HC2HC3HD0HD1HD2HD3H基基址址(3)LCD上显示9 LcdInitiate(); /调用LCD初始化函数 WriteAddress(0 x07); /将显示地址指定为第0行第8列 WriteData(9); /将字符常量A写入液晶模块1.3 定时器中断控制LCD显示案例:控制LCD显示一个十六进制的数字,该数字以500ms的时间间隔自增,从0F循环。任务分析:(1)LCD如何显示一个数字;(2)如何实现500ms;(3)如何自增加电路设计(1)元器件选取(2)元器件连接程序设计(流程图)(1)主程序设计(2)

11、显示数字程序设计 (3)定时器中断子程序设计1.4 经典案例: 数字时钟(LCD)案例:控制LCD显示数字时钟。任务分析:(1)LCD如何显示成如下所示;(2)如何显示中文字符;(3)如何实现1s,如何每秒加1,每分钟加1,每小时加1,如何请零电路设计(1)元器件选取(2)元器件连接程序设计(流程图)(1)主程序设计(2)显示日期的设计(3)显示时间”秒、分、小时”的设计 (4)定时器中断子程序设计实验内容1.编程控制LCD,实现秒表;2.编程控制LCD,实现数字时钟;3.编程控制LCD,显示自定义的字符到LCD上;4.编程控制LCD,实现万年历;5.编程控制LCD,实现可调数字时钟。2.数字

12、时钟(DS1302+LCD)案例2:读取时钟芯片DS1302的秒钟信息显示在实验板的数码管上。(DS1302模块、LCD显示模块)2.1 DS1302简单介绍时钟计数功能,年计数可达2100。DS1302包括时钟/日历寄存器和31字节的数据暂存寄存器。DS1302寄存器与控制命令2.2 如何将年月日写入DS1302中(1)如何将数据写入DS1302;(2)如何将秒值写入DS1302;(3)如何写入出年月日;(1)如何将数据写入DS1302;DS1302写时序 DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。 数据在时钟(SC

13、LK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。(1)如何将数据写入DS1302(地址) #define SCK_SET P1 |= (1 (P15) #define RST_SET P1 |= (1 (P17)) RST_SET;/*启动DS1302总线*/*写入目标地址:addr*/addr = addr & 0 xFE;/*最低位置零*/for (i = 0; i 1; (1)如何将数据写入DS1302 #define SCK_CLRP1 &= (1 (P15) #define IO_CLRP1 &= (1 (P1

14、6) #define IO_SETP1 |= (1 (P16) ) /*写入数据:d*/ for (i = 0; i 1;RST_CLR;/*停止DS1302总线*/(2)如何将秒值写入DS1302;DS1302寄存器与控制命令为0时为写入(2)如何将秒值写入DS1302 void ds1302_write_time(void) ds1302_write_byte(ds1302_control_add,0 x00); /关闭写保护 ds1302_write_byte(ds1302_sec_add,0 x80);/暂停 ds1302_write_byte(ds1302_sec_add,time_

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

16、_write_byte(ds1302_control_add,0 x00); /关闭写保护 ds1302_write_byte(ds1302_sec_add,0 x80); /暂停 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

17、(ds1302_hr_add,time_buf4);/时 ds1302_write_byte(ds1302_min_add,time_buf5);/分ds1302_write_byte(ds1302_sec_add,time_buf6);/秒ds1302_write_byte(ds1302_day_add,time_buf7);/周 ds1302_write_byte(ds1302_control_add,0 x80);/打开写保护 2.3 如何将DS1302中的年月日读出来(1)如何从DS1302中读出数据;(2)如何将秒从DS1302中读出;(3)如何显示出年月日;(1)如何从DS1302

18、中读出数据DS1302读时序(1)如何从DS1302中读出数据RST_SET;/*启动DS1302总线*/*写入目标地址:addr*/addr = addr | 0 x01;/*最低位置高*/for (i = 0; i 1;(1)如何从DS1302中读出数据/*输出数据:temp*/for (i = 0; i 1;if (IO_R) temp |= 0 x80;else temp &= 0 x7F;SCK_SET;SCK_CLR;RST_CLR;/*停止DS1302总线*/return temp;(2)如何从DS1302中读出秒#define ds1302_sec_add 0 x80 /秒数据

19、地址地址偶数为写、奇数为读(2)如何从DS1302中读出秒DS1302寄存器与控制命令(2)如何从DS1302中读出秒void ds1302_read_time(void) time_buf6=(ds1302_read_byte(ds1302_sec_add)&0 x7F;(2)如何从DS1302中读出秒DS1302寄存器与控制命令(2)如何从DS1302中读出秒?如果显示秒,我们应该怎么写代码? time_buf6=(ds1302_read_byte(ds1302_sec_add)&0 x7F;/存放秒钟的值;(3)如何显示出年月日;显示年:time_buf1=ds1302_read_byt

20、e(ds1302_year_add);显示月: time_buf2=ds1302_read_byte(ds1302_month_add);显示日:思考?2.3 应用案例:数字时钟案例2:读取时钟芯片DS1302的秒钟信息显示在实验板的数码管上。任务分析:(1)时钟芯片如何连接;(2)怎么从DS1302获得时钟信息,需不需要初始化时间;(3)LCD显示电路设计(1)元器件选取(2)元器件连接程序设计(流程图)(1)主程序设计(2)显示日期的设计(3)显示时间”秒、分、小时”的设计 (4)定时器中断子程序设计DS1302内部RAM DS1302内部的RAM分为两类一类是单个RAM单元,共31个,每

21、个单元为一个8位的字节,其命令控制字为COHFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。1602命令字 指令指令1:清屏显示,光标复位到地址00H位置。 指令指令2:光标复位,光标返回到地址00H。 指令指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光

22、标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。R/L,高向左,低向右。 指令指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。(有些模块是 DL:高电平时为8位总线,低电平时为4位总线) 指令指令7:字符发生器RAM地址设置,地址:字符地址*8+字符行数。(将一个字符分成5*8点阵,一次写入一行,8行就组成一个字符) 指令指令8:置显示地址,第一行为:00H0FH,第二行为:40H4

23、FH。 指令指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令指令10:写数据。 指令指令11:读数据。RSR/WE011状态、数据选择读、写D7D6D5D4D3D2D1D0BF计数器地址图5 检测忙信号时,引脚设置及信息图LCD检查忙信号图6 1602型LCD读状态流程图/函数功能:函数功能:判断当前判断当前LCD是否忙是否忙/入口参数:无入口参数:无/返回参数:返回参数:result,为为1时表示忙,为时表示忙,为0/时表示空闲可以操作时表示空闲可以操作bit busytest(void)bit result;RS=0;

24、R/W=1;E=1; /读状态读状态_nop_();_nop_();_nop_();_nop_(); /机器反应时间机器反应时间result=D7;E=0; /执行命令执行命令return result;#includeLCD的简单介绍液晶是在1888年,由奥地利植物学家Reinitzer发现的,是一种介于固体与液体之间,具有规则性分子排列的有机化合物;一般最常用的液晶型态为向列型液晶,分子形状为细长棒形,长宽约1nm10nm;在不同电流电场作用下,液晶分子会做规则旋转90度排列,产生透光度的差别,如此在电源ON/OFF下产生明暗的区别,依此原理控制每个像素,便可构成所需图像。 字符的显示一个

25、字符由68或88点阵组成;(1)要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。(2)但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。汉字的显示汉字的显示一般采用图形的方式;步骤: (1)先提取要显示的汉字的点阵码(一般用字模提取软件);每个汉字占32B (2)找出CGRAM对应的地址,送上要显示的汉字的第一字节,地址位置加1,送第二个字节,地

26、址位置加1,送第三个字节 (3)直到32B显示完就可以LCD上得到一个完整汉字。1602自定义字符显示 1.设置向CGRAM中存入这个数据.初始地址是0 x40。然后存一位向后加8,总共能存8位自定义的字符。 2.然后可以把自定义的数据送入到LCD的CGRAM中。 3.向LCD写指令,送入需要显示数据的地址。 4.向LCD写指令,把显示的数据指向LCD的CGRAM存储的位置,显示出自定义字符。void main()LcdInitiate();SetCgramAddess(0);SetCgramDat(8,zhong);WriteAddress(0 x00); WriteData(0 x00);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(单片机应用技术(4)(数字时钟LCD+DS1302修订版)课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|