4用DS1302与12864LCD设计的可调式中文电子日历.doc

4用DS1302与12864LCD设计的可调式中文电子日历.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4用DS1302与12864LCD设计的可调式中文电子日历

学习情境5-可调式数字钟 之 用DS1302与12864LCD设计的可调式中文电子日历 点名,复习 DS1302的引脚及其功能,以及DS1302与单片机的硬件连接? 如何编写基于1602LCD的显示驱动程序? 新课讲授 5.3 基于DS1302与LCD12854设计的可调数字钟 上节课我们详细介绍了LCD1602的显示控制指令,掌握了如何编写该种型号的LCD的显示驱动程序。这节课我们学习另外一种液晶显示模块—12864(KS0108) 5.3.1 LCD12864技术资料 5.3.1.1 12864(KS0108)字符型LCD简介 管脚号 管脚 电平 说明 1 CSA H/L 片选择信号,低电平时选择前64列。 2 CSB H 片选择信号,低电平时选择后64列。 3 GND 0V 逻辑电源地。 4 VCC 5V 逻辑电源。 5 VEE -10V LCD驱动电源。 6 D/I H/L 数据\指令选择,高电平:数据D0-D7将送入显示RAM; 低电平:数据D0-D7将送入指令寄存器执行。 7 R/W H/L 读\写选择,高电平:读数据;低电平:写数据。 8 E H.H/L 读写使能,高电平有效,下降沿锁定数据。 9-16 DB0 H/L 数据输入输出引脚。 5.3.1.3、 12864LCD的指令说明 DotMatrix.c。 LCD12864显示驱动程序 (1)检查LCD是否忙 bit LCD_IS_BUSY() { LCD_DB_PORT=0xFF; RW=1; _nop_(); DI=0; E=1; _nop_(); E=0; return (bit)(P00x80); } (2)向LCD写入一个字节(一般用于发送命令) void Write_Byte_To_LCD(uchar comand) { while(LCD_IS_BUSY()); LCD_DB_PORT=0xFF; RW=0; _nop_(); DI=0; LCD_DB_PORT=comand; E=1; _nop_(); E=0; } (3)向LCD写入数据 void Write_Data_To_LCD(uchar dat) { while(LCD_IS_BUSY()); LCD_DB_PORT=0xFF; RW=0; _nop_(); DI=1; if(!Reverse_Display) //根据Reverse_Display决定是否反相显示 LCD_DB_PORT=dat; else LCD_DB_PORT=~dat; E=1; _nop_(); E=0; } (4)初始化LCD void LCD12864_Initialization() { CS1=1; CS2=1; Write_Byte_To_LCD(0x38); Write_Byte_To_LCD(0x0F); Write_Byte_To_LCD(0x01); Write_Byte_To_LCD(0x06); Write_Byte_To_LCD(LCD_START_ROW); } (5)通用显示函数 从第P页第L列显示W个字节数据,具体显示的数据在r所指的数组中 void LCD_Show(uchar P,uchar L,uchar W,uchar *r) reentrant { uchar i; if(L64) { CS1=1; CS2=0; Write_Byte_To_LCD(LCD_PAGE+P); Write_Byte_To_LCD(LCD_COL+L); if(L+W64) { for(i=0;iW;i++) Write_Data_To_LCD(r[i]); } else { for(i=0;i64-L;i++) Write_Data_To_LCD(r[i]); CS1=0; CS2=1; Write_Byte_To_LCD(LCD_PAGE+P); Write_Byte_To_LCD(LCD_COL); for(i=64-L;iW;i++) Write_Data_To_LCD(r[i]); } } else { CS1=0;

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档