项目五12864液晶万年历制作_第1页
项目五12864液晶万年历制作_第2页
项目五12864液晶万年历制作_第3页
项目五12864液晶万年历制作_第4页
项目五12864液晶万年历制作_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目五液晶万年历制作任务纲要12864液晶显示屏与液晶显示万年历任务一12864液晶显示数字(一)任务要求

使用YL-236单片机实训考核装置显示模块中的TG12864液晶屏,上电后液晶屏显示界面从左往右显示下图数字:第一行字符点阵大小为8×16,第二行字符点阵大小为16×32。任务一12864液晶显示数字1.图形界面上的字符(1)字符在12864液晶显示模块上的位置:第0页和第1页上从左至右显示字符“2012-02-20”,其中左屏显示数字字符“2012-02-”,右屏显示字符“20”;在12864液晶显示模块的第2-5页居中显示16×32字符“12:00:00”,其中左屏显示数字字符“12:0”,右屏显示字符“0:00”。(2)字符在12864液晶显示模块上的大小:

“2012-02-20”字符大小为8×16,

“12:00:00”字符大小为16×32。(二)任务分析任务一12864液晶显示数字2.实现的方法由于字符大小不同,所以首先应取两种不同大小字符的字模。显示函数必须对液晶模块初始化,设定字符的显示位置,调用显示字符子函数将字符字模送到对应的显示RAM中,LCD便能将所需的字符显示在显示屏对应的位置了。(二)任务分析任务一12864液晶显示数字3.12864液晶显示模块知识

TG12864是一款无字库的图形点阵显示器,其屏幕由64(行)×128(列)点阵组成,可以显示16点阵的4行×8列(32个)汉字、8点阵的8行×8列(64个)字母和128×64全屏幕点阵图形。(1)模块外形及引脚数据总线接口DB0-DB7控制引脚任务一12864液晶显示数字3.12864液晶显示模块知识模块的引脚及功能(1)模块外形及引脚任务一12864液晶显示数字3.12864液晶显示模块知识

模块带有显示缓存;单片机将代表点阵的亮或暗(1或0)的信息写入到显示缓存中,LCD的行、列驱动器会自动扫描LCD点阵,保持用户期望的显示效果。写入到显示缓存中的数据是按字节为单位来进行读写的。(2)模块显示字符原理任务一12864液晶显示数字3.12864液晶显示模块知识(2)模块显示字符原理任务一12864液晶显示数字3.12864液晶显示模块知识

12864液晶显示模块上显示的点与显示缓存RAM是一一对应的,显示器点阵大小为64X128,显示RAM有64X128个位,按字节划分共分为8(0-7)个页,每页为8(0-7),行,每行为128个位;显示RAM区每个字节对应屏上点的排列方式为:纵向排列,低位在上,高位在下。(2)模块显示字符原理任务一12864液晶显示数字3.12864液晶显示模块知识显示RAM区与显示屏点映射图(2)模块显示字符原理任务一12864液晶显示数字3.12864液晶显示模块知识模块与单片机硬件接口电路(3)模块的使用——硬件接口电路任务一12864液晶显示数字3.12864液晶显示模块知识模块的控制指令(3)模块的使用——模块控制指令

12864液晶显示模块的页地址就是X地址,8行为1页,共8页,第0页地址为0XB8。1286412864液晶显示模块的列地址就是Y地址。Y地址范围为0-63,分成左右两半屏(由CS1与CS2来选择),第0列地址为0X40。任务一12864液晶显示数字3.12864液晶显示模块知识模块的控制指令(3)模块的使用——模块控制指令12864液晶显示模块的开始线是由内部的Z地址计数器控制的,开始线地址设定范围为0-63行范围内任意一行,第0行起始线的地址为0XC0。任务一12864液晶显示数字3.12864液晶显示模块知识模块的驱动函数(3)模块的使用——驱动函数voiddelay(uintus);//短延时函数声明voiddelay_ms(uintms);//毫秒级延时函数声明voidcheck_busy_12864();//检测TG12864是否忙函数声明voidwcmd_12864(ucharcmd);//写命令到LCD函数声明voidwdat_12864(uchardat);//写数据到LCD函数声明voidclr_12864(ucharss,ucharx,uchary);//清屏函数声明voidinit_12864();//初始化函数声明任务一12864液晶显示数字3.12864液晶显示模块知识模块的驱动函数(3)模块的使用——驱动函数/******写命令到LCD函数参数:cmd命令******/voidwcmd_12864(ucharcmd)//写命令到LCD函数{check_busy_12864();//忙状态检测

RS=0;//向LCD发送命令RW=0;//写有效

E=1;//产生下降沿的高电平部分

DATAPORT=cmd;//命令字送LCD数据端口

E=1;//保持高电平短暂延时

E=0;//产生下降沿的低电平部分}任务一12864液晶显示数字3.12864液晶显示模块知识模块的驱动函数(3)模块的使用——驱动函数/******参数:row起始页,col起始列,n字模的第n个字******/voiddisp_num8x16(ucharrow,ucharcol,ucharn){uchari;//定义i为局部变量if(col<64){CS1=1,CS2=0;}//选左半屏

else{CS1=0,CS2=1;col-=64;}//选右半屏for(i=0;i<8;i++)//for循环控制8列扫描字符

{wcmd_12864(0xb8+row);//设定页

wcmd_12864(0x40+col+i);//设定列

wdat_12864(num8X16[i+n*16]);//写第n个字符的上半部分wcmd_12864(0xb8+row+1);//设定页

wcmd_12864(0x40+col+i);//设定列

wdat_12864(num8X16[i+n*16+8]);//写第n个字符的下半部分代码

}}任务一12864液晶显示数字(三)硬件电路硬件模块接线原理图任务一12864液晶显示数字(四)参考程序主函数流程图任务一12864液晶显示数字(五)任务实施步骤1.硬件电路连接;2.使用keil软件建立工程项目12864LCD1,然后再建一个文件名为12864SZ1.C的源程序文件,将上面的参考程序输入并保存;3.在项目的头文件组中将12864液晶模块的驱动程序12864LCD.h添加到项目中;4.对源程序进行编译和链接,产生目标代码并装入仿真器中;5.进行仿真器调试运行,直到12864液晶的显示正常;6.进行扎线,整理。Thanks!任务二12864液晶显示汉字和数字(一)任务要求

使用YL-236单片机实训考核装置显示模块中的12864液晶屏,上电后屏幕显示如图所示的数字和汉字。其中:第一行数字点阵大小为8×16,中文字符点阵大小为16×16,居中显示;中间一行数字点阵大小为16×32;第三行中文字符点阵大小为16×16靠左显示。任务二12864液晶显示汉字和数字1.实现的方法

与前一任务相比:一是多了显示几个中文字符,而显示中文字符的原理和显示数字的原理是一样的,只要按点阵大小对中文字符取模就可以;二是字符的位置发生了改变,这个只能在程序中改变设定的位置就能完成。因此在该任务中我们主要是考虑程序的写法,由于该程序中有多处字符的字模大小不一样,考虑到简化程序,编写适应不同字模大小的通用显示程序。(二)任务分析任务二12864液晶显示汉字和数字2.C语言的指针知识(1)指针的概念

指针是一种包含了其他变量或函数地址的变量,它里面存储的数值为内存的地址。

指针的定义的形式为:指针的类型*指针变量名

其中指针类型是与指针所指向的数据相符合的数据类型,如int、char、float等;*表示所要定义的是一个指针变量,而不是一个普通变量;指针变量名则应该遵循普通变量名的命名规则。例如:char*s;//定义了指向字符型变量S的指针变量任务二12864液晶显示汉字和数字2.C语言的指针知识(2)获取指针的值指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在C语言中,用&操作符可以获取变量或常量在内存中的地址,我们称之为取地址操作符。获取到了数据所在的地址,我们就能把这个地址传递给指针了。获取变量或常量指针的操作为:&变量名或常量名例如:charc=8;char*s=&c;//定义字符型指针变量s并作初始化赋值;任务二12864液晶显示汉字和数字2.C语言的指针知识(3)指针与数组将指针与数组相联系,目的是通过指针来访问数组中的各元素,利用指针来进行函数参数的传递,本质上进行地址的传递。例如:chari,*s,a[]={1,2,3,4,5,6};s=a;//请注意数组名a直接赋值给指针sfor(i=0;i<=6;i++){printf("%d\n",s[i]);}任务二12864液晶显示汉字和数字2.C语言的指针知识(4)使用指针的显示函数voiddisp_12864(ucharrow,ucharcol,ucharx,uchary,uchar*s){uchari,j;//定义i和j为局部变量

if(col<64){CS1=1,CS2=0;}//选左半屏

else{CS1=0,CS2=1;col-=64;}//选右半屏

for(i=0;i<y;i++)//控制字符的页数

{wcmd_12864(0xb8+row+i);//写起始页

wcmd_12864(0x40+col);//写起始列

for(j=0;j<x;j++)//控制字符的列数

wdat_12864(s[i*x+j]);//写列数据

}}/***参数:row起始页,col起始列,x水平像素,y纵向页数,s字模表****/任务二12864液晶显示汉字和数字(三)硬件电路硬件模块接线原理图任务二12864液晶显示汉字和数字(四)参考程序主函数流程图任务二12864液晶显示汉字和数字(五)任务实施步骤1.硬件电路连接;2.使用keil软件建立工程项目12864LCD2,然后再建一个文件名为12864SZ2.C的源程序文件,将上面的参考程序输入并保存;3.在项目的头文件组中将12864液晶模块的驱动程序12864LCD.h添加到项目中;4.对源程序进行编译和链接,产生目标代码并装入仿真器中;5.进行仿真器调试运行,直到12864液晶的显示正常;6.进行扎线,整理。Thanks!任务三12864液晶显示图形(一)任务要求

使用YL-236单片机实训考核装置显示模块中的12864液晶屏,上电后液晶屏显示如下图内容。其中:为闹铃图形,点阵大小为16×16,位置位于右半屏起始位置;闹铃图标后面的12:02为闹铃时间,点阵大小为16×16;图中其余数字和汉字的点阵大小与任务二相同。任务三12864液晶显示图形1.实现的方法

与该任务是在任务二的基础上加入了闹铃的显示图形,我们需要使用取模软件根据图标的形状和点阵大小进行制作,然后取模就可以得出闹铃图形的字模信息了。闹铃时间的显示同前。(二)任务分析任务三12864液晶显示图形2.参考程序分析voidmain(){

。。。。。。

disp_12864(6,64,16,2,hz16X16[12]);//显示闹铃图标

disp_12864(6,80,8,2,num8X16[1]);//显示1disp_12864(6,88,8,2,num8X16[2]);//显示2disp_12864(6,96,8,2,num8X16[10]);//显示:

disp_12864(6,104,8,2,num8X16[0]);//显示0disp_12864(6,112,8,2,num8X16[2]);//显示2while(1){;}}任务三12864液晶显示图形(三)硬件电路硬件模块接线原理图任务三12864液晶显示图形(四)参考程序主函数流程图任务三12864液晶显示图形(五)任务实施步骤1.硬件电路连接;2.使用keil软件建立工程项目12864LCD3,然后再建一个文件名为12864SZ3.C的源程序文件,将上面的参考程序输入并保存;3.在项目的头文件组中将12864液晶模块的驱动程序12864LCD.h添加到项目中;4.对源程序进行编译和链接,产生目标代码并装入仿真器中;5.进行仿真器调试运行,直到12864液晶的显示正常;6.进行扎线,整理。Thanks!任务四12864液晶万年历制作(一)任务要求

使用YL-236单片机实训装置显示模块中的12864液晶屏制作万年历。1.上电后液晶屏显示的内容如图5-14所示。其中:第一行居中显示实时年月日,数字点阵大小为8×16,中文字符点阵大小为16×16;中间一行显示实时时间,数字点阵大小为16×32;第三行左屏靠左显示星期,右屏靠左边显示闹铃图形及闹铃时间,点阵大小全部为16×16。任务四12864液晶万年历制作(一)任务要求2.万年历能够准确计时,时间使用24小时制。3.调整按键分别为“设置”键、“+”键和“-”键,使用设置按键短时按下进行时、分、秒、年、月、日、星期、闹铃和闹铃的时间位置进行选择,然后按下另外两个键改变数值,长按设置键退出设置状态。任务四12864液晶万年历制作(一)任务要求4.如果开启了闹铃,则闹铃图形有显示,当时钟时间与闹铃设定时间相同时,蜂鸣器发出提示音,1分钟后自动停止。闹铃停止时,闹铃图形不显示,时间到达闹铃时间不会产生提示音。任务四12864液晶万年历制作1.让时钟能够实时计时:考虑使用定时器定时来完成时间的计时功能,定时器定时中断,在中断服务函数中完成基本时间的判断,为了保证定时的精度,所以将秒以上的数据的处理由数据处理子函数来完成。数据处理子函数中要考虑年月日和星期的处理,主要是年有闰年,月有大月和小月,所以在天数上不一致的。星期的处理一方面可以通过年月日来计算,本程序在设定初始星期的时候是正确的,所以就简单处理,通过天数来计算了。为了能够显示变量和字符串,关键是字符的字模在数组的排列中要有序,这样就可以方便程序查询。(二)任务分析任务四12864液晶万年历制作(二)任务分析2.时间和日期的调整:需要通过键盘来完成3个按键分别采用独立式键盘,接在单片机的P1.0,P1.1,P1.2口。通过“调整”键来选择要调整的项目,在调整项目上通过按“+”键或“-”键进行对应项目的数据调整。3.闹铃的输出:在闹铃设定的时间到了之后,由单片机的P1.3口接到主机模块的蜂鸣器上即可。任务四12864液晶万年历制作2.参考程序分析voidprocess_time(void){if(s==60)//判断是否计满60秒

{s=0;m++;//秒为0,分加1if(m==60)//判断是否计满60秒

{m=0;h++;//分为0,时加1if(h==24)//计满一天处理

{h=0;day++;week++;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论