欢迎来到天天文库
浏览记录
ID:22780694
大小:247.00 KB
页数:15页
时间:2018-10-31
《液晶画图功能应用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、12864学习(控制器ST7920)在学习12864其他功能前先学习一下12864的几个基本函数voiddelay(uintx)//延时函数{x=x*12;while(x--){_nop_();//包含在intrins.h头文件_nop_();_nop_();}}voidwrite_lcd_cmd(ucharcmd)//写命令{RS=0;RW=0;EN=1;P0=cmd;//delay(1);EN=0;delay(1);}voidwrite_lcd_date(uchardate)//写数据函数{RS=1;RW=0;EN=1;P0
2、=date;//delay(1);EN=0;delay(1);}voiddisplay_pos(ucharx,uchary)//设置显示地址,用于显示中文字时设计显示地址{ucharpos;switch(x){case0:pos=0x80;break;//当x为0指向第一行case1:pos=0x90;break;//当x为1指向第二行case2:pos=0x88;break;//当x为2指向第三行case3:pos=0x98;break;//当x为3指向第四行default:pos=0x80;//x为其它值时指向第一行}pos
3、=pos+y;write_lcd_cmd(pos);}/*===========================================================函数功能:读取12864液晶繁忙标志BF位状态BF=1繁忙,BF=0不忙注意:与读取数据不同读取繁忙标志位是是属于写指令,要将RS置低============================================================*/voidread_lcd_bf(){ucharBF=1;P0=0xff;do{RS=0;RW=1;E
4、N=0;EN=1;_nop_();BF=P0;BF=BF>>7;}while(BF);}12864显示图片要让一个点有显示就要让相应的点置高电平。要想知道如何控制一个点的高低电平就要知道它的地址是怎样排列的。我们看着12864液晶是连在一起的一块屏幕,就会想当然的认为它的地址也是一直地增的,但是你错了。12864是分为上下两个半屏的。12864液晶模块显示地址如图所示。注意:12864显示分为上下两屏,而不是一个整屏。什么意思呢?就是说它的地址是分成两大部分(既上下两大部分)。如图,上半屏的水平地址X是从0x80—0x87并且它
5、的每个水平地址都包含了十六个点的显示区(如图红色标注)。下半屏水平地址是从0x88—0x8f,而上下半屏的纵坐标Y都是从0—31。这个是我定义的坐标关系简图坐标对应关系简图向12864GDROM写如数据来绘图的过程:1、关闭绘图显示功能2、先打开扩充指令功能3、连续写入X坐标地址,和y坐标地址(说明书上是写着先写X在写y坐标,但是程序是却是先写Y再写X坐标,否则会出错。还有这里写地址使用写命令函数不是用写数据函数)4、向GDROM中写入数据5、打开绘图显示功能/*=================================
6、===================函数功能:清除GDROM的内容,如果不清除会出现花屏现象清除方法:向GDROM中写入0x00来清除内容========================================================*/voidclear_gcrom(){uchari,j,k,lcd_x,lcd_y;lcd_x=0x80;lcd_y=0x80;write_lcd_cmd(0x34);//打开扩充指令关闭绘图显示(绘图指令为扩充指令,并且在绘图期间必须关闭绘图显示功能)for(i=0;i<2;i
7、++)//分为上下两半屏清除显示{for(j=0;j<32;j++){write_lcd_cmd(lcd_y+j);write_lcd_cmd(lcd_x);for(k=0;k<16;k++){write_lcd_date(0x00);}}lcd_x=0x88;//将x指向下半屏}write_lcd_cmd(0x36);//打开绘图指令write_lcd_cmd(0x30);//操作恢复为常用指令}/*===========================================================函数功能:
8、向12864中写入一幅图片函数参数:*p为指向图片数据的指针lcd_x为水平显示位置,lcd_y为垂直显示位置,函数将12864屏分成上下两屏写入,上半屏LCD_x=0x80,下半屏lcd_x=0x88==============================
此文档下载收益归作者所有