完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
可以在任意位置打点了,在这里谢谢那些好心的人,把易于出现问题的地方给大家说明下,一定要仔细阅读DATESHEET,方便后人。
1、打点位置的定位 2、读取当前显示的数据 3、或和移位,即重新写人的新数据 程序如下: void GUI_Point(uchar x,uchar y,uchar flag) { uchar x_Dyte,x_byte; //定义列地址的字节位,及在字节中的哪1位 uchar y_Dyte,y_byte; //定义为上下两个屏(取值为0,1),行地址(取值为0~31) Write_command(0x36); //绘图模式命令 /***X,Y坐标互换,即普通的X,Y坐标***/ x_Dyte=y/16; //计算在16个字节中的哪一个 x_byte=y&0x0f; //计算在该字节中的哪一位 y_Dyte=x/32; //0为上半屏,1为下半屏 y_byte=x&0x1f; //计算在0~31当中的哪一行 Write_command(0x80+y_byte); //设定行地址(y坐标) Write_command(0x80+x_Dyte+8*y_Dyte); //设定列地址(x坐标),并通过8*y_Dyte选定上下屏 Read_data(); GDRAM_hbit=Read_data(); //读取当前显示高8位数据 GDRAM_lbit=Read_data(); //读取当前显示低8位数据 delay_us(5); if(flag==1) { Write_command(0x80+y_byte); //设定行地址(y坐标) Write_command(0x80+x_Dyte+8*y_Dyte); //设定列地址(x坐标),并通过8*y_Dyte选定上下屏 delay_us(5); if(x_byte<8) //判断其在高8位,还是在低8位 { Write_data(GDRAM_hbit|(0X01<<(7-x_byte))); //显示GDRAM区高8位数据 Write_data(GDRAM_lbit); //显示GDRAM区低8位数据 } else { Write_data(GDRAM_hbit); Write_data(GDRAM_lbit|(0x01<<(15-x_byte))); } } else { Write_data(0x00)); //清除GDRAM区高8位数据 Write_data(0x00)); //清除GDRAM区低8位数据 } } /**********读取当前地址的LCD显示数据**********/ uchar Read_data() { uchar shuju; LCD_DATA_set_in; //端口PB设置为输入 LCD_DATA_PORT=0xff; SET_DI; // D/I=1,代表数据 SET_RW; // R/W=1.读取 delay_us(10); SET_E; delay_us(100); shuju=PINB; //读取当前显示的数据 CLR_E; return(shuju); } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5135 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7774 浏览 0 评论
3038 浏览 2 评论
3110 浏览 1 评论
10066 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 17:59 , Processed in 0.627854 second(s), Total 46, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号