找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

12864画点函数为什么不能画点(附代码)?

[复制链接]
admin 发表于 2012-9-2 14:37:44 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
在网上找的12864画点代码,但就是画不起点,只能画起16位的点,而不是一个像素点,我用的12864带字库的,附代码:
void lcd_hd(unsigned char x, unsigned char y)
{
unsigned char x_byte, x_bit; //在横坐标的哪一个字节,哪一个位
unsigned char y_byte, y_bit;
unsigned char tmph, tmpl; //定义两个临时变量,用于存放读出来的数据
x_byte = x / 16; //算出它在哪一个字节(地址),注意一个地址是16位的
x_bit = x % 16; //算出它在哪一个位
y_byte = y /32; //y是没在哪个字节这个说法 这里只是确定它在上半屏还是下半屏
//0:上半屏 1:下半屏
y_bit = y % 32; //y_bit确定它是在第几行
lcdwc(0x34); //扩展指令集 0011 0100
lcdwc(0x36); //绘图显示关闭 0011 0100
lcdwc(0x80 + y_bit); //先写垂直地址,具体参照数据手册
lcdwc(0x80 + x_byte + 8 * y_byte); //水平坐标 //下半屏的水平坐标起始地址为0x88 //(+8*y_byte)就是用来确定在上半屏还是下半屏
lcdrd(); //先空读一次
tmph = lcdrd(); //读高位
tmpl = lcdrd();
lcdwc(0x80 + y_bit); //读操作会改变AC,所以重新设置一次
lcdwc(0x80 + x_byte + 8 * y_byte);
if (x_bit < 8) //如果x_bit位数小于8
{
lcdwd(tmph|(0x01 << (7 - x_bit))); //写高字节。因为坐标是从左向右的/而GDRAM高位在左,底位在右
lcdwd(tmpl); //低字节全部填0
}
else
{
lcdwd(tmph); //高字节
lcdwd(tmpl|(0x01 << (15 - x_bit)));
}
// lcdwc(0x34); //打开绘图显示 0011 0110
lcdwc(0x30); //回到基本指令集,毕竟ST7920是以字符为主的
return ;
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-25 04:55 , Processed in 0.056053 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表