比方说你想在X=20,Y=106这个位置画一个点,你首先定位这个点所在的12864上的地址。注意12864一次赋值是8位的char,所以你根据X的点找出他是在第3个char中的第四位(不知道你的12864是高位在前还是低位在前),然后就可以赋值0x10,这样这个点就亮了。如果你不想刚写入的值影响同地址的其他显示,在写入之前你要把原值读出来,与0x10相或.....
首先你先用画图软件画一条直线看看会不会还有你说是情况应该是图片转换时还有些灰度不高的没清除,可以试义下这个程序#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar count,shi,fen,miao,k1num
sbit rs = P2^0
sbit rw = P2^1
sbit e = P2^2
sbit cs = P2^3
sbit rst = P2^5
void init()
void delay(uint z)
void write_com(uchar com)
void write_date(uchar date)
uchar code table[]={"学习单片机快来哦"}
uchar code table1[]={"很好玩的想学吗!"}
uchar code table2[]={" qq: 276230273 "}
uchar code table3[]={"张小利加油要成功"}
void delay(uint z)
{
uint x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
void write_com(uchar com) //写指令
{
rs=0
e=0
P0=com
delay(5)
e=1
delay(5)
e=0
}
void write_date(uchar date) //写数据
{
rs=1
e=0
P0=date
delay(5)
e=1
delay(5)
e=0
P0=1
}
void init()//初始化
{
uchar num
rs=0
rw=0
e=0
write_com(0x30)
write_com(0x01)
delay(10)
write_com(0x06)
write_com(0x0c)
write_com(0x80)
for(num=0num<16num++)
{
write_date(table[num])
delay(5)
}
write_com(0x90)
for(num=0num<16num++)
{
write_date(table1[num])
delay(5)
}
write_com(0x88)
for(num=0num<16num++)
{
write_date(table2[num])
delay(5)
}
write_com(0x98)
for(num=0num<16num++)
{
write_date(table3[num])
delay(5)
}
}
void main()
{
init()
while(1)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)