高级会员
- 积分
- 717
- 金钱
- 717
- 注册时间
- 2016-6-10
- 在线时间
- 191 小时
|
20金钱
源代码
void DrawPoint(unsigned char x,unsigned char y)
{
unsigned int bt=0,read=0;
unsigned char x_adr,y_adr,high_bit,low_bit;
Write_Cmd(0x34);
Write_Cmd(0x34);
Delay1ms(1);
y_adr=0x80+y%32; //计算Y轴的地址,当Y大于31时,Y的坐标是下半屏,当Y小于等于31为上半屏。
if(y>31) //从0X88开始,小于31时X的地址是在上半屏,从0X80开始
x_adr=0x88+x/16;
else x_adr=0x80+x/16;
bt=0x8000>>(x%16); //求这个点到底是在哪个点
Write_Cmd(y_adr); //读取数据的时候要先写入所取数据的地址
Write_Cmd(x_adr);
Read_Data(); //读取的第一个字节不要,
read=Read_Data(); //从第二个字节开始接收。
read<<=8;
read|=Read_Data();
bt=bt|read;
high_bit=bt>>8;
low_bit=bt%256;
Write_Cmd(y_adr); //写入点的时候,重新写入地址,因为地址已经改变。
Write_Cmd(x_adr);
Write_Data(high_bit);
Write_Data(low_bit);
Write_Cmd(0x36); //开显示,转回基本指令集 */
}
显示普通字符是没有问题的,(说明我的电路和基本的读写函数是没有问题的)但是只要一开启绘图显示就会显示乱码?
有没有可以帮忙看看是我的程序哪里写错了吗?
拜托!!!
|
最佳答案
查看完整内容[请看2#楼]
已经解决了,是因为用ST7920控制器画点之前需要把DGRAM全部清零,因为12864的清屏函数并不是清除DGRAM的,所以需要写一个函数就是把所有DGRAM赋零的函数,在做课程设计贪吃蛇,快完成了。等做完就分享
|