LCD12864-我参C程序的疑问。。

LCD12864-我参C程序的疑问。。,第1张

bf是忙信号 LCM参数返回的第7位,即P1.7,若为低则表示可以继续进行数据 *** 作,可用延时替代该功能函数,RES为LCM复位信号,直接与MCU相连 (lcm上已有电路,MCU低电平脉冲即可复位)

你做一个12864显示直线的函数,什么都解决了。在做这个函数之前你要做一个基本函数,就是在任意位置画点的函数。这个函数的大概思路是这样的:选择画图模式-->读出该位置的数据值-->把读出的值与你需要写入的值相或--->在把这个值显示...

比方说你想在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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11090131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存