从RGB18位数据位转成24位数据位,LCM测试程序需要哪些方面的改动才能点亮,使屏正常显示?跪求大神帮忙

从RGB18位数据位转成24位数据位,LCM测试程序需要哪些方面的改动才能点亮,使屏正常显示?跪求大神帮忙,第1张

RGB18是666格式,24是888格式。只要将666的数据对低位扩展就可以了,简单点填0或者1都行,麻烦点的将末两位复制第三位,即DB0=DB1=DB2。这个扩展算法你可以写到W_DATA子程序里面,单片机运行会慢点。还有LCD DRIVER IC的色彩设置要改为24位模式,具体的要看DATASHEET介绍了。

/****************打点******************/

void point(uchar x,uchar y)

{

uchar y1,hang,lie,msb_data,lsb_data,temp=0x01

if(y1!=y)

{

msb_data=0

lsb_data=0

}

y1=y

if(y<32)

{

hang=0x80+y

lie=0x80

}

if(y>31)

{

hang=0x80+y-32

lie=0x88

}

if(y>63)//return

{

lcm_com(0x80)

_nop_()

hanzi("温度超出显示范围")

while(1)

flash()

}

lie=lie+x/16

if(x%16==0)

{

msb_data=0

lsb_data=0

}

if(x%16<8)

{

msb_data=msb_data|(temp<<(7-x%16))

lsb_data=0x00|lsb_data

}//保留以前的数据,把第x个点亮

if(x%16==8)

{

msb_data=msb_data|0x00

lsb_data=lsb_data|0x80

}

if(x%16>8)大于24小于32

{

msb_data=msb_data|0x00

lsb_data=lsb_data|(temp<<(15-x%16))

}

lcm_com(0x34)//扩充指令集

lcm_com(hang)

lcm_com(lie)

lcm_dat(msb_data)

lcm_dat(lsb_data)

lcm_com(0x36)//绘图显示开

}

楼主,我给你一个代码,你参考一下和验证一下!

用51单片机做的简单计算器的程序.

/**********************按键处理*******************/

void KeyDeal(unsigned char Key)

{

if(Key!=0) //判断 有无按键按下。

{

switch(Key)

{ //以下定义0~9的数字键。

case 0x11: K=0break

case 0x21: K=1break

case 0x41: K=2break

case 0x81: K=3break

case 0x12: K=4break

case 0x22: K=5break

case 0x42: K=6break

case 0x82: K=7break

case 0x14: K=8break

case 0x24: K=9break

//以下+。-,*,/ 键

case 0x44: K=10break //加

case 0x84: K=11break //减

case 0x18: K=12break //乘

case 0x28: K=13break //除

case 0x48: K=14break //等于

case 0x88: K=15break //清除

default: break

}

if(K<10) //数字键

{

d[2]=d[1]

d[1]=d[0]

d[0]=K

c[2]=c[1]

c[1]=c[0]

c[0]=b[K]

//以上数组数据赋值是保证数字按键入顺序移位。

}

if(K==10) //加

{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0p=1

c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0}

if(K==11)//减

{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0p=2

c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0}

if(K==12)//乘

{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0p=3

c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0}

if(K==13)//除

{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0p=4

c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0}

if(K==14) //此处是按 =键

{ n=d[2]*100+d[1]*10+d[0]

if (p==1) shu=m+n

if (p==2) shu=m-n

if (p==3) shu=m*n

if (p==4) shu=m/n

c[4]=b[shu/10000]

c[3]=b[shu%10000/1000]

c[2]=b[shu%1000/100]

c[1]=b[shu%100/10]

c[0]=b[shu%10] //C[]存的是 计算结果 。

}

if(K==15) // 此处是按 清除键

{d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0

shu=0

c[4]=b[shu/10000]

c[3]=b[shu%10000/1000]

c[2]=b[shu%1000/100]

c[1]=b[shu%100/10]

c[0]=b[shu%10]}

}

}

void main()

{

while(1)

{

Key = Keycan()//键盘扫描获取一次按键的编码0x11-0x88

KeyDeal(Key) //对扫描到的键盘编码进行转换处理,变成数据键盘0-

display()

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存