可能需要重新取模,或者在程序中改变一下,使其能够对应 |
uchar Swap_uchar(uchar data) { uchar i=0; uchar result=0; for (i=0;i<8;i++) { result>>1; if (data&0x80) { result|=0x80; } data<<1; } return result; } void Lcd_com_N(uchar data) { Lcd_com(Swap_uchar(data)); } //LCD初始化函数 void lcd_init() { Lcd_com_N(0x3f); //LCD开显示 Lcd_com_N(Oxc0); //LCD行初始地址,共64行 Lcd_com_N(0xb8); //LCD页初始地址,共3页 Lcd_com_N(0x40); //LCD列初始地址,共64列 led_clear(0); //清屏 该函数内的 Lcd_com 改为 Lcd_com_N } //************** 中文显示 **************// void zhongwen(uchar cslor2,uchar X,uchar Y,uint flag) { int i; flag=flag*32; control(cslor2); // 选择屏幕显示 该函数control内的 Lcd_com 改为 Lcd_com_N Lcd_com_N(0xb8+(X*2));//选择—个汉字的上部 Lcd_com_N(0x40+(Y*16)); for(i=0;i<16;i++) { Lcd_date(Swap_uchar(Chinese[flag++])) ;//先输入一个汉上面 16列 } Lcd_com_N(0xb8+(X*2)+1);//选择一个汉字的下部| Lcd_com_N(0x40+(Y*16)); for(i=0;i<16;i++) { Lcd_date(Swap_uchar(Chinese[flag++]));//输入一个汉字的下部 } } |
uchar Swap_uchar(uchar data) { uchar i=0; uchar result=0; for (i=0;i<8;i++) { result>>1; if (data&0x80) { result|=0x80; } data<<1; } return result; } void Lcd_com_N(uchar data) { Lcd_com(Swap_uchar(data)); } //LCD初始化函数 void lcd_init() { Lcd_com_N(0x3f); //LCD开显示 Lcd_com_N(Oxc0); //LCD行初始地址,共64行 Lcd_com_N(0xb8); //LCD页初始地址,共3页 Lcd_com_N(0x40); //LCD列初始地址,共64列 led_clear(0); //清屏 该函数led_clear内的 Lcd_com 改为 Lcd_com_N } //************** 中文显示 **************// void zhongwen(uchar cslor2,uchar X,uchar Y,uint flag) { int i; flag=flag*32; control(cslor2); // 选择屏幕显示 该函数control内的 Lcd_com 改为 Lcd_com_N Lcd_com_N(0xb8+(X*2));//选择—个汉字的上部 Lcd_com_N(0x40+(Y*16)); for(i=0;i<16;i++) { Lcd_date(Chinese[flag++]) ;//先输入一个汉上面 16列 该函数Lcd_date内的 Lcd_com 改为 Lcd_com_N } Lcd_com_N(0xb8+(X*2)+1);//选择一个汉字的下部| Lcd_com_N(0x40+(Y*16)); for(i=0;i<16;i++) { Lcd_date(Chinese[flag++]);//输入一个汉字的下部 该函数Lcd_date内的 Lcd_com 改为 Lcd_com_N } } |
man1234567 发表于 2020-5-7 15:51 将显示屏在线路板上的位置转180度,是可以减少飞线的,成品做好后是无所谓上下方向的。 |
hotpet 发表于 2020-5-7 10:31 其实走到桌子对面更便捷 ![]() |
另外,赞同你对调,美观与方便焊接线第一,软件服从硬件。也可以说,硬件不足软件补。 |
man1234567 回答的方法正确,重新取模不行,因为指令数还没有反转。 Lcd_com(0x3f); -----------全改成Lcd_com(swap(0x3f));也可以写入反转交换后的数,不用swap Lcd_date( aa )-------------全改成Lcd_date(swap(aa));也可以重新取模,高位在下改高位在上 |
无须更改线路或软件,将显示屏旋转180度即可。 |
Li.Chi 发表于 2020-5-6 13:02 Lcd_date(swap(Chinese[flag++])); 俺能力有限还不清楚就没法帮了。 |
man1234567 发表于 2020-5-6 11:09 想问下这个函数具体要怎么使用呢?请大佬指点一下 |
1、成品打板后并不存在所说的美观就是乱成一团放在盒子里也木有问题除非搭棚; 2、如果非得要这样“好看”,做个小程序将P0要口输出的数据(程例中Lcd_date镜像)从高到低转成从低到高再输出相当于反过来接。网上抄的程例加进去后只要改Lcd_date那句就可以。 unsigned char swap (unsigned char pData) { unsigned char value=0,tmp=0; unsigned char ii,jj; for (ii=0x80,jj=0;ii!=0;ii=ii>>1,jj++) { if (pData & ii) tmp=1; else tmp =0; value |= tmp << jj; } return value; } |
并口的液晶屏,如果你将接口顺序反过来的话,指令和数据也要反过来,比如0x01 你要换成0x80,0x01其实就时D7-D0分别取值 0 0 0 0 0 0 0 1 |
重新取模吧,重新取高位生成字模再试试 |
美不美观,关键是看各元器件如何布局排版 |