中易网

LCD1604仿真显示后面几位有乱码,谁能帮我改下头文件,让LCD16位只显示13位。或者谁有更好地办法也可以。

答案:2  悬赏:0  
解决时间 2021-04-07 13:11
下面是我用的LCD1604.h
#ifndef LCD_CHAR_1604
#define LCD_CHAR_1604
#include
//Port Definitions****************************************************
sbit LcdRs = P3^5;
sbit LcdRw = P3^6;
sbit LcdEn = P3^7;
sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
//内部等待函数**************************************************
unsigned char LCD_Wait(void)
{
LcdRs=0;
LcdRw=1; _nop_();
LcdEn=1; _nop_();
//while(DBPort&0x80);//
LcdEn=0;
return DBPort;
}
//向LCD写入命令或数据***************************************
#define LCD_COMMAND 0 // Command
#define LCD_DATA 1 // Data
#define LCD_CLEAR_SCREEN 0x01 // 清屏
#define LCD_HOMING 0x02 // 光标返回原点
void LCD_Write(bit style, unsigned char input)
{
LcdEn=0;
LcdRs=style;
LcdRw=0; _nop_();
DBPort=input; _nop_();//注意顺序
LcdEn=1; _nop_();//注意顺序
LcdEn=0; _nop_();
LCD_Wait();
}
//设置显示模式************************************************
#define LCD_SHOW 0x04 //显示开
#define LCD_HIDE 0x00 //显示关
#define LCD_CURSOR 0x02 //显示光标
#define LCD_NO_CURSOR 0x00 //无光标
#define LCD_FLASH 0x01 //光标闪动
#define LCD_NO_FLASH 0x00 //光标不闪动
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
}
//设置输入模式*********************************************
#define LCD_AC_UP 0x02
#define LCD_AC_DOWN 0x00 // default
#define LCD_MOVE 0x01 // 画面可平移
#define LCD_NO_MOVE 0x00 //default
void LCD_SetInput(unsigned char InputMode)
{
LCD_Write(LCD_COMMAND, 0x04|InputMode);
}
//移动光标或屏幕********************************************

//初始化****************************************************
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动
}
/
void GotoXY(unsigned char x, unsigned char y) //x列,y行
{
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
void Print(unsigned char *str)
{
while(*str!='\0')
{
LCD_Write(LCD_DATA,*str);
str++;
}
}

/
#endif
各位尽快啊~~~~





最佳答案
你好!你的问题在实际现实中有乱码没?有的话我可以给你提供一份汉语拼音编的C51程序
LCD_Write(LCD_COMMAND,0x80|(x-0x40));//应该是x+0x40吧

while(*str!='\0')//改成while(*str!=0)试试
{
LCD_Write(LCD_DATA,*str);
str++;
}
全部回答
什么样情况不全,有没有图片
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我妈56岁了可以交社保吗怎么交还是?
艾露莎~史卡雷特英文怎么写
在电脑里的数字运算符号中,都是用*来表示乘
郑州中原区嵩山路陇海路附近有没有租房子比较
Disturbed-Decadence(中文翻译)
南极人女士内裤上面有南极人的标签吗
5、美景一( )一( )一( )一联欢。(词语接龙)
魔兽争霸战役包怎么弄要是没有Campaigns这个
2015款哈佛h5是国5排放吗
山水东路/西南路(路口)这个地址在什么地方,
mysql 较大的脚本文件怎么样快速导入
魅族游戏框架可以放到其它手机用吗
我3月2号来的大姨妈 ,今天都4月五号了,可是大
那个鉴宝节目出现过血玉
美国签证资料中“ 在职证明” 有没有 不用单
推荐资讯
格栅天线需用什么网卡
美女总裁说胸口疼抓住我的手让我帮她接摩
请问一个关于蟑螂的外国电影,忘记名字了,高
广东高铁地铁能带宠物吗?
()面前耍大刀一一自不量力 ()挥泪斩马shu
把TV变成AV怎样变
中国移动的3g型流量1500m多少钱
怎样才能把一个空间相册全部转入到另一个QQ空
移动手机卡什么卡最便宜?
为什么我的摩托车换了排气后,声音就变了?
长沙有什么好点的酒店 靠到黄兴路步行街
女人发照片给我
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?