电源干扰导致的LCD1602显示温度是乱码乱码

lcd1602显示出现乱码了求教。。。_百度知道
lcd1602显示出现乱码了求教。。。
用Proteus仿真lcd出现乱码,我做的是电子闹钟,显示温度时间信息乱码,看图。求大神指导。
我有更好的答案
编码方式有问题吧,把编码方式改成gb2312试试
编码应该没问题,我用的是C语言写代码Keil编译的没有gb2312啊
为您推荐:
其他类似问题
lcd1602的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。求助大神啊LCD1602显示乱码怎么回事啊 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
求助大神啊LCD1602显示乱码怎么回事啊
10:53:05  
//设置P0作为输出连接LCD1602的数据端D0-D7,P2.3为SCLK,P2.4为SDA,P2.5为RST(都配置为输出)//P2.0为rs,P2.1为rw,P2.2为e(都配置为输出)//P2.67配置为输入,下降沿中断,中断处理函数 void key_pro(),P2。6接key1(控制光标),P2.7接key2,控制调节(增加)//grace配置中设置P2.345为输出,MCLK=1MHz,//本程序将数据用ASCII表示,方便LCD1602显示//在做DS1302的硬件时应该特别注意:数据线RST。SCLK、SDA一定上拉电阻,晶振添加负载电容,连接线尽量短//date代表日,day代表星期几#include &msp430.h&#include &ti/mcu/msp430/csl/CSL.h&//定义全局变量年月日时分秒char year,month,date,hour,minute,second,n;//n代表周几char love_& & & & & & & & & & & & & & & & & & & & & & & & & & & & //恋爱纪念年char day[7][3]={&MON&,&TUE&,&WED&,&THI&,&FRI&,&SAT&,&SUN&};char i=0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //用来记录key1按下的次数char dis_buf1[16];&&& & & & & & & & & & & & & & & & //lcd上排显示缓冲区char dis_buf2[16]; & & & & & & & & & & & & & & & & & & & & //lcd下排显示缓冲区char weiwei1[16]={&weiwei: I love u&};char weiwei2[16]={&so much! by xuxu&};char love1[16]={&We've been toget&};char love2[16]={&her for& & years&};//LCD1602控制位#define rs_0 (P2OUT &= ~BIT0)#define rs_1 (P2OUT |= BIT0)#define rw_0 (P2OUT &= ~BIT1)#define rw_1 (P2OUT |= BIT1)#define e_0&&(P2OUT &= ~BIT2)#define e_1&&(P2OUT |= BIT2)//DS1302控制位#define SCLK_0 (P2OUT &= ~BIT3)#define SCLK_1 (P2OUT |=&&BIT3)#define SDA_0&&(P2OUT &= ~BIT4)#define SDA_1&&(P2OUT |=&&BIT4)#define RST_0&&(P2OUT &= ~BIT5)#define RST_1&&(P2OUT |=&&BIT5)#define SDA& & (P2IN&&&=&&BIT4)//宏定义DS1302数据地址#define write_second&&0x80#define read_second& &0x81#define write_minute&&0x82#define read_minute& &0x83#define write_hour& & 0x84#define read_hour& &&&0x85#define write_date& & 0x86#define read_date& &&&0x87#define write_month& &0x88#define read_month& & 0x89#define write_year& & 0x8c#define read_year& &&&0x8d#define write_day& &&&0x8a#define read_day& && & & && &0x8b#define write_protect 0x8e#define write_power& &0x90//*******************以下为LCD1602的子函数************************////***********************************************************////查询是否忙碌(每次输入指令前都要判断液晶模块是否处于忙的状态)char busy(void){& & & && & & & rs_0;& & & & rw_1;& & & & e_1;& & & & __delay_cycles(1000);& & & & P1DIR = 0x00;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //P1口置为输入,读取LCD状态& & & & busyc = P1IN & BIT7;& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //从P1输入是否忙碌(D7高电平表示忙碌)& & & & P1DIR = 0& & & & e_0;& & & &}//向LCD1602写字节命令void write_command(char command){& & & & while(busy());& & & & & & & & & & & & & & & & & & & & & & & & & & & & //判断LCD是否忙碌& & & & rs_0;& & & & rw_0;& & & & P1OUT =& & & & __delay_cycles(1);& & & & & & & & & & & & & & & & & & & & & & & & //时间间隔MIN=30nS& & & & e_1;& & & & __delay_cycles(1);& & & & & & & & & & & & & & & & & & & & & & & & //MIN=150nS& & & & e_0;}//向LCD1602写数据命令void write_data(char data){& & & & while(busy());& & & & & & & & & & & & & & & & & & & & & & & & & & & & //判断LCD是否忙碌& & & & rs_1;& & & & rw_0;& & & & __delay_cycles(1);& & & & e_1;& & & & P1OUT=& & & & __delay_cycles(1);& & & & e_0;}//LCD1602初始化函数void lsd1602_init(){& & & & e_0;& & & & write_command(0x38);& & & & __delay_cycles(15000);& & & & write_command(0x0c);& & & & write_command(0x06);& & & & write_command(0x01);}void update_disbuf(){& & & &&&dis_buf1[0]='2';& & & &&&dis_buf1[1]='0';& & & &&&dis_buf1[2]=year/16 + 0x30;& & & &&&dis_buf1[3]=year%16 + 0x30;& & & &&&dis_buf1[4]='-';& & & &&&dis_buf1[5]=month/16 + 0x30;& & & &&&dis_buf1[6]=month%16 + 0x30;& & & &&&dis_buf1[7]='-';& & & &&&dis_buf1[8]=date/16 + 0x30;& & & &&&dis_buf1[9]=date%16 + 0x30;& & & &&&dis_buf1[10]=' ';& & & &&&dis_buf1[11]=' ';& & & &&&dis_buf1[12]=' ';& & & &&&dis_buf1[13]=day[n-1][0];& & & &&&dis_buf1[14]=day[n-1][1];& & & &&&dis_buf1[15]=day[n-1][2];& & & &&&dis_buf2[0]=' ';& & & &&&dis_buf2[1]='j';& & & &&&dis_buf2[2]='w';& & & &&&dis_buf2[3]='w';& & & &&&dis_buf2[4]='&';& & & &&&dis_buf2[5]='z';& & & &&&dis_buf2[6]='x';& & & &&&dis_buf2[7]=' ';& & & &&&dis_buf2[8]=hour/16 + 0x30;& & & &&&dis_buf2[9]=hour%16 + 0x30;& & & &&&dis_buf2[10]=':';& & & &&&dis_buf2[11]=minute/16 + 0x30;& & & &&&dis_buf2[12]=minute%16 + 0x30;& & & &&&dis_buf2[13]=':';& & & &&&dis_buf2[14]=second/16 + 0x30;& & & &&&dis_buf2[15]=second%16 + 0x30;}void display(){& & & && & & & write_command(0x80);& & & & for (t=0;t&=15;t++)& & & && &{write_data(dis_buf1[t]);}& & & & write_command(0xc0);& & & & for (t=0;t&=15;t++)& & & && &{write_data(dis_buf2[t]);}}//********************以下为DS1302的子函数************************////***********************************************************////向DS1302写一个字节的数据void ds1302_Wbyte(char dat){& & & & char s,& & & & temp =& & & & for(s=0;s&8;s++)& & & && &{if(temp & 0x01)& & & & & & & & & & & & & & & & //从低位开始传输数据& & & & & & & & {SDA_1;}& & & && & else& & & & & & & && & SDA_0;& & & && &SCLK_1;& & & & & & & & & & & & & & & & & & & & & & & & //上升沿锁存数据& & & && &temp = temp&&1;& & & & & & & & & & & & & & & & & & & & & & & & //数据右移一位为下次输出做准备& & & && &SCLK_0;& & & & & & & & & & & & & & & & & & & & & & & & //为下一次做准备& && &}}//从DS1302读取8位数据char ds1302_Rbyte(){& & & &&&char u,& & & &&&P2DIR &= ~BIT4;& & & &&&for(u=8; u&0;u--)& & & && &{& & & && &&&temp=temp&&1;& & & && &&&temp += (P2IN&BIT4)&&3;& & & && &&&SCLK_1;& & & && &&&SCLK_0;& & & && &}& & & &&&P2DIR |=&&BIT4;& & & &&&return(temp);}//向DS1302写入地址然后读取数据char ds1302_Read(char cmd){& & & && & & & RST_0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //初始化RST为低& & & & SCLK_0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //SLK=0& & & & RST_1;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //开始传输数据& & & & ds1302_Wbyte(cmd);& & & & & & & & & & & & & & & & //传输命令字,写入要读取的时间、日期地址& & & & dat = ds1302_Rbyte();& & & & & & & & & & & & //读取八位数据& & & & RST_0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //结束数据传输& & & & SCLK_0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //拉高时钟线& & & & return(dat);}//向DS1302写入地址后写入数据void ds1302_Write(char cmd,char dat){& & & & RST_0;& & & & SCLK_0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //在RST的上升沿,SCLK必须为0& & & & RST_1;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //开始传输数据& & & & ds1302_Wbyte(cmd);& & & & & & & & & & & & & & & & //写入要修改的地址& & & & ds1302_Wbyte(dat);& & & & & & & & & & & & & & & & //写入数据& & & & SCLK_1;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //拉高时钟线& & & & RST_0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //拉低RST}//初始化DS1302的程序void ds1302_init(void){& & & & ds1302_Write(write_protect,0x00);//关闭写保护& & & & ds1302_Write(write_second,0x00); //初始化秒为00,不暂停时钟(BIT7)& & & & ds1302_Write(write_minute,0x59); //初始化分为00& & & & ds1302_Write(write_hour,0x23);& &//初始化时为23,设置为24小时制(BIT7)& & & & ds1302_Write(write_date,0x01);& & & &&&//初始化日期为01& & & & ds1302_Write(write_month,0x01);& & & &&&//初始化月为01& & & & ds1302_Write(write_year,0x12);& & & &&&//初始化年为(20)12& & & & ds1302_Write(write_day,0x07);& & & &&&//周日& & & & ds1302_Write(write_power,0x0a5); //一个二极管压降,电阻4K& & & & ds1302_Write(write_protect,0x80);//打开写保护}//DS1302数据处理函数,此函数将个位、十位分别用char表示,方便用数码管显示void data_pro(void){& & & & ds1302_Write(write_protect,0x00);//关闭写保护& & & & date& &= ds1302_Read(read_date); //读取日& & & & if(date&0x29 && month==0x02)& & & &&&//如果调时时2月超过29& & & & & & & & {ds1302_Write(write_date,0x01);& & & & & & & & date = ds1302_Read(read_date);& & & & & & & & ds1302_Write(write_month,month + 1);& & & & & & & & }& & & & month&&= ds1302_Read(read_month);//读取月& & & & year& &= ds1302_Read(read_year); //读取年& & & & hour& &= ds1302_Read(read_hour); //读取时& & & & hour& &= hour & 0x3f;& & & & & & & & & & & && &//屏蔽掉前两位& & & & minute = ds1302_Read(read_minute);//读取分& & & & second = ds1302_Read(read_second);//读取秒& & & & n& && &= ds1302_Read(read_day);//读取星期& & & & ds1302_Write(write_protect,0x80);//打开写保护}//按键中断处理程序(使用grace配置)void key_pro(void){& & & && & & & & & & & & & & & & & & & & & & & & & & & & & & & //用于复制自定义的显示计数(16个)& & & & __delay_cycles(8000);& & & & & & & & & & & & //延时去抖动& & & & if(!(P2IN & BIT6))& & & & & & & & & & & & & & & & & & & & //判断是否有按键按下& & & & {& & & & & & & & i++;& & & & & & & & switch(i)& & & & & & & & {& & & & & & & & case 1:& & & & & & & & & & & & write_command(0x83);& & & & //显示光标到年& & & & & & & & & & & & write_command(0x0f);& & & & & & & & & & & && & & & & & & & case 2:& & & & & & & & & & & & write_command(0x86);& & & & //显示光标到月& & & & & & & & & & & & write_command(0x0f);& & & & & & & & & & & && & & & & & & & case 3:& & & & & & & & & & & & write_command(0x89);& & & & //显示光标到日& & & & & & & & & & & & write_command(0x0f);& & & & & & & & & & & && & & & & & & & case 4:& & & & & & & & & & & & write_command(0x8f);& & & & //显示光标到周& & & & & & & & & & & & write_command(0x0f);& & & & & & & & & & & && & & & & & & & case 5:& & & & & & & & & & & & write_command(0xc9);& & & & //显示光标到时& & & & & & & & & & & & write_command(0x0f);& & & & & & & & & & & && & & & & & & & case 6:& & & & & & & & & & & & write_command(0xcc);& & & & //显示光标到分& & & & & & & & & & & & write_command(0x0f);& & & & & & & & & & & && & & & & & & & case 7:& & & & & & & & & & & & write_command(0xcf);& & & & //显示光标到秒& & & & & & & & & & & & write_command(0x0f);& & & & & & & & & & & && & & & & & & & default:& & & & & & & & }& & & & }& & & & if(i&7)& & & & & & & & {& & & & & & & & i=0;& & & & & & & & write_command(0x0c);& & & & & & & & //关闭光标显示& & & & & & & & }& & & & P2IFG=0;& & & & & & & & & & & & & & & & & & & & & & & & //软件复位标志& & & & while(!(P2IN & BIT6))& & & & {& & & && &ds1302_Write(write_protect,0x00);//关闭写保护& & & && &while(!(P2IN & BIT7))& & & & & & & & & & & & & & & & //如果按键2被按下& & & && &&&{& & & & & & & & switch(i)& & & & & & & & & & & & & & & & & & & & //根据i的值来确定某变量进行加1& & & & & & & & {case 0:& & & & & & & & & & & & & & & & & & & & //显示自定义的语句& & & & & & & & & & & & for(j=0;j&16;j++)& & & & & & & & & & & & {& & & & & & & & & & & & & & & & dis_buf1[j] = weiwei1[j];& & & & & & & & & & & & & & & & dis_buf2[j] = weiwei2[j];& & & & & & & & & & & & & & & & display();& & & & & & & & & & & & }& & & & & & & & & & & && & & & & & & & case 1:& & & & & & & & & & & & & & & & & & & & & & & & //此事处理全局变量year& & & & & & & & & & & & year++;& & & & & & & & & & & & & & & & & & & & //year加1& & & & & & & & & & & & if(year&0x99)& & & & & & & & & & & & //如果year大于99则置0& & & & & & & & & & & & & & & & year=0;& & & & & & & & & & & & if((year & 0x0f)&0x09)& & & & //如果year低四位大于9(第四位BCD码表示个位),十位加1,个位置0& & & & & & & & & & & & & & & & {year +=0x10;& & & & & & & & & & & & & & & &&&year &=0xf0;& & & & & & & & & & & & & & & & }& & & & & & & & & & & & ds1302_Write(write_year,year);//将变化后的year写入DS1302& & & & & & & & & & & & year& &= ds1302_Read(read_year);//读出来year显示(使调节year时同步变化,为了人性化)& & & & & & & & & & & & update_disbuf();& & & & & & & & & & & & & & & & //更新显示字符& & & & & & & & & & & & while(!(P2IN & BIT7))& & & & & & & & & & & & & & & & display();& & & & & & & & & & & && & & & & & & & case 2:& & & & & & & & & & & & & & & & & & & & & & & & //此时处理全局变量month& & & & & & & & & & & & month++;& & & & & & & & & & & & if(month&0x12)& & & & & & & & & & & & & & & & month=1;& & & & & & & & & & & & if((month & 0x0f)&0x09)& & & & & & & & & & & & & & & & {month +=0x10;& & & & & & & & & & & & & & & &&&month &=0xf0;& & & & & & & & & & & & & & & & }& & & & & & & & & & & & ds1302_Write(write_month,month);& & & & & & & & & & & & month&&= ds1302_Read(read_month);& & & & & & & & & & & & update_disbuf();& & & & & & & & //更新显示字符& & & & & & & & & & & & while(!(P2IN & BIT7))& & & & & & & & & & & & & & & & display();& & & & & & & & & & & && & & & & & & & case 3:& & & & & & & & & & & & & & & & & & & & & & & & //此时处理全局变量date& & & & & & & & & & & & date++;& & & & & & & & & & & & if( (date&0x29 && month==0x02)& & & & & & & & & & & && & || (month==0x04 || month==0x06 || month==0x09 || month==0x11) && date&0x30& & & & & & & & & & & && & || date&0x31 )& & & & & & & & & & & && &date=0x01;& & & & & & & & & & & & if((date & 0x0f)&0x09)& & & & & & & & & & & & {date +=0x10;& & & & & & & & & & & &&&date &=0xf0;& & & & & & & & & & & & }& & & & & & & & & & & & ds1302_Write(write_date,date);& & & & & & & & & & & & date& &= ds1302_Read(read_date);& & & & & & & & & & & & update_disbuf();& & & & & & & & //更新显示字符& & & & & & & & & & & & while(!(P2IN & BIT7))& & & & & & & & & & & & & & & & display();& & & & & & & & & & & && & & & & & & & case 4:& & & & & & & & & & & & & & & & & & & & & & & & //此时处理全局变量day& & & & & & & & & & & & n++;& & & & & & & & & & & & if(n&0x07)& & & & & & & & & & & & & & & & n=1;& & & & & & & & & & & & ds1302_Write(write_day,n);& & & & & & & & & & & & n = ds1302_Read(read_day);& & & & & & & & & & & & update_disbuf();& & & & & & & & //更新显示字符& & & & & & & & & & & & while(!(P2IN & BIT7))& & & & & & & & & & & & & & & & display();& & & & & & & & & & & && & & & & & & & case 5:& & & & & & & & & & & & & & & & & & & & & & & & //此时处理全局变量hour& & & & & & & & & & & & hour++;& & & & & & & & & & & & if(hour&0x23)& & & & & & & & & & & & & & & & hour=0;& & & & & & & & & & & & if((hour & 0x0f)&0x09)& & & & & & & & & & & & & & & & {hour +=0x10;& & & & & & & & & & & & & & & &&&hour &=0xf0;& & & & & & & & & & & & & & & & }& & & & & & & & & & & & ds1302_Write(write_hour,hour);& & & & & & & & & & & & hour&&= ds1302_Read(read_hour);& & & & & & & & & & & & update_disbuf();& & & & & & & & //更新显示字符& & & & & & & & & & & & while(!(P2IN & BIT7))& & & & & & & & & & & & & & & & display();& & & & & & & & & & & && & & & & & & & case 6:& & & & & & & & & & & & & & & & & & & & & & & & //此时处理全局变量minute& & & & & & & & & & & & minute++;& & & & & & & & & & & & if(minute&0x59)& & & & & & & & & & & & & & & & minute=0;& & & & & & & & & & & & if((minute & 0x0f)&0x09)& & & & & & & & & & & & & & & & {minute +=0x10;& & & & & & & & & & & & & & & &&&minute &=0xf0;& & & & & & & & & & & & & & & & }& & & & & & & & & & & & ds1302_Write(write_minute,minute);& & & & & & & & & & & & minute&&= ds1302_Read(read_minute);& & & & & & & & & & & & update_disbuf();& & & & & & & & //更新显示字符& & & & & & & & & & & & while(!(P2IN & BIT7))& & & & & & & & & & & & & & & & display();& & & & & & & & & & & && & & & & & & & case 7:& & & & & & & & & & & & & & & & & & & & & & & & //此时处理全局变量second& & & & & & & & & & & & second++;& & & & & & & & & & & & if(second&0x59)& & & & & & & & & & & & & & & & second=0;& & & & & & & & & & & & if((second & 0x0f)&0x09)& & & & & & & & & & & & & & & & {second +=0x10;& & & & & & & & & & & & & & & & second &=0xf0;& & & & & & & & & & & & & & & & }& & & & & & & & & & & & ds1302_Write(write_second,second);& & & & & & & & & & & & second&&= ds1302_Read(read_second);& & & & & & & & & & & & update_disbuf();& & & & & & & & //更新显示字符& & & & & & & & & & & & while(!(P2IN & BIT7))& & & & & & & & & & & & & & & & display();& & & & & & & & & & & && & & & & & & & default:& & & & & & & & }& & & && &}& & & & ds1302_Write(write_protect,0x80);//打开写保护& & & & }}//纪念日处理程序void jww(void){char ww_ for(ww_xx=0;ww_xx&16;ww_xx++)& & & & {& & & &&&& & & & dis_buf1[ww_xx] = love1[ww_xx];& & & & & & & & dis_buf2[ww_xx] = love2[ww_xx];& & & & } love_years= year - 0x11;& & & & & & & & //减去2011年 dis_buf2[8]=love_years/16 + 0x30; dis_buf2[9]=love_years%16 + 0x30; display(); _DINT(); __delay_cycles(2000000);& & & & & & & & //延时显示出来 _EINT();}//主函数void main (void){& & & & CSL_init();& && && && && &&&// 初始化单片机& & & & lsd1602_init();& & & & & & & & & & & & & & & & // 初始化LCD1602& & & & ds1302_init();& & & & & & & & & & & & & & & & //初始化DS1302& & & & while(1)& & & & & & & & {& & & & & & & & _DINT();& & & & & & & & data_pro();& & & & & & & & & & & & & & & & //读取并处理数据& & & & & & & & _EINT();& & & & & & & & if(month== 0x03 && date== 0x07)//3月7日纪念日& & & & & & & & & & & & jww();& & & & & & & & update_disbuf();& & & & & & & & //更新显示字符& & & & & & & & display();& & & & & & & & & & & & & & & & //显示时间& & & & & & & & if(month== 0x03 && date== 0x07)//3月7日纪念日& & & & & & & &&&__delay_cycles(1000000);& & & & & & & & }}
10:53:58  
来个大神帮解决一下谢谢
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司对于STM32F103C8T6使用I2C模块驱动LCD1602液晶显示屏出现乱码是怎么回事? - STM32/STM8技术论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
对于STM32F103C8T6使用I2C模块驱动LCD1602液晶显示屏出现乱码是怎么回事?
20:46:28  
对于STM32F103C8T6使用I2C模块驱动LCD1602液晶显示屏出现这个问题是怎么回事对于这个显示乱码从哪几方面出发去解决这个问题呢?
P.jpg (2.22 MB, 下载次数: 1)
20:41 上传
希望大神可以帮忙解决一下!!!!
20:45 上传
点击文件名下载附件
下载积分: 积分 -1 分
1.4 MB, 下载次数: 8, 下载积分: 积分 -1 分
13:01:10  
有木有这个方面的大神 表示很急。。。
16:47:30  
先确定下I2C硬件设置好了没,开漏上拉电阻,然后时序对不对,可以尝试用简单的通讯进行验证,再进一步加入目前在做的程序
17:47:00  
...................................................................
工程师职场
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司正在初始化报价器1602液晶显示乱码是怎么回事?78b工3641、I/O口与LCD的数据口方向焊反
2、LCD的RS、RW、E的控制I/O口在程序编辑时定义错误
3、程序错误
你可以检查一下是不是这些有问题。一般是不会错的。希望能帮到你!
查看更多更多回答登一时你好,据我了解如下:
1.电磁干扰~
把音响,电源都放到桌面下~
当手机放到桌面上,一有电话或者短消息的时候,也会出现这种情况! 2.也可能是分辨率有问题,液晶要用专门的分辨率。
另外,在设置中调节一下字体外观。
再者,就是显示器问题了。
3.重影是因为显示器与显卡输出的信号不匹配,如果保证你的显卡没问题,驱动也没问题,只能是换其他型号的显示器了
还有个方法专业一点,就是进菜单里设置phase(相位)或者sharp(锐度),
一般可以解决这个问题
希望我的回答对你有所帮助。望采纳!
线断风筝软件或控制卡问题。  乱码现象可能是LED显示屏参数没有设置好,这个时候你就需要确定扫描配置问题,一般是1/4扫;如果不是软件问题,就检查控制卡是否有问题;若这些检测过之后都没有问题的话,可以联系服务商进行解决。
排线的问题  在排除供电问题的情况下,测试不良处模组供电是否正常(如果不正常的第一块有暗亮80%是供电有问题).
热门问答1234567891011121314151617181920查看更多21222324252627282930LCD1602 4位数据显示
#include&reg52.h&
#include&intrins.h&
sbit RS = P2^4;
//定义端口
sbit RW = P2^5;
sbit EN = P2^6;
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
#define DataPort P0
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
while(--t);
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
while(t--)
//大致延时1mS
DelayUs2x(245);DelayUs2x(245);
/*------------------------------------------------
------------------------------------------------*/
/*bit LCD_Check_Busy(void)
DataPort= 0xFF;
return (bit)(DataPort & 0x80);
/*------------------------------------------------
写入命令函数
------------------------------------------------*/
void LCD_Write_Com(unsigned char com)
// while(LCD_Check_Busy()); //忙则等待
DelayMs(5);
DataPort= com&&4;
/*------------------------------------------------
写入数据函数
------------------------------------------------*/
void LCD_Write_Data(unsigned char Data)
//while(LCD_Check_Busy()); //忙则等待
DelayMs(5);
DataPort= D
DataPort= Data&&4;
/*------------------------------------------------
------------------------------------------------*/
void LCD_Clear(void)
LCD_Write_Com(0x01);
DelayMs(5);
/*------------------------------------------------
写入字符串函数
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
if (y == 0)
LCD_Write_Com(0x80 + x);
//表示第一行
LCD_Write_Com(0xC0 + x);
//表示第二行
while (*s)
LCD_Write_Data( *s);
/*------------------------------------------------
写入字符函数
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
if (y == 0)
LCD_Write_Com(0x80 + x);
LCD_Write_Com(0xC0 + x);
LCD_Write_Data( Data);
/*------------------------------------------------
初始化函数
------------------------------------------------*/
void LCD_Init(void)
LCD_Write_Com(0x38);
/*显示模式设置*/
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x28);
//4bit 模式
LCD_Write_Com(0x08);
/*显示关闭*/
LCD_Write_Com(0x01);
/*显示清屏*/
LCD_Write_Com(0x06);
/*显示光标移动设置*/
DelayMs(5);
LCD_Write_Com(0x0C);
/*显示开及光标设置*/
/*------------------------------------------------
------------------------------------------------*/
void main(void)
LCD_Init();
LCD_Clear();//清屏
LCD_Write_Char(7,0,'o');
LCD_Write_Char(8,0,'k');
LCD_Write_String(1,1,"www.doflye.net");
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 电源干扰 的文章

 

随机推荐