这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» MCU» AT89C52单片机驱动LCD1602显示乱码的原因?附上源码

共4条 1/1 1 跳转至

AT89C52单片机驱动LCD1602显示乱码的原因?附上源码

工程师
2020-05-22 22:10:36 打赏


我最近用ATMEL的AT89C52单片机驱动LCD1602,但显示乱码。。。

以下是源码,大家帮我看看哪里出问题了?

谢谢!


#include

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

uchar code table[]="cm^2";

sbit lcden=P2^2;

sbit lcdrs=P2^0;

sbit lcdwr=P2^1;

sbit adwr=P3^6;

sbit adrd=P3^7;

sbit adcs=P2^5;

uchar num,ad_val;

void delay(uint z) //延时子函数

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void write_com(uchar com) //写命令

{

lcdrs=0;

lcdwr=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void write_data(uchar date) //写数据

{

lcdrs=1;

lcdwr=0;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void init() //液晶初始化

{

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}

uchar get_ad() //A/D 启动和转换程序

{

uchar ad_val;

adwr=1;

_nop_();

adwr=0; //一个向下的脉冲,启动 A/D 转换

_nop_();

adwr=1;

delay(5); //延迟 5 微秒,给 A/D 转换留一定的时间

P1=0xff; //读取 P1 口之前先给其全写 1

adrd=1; //选通 ADCS

_nop_();

adrd=0;

_nop_();

ad_val=P1; //AD 数据赋给 P1 口

adrd=1;

return ad_val;

}

void main() //主函数

{

uint A1,A2,A3,A4; //uint 的范围是 0-65535

ulong ad_val,ad_vo; //ulong 的范围是 0~2^32-1

adcs=0; //AD 的片选信号选通*/

ad_val=get_ad();

delay(10);

ad_val=ad_val*10000;

ad_vo= (45574-ad_val)/3522; //本来是 y=(4.5574-x)/0.3522

ad_vo=ad_vo*10000; //浮点数不能差分,把它们扩大 10000 倍

A1=ad_vo/100000;

A2=ad_vo%100000/10000;

A3=ad_vo%10000/1000;

A4=ad_vo%1000/100;

init();

write_com(0x80);

{

write_data(A1+48);

write_data(A2+48);

write_data('.');

write_data(A3+48);

write_data(A4+48);

delay(5);

}

write_com(0x80+0x40);

for(num=0;num<4;num++)

{

write_data(table[num]);

delay(5);

}

while(1);

}





关键词: 单片机 AT89C52 LCD1602 LCD L

工程师
2020-05-22 22:28:30 打赏
2楼

一般1602能显示就正常乱码多是读数不失常 。


工程师
2020-05-22 22:30:04 打赏
3楼

是不是初始化没做好,或者时序太快造成lcd的工作不稳定所以十位数显示乱码。


高工
2020-05-22 23:24:22 打赏
4楼

代码写的很简洁


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]