请选择 进入手机版 | 继续访问电脑版

普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2713|回复: 4

lcd1602不显示字符

[复制链接]

1

主题

2

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2021-4-3 14:14:02 | 显示全部楼层 |阅读模式
接了TDS传感器模块,用来做水质检测,LCD1602不显示字符,只亮光标。我TDS上的AO接口接到J52的IN3,是我接口接错了,还是程序的问题


* 硬件连接:
* ADC0809:OE -> P1.0; EOC -> P1.1; ST -> P1.2;CLK -> P1.3; A -> P1.4; B -> P1.5; C->P1.6;
*         OUT1~OUT8 -> P3口
* LCD1602:RS -> P0.0; RW -> P0.1; E -> P0.2;
*         D0~D7 -> P2口
* TDS传感器模块: VCC -> 5V; GND -> GND; AO -> IN3;
**********************************************************************************/
#include <reg52.h>
#include <adc0809.h>
#include <1602.h>
#include <intrins.h>
#include <math.h>
unsigned char disbuff[5]={0};
uint num;
float PH_V ,PH;
float TDS=0.0,TDS_voltage;
float TDS_value=0.0,voltage_value;
float temp_data=25.0;
float compensationCoefficient=1.0;//温度校准系数
float compensationVolatge;
float kValue=1.0;
/**************延时1s函数***************/
void Delay_1s()
{
     unsigned char a,b,c;
    for(c=167;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
}

/**************TDS值采集函数***************/
void TDS_Value_Conversion()
{
        Red_0809 () ;
        TDS_voltage=(num*5.0)/256;
        compensationCoefficient=1.0+0.02*((temp_data)-25.0);
        compensationVolatge=TDS_voltage/compensationCoefficient;
        TDS_value=(133.42*compensationVolatge*compensationVolatge*compensationVolatge -
        255.86*compensationVolatge*compensationVolatge + 857.39*compensationVolatge)*0.5*kValue;
       
          if((TDS_value<=0)){TDS_value=0;}
                if((TDS_value>1400)){TDS_value=1400;}
               
                /*显示TDS*/
                disbuff[0]=(int)(TDS_value)/1000+'0';
                disbuff[1]=(int)(TDS_value)%1000/100+'0';       
                disbuff[2]=(int)(TDS_value)%100/10+'0';
                disbuff[3]=(int)(TDS_value)%10+'0';
               
                DisplaySingleChar(0x4,1,disbuff[0]);
                DisplaySingleChar(0x5,1,disbuff[1]);
                DisplaySingleChar(0x6,1,disbuff[2]);
                DisplaySingleChar(0x7,1,disbuff[3]);
}

/**************主函数***************/
void main()
{        
        TMOD = 0x02; //中断初始化,adc0809产生时钟信号
        TH0  = 0x14;
        TL0  = 0x00;
        IE   = 0x82;
        TR0  = 1;
        P1   = 0x3f;
        LCDInit();         //LCD初始化
  DisplayString(0x0,0,"  Welcome  TDS  ");
        DisplayString(0x0,1,"Detection system");
        Delay_1s();
        WriteCmd(LCD_CLS);                 //清屏
       
        DisplaySingleChar(0x0,1,'T');
        DisplaySingleChar(0x1,1,'D');
        DisplaySingleChar(0x2,1,'S');
        DisplaySingleChar(0x3,1,'=');
       
        while(1)
        {
    TDS_Value_Conversion();
  }
}

void Timer0_INT() interrupt 1
{
        CLK = !CLK;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

48

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2021-4-3 18:56:33 | 显示全部楼层
用的是普中A2吧,一看程序中的LCD的RS、RW、E几个引脚定义就是乱来的它怎么还可能会正确显示呢
回复 支持 反对

使用道具 举报

1

主题

2

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2021-4-5 18:37:56 | 显示全部楼层
hantu 发表于 2021-4-3 18:56
用的是普中A2吧,一看程序中的LCD的RS、RW、E几个引脚定义就是乱来的它怎么还可能会正确显示呢

好的,谢谢。我知道怎么改程序
回复 支持 反对

使用道具 举报

0

主题

7

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2023-6-28 16:48:33 | 显示全部楼层
hantu 发表于 2021-4-3 18:56
用的是普中A2吧,一看程序中的LCD的RS、RW、E几个引脚定义就是乱来的它怎么还可能会正确显示呢

我的用的普中A3的板,我比对了RS、RW和E这几个引脚都是定义正确的,还是和QQQT的显示一样啊,用的还是例程,编译通过了的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-3-29 21:14 , Processed in 0.106609 second(s), 34 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表