久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1989|回復: 6
打印 上一主題 下一主題
收起左側

單片機開發板LCD1602顯示屏只亮不顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:1062945 發表于 2023-2-13 23:53 來自觸屏版 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
在proteus仿真程序運行LCD1602有顯示,但在普中開發板上顯示屏只亮,不顯示,是哪里出了問題

mmexport1676303456136.png (60.56 KB, 下載次數: 56)

mmexport1676303456136.png

wx_camera_1676010638189.jpg (1.76 MB, 下載次數: 43)

wx_camera_1676010638189.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1062945 發表于 2023-2-14 09:29 | 只看該作者
這是程序代碼,求指點

void Lcd1602_Delay1ms(uint c)   //?? 0us
{
    uchar a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
            
}

#ifndef         LCD1602_4PINS         //???????LCD1602_4PINS?
void LCD_WriteCmd(uchar com)          //????
{
        LCD1602_E = 0;     //??
        LCD1602_RS = 0;           //??????
        LCD1602_RW = 0;           //????
        
        LCD1602_DATAPINS = com;     //????
        Lcd1602_Delay1ms(1);                //??????

        LCD1602_E = 1;                  //????
        Lcd1602_Delay1ms(5);          //????
        LCD1602_E = 0;
}
#else
void LCD_WriteCmd(uchar com)          //????
{
        LCD1602_E = 0;         //????
        LCD1602_RS = 0;         //??????
        LCD1602_RW = 0;         //????

        LCD1602_DATAPINS = com;        //??4???????P0?????,??????????
        Lcd1602_Delay1ms(2);

        LCD1602_E = 1;         //????
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;

//        Lcd1602_Delay1ms(1);
        LCD1602_DATAPINS = com << 4; //?????
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //????
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;
}
#endif
/*******************************************************************************
* ? ? ?         : LcdWriteData
* ????                   : ?LCD?????????
* ?    ?         : dat
* ?    ?         : ?
*******************************************************************************/                  
#ifndef         LCD1602_4PINS                  
void LCD_WriteData(uchar dat)                        //????
{
        LCD1602_E = 0;        //????
        LCD1602_RS = 1;        //??????
        LCD1602_RW = 0;        //????

        LCD1602_DATAPINS = dat; //????
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;   //????
        Lcd1602_Delay1ms(5);   //????
        LCD1602_E = 0;
}
#else
void LCD_WriteData(uchar dat)                        //????
{
        LCD1602_E = 0;          //????
        LCD1602_RS = 1;          //??????
        LCD1602_RW = 0;          //????

        LCD1602_DATAPINS = dat;        //??4???????P0?????,??????????
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //????
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;

        LCD1602_DATAPINS = dat << 4; //?????
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //????
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;
}
#endif
/*******************************************************************************
* ? ? ?       : LcdInit()
* ????                 : ???LCD?
* ?    ?       : ?
* ?    ?       : ?
*******************************************************************************/                  
#ifndef                LCD1602_4PINS
void LcdInit()                                                  //LCD??????
{
         LCD_WriteCmd(0x38);  //???
        LCD_WriteCmd(0x0c);  //????????
        LCD_WriteCmd(0x06);  //??????1
        LCD_WriteCmd(0x01);  //??
        LCD_WriteCmd(0x80);  //????????
}
#else
void LCD_Init()                                                  //LCD??????
{
        LCD_WriteCmd(0x32);         //?8?????4???
        LCD_WriteCmd(0x28);         //?????????
        LCD_WriteCmd(0x0c);  //????????
        LCD_WriteCmd(0x06);  //??????1
        LCD_WriteCmd(0x01);  //??
        LCD_WriteCmd(0x80);  //????????
}
#endif



void LCD_Clear()
{
        LCD_WriteCmd(0x01);
        LCD_WriteCmd(0x80);        
}

//??????????

void LCD_Dispstring(u8 x,u8 line,u8 *p)         
{
        char i=0;
        if(line<1)           //?????
        {        
                while(*p!='\0')
                {
                        if(i<16-x)
                        {
                                LCD_WriteCmd(0x80+i+x);        
                        }
                        else
                        {
                                LCD_WriteCmd(0x40+0x80+i+x-16);        
                        }
                        LCD_WriteData(*p);
                        p++;
                        i++;        
                }        
        }
        else                   //?2???
        {
                while(*p!='\0')
                {
                        if(i<16-x)
                        {
                                LCD_WriteCmd(0x80+0x40+i+x);        
                        }
                        else
                        {
                                LCD_WriteCmd(0x80+i+x-16);        
                        }
                        LCD_WriteData(*p);
                        p++;
                        i++;        
                }        
        }               
}
??????:

#include "public.h"
#include "lcd.h"
#include "temp.h"
#include "i2c.h"


sbit k3=P3^1;        //???????   
sbit k1=P3^0;        //?                           
sbit k2=P3^2;        //?                          

sbit led=P2^0; //?????

sbit beep=P1^5;          //?????
sbit relay=P1^4;  //????
sbit moto=P1^0;   //????


char set_templ=25,set_temph=32;  //??????????
u16 temp_val;  //???????
u8 mode;  //????

void Temp_DataPros()
{
        short temp;
        u8 temp_buf[5];
        temp=Ds18b20ReadTemp();
        temp_val=temp;        
        if(temp<0)
        {
                temp=-temp;
                LCD_Dispstring(2+5,0,"-");
        }
        else
        {
                LCD_Dispstring(2+5,0," ");
        }

        temp_buf[0]=temp/100+0x30;
        temp_buf[1]=temp%100/10+0x30;
        temp_buf[2]='.';
        temp_buf[3]=temp%100%10+0x30;
        temp_buf[4]='\0';
        LCD_Dispstring(2+6,0,temp_buf);                 //???????xx.x

        temp_buf[0]=set_temph/10+0x30;
           temp_buf[1]=set_temph%10+0x30;
        temp_buf[2]='\0';
        LCD_Dispstring(5,1,temp_buf);          //??????????xx

        temp_buf[0]=set_templ/10+0x30;
           temp_buf[1]=set_templ%10+0x30;
        temp_buf[2]='\0';
        LCD_Dispstring(14,1,temp_buf);         //??????????xx
}



#define  K1_MODE  1
#define  K2_ADD  2
#define  K3_DEC  3

//mode:  0-????   1-????
u8 KEY_Scan(u8 mode)
{
        static u8 key=1;
        if(key&&(k1==0||k2==0||k3==0))
        {
                delay(300);   //??
                key=0;
                if(k3==0)
                {
                        return K1_MODE;
                }
                else if(k1==0)
                {
                        return K2_ADD;
                }
                else if(k2==0)
                {
                        return K3_DEC;        
                }
        }
        else if(k1==1&&k2==1&&k3==1)
        {
                key=1;        
        }
        if(mode)
        {
                key=1;
        }
        return 0;        
}

void KEY_Pros()
{
        u8 key;
        u8 temph_buf[3];

        key=KEY_Scan(0);
        
        if(key==K1_MODE)   //????
        {
                mode++;
                LCD_Clear();

                if(mode==1)
                {
                        LCD_Dispstring(0,0,"SETH:    C");               
                }
                else if(mode==2)
                {
                        LCD_Dispstring(0,1,"SETL:    C");        
                }
                else
                {
                        mode=0;
                        LCD_Dispstring(2,0,"Temp:      C");
                        LCD_Dispstring(0,1,"SETH:  ");
                        LCD_Dispstring(9,1,"SETL:  ");        
                }
        }
        if(mode==1)         //??????
        {
                switch(key)        
                {
                        case K2_ADD:            //?
                                                set_temph++;
                                                if(set_temph>=80)set_temph=80;
                                                break;
                        case K3_DEC:          //?
                                                set_temph--;
                                                if(set_temph<=0)set_temph=0;
                                                break;
                }

                temph_buf[0]=set_temph/10+0x30;
                temph_buf[1]=set_temph%10+0x30;
                temph_buf[2]='\0';
                   LCD_Dispstring(6,0,temph_buf);
                At24c02Write(0,set_temph);
        }

        else if(mode==2)  //??????
        {
                switch(key)        
                {
                        case K2_ADD:            //?
                                                set_templ++;
                                                if(set_templ>=80)set_templ=80;
                                                break;
                        case K3_DEC:          //?
                                                set_templ--;
                                                if(set_templ<=0)set_templ=0;
                                                break;
                }

                temph_buf[0]=set_templ/10+0x30;
                temph_buf[1]=set_templ%10+0x30;
                temph_buf[2]='\0';
                   LCD_Dispstring(6,1,temph_buf);
                At24c02Write(2,set_templ);
        }
        


}



void sound()
{
        u8 i=50;
        while(i--)
        {
                beep=!beep;
                delay(10);
        }
}
void TempData_Compare()
{
        if(temp_val>set_temph*10)        //?????????   ??  ??
        {
                led=0;
                moto=1;
                relay=1;
                sound();               
        }
        else if(temp_val<set_templ*10)         //?????????   ??  ??
        {
                led=1;
                moto=0;
                relay=0;
                sound();               
        }
        else                      //??????????????   ????  ????  ????
        {
                moto=0;
                led=1;
                relay=1;
        }
}

void kai_display()
{
        if(At24c02Read(255)!=18)
        {
                At24c02Write(0,set_temph);
                At24c02Write(2,set_templ);
                At24c02Write(255,18);        
        }
        else
        {
                set_temph=At24c02Read(0);
                set_templ=At24c02Read(2);        
        }

        LCD_Dispstring(2,0,"Temp:     C");
        LCD_Dispstring(0,1,"SETH:  ");
        LCD_Dispstring(9,1,"SETL:  ");
}

void main()
{
        moto=0;
        led=1;
        relay=1;

        LCD_Init();
        kai_display();
        while(1)
        {
                if(mode==0)
                        Temp_DataPros();
                KEY_Pros();        
                TempData_Compare();                                
        }
}
回復

使用道具 舉報

板凳
ID:94031 發表于 2023-2-14 16:22 | 只看該作者
調對比度電位器
回復

使用道具 舉報

地板
ID:161164 發表于 2023-2-14 16:22 | 只看該作者
有沒有可能插反了?
回復

使用道具 舉報

5#
ID:155507 發表于 2023-2-14 17:56 | 只看該作者
普中開發板 有些 LCD 是用4位的。
回復

使用道具 舉報

6#
ID:384109 發表于 2023-2-14 21:16 | 只看該作者
只有一排方塊,初始化不成功
回復

使用道具 舉報

7#
ID:16255 發表于 2023-2-15 10:51 | 只看該作者
這個時候(單排方塊)通常要考慮接線是否正確。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久久久久久91 | 夜色www国产精品资源站 | 国产一区二区欧美 | 日韩视频在线观看一区二区 | www312aⅴ欧美在线看 | 国产在线观看一区二区三区 | 亚洲综合一区二区三区 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 欧美日韩一区二区在线 | 精品毛片视频 | 国产高清视频 | 中文字幕 视频一区 | 国产传媒毛片精品视频第一次 | 国产综合av | 久久精品无码一区二区三区 | 精品国产乱码久久久久久88av | 国内精品久久久久久 | 四虎影院新网址 | 日日干天天干 | 国产精品视频不卡 | 日本黄色大片免费 | 国产成人99久久亚洲综合精品 | 久久久久久免费毛片精品 | 色综合久久久 | 日韩欧美在线观看 | 99国产视频 | 亚洲网站在线观看 | 天天夜干 | 欧美一级视频免费看 | 欧美一区二区在线观看 | 天天操夜夜拍 | 自拍偷拍亚洲欧美 | 亚洲精品一区中文字幕乱码 | 日韩精品一区二区三区在线播放 | 中文字幕在线视频精品 | 精品成人一区 | 国产激情网站 | 色婷婷久久综合 | 97久久精品 | www.97国产 | 欧美一级二级在线观看 |