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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+lcd1602初始化不成功 求幫助

[復制鏈接]
跳轉到指定樓層
樓主



大神幫我看看哪兒的問題

#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit rs=P2^0;
sbit wr=P2^1;
sbit en=P2^2;
uint i,j;
delay(uint x)
{
        while(x--);
}
void write_com(uchar com)
{
        rs=0;
        wr=0;
        en=0;
        P1=com;
        en=1;
        delay(5);
        en=0;
}

void write_data(uchar bat)
{
        rs=1;
        wr=0;
        en=0;
        P1=bat;
        en=1;
        delay(5);
        en=0;
}
void init()
{
        write_com(0x38);
        write_com(0x08);
        write_com(0x01);
        write_com(0x06);
        write_com(0x0f);
}

void main()
{
        init();
        write_data("A");
        while(1);
}

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

使用道具 舉報

沙發
ID:213173 發表于 2020-7-10 06:32 | 只看該作者
由于對LCD讀寫數據之前沒有判忙,所以延時函數時間就嫌短,導致初始化失敗,建議延時1ms左右。
void write_com(uchar com)
{
        rs=0;
        wr=0;
        en=0;
        P1=com;
        delay(100);
        en=1;
        delay(100);
        en=0;
}

void write_data(uchar bat)
{
        rs=1;
        wr=0;
        en=0;
        P1=bat;
        delay(100);
        en=1;
        delay(100);
        en=0;
}
回復

使用道具 舉報

板凳
ID:477932 發表于 2020-7-10 07:59 | 只看該作者
仿真玩的時候可以不判忙,不接晶振與電源,實際操作是少不了的!
回復

使用道具 舉報

地板
ID:97554 發表于 2020-7-10 08:54 | 只看該作者
void main()
{
        init();

在這里加一句
write_com(0x80);
這個寫命令是設置你寫的數據的起始位置,0x80是第一行第一位
        write_data("A");
        while(1);
}
回復

使用道具 舉報

5#
ID:97554 發表于 2020-7-10 09:15 | 只看該作者
1、主程序中使用了延時函數,但是這個延時函數之前沒有聲明;
2、延時函數寫的有誤,僅5個周期;
3、主函數中沒有設定指針,也就是字符顯示的初始位置。

你按照下邊的改一下試試吧。改動的地方我用了紅色
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
void Delay()        ;
sbit rs=P2^0;
sbit wr=P2^1;
sbit en=P2^2;


void delay(uint z)
{
   uint x,y;
   for(x=z;x>0;x--)
   for(y=19;y>0;y--);
}

void write_com(uchar com)
{
        rs=0;
        wr=0;
        en=0;
        P1=com;
        en=1;
        delay(5);
        en=0;
}

void write_data(uchar bat)
{
        rs=1;
        wr=0;
        en=0;
        P1=bat;
        en=1;
        delay(5);
        en=0;
}
void init()
{
        write_com(0x38);
        write_com(0x08);
        write_com(0x01);
        write_com(0x06);
        write_com(0x0f);
}

void main()
{
        init();
                write_com(0x80);
        write_data('A');
        while(1);
}


回復

使用道具 舉報

6#
ID:97554 發表于 2020-7-10 09:32 | 只看該作者
錯誤太多,我的水平有限,還是沒有全部解決。
回復

使用道具 舉報

7#
ID:510861 發表于 2020-7-10 12:40 來自手機 | 只看該作者
楊雪飛 發表于 2020-7-10 09:15
1、主程序中使用了延時函數,但是這個延時函數之前沒有聲明;
2、延時函數寫的有誤,僅5個周期;
3、主函 ...

等下回去試試謝謝啦
回復

使用道具 舉報

8#
ID:510861 發表于 2020-7-10 12:41 來自手機 | 只看該作者
static 發表于 2020-7-10 07:59
仿真玩的時候可以不判忙,不接晶振與電源,實際操作是少不了的!

等下去實驗下  謝謝了
回復

使用道具 舉報

9#
ID:510861 發表于 2020-7-10 12:42 來自手機 | 只看該作者
wulin 發表于 2020-7-10 06:32
由于對LCD讀寫數據之前沒有判忙,所以延時函數時間就嫌短,導致初始化失敗,建議延時1ms左右。
void write ...

好的  等下試一下  謝謝
回復

使用道具 舉報

10#
ID:97554 發表于 2020-7-10 14:20 | 只看該作者
只能幫你這么多了


#include<reg52.h>   
#define uint unsigned int  
#define uchar unsigned char
sbit rs=P2^0;   
sbit rw=P2^1;        
sbit en=P2^2;        

void delay(uint n)                  
{
    uint x,y;  
    for(x=n;x>0;x--)
    for(y=110;y>0;y--);
}

void lcd_wcom(uchar com)                  
{
    rs=0;            
    rw=0;            
    P0=com;            
    delay(5);      
    en=1;        
    en=0;
}


void lcd_wdat(uchar dat)           
{
    rs=1;      
    rw=0;        
    P0=dat;        
    delay(5);   
    en=1;      
    en=0;
}


void lcd_init()               
{
    lcd_wcom(0x38);         
    lcd_wcom(0x0c);   
    lcd_wcom(0x06);   
    lcd_wcom(0x01);   
}


void main()           
{     

    lcd_init();              
    lcd_wcom(0x80);      
    lcd_wdat('a');           
    delay(200);
    while(1);      
}

回復

使用道具 舉報

11#
ID:510861 發表于 2020-7-10 21:13 | 只看該作者
楊雪飛 發表于 2020-7-10 14:20
只能幫你這么多了

可以初始化   但是不能寫數據沒有 反應
回復

使用道具 舉報

12#
ID:510861 發表于 2020-7-10 21:18 | 只看該作者
wulin 發表于 2020-7-10 06:32
由于對LCD讀寫數據之前沒有判忙,所以延時函數時間就嫌短,導致初始化失敗,建議延時1ms左右。
void write ...

根據你修改的代碼   不能初始化  是不是1602lcd壞了?
回復

使用道具 舉報

13#
ID:510861 發表于 2020-7-10 21:25 | 只看該作者
void main()           
{     

    lcd_init();              
    lcd_wcom(0x80+0x40);      
    lcd_wdat('8');
    lcd_wcom(0x80+0x41);      
    lcd_wdat('9');           這樣寫可以顯示第二行       這咋回事????????????
回復

使用道具 舉報

14#
ID:510861 發表于 2020-7-10 22:11 | 只看該作者
第一行可以顯示了   結果測試   第一行的十六位地址為  0x40   第二行為0x80+0x40      即0xc0  但是不能顯示字母或者漢字  應該是沒有字庫的原因  正在找怎么加字庫
回復

使用道具 舉報

15#
ID:97554 發表于 2020-7-11 08:45 | 只看該作者
欣語寶貝 發表于 2020-7-10 22:11
第一行可以顯示了   結果測試   第一行的十六位地址為  0x40   第二行為0x80+0x40      即0xc0  但是不能顯 ...

第一,硬件方面,1602的V0口對比度電阻沒有調好,液晶顯示對比度很差
第二、字母是可以顯示的,你看一下1602的資料,不支持漢字顯示,支持部分自定義字符。

直接把數字替換成字母應該就可以正常顯示的,除非你用了全角輸入的。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

16#
ID:800963 發表于 2020-7-11 11:59 | 只看該作者
有寫命令寫數據,還得要有忙檢測才行,不過你好像已經弄好了,我就來蹭蹭哈哈哈哈

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

17#
ID:446775 發表于 2021-1-13 14:46 | 只看該作者
wulin 發表于 2020-7-10 06:32
由于對LCD讀寫數據之前沒有判忙,所以延時函數時間就嫌短,導致初始化失敗,建議延時1ms左右。
void write ...

加延時貌似不太管用,我也是碰到了這個問題,按照您的方法,在程序里添加了延時,但是問題依舊
回復

使用道具 舉報

18#
ID:929538 發表于 2021-9-26 10:52 來自手機 | 只看該作者
欣語寶貝 發表于 2020-7-10 21:13
可以初始化   但是不能寫數據沒有 反應

請問你是怎么讓lcd初始化成功的,我現在也遇到了相同的問題,解決不了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区三区四区五区中文 | 亚洲一一在线 | 久久一区二区视频 | 波多野结衣先锋影音 | www.久久99 | 亚洲一区二区免费 | 国产一区91精品张津瑜 | 91在线影院| 久久精品综合网 | 国产精品毛片久久久久久 | 精品欧美久久 | 亚洲一区二区视频在线观看 | 美女操网站 | ww 255hh 在线观看 | 91精品国产麻豆 | 成人激情视频在线 | 久久一区二区三区四区五区 | 久久性色| 久久国产精品99久久久久久丝袜 | 一本一道久久a久久精品综合 | 久久久综合 | 国产日韩视频 | 精品电影 | 中文字幕久久精品 | 亚洲国产精品一区二区三区 | 色偷偷人人澡人人爽人人模 | 久久伊人精品一区二区三区 | 成人精品一区二区 | 成人妇女免费播放久久久 | 国产一区二区三区四区在线观看 | 黄色网址大全在线观看 | 国产一区免费视频 | 精国产品一区二区三区 | 久久成人综合 | 天天躁日日躁狠狠躁2018小说 | 日韩综合一区 | 少妇特黄a一区二区三区88av | 二区中文字幕 | 亚洲激情在线视频 | 国产成人综合在线 | 狠狠做深爱婷婷综合一区 |