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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LCD1602只顯示方格不顯示數據,怎么回事呢

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

單片機STC89C52,做了一個HX711的稱重電子秤。
程序:
#include <reg52.h>
#include <intrins.h>

// 定義LCD1602相關引腳
sbit RS = P2^6;   // RS引腳
sbit RW = P2^5;   // RW引腳
sbit E = P2^7;    // E引腳
sbit DATA = P0;   // 數據線引腳

// 定義HX711相關引腳
sbit PD_SCK = P1^5;   // 時鐘引腳
sbit DOUT = P1^6;     // 數據引腳

// 定義獨立按鍵引腳
sbit KEY = P3^2;

// 定義全局變量
bit tareFlag = 0;     // 去皮操作標志位
long tareValue = 0;   // 去皮值

// LCD1602寫命令
void LcdWriteCmd(unsigned char cmd) {
    RS = 0;
    RW = 0;
    DATA = cmd;
    _nop_();
    E = 1;
    _nop_();
    E = 0;
    _nop_();
}

// LCD1602寫數據
void LcdWriteData(unsigned char dat) {
    RS = 1;
    RW = 0;
    DATA = dat;
    _nop_();
    E = 1;
    _nop_();
    E = 0;
    _nop_();
}

// LCD1602初始化
void LcdInit() {
    LcdWriteCmd(0x38);   // 設置16x2顯示模式
    LcdWriteCmd(0x0c);   // 開啟光標并關閉閃爍
    LcdWriteCmd(0x06);   // 光標右移
    LcdWriteCmd(0x01);   // 清除顯示
    LcdWriteCmd(0x80);   // 設置顯示位置為第一行第一個字符
}

// HX711讀取數據
long Hx711Read() {
    unsigned char i;
    long value = 0;

    while(DOUT);

    for (i = 0; i < 24; i++) {
        PD_SCK = 1;
        value = value << 1;
        _nop_();
        if (DOUT) {
            value++;
        }
        PD_SCK = 0;
        _nop_();
    }

    for (i = 0; i < 1; i++) {
        PD_SCK = 1;
        _nop_();
        PD_SCK = 0;
        _nop_();
    }

    return value;
}

// 延時函數
void Delay(unsigned int n) {
    unsigned int i, j;

    for (i = n; i > 0; i--) {
        for (j = 110; j > 0; j--);
    }
}

// 顯示重量和去皮值
void DisplayWeight(long weight) {
    unsigned char i;
    unsigned long temp;
    unsigned char str[] = "Weight:";

    temp = weight;

    for (i = 7; i >= 0; i--) {
        str[7 - i + 7] = temp % 10 + '0';
        temp /= 10;
    }

    for (i = 0; i < 8; i++) {
        LcdWriteData(str[i]);
    }

    if (tareFlag) {
        unsigned char strTare[] = " Tare:";
        temp = tareValue;

        for (i = 7; i >= 0; i--) {
            strTare[7 - i + 6] = temp % 10 + '0';
            temp /= 10;
        }

        for (i = 0; i < 7; i++) {
            LcdWriteData(strTare[i]);
        }
    }
}

// 去皮操作
void Tare() {
    tareFlag = 1;
    tareValue = Hx711Read();
}

// 主函數
void main() {
    long weight;

    LcdInit();   // 初始化LCD1602
    Delay(5);

    while (1) {
        weight = Hx711Read();   // 讀取重量

        if (tareFlag) {
            weight -= tareValue;   // 計算凈重
        }

        DisplayWeight(weight);   // 顯示重量

        if (KEY == 0) {
            Delay(50);
            if (KEY == 0) {
                Tare();   // 執行去皮操作
                while (!KEY);
                Delay(10);
            }
        }
    }
}


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

使用道具 舉報

沙發
ID:262 發表于 2024-6-25 14:23 | 只看該作者
來看一下51hei論壇里面解決此問題的痛苦經歷吧:
51hei搜索框輸入"1602 方塊"或者"1602 黑塊"或者"1602 白塊"或者"1602 格":

這個是io口設置問題,最終搞定了:http://www.zg4o1577.cn/bbs/dpj-199732-1.html
http://www.zg4o1577.cn/bbs/dpj-168643-1.html
http://www.zg4o1577.cn/bbs/dpj-208189-1.html
http://www.zg4o1577.cn/bbs/dpj-210690-1.html

既有可能是軟件問題也有硬件問題
http://www.zg4o1577.cn/bbs/dpj-187378-1.html
http://www.zg4o1577.cn/bbs/dpj-160754-1.html
回復

使用道具 舉報

板凳
ID:619259 發表于 2024-6-25 16:18 | 只看該作者
可能的原因:
1.對比度調節沒調到最佳狀態。
2.寫命令和寫數據程序存在問題,造成初始化失敗和數據傳輸失敗。分析你的代碼,無忙檢測,說明你采用盲測的方法,即寫入數據時需要一定的延時,確保數據傳輸完畢,才能執行下一個指令。你代碼中“E = 1;   _nop_();   E = 0;”,顯然延時是不夠的。因不同的顯示屏的性能有差異,一般采用1ms延時,如果還不行,再加大延時。如果用的是更高速度的芯片,最好還是加上忙檢測。
回復

使用道具 舉報

地板
ID:366877 發表于 2024-6-25 16:44 | 只看該作者
大概率是對比度調節出了問題。延時問題只要看看手冊,按規定延時即可。
回復

使用道具 舉報

5#
ID:161164 發表于 2024-6-25 17:51 | 只看該作者









回復

使用道具 舉報

6#
ID:332444 發表于 2024-6-25 19:25 | 只看該作者
初學時用過帶的代碼似乎就是方塊的現象,所以,一直沒什么信心,很久后自己研究時序,自己寫驅動,就再也沒遇到方塊問題,到我帖子里面對比看看。
回復

使用道具 舉報

7#
ID:1127243 發表于 2024-6-27 14:42 | 只看該作者
如果在查看了對比度和引腳連接問題后仍無法解決,可以嘗試換一個顯示屏。我們上次做就是給的顯示屏壞掉了,查了很久的錯最后換了一個就好了
回復

使用道具 舉報

8#
ID:1127342 發表于 2024-6-27 20:18 | 只看該作者
應該是對比度調節的問題,先試試改這個看看
回復

使用道具 舉報

9#
ID:329625 發表于 2024-7-2 09:08 來自手機 | 只看該作者
實物的話會出現這種狀況 需要調節背光燈  然后同步做個仿真驗證一下 仿真里面不會出現這種現象
回復

使用道具 舉報

10#
ID:517951 發表于 2024-7-7 11:45 | 只看該作者
如果顯示兩行的方格, 就應該是V0 需要調節.
如果顯示一行的方格, 就應該是初始化代碼沒有正確的發送到1602的driver IC.
回復

使用道具 舉報

11#
ID:1128391 發表于 2024-7-7 14:00 | 只看該作者
第1行黑塊,第2行空白,是1602本身上電復位成功的標志。意味著單片機沒有進行初始化,需要檢查電路.
兩行都是顯示黑塊 嘗試調節電位器,直到黑塊消失。帶背光的1602 lcd在上電復位的成功的時候,調整正確的時候是看不見黑塊的。
回復

使用道具 舉報

12#
ID:1128391 發表于 2024-7-7 14:02 | 只看該作者
第1行黑塊,第2行空白,是1602本身上電復位成功的標志。意味著單片機沒有進行初始化,需要檢查電路.兩行都是顯示黑塊 嘗試調節電位器,直到黑塊消失。帶背光的1602 lcd在上電復位的成功的時候,調整正確的時候是看不見黑塊的。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品在线观看入口 | 亚洲综合色视频在线观看 | 中文字幕亚洲欧美 | 99久久精品国产一区二区三区 | 精品一区二区三区在线观看 | 91精品国产综合久久久密闭 | 天天夜碰日日摸日日澡 | 日韩中文一区二区三区 | 中文字幕在线观看国产 | 久久国产成人 | 91国产精品 | 99免费精品| 亚洲免费一区二区 | 欧美日韩亚洲视频 | 色婷婷精品久久二区二区蜜臂av | 91毛片在线观看 | www.色综合| 日韩精品一区二区三区免费视频 | 成人欧美一区二区三区色青冈 | 欧美日韩中文字幕在线播放 | 97视频在线看| 九九视频在线观看视频6 | 男女视频免费 | 日韩精品三区 | 精品网站999www | 久久综合一区 | 91久久精品国产91久久 | 国产精品国产三级国产aⅴ原创 | 18成人在线观看 | 欧美 日韩 综合 | 亚洲交性| 日韩av在线一区二区三区 | 日本一区高清 | 日韩中文字幕一区二区三区 | 日本不卡一区二区三区在线观看 | 国产精品精品视频一区二区三区 | www.成人免费视频 | 久久国产亚洲 | a精品视频 | 亚洲国产精品福利 | 日韩av一区在线观看 |