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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請問各位大神,我這電路圖錯的嗎?怎么1602顯示不了字符

[復制鏈接]
跳轉到指定樓層
樓主
ID:847202 發表于 2020-11-22 11:22 來自觸屏版 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我單片機學得不是很好,因為我是自學的,師傅還沒有教到,而且程序是復制別人的,程序我還不是全部都理解,但是編譯沒有出現錯誤,求指導


單片機源程序如下:
#include<reg52.h>

#define Lcd1602_DB P2
sbit Lcd1602_RS = P3^0;
sbit Lcd1602_RW = P3^1;
sbit Lcd1602_E = P3^2;

void InitLcd1602();
void Lcdwritecmd(unsigned char cmd);
void LcdWaitReady();
void LcdShowstr(unsigned char x, unsigned char y, unsigned char *str);
void Lcdcursor(unsigned char x, unsigned char y);
void LcdWritedat( unsigned char str);

void main()
{
        InitLcd1602();
        LcdShowstr(5, 0, "L Z Y");
        LcdShowstr(3, 1, "come on!!!");
        while(1);
}
//初始化1602液晶
void InitLcd1602()
{
        Lcdwritecmd(0x38);//16*2顯示,5*7點陣,8位數據口
        Lcdwritecmd(0x0C); //顯示器開,光標關閉
        Lcdwritecmd(0x06);//文字不動,地址自動加+1
        Lcdwritecmd(0x01);//清屏
}
//向LCd1602寫入一個一字節命令,cmd為待寫入命令值
void Lcdwritecmd(unsigned char cmd)
{
        LcdWaitReady();
        Lcd1602_RS = 0;
        Lcd1602_RW = 0;
        Lcd1602_DB = cmd;
        Lcd1602_E = 1;
        Lcd1602_E = 0;
}
//等待液晶準備好
void LcdWaitReady()
{
        unsigned char sta;
        Lcd1602_DB = 0xFF;
        Lcd1602_RS = 0;
        Lcd1602_RW = 1;
        do{
           Lcd1602_E = 1;
           sta = Lcd1602_DB;//讀取狀態字
           Lcd1602_E = 0;
        }while(sta & 0x80);//bit7等于1表示液晶正忙,重復檢測直到其等于0為止
}
//在液晶上顯示字符串,(x,y)為對應屏幕上的起始坐標,str為字符指針
void LcdShowstr(unsigned char x, unsigned char y, unsigned char *str)
{
        Lcdcursor(x, y);//設置起始地址
        while(*str != '\0')//連續寫入字符串數據,直到檢測到結束符
        {
                LcdWritedat(*str++);//先取str指向的數據,然后str自加1
        }
}
//設置顯示RAM起始地址,亦即光標位置,(x,y)為對應屏幕上的字符坐標
void Lcdcursor(unsigned char x, unsigned char y)
{
          unsigned char addr;
          if(y == 0)//由輸入的屏幕坐標計算顯示RAM的地址
          {
                  addr = 0x00 + x; //第一行字符坐標地址從0x00起始
          }
          else         
          {
                  addr = 0x40 +  x;//第二行字符地址從0x40起始
          }
          Lcdwritecmd(addr | 0x80);//設置RAM地址
}
//向液晶寫入一個一字節數據,dat為待寫入數據值
void LcdWritedat(unsigned char str)
{
        LcdWaitReady();
        Lcd1602_RS = 1;
        Lcd1602_RW = 0;
        Lcd1602_E = 1;
        Lcd1602_DB = str;
        Lcd1602_E = 0;        
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:342822 發表于 2020-11-22 17:45 | 只看該作者
沒有錯誤可以仿真
重新編譯一下
回復

使用道具 舉報

板凳
ID:687694 發表于 2020-11-22 19:36 | 只看該作者
如果程序無誤,大概率是時序問題,通常此類例程在8951上運行,為12T單片機。故使用類似        Lcd1602_E = 1;
Lcd1602_E = 0;
這種直接控制io電平反轉是可以的,仿真中未必能行,請參考控制時序加入適當延遲就行了。
回復

使用道具 舉報

地板
ID:275826 發表于 2020-11-22 19:54 | 只看該作者
程序沒有錯誤,應該是電路圖那里畫的有問題
回復

使用道具 舉報

5#
ID:213173 發表于 2020-11-22 20:06 | 只看該作者
程序和仿真都沒有問題


回復

使用道具 舉報

6#
ID:847479 發表于 2020-11-22 22:24 | 只看該作者
看著沒毛病啊!
回復

使用道具 舉報

7#
ID:278840 發表于 2020-11-23 10:25 | 只看該作者
實測沒毛病,看看自己畫的圖是不是哪里畫錯了
回復

使用道具 舉報

8#
ID:748788 發表于 2020-11-23 10:31 | 只看該作者
將你的程序和仿真發上來,讓大家運行一下看看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线欧美 | 久久精品无码一区二区三区 | 免费国产一区 | 亚洲美女天堂网 | 成人日韩精品 | 日韩高清国产一区在线 | 精品国产一区二区三区在线观看 | 国产色爽 | 成人免费小视频 | 成人小视频在线观看 | 日本福利在线观看 | 欧美二区三区 | 91中文视频| 精品视频一区二区三区四区 | 日韩欧美在线视频 | 日韩在线视频免费观看 | 国产亚洲精品久久yy50 | 国产精彩视频一区 | 久久久久香蕉视频 | 在线观看成人精品 | 国产蜜臀| 亚洲欧美中文日韩在线v日本 | 国产一区二区在线免费观看 | 国产免费av网 | 九色在线观看 | 欧日韩在线 | 久久久久久国产免费视网址 | 91精品国产92 | 国产乱人伦精品一区二区 | 欧美一区视频 | 国产精品久久久久婷婷二区次 | 天天操妹子 | 中文字幕欧美日韩 | 亚洲人在线观看视频 | 99综合网 | 久久不卡区 | 99久久久国产精品免费消防器 | 一级特黄网站 | 久久国产精品99久久久久 | 欧美黑人体内she精在线观看 | 国产目拍亚洲精品99久久精品 |