欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: lcd單片機驅動lcd1602寫數據0x41,顯示亂碼,仿真正常。可能什么問題? [打印本頁]

作者: keil    時間: 2017-4-4 17:29
標題: lcd單片機驅動lcd1602寫數據0x41,顯示亂碼,仿真正常。可能什么問題?

lcd1602寫數據0x41,顯示亂碼,仿真正常。可能什么問題?
/***********1602液晶靜態顯示**************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

uchar j;
uchar k;
sbit LCD_EN=P2^5;
sbit LCD_RS=P2^3;
sbit LCD_RW=P2^4;

void delay_10us(uchar i)
{
    unsigned char a;
        for(j=i;j>0;j--)
        {
    for(a=3;a>0;a--);
        }
}

void write_command(uchar com)
{
   LCD_RS=0;
   LCD_RW=0;
   P0=com;
   delay_10us(100);
   LCD_EN=1;
   delay_10us(100);
   LCD_EN=0;
}

void write_data(uchar dat)
{
   LCD_RS=1;
   LCD_RW=0;
   P0=dat;
   delay_10us(100);
   LCD_EN=1;
   delay_10us(100);
   LCD_EN=0;
}

void LCD_init()
{
  LCD_EN=0;
  write_command(0x3c);          //設置顯示模式
  write_command(0x0f);          //設置開/關及光標設置
  write_command(0x06);          //光標左右移動
  write_command(0x01);          //清屏,及數據指針清零
  write_command(0x80);          //數據指針地址
}


void main(void)
{
   LCD_init();
   write_data(0x41);
   while(1);
}


作者: liuyier1989    時間: 2017-4-4 19:25
你設置端口號是根據什么設置的。就這么點程序嗎???
作者: 我喜歡賣萌    時間: 2017-4-4 19:35
如果仿真沒問題的話,那可能是因為電路弄錯了,你是用的pcb板還是自己焊的
作者: imxuheng    時間: 2017-4-4 21:27
這就有點像“理論與實際的差距”,我之前也有遇到類似的情況,仿真時用寫好的LCD驅動程序顯示正常,下載到自制的板子上就完全不顯示,我覺得可參考以下兩點修改意見
1、檢查接線,清理干凈板子
2、調程序,特別是延時長短

作者: keil    時間: 2017-4-5 10:54
我喜歡賣萌 發表于 2017-4-4 19:35
如果仿真沒問題的話,那可能是因為電路弄錯了,你是用的pcb板還是自己焊的

用的開發板
作者: keil    時間: 2017-4-5 11:04
liuyier1989 發表于 2017-4-4 19:25
你設置端口號是根據什么設置的。就這么點程序嗎???

端口號是isp自動掃描的。根據郭天祥教程來寫的,就這么多啊。實在搞不懂了
作者: 你像風兒來了    時間: 2017-4-5 16:20
可以提供下這個函數嗎
LCD_init();
作者: 你像風兒來了    時間: 2017-4-5 16:22
剛說錯了,你這個有可能是數據口沒有初始化,
作者: 你像風兒來了    時間: 2017-4-5 16:24
寫數據和命令之前要判斷顯示屏是否繁忙

void busy()
{
uchar busy;
P0=0xff;//復位系統總線,非常重要
RS=0;
RW=1;
do
{
E=1;
busy=P0;
E=0;
}
while(busy&0x80);
E=0;
}
作者: keil    時間: 2017-4-6 15:43
你像風兒來了 發表于 2017-4-5 16:22
剛說錯了,你這個有可能是數據口沒有初始化,

數據口沒初始化?能具體說明下嗎?
作者: keil    時間: 2017-4-6 15:44
你像風兒來了 發表于 2017-4-5 16:24
寫數據和命令之前要判斷顯示屏是否繁忙

void busy()

好的,謝謝啦,我再去試試
作者: keenJS    時間: 2017-10-31 17:25
您好,想請問下您,這個亂碼的問題解決了么

作者: zxhzxh6666    時間: 2017-10-31 18:14
程序我看了,沒問題,既然仿真也沒有問題的話,那就是你硬件的問題了
作者: shuisheng60    時間: 2019-2-5 22:33
void main(void)
{
   LCD_init();
   write_data(0x41);  //這里是有問題的,你要0x41放到哪個位置都沒設好,不出問題才是問題
   while(1);
}





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1