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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3743|回復(fù): 11
收起左側(cè)

LCD1602為什么會這么顯示?Proteus仿真仿真好好的,單片機(jī)實(shí)物就不行了

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 20 黑幣 回復(fù)本帖可獲得 20 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
ID:541471 發(fā)表于 2019-5-20 00:05 | 顯示全部樓層 |閱讀模式
仿真好好的到了單片機(jī)上出現(xiàn)了這個(gè)問題看圖
這字母一直從左到右循環(huán),按鍵的話下面還會出現(xiàn)數(shù)字5和7.

LCD顯示屏

LCD顯示屏

麻煩看一下哪里有問題!!!代碼在下面:
#include <reg52.h>
#include <intrins.h>                        //包含_nop_( )空函數(shù)指令的頭文件
#define uchar unsigned char
#define uint unsigned int
#define out P0
sbit RS=P3^4;                                         //位變量
sbit RW=P3^5;                                        //位變量
sbit E=P3^6;
sbit YES=P2^3;
sbit ST=P3^7;
sbit START=P3^0;
void lcd_initial(void);                                                //位變量
void lcd_initial(void);                                        //LCD初始化函數(shù)
void check_busy(void);                                 //檢查忙標(biāo)志函數(shù)
void write_command(uchar com);                         //寫命令函數(shù)
void write_data(uchar dat);                        //寫數(shù)據(jù)函數(shù)
void string(uchar ad ,uchar *s);
void delay(uint);                                //延時(shí)函數(shù)
unsigned char key_scan()
{
        unsigned char key_temp0,key_temp1;
        unsigned char key_num=0;
        P2=0x0f;
        key_temp0=P2;
        if(key_temp0!=0x0f)
        {
                delay(5);
                key_temp0=P2;
                if(key_temp0!=0x0f)
                {
                        P2=0xf0;
                        key_temp1=P2;
                        if(key_temp0==0x0e)
                        {
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=4;break;
                                        case 0xd0: key_num=3;break;
                                        case 0xb0: key_num=2;break;
                                        case 0x70: key_num=1;break;
                                        default:key_num=0;break;
                                }
                        }
                        else if(key_temp0==0x0d)
                        {
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=8;break;
                                        case 0xd0: key_num=7;break;
                                        case 0xb0: key_num=6;break;
                                        case 0x70: key_num=5;break;
                                        default:key_num=0;break;
                                }
                        }
                        else if(key_temp0==0x0b)
                        {
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=12;break;
                                        case 0xd0: key_num=11;break;
                                        case 0xb0: key_num=10;break;
                                        case 0x70: key_num=9;break;
                                        default:key_num=0;break;
                                }
                        }
                        else if(key_temp0==0x07)
                        {
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=16;break;
                                        case 0xd0: key_num=15;break;
                                        case 0xb0: key_num=14;break;
                                        case 0x70: key_num=13;break;
                                        default:key_num=0;break;
                                }
                        }
                }
        }
return key_num;
}


void main(void)                         //主函數(shù)
{
        unsigned char key_num;
        lcd_initial( );                        //調(diào)用對LCD初始化函數(shù)
   do
   {
                        key_num=key_scan();
                        string(0x82,"zhijing");                //顯示的第1行字符串
                  switch(key_num)
                        {
                                case 1 :string(0xC8,"1");  break;
                                case 2 :string(0xC8,"2");  break;
                                case 3 :string(0xC8,"3");  break;
                                case 4 :string(0xC8,"4");  break;
                                case 5 :string(0xC8,"5");  break;
                                case 6 :string(0xC8,"6");  break;
                                case 7 :string(0xC8,"7");  break;
                                case 8 :string(0xC8,"8");  break;
                                case 9 :string(0xC8,"9");  break;
                                case 10:string(0xC8,"0"); break;
                                case 11:string(0xC8,"."); break;
                                case 12:string(0xC8,"YES"); break;
                                case 13:string(0xC8,"YES"); break;
                                case 14:string(0xC8,"YES"); break;
                                case 15:string(0xC8,"YES"); break;
                                case 16:string(0xC8,"YES"); break;
                        }        
                        delay(100);                         //延時(shí)
                        write_command(0x01);                //寫入清屏命令
                        delay(1);                        //延時(shí)
         }          while(ST==1);
                  write_command(0x01);                //寫入清屏命令
                        delay(1);                        //延時(shí)
if(START==1)    //有按鍵按下
{           
delay(2000);
         
   {         
   string(0x80,"3614.1 cm3/s");

}
        }
delay(10000000);//延時(shí)
write_command(0x01);//寫入清屏命令
delay(1);//延時(shí)
while(1);
}
void delay(uint j)                        //1ms延時(shí)子程序
{
        uchar i=250;
        for(;j>0;j--)
{
                while(--i);
                i=249;
                while(--i);
                i=250;
        }
}
void check_busy(void)                        //檢查忙標(biāo)志函數(shù)
{
        uchar dt;
        do
        {
                P0=0xff;
                E=0;
                RS=0;        
                RW=1;
E=1;
dt=P0;
}while(dt&0x80);
E=0;
}
void write_command(uchar com)                 //寫命令函數(shù)
{
check_busy();
E=0;
RS=0;
RW=0;
out=com;
E=1;
_nop_( );
E=0;
delay(1);
}
void write_data(uchar dat)                                 //寫數(shù)據(jù)函數(shù)
{
        check_busy();
        E=0;
        RS=1;
        RW=0;
        out=dat;
        E=1;
        _nop_();
        E=0;
        delay(1);        
}
void LCD_initial(void)                         //液晶顯示器初始化函數(shù)
{
write_command(0x38);        //寫入命令0x38:8位兩行顯示,5×7點(diǎn)陣字符
write_command(0x0C);        //寫入命令0x0C:開整體顯示,光標(biāo)關(guān),無黑塊
write_command(0x06);        //寫入命令0x06:光標(biāo)右移

write_command(0x01);                         //寫入命令0x01:清屏
delay(1);
}
void string(uchar ad,uchar *s)        //輸出顯示字符串的函數(shù)
{
write_command(ad);
while(*s>0)
{
write_data(*s++);                        //輸出字符串,且指針增1
delay(50);
}
}

回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2019-5-20 08:28 | 顯示全部樓層
由于不知道你的硬件連接,我只試了1602和矩陣鍵盤。顯示是正常的,與你的照片顯示內(nèi)容不一樣,就是程序設(shè)置顯示的內(nèi)容:第一排顯示zhijing,第二排顯示按鍵值,或YES。
你的程序中的ST不知道是什么,所以沒有試出當(dāng)ST低電平后跳出do    while循環(huán)的現(xiàn)象。
回復(fù)

使用道具 舉報(bào)

ID:330198 發(fā)表于 2019-5-20 09:21 | 顯示全部樓層
硬件連線問題,你是不是沒共地,或者接了可調(diào)電阻另一端沒接地。
回復(fù)

使用道具 舉報(bào)

ID:541471 發(fā)表于 2019-5-20 09:48 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2019-5-20 08:28
由于不知道你的硬件連接,我只試了1602和矩陣鍵盤。顯示是正常的,與你的照片顯示內(nèi)容不一樣,就是程序設(shè)置 ...

你在實(shí)物上試得?還是仿真?
回復(fù)

使用道具 舉報(bào)

ID:62288 發(fā)表于 2019-5-20 09:56 | 顯示全部樓層
焊接問題的可能性比較大,程序一般不對的話是沒有顯示的。
回復(fù)

使用道具 舉報(bào)

ID:541471 發(fā)表于 2019-5-20 10:04 | 顯示全部樓層
zhanghyg 發(fā)表于 2019-5-20 09:21
硬件連線問題,你是不是沒共地,或者接了可調(diào)電阻另一端沒接地。

不是啊,都接好了,才發(fā)現(xiàn)電位器是100歐的,會不會是和這個(gè)有關(guān)。
回復(fù)

使用道具 舉報(bào)

ID:475247 發(fā)表于 2019-5-20 21:17 | 顯示全部樓層
這個(gè)問題你要這樣解。仿真與實(shí)物存最大不同就是時(shí)間問題!你要先顯一個(gè)你要顯示的數(shù)字或字母,設(shè)好要顯示的位置,來調(diào)時(shí)間,如果調(diào)好每一個(gè)再就是第二個(gè)................
       當(dāng)然也有直接的方法,下別人調(diào)好的代碼,改端口燒進(jìn)你的板子看看。完事就是對你的代碼與別人不同處

評分

參與人數(shù) 2黑幣 +16 收起 理由
shuisheng60 + 8 很給力!
jinsheng7533967 + 8 絕世好帖!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2019-5-21 07:09 | 顯示全部樓層
gggggklk 發(fā)表于 2019-5-20 09:48
你在實(shí)物上試得?還是仿真?

當(dāng)然是實(shí)物了

評分

參與人數(shù) 1黑幣 +8 收起 理由
yoxi + 8 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:543975 發(fā)表于 2019-5-21 17:14 | 顯示全部樓層
樓主問題解決了嗎?我也遇到差不多的問題
回復(fù)

使用道具 舉報(bào)

ID:472325 發(fā)表于 2019-5-22 23:37
HC6800-ES-V2.0 發(fā)表于 2019-5-21 07:09
當(dāng)然是實(shí)物了

HC6800-ES-V2.0普中的開發(fā)板差的狼!服務(wù)更差,經(jīng)常將不配套的東西發(fā)給別人!沒有一點(diǎn)商業(yè)道德!

ID:371051 發(fā)表于 2019-5-23 18:37 | 顯示全部樓層
要想實(shí)物像仿真一樣顯示,代碼所寫的管腳等都要與單片機(jī)上一致,否則會出現(xiàn)輸出混亂
回復(fù)

使用道具 舉報(bào)

ID:56855 發(fā)表于 2019-5-23 21:33 | 顯示全部樓層
注意刷新時(shí)序    刷新太快容易造成肉眼反應(yīng)不過來
回復(fù)

使用道具 舉報(bào)

ID:684813 發(fā)表于 2020-2-13 02:43 | 顯示全部樓層
應(yīng)該是晶振問題,檢查你晶振。看看程序用的啥晶振是12MHz,還是11.0592
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品久久视频 | 毛片免费看 | 亚洲天堂999 | 91精品久久久久久久久中文字幕 | 久久99精品久久久久久国产越南 | 成人在线视频观看 | 在线日韩欧美 | 91久久久久久 | 91 久久| 综合久久久 | 免费观看黄色片视频 | 成人小视频在线观看 | 正在播放一区二区 | 国产丝袜一区二区三区免费视频 | 国产精品久久久久久久7电影 | 精品一区二区免费视频 | 久久99精品久久久久久琪琪 | 中文字幕av中文字幕 | 精品欧美一区二区三区久久久 | 91秦先生艺校小琴 | 国产一区二区高清在线 | 久久久久亚洲 | 国产激情在线 | 免费骚视频 | 日本中文字幕日韩精品免费 | 日韩精品久久一区二区三区 | 成人黄色三级毛片 | 国产精品嫩草影院精东 | 国产精品成人一区二区三区夜夜夜 | 亚洲第一天堂无码专区 | 欧美一区二区三区四区视频 | 请别相信他免费喜剧电影在线观看 | 成年人在线观看视频 | 五月天婷婷综合 | 久久99精品久久久久久琪琪 | 久热中文字幕 | 国产激情综合五月久久 | 成人精品一区二区三区中文字幕 | 欧美乱做爰xxxⅹ久久久 | 欧美一级毛片在线播放 | 91精产国品一二三区 |