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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3792|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

1602顯示問(wèn)題

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:231638 發(fā)表于 2017-9-26 21:57 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
|程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一|
/**************************************************************************************
*                              LCD1602液晶顯示實(shí)驗(yàn)                                                                                                  *
實(shí)現(xiàn)現(xiàn)象:        具體接線操作請(qǐng)參考視頻教程
                        下載程序后插上LCD1602液晶在開(kāi)發(fā)板上,即可顯示
注意事項(xiàng):                                                                                                                                                                  
***************************************************************************************/

#include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
#include "lcd.h"

typedef unsigned int u16;          //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;

u8 Disp[16]={" Pechin Science "};

/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無(wú)
* 輸    出         : 無(wú)
*******************************************************************************/
void main(void)
{
        u8 i;
        LcdInit();
        LcdWriteCom(0x80);
        for(i=0;i<16;i++)
        {
                LcdWriteData(Disp[i]);       
        }

        while(1);                               
}
|程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一||程序一|












|程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二|
/*******************************************************************************
* 實(shí)驗(yàn)名                           : 1602顯示紅外線值實(shí)驗(yàn)
* 使用的IO             : 電機(jī)用P1口,鍵盤(pán)使用P3.0、P3.1、P3.2、P3.3
* 實(shí)驗(yàn)效果       : LCD1602顯示出讀取到的紅外線的值
*        注意                                         :
*******************************************************************************/
#include<reg51.h>
#include"lcd.h"

sbit IRIN=P3^2;

unsigned char code CDIS1[13]={" Red Control "};
unsigned char code CDIS2[13]={" IR-CODE:--H "};
unsigned char IrValue[6];
unsigned char Time;
void IrInit();
void DelayMs(unsigned int );
/*******************************************************************************
* 函數(shù)名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸入           : 無(wú)
* 輸出                  : 無(wú)
*******************************************************************************/

void main()
{
        unsigned char i;
        IrInit();       
        LcdInit();
        LcdWriteCom(0x80);
        for(i=0;i<13;i++)
        {
                LcdWriteData(CDIS1[i]);       
        }
        LcdWriteCom(0x80+0x40);
        for(i=0;i<13;i++)
        {
                LcdWriteData(CDIS2[i]);       
        }
        while(1)
        {
                IrValue[4]=IrValue[2]>>4;                          //高位
                IrValue[5]=IrValue[2]&0x0f;                //低位       
                if(IrValue[4]>9)
                {
                        LcdWriteCom(0xc0+0x09);                        //設(shè)置顯示位置
                        LcdWriteData(0x37+IrValue[4]);        //將數(shù)值轉(zhuǎn)換為該顯示的ASCII碼
                }
                else
                {
                        LcdWriteCom(0xc0+0x09);
                        LcdWriteData(IrValue[4]+0x30);        //將數(shù)值轉(zhuǎn)換為該顯示的ASCII碼
                }       
                if(IrValue[5]>9)
                {
                        LcdWriteCom(0xc0+0x0a);
                        LcdWriteData(IrValue[5]+0x37);                //將數(shù)值轉(zhuǎn)換為該顯示的ASCII碼
                }
                else
                {
                        LcdWriteCom(0xc0+0x0a);
                        LcdWriteData(IrValue[5]+0x30);                //將數(shù)值轉(zhuǎn)換為該顯示的ASCII碼
                }       
        }
}                                                                         
/*******************************************************************************
* 函數(shù)名         : DelayMs()
* 函數(shù)功能                   : 延時(shí)
* 輸入           : x
* 輸出                  : 無(wú)
*******************************************************************************/

void DelayMs(unsigned int x)   //0.14ms誤差 0us
{
unsigned char i;
  while(x--)
{
  for (i = 0; i<13; i++)
{}
}
}
/*******************************************************************************
* 函數(shù)名         : IrInit()
* 函數(shù)功能                   : 初始化紅外線接收
* 輸入           : 無(wú)
* 輸出                  : 無(wú)
*******************************************************************************/

void IrInit()
{
        IT0=1;//下降沿觸發(fā)
        EX0=1;//打開(kāi)中斷0允許
        EA=1;        //打開(kāi)總中斷

        IRIN=1;//初始化端口
}
/*******************************************************************************
* 函數(shù)名         : ReadIr()
* 函數(shù)功能                   : 讀取紅外數(shù)值的中斷函數(shù)
* 輸入           : 無(wú)
* 輸出                  : 無(wú)
*******************************************************************************/

void ReadIr() interrupt 0
{
        unsigned char j,k;
        unsigned int err;
        Time=0;                                         
        DelayMs(70);

        if(IRIN==0)                //確認(rèn)是否真的接收到正確的信號(hào)
        {         
               
                err=1000;                                //1000*10us=10ms,超過(guò)說(shuō)明接收到錯(cuò)誤的信號(hào)
                /*當(dāng)兩個(gè)條件都為真是循環(huán),如果有一個(gè)條件為假的時(shí)候跳出循環(huán),免得程序出錯(cuò)的時(shí)
                侯,程序死在這里*/       
                while((IRIN==0)&&(err>0))        //等待前面9ms的低電平過(guò)去                 
                {                       
                        DelayMs(1);
                        err--;
                }
                if(IRIN==1)                        //如果正確等到9ms低電平
                {
                        err=500;
                        while((IRIN==1)&&(err>0))                 //等待4.5ms的起始高電平過(guò)去
                        {
                                DelayMs(1);
                                err--;
                        }
                        for(k=0;k<4;k++)                //共有4組數(shù)據(jù)
                        {                               
                                for(j=0;j<8;j++)        //接收一組數(shù)據(jù)
                                {

                                        err=60;               
                                        while((IRIN==0)&&(err>0))//等待信號(hào)前面的560us低電平過(guò)去
//                                        while (!IRIN)
                                        {
                                                DelayMs(1);
                                                err--;
                                        }
                                        err=500;
                                        while((IRIN==1)&&(err>0))         //計(jì)算高電平的時(shí)間長(zhǎng)度。
                                        {
                                                DelayMs(1);//0.14ms
                                                Time++;
                                                err--;
                                                if(Time>30)
                                                {
                                                        EX0=1;
                                                        return;
                                                }
                                        }
                                        IrValue[k]>>=1;         //k表示第幾組數(shù)據(jù)
                                        if(Time>=8)                        //如果高電平出現(xiàn)大于565us,那么是1
                                        {
                                                IrValue[k]|=0x80;
                                        }
                                        Time=0;                //用完時(shí)間要重新賦值                                                       
                                }
                        }
                }
                if(IrValue[2]!=~IrValue[3])
                {
                        return;
                }
        }                       
}
|程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二||程序二|


各位大佬,以上兩個(gè)程序是普中開(kāi)發(fā)板的兩個(gè)程序,程序一是單純的1602顯示字符串,結(jié)果顯示亂碼;程序二是1602顯示紅外遙控的鍵值,結(jié)果正常;兩個(gè)程序的1602部分的程序是一模一樣的所以沒(méi)有貼出來(lái),不同的只是主函數(shù)中顯示部分,以及程序二中用到了掃描紅外的中斷。請(qǐng)問(wèn),這個(gè)的問(wèn)題到底在哪兒?在普中的論壇中發(fā)現(xiàn)其他人也是同樣的問(wèn)題,所以來(lái)請(qǐng)各位大佬一見(jiàn)分曉。
謝過(guò)!

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

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2017-9-27 07:06 | 只看該作者
程序是你自己寫(xiě)的嗎?
是:請(qǐng)先畫(huà)框圖。
不是:請(qǐng)先研讀顯示屏手冊(cè),再理出方案,畫(huà)出框圖,再動(dòng)手寫(xiě)程序。
回復(fù)

使用道具 舉報(bào)

板凳
ID:164602 發(fā)表于 2017-9-27 08:37 | 只看該作者
我試過(guò)了,一點(diǎn)問(wèn)題也沒(méi)有。我是HC6800-ES-V2.0板子。
我試了四個(gè)程序:原來(lái)買(mǎi)板子送的,兩個(gè),一個(gè)顯示字符,一個(gè)顯示矩陣鍵值;后來(lái)另人買(mǎi)板子送的新程序,基礎(chǔ)級(jí)一個(gè),和原來(lái)的顯示字符一樣,中級(jí)的一個(gè),字符移動(dòng)程序。都沒(méi)問(wèn)題。
在試驗(yàn)中級(jí)那個(gè)叫LCD1602滾動(dòng)顯示例程時(shí),開(kāi)始有點(diǎn)亂,與程序不合,我關(guān)電源都不行,后來(lái),我按了一次復(fù)位鍵,好了,再下程序就沒(méi)有問(wèn)題了。這是什么原因還不知道,猜測(cè)是我的板子老了,接觸不好(事實(shí)是多次這樣了),也有可能是1602的初始化沒(méi)做好,因?yàn)闀r(shí)間關(guān)系,我沒(méi)有再仔細(xì)研究,你自己試試看。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:60379 發(fā)表于 2017-9-27 10:41 | 只看該作者
建議你去下載《51單片機(jī)輕松入門(mén) 基于STC15W4K系列》的配套例程對(duì)照測(cè)試,下載地址:http://pan.baidu.com/s/1bURkE6
回復(fù)

使用道具 舉報(bào)

5#
ID:236012 發(fā)表于 2017-9-27 11:42 | 只看該作者
你的時(shí)序控制的不對(duì)啊
回復(fù)

使用道具 舉報(bào)

6#
ID:236168 發(fā)表于 2017-9-27 20:21 | 只看該作者
你是不是字膜軟件有問(wèn)題!要不是驅(qū)動(dòng)寫(xiě)的不對(duì)。
回復(fù)

使用道具 舉報(bào)

7#
ID:236174 發(fā)表于 2017-9-27 20:32 | 只看該作者
應(yīng)該是字膜軟件有問(wèn)題!或者。。。
回復(fù)

使用道具 舉報(bào)

8#
ID:231638 發(fā)表于 2017-9-27 22:41 | 只看該作者
yzwzfyz 發(fā)表于 2017-9-27 07:06
程序是你自己寫(xiě)的嗎?
是:請(qǐng)先畫(huà)框圖。
不是:請(qǐng)先研讀顯示屏手冊(cè),再理出方案,畫(huà)出框圖,再動(dòng)手寫(xiě)程序 ...

謝謝大神的指導(dǎo),但是個(gè)人能力有限,目前還沒(méi)有深入到這些,目前處于學(xué)習(xí)階段,是想弄清楚這個(gè)問(wèn)題是為什么。
經(jīng)過(guò)今天仔細(xì)觀察,已經(jīng)發(fā)現(xiàn)問(wèn)題是:在1602的驅(qū)動(dòng)程序中他將4位和8位兩種寫(xiě)在一起的,他默認(rèn)的是8位的,而我的是4位的,所以才弄出了這一鬧劇。
您的解決問(wèn)題的思路我會(huì)學(xué)習(xí)的,謝謝。
回復(fù)

使用道具 舉報(bào)

9#
ID:231638 發(fā)表于 2017-9-27 22:42 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-9-27 08:37
我試過(guò)了,一點(diǎn)問(wèn)題也沒(méi)有。我是HC6800-ES-V2.0板子。
我試了四個(gè)程序:原來(lái)買(mǎi)板子送的,兩個(gè),一個(gè)顯示字 ...


今天我仔細(xì)看了看1602的引腳,要注意的是,雖然普中配的每個(gè)1602的插針是16個(gè),但是不能顯示的估計(jì)是和我同樣的問(wèn)題:沒(méi)有仔細(xì)看看1602,其實(shí)1602的pcb板上只有9根插針,也就是說(shuō)雖然是16根插進(jìn)了插口,但是只有9根起到了作用,簡(jiǎn)單的說(shuō)就是,這種樣子的1602是4位的,所以在普中的教程程序中的LCD.H文件里面,他有定義4位和8位的,這時(shí)候你要注意是不是他把4位的定義的那句話給屏蔽了(//define LCD1602_4PINS),如果屏蔽了的話,只要把這句話釋放就行了,也就是把前面的雙斜線去掉。
我只試了最簡(jiǎn)單的那個(gè)顯示"Pechin Science"的那個(gè)程序,其他不能顯示的,他在程序中也有作出標(biāo)識(shí),有些4位相關(guān)的語(yǔ)句需要釋放(具體內(nèi)容就是對(duì)高四位讀值以后,需要將數(shù)據(jù)左移四位,然后進(jìn)行第四位的讀值)。



從你的頭像我也依稀看出你是普中貼里的誰(shuí)了,也是你推薦我來(lái)這兒的,果然受益頗多,謝謝了。
回復(fù)

使用道具 舉報(bào)

10#
ID:231638 發(fā)表于 2017-9-27 22:45 | 只看該作者
自己獨(dú)開(kāi)一樓,就這一問(wèn)題說(shuō)明個(gè)人發(fā)現(xiàn),也謝謝各位大佬的悉心指導(dǎo),分享你們查找問(wèn)題的思路,謝謝。

今天我仔細(xì)看了看1602的引腳,要注意的是,雖然普中配的每個(gè)1602的插針是16個(gè),但是不能顯示的估計(jì)是和我同樣的問(wèn)題:沒(méi)有仔細(xì)看看1602,其實(shí)1602的pcb板上只有9根插針,也就是說(shuō)雖然是16根插進(jìn)了插口,但是只有9根起到了作用,簡(jiǎn)單的說(shuō)就是,這種樣子的1602是4位的,所以在普中的教程程序中的LCD.H文件里面,他有定義4位和8位的,這時(shí)候你要注意是不是他把4位的定義的那句話給屏蔽了(//define LCD1602_4PINS),如果屏蔽了的話,只要把這句話釋放就行了,也就是把前面的雙斜線去掉。
我只試了最簡(jiǎn)單的那個(gè)顯示"Pechin Science"的那個(gè)程序,其他不能顯示的,他在程序中也有作出標(biāo)識(shí),有些4位相關(guān)的語(yǔ)句需要釋放(具體內(nèi)容就是對(duì)高四位讀值以后,需要將數(shù)據(jù)左移四位,然后進(jìn)行第四位的讀值)。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

11#
ID:231638 發(fā)表于 2017-9-27 22:46 | 只看該作者
zhaijiwei123 發(fā)表于 2017-9-27 20:21
你是不是字膜軟件有問(wèn)題!要不是驅(qū)動(dòng)寫(xiě)的不對(duì)。

大兄弟,1602液晶顯示屏是不用取字模的吧
回復(fù)

使用道具 舉報(bào)

12#
ID:231437 發(fā)表于 2017-9-28 15:05 | 只看該作者
1602液晶顯示屏是不用取字模的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 性天堂网 | 欧美日韩福利 | 91精品国产手机 | 男女网站视频 | 成年人黄色免费视频 | 中文字幕高清免费日韩视频在线 | 99精品网| 国产免费一区二区三区网站免费 | 懂色中文一区二区三区在线视频 | 国产免费观看久久黄av片涩av | 精精国产视频 | 中文字幕一区二区三区精彩视频 | 成人激情视频在线观看 | 欧美一区成人 | 欧美精品福利视频 | 日韩三级在线 | 欧美日韩国产一区 | 国产日屁 | 999久久久免费精品国产 | 精品中文字幕在线观看 | 久久天堂 | 亚洲福利 | 日韩不卡一区二区三区 | 国产一区二区三区不卡av | 你懂的国产 | 婷婷在线视频 | 成人区精品| 国产精品视频网址 | 午夜精品一区二区三区在线视 | 精品在线一区二区三区 | 亚洲免费精品一区 | 久久免费视频2 | www.夜夜骑.com| 91精品久久久久 | 国产伦精品一区二区三区在线 | 久久国产精品99久久久久久丝袜 | 日韩精品无码一区二区三区 | 欧美国产精品一区二区三区 | 成人一区二区三区在线观看 | 日韩视频专区 | 日本羞羞影院 |