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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

1602顯示問題

  [復(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)象:        具體接線操作請參考視頻教程
                        下載程序后插上LCD1602液晶在開發(fā)板上,即可顯示
注意事項(xiàng):                                                                                                                                                                  
***************************************************************************************/

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

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

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

/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
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口,鍵盤使用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ù)
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/

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
* 輸出                  : 無
*******************************************************************************/

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

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

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

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

        if(IRIN==0)                //確認(rèn)是否真的接收到正確的信號
        {         
               
                err=1000;                                //1000*10us=10ms,超過說明接收到錯(cuò)誤的信號
                /*當(dāng)兩個(gè)條件都為真是循環(huán),如果有一個(gè)條件為假的時(shí)候跳出循環(huán),免得程序出錯(cuò)的時(shí)
                侯,程序死在這里*/       
                while((IRIN==0)&&(err>0))        //等待前面9ms的低電平過去                 
                {                       
                        DelayMs(1);
                        err--;
                }
                if(IRIN==1)                        //如果正確等到9ms低電平
                {
                        err=500;
                        while((IRIN==1)&&(err>0))                 //等待4.5ms的起始高電平過去
                        {
                                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))//等待信號前面的560us低電平過去
//                                        while (!IRIN)
                                        {
                                                DelayMs(1);
                                                err--;
                                        }
                                        err=500;
                                        while((IRIN==1)&&(err>0))         //計(jì)算高電平的時(shí)間長度。
                                        {
                                                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è)程序是普中開發(fā)板的兩個(gè)程序,程序一是單純的1602顯示字符串,結(jié)果顯示亂碼;程序二是1602顯示紅外遙控的鍵值,結(jié)果正常;兩個(gè)程序的1602部分的程序是一模一樣的所以沒有貼出來,不同的只是主函數(shù)中顯示部分,以及程序二中用到了掃描紅外的中斷。請問,這個(gè)的問題到底在哪兒?在普中的論壇中發(fā)現(xiàn)其他人也是同樣的問題,所以來請各位大佬一見分曉。
謝過!

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

謝謝大神的指導(dǎo),但是個(gè)人能力有限,目前還沒有深入到這些,目前處于學(xué)習(xí)階段,是想弄清楚這個(gè)問題是為什么。
經(jīng)過今天仔細(xì)觀察,已經(jīng)發(fā)現(xiàn)問題是:在1602的驅(qū)動(dòng)程序中他將4位和8位兩種寫在一起的,他默認(rèn)的是8位的,而我的是4位的,所以才弄出了這一鬧劇。
您的解決問題的思路我會(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
我試過了,一點(diǎn)問題也沒有。我是HC6800-ES-V2.0板子。
我試了四個(gè)程序:原來買板子送的,兩個(gè),一個(gè)顯示字 ...


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



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

使用道具 舉報(bào)

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

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

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

大兄弟,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ù) 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产99国产精品亚洲 | 91精品一区二区三区久久久久 | 成av在线| 国产乱码一二三区精品 | 狠狠做深爱婷婷综合一区 | 国产精品久久久久久婷婷天堂 | 国产精品视频免费看 | 亚洲精品成人 | 国产一级电影网 | 国产日韩一区二区三区 | 久久精品成人 | 国产小视频在线 | 国产精品美女久久久久久久网站 | 青娱乐av| 精品一区二区三区在线观看国产 | 欧美aⅴ在线观看 | 亚洲国产一区二区三区在线观看 | 欧美激情精品久久久久久免费 | 久久午夜精品福利一区二区 | 97超碰免费 | 激情小说综合网 | 中文字幕在线观 | 第一色在线| 91精品观看 | 日韩中文字幕免费在线观看 | 99pao成人国产永久免费视频 | 神马久久久久久久久久 | 欧美黄色一级毛片 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 天天草av | 欧美精品一二区 | 日韩一区二区三区在线观看 | www4虎| 在线欧美亚洲 | 亚洲精品久久久一区二区三区 | 香蕉视频久久久 | 97在线观视频免费观看 | 国产一区二区在线看 | 亚洲91av | 毛片av免费看 | 精品国产不卡一区二区三区 |