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

QQ登錄

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

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

關(guān)于STC15系列單片機(jī)驅(qū)動(dòng)LCD1602的延時(shí)控制程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
51單片機(jī)學(xué)習(xí)日記15系列為增強(qiáng)型1T 51內(nèi)核的單片機(jī),驅(qū)動(dòng)LCD1602時(shí)需要增加適當(dāng)延時(shí),而且只要延時(shí)控制的得當(dāng),可以省去判忙步驟,下面是簡(jiǎn)單的例程:
(使用的是STC15F2K60S2)

這是引腳定義;下面是LCD頭文件:

void LCD_WriteCmd(unsigned char a)   //寫(xiě)命令
{      
                                LCD = a;
                                RS = 0;
                                RW = 0;
              ENLCD = 1;Delayus(50);    //延時(shí)50us
              ENLCD = 0;Delayus(50);
}
void LCD_ShowStr(unsigned char x,unsigned y ,unsigned char *str)  //x:0~15 y:0~1
{      
              if(y==0)
                                        LCD_WriteCmd((0x00+x)|0x80);   //設(shè)置坐標(biāo)
                                else
                                        LCD_WriteCmd((0x40+x)|0x80);
                                while(*str != '\0')            //寫(xiě)數(shù)據(jù)
                          {
                                        LCD = *str++;
                                         RS = 1;
                                  RW = 0;
                                  ENLCD = 1;Delayus(50);      //延時(shí)50US
                                        ENLCD = 0;Delayus(50);
                        }        
}
void LCD_Init()      //數(shù)據(jù)手冊(cè)的初始化命令
{  
         LCD_WriteCmd(0x38);
         Delayms(5);               //延時(shí)5MS
         LCD_WriteCmd(0x0C);
         Delayms(5);
         LCD_WriteCmd(0x06);
         Delayms(5);
         LCD_WriteCmd(0x01);
         Delayms(5);
}

代碼比較簡(jiǎn)單,下面給出延時(shí)函數(shù)和主函數(shù):
void Delayus(unsigned int a)                //@11.0592MHz
{ do{
        _nop_();
        _nop_();
        _nop_();
}while(--a);
        
}
void Delayms(unsigned int a)                //@11.0592MHz
{unsigned char i, j;
        do
        {
        _nop_();
        _nop_();
        _nop_();
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
        }while(--a);
}

主函數(shù):
#include<LCD_1602.h>
void main()
{



    ENLCD = 0


        LCD_Init();  //初始化
        LCD_ShowStr(0,0,"Happy Every Day");  //在第0行第0列顯示Happy Every Day
        while(1);
}

下面是實(shí)物圖


評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:432932 發(fā)表于 2019-3-10 16:07 | 只看該作者
需要注意的是初始化那里每條命令之間的延時(shí),延時(shí)太短會(huì)導(dǎo)致字符可能部分缺失
回復(fù)

使用道具 舉報(bào)

板凳
ID:432932 發(fā)表于 2019-3-10 16:11 | 只看該作者
如果上電后產(chǎn)生的是一條全黑就可能是時(shí)序不對(duì)了(大多數(shù)情況下是延時(shí)不當(dāng))雖然LCD1602也是納秒級(jí)的反應(yīng)速度,但是實(shí)際應(yīng)用時(shí)需要留us級(jí)的時(shí)間來(lái)處理,由于能力有限,沒(méi)有試過(guò)正常使用的極限是多少。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表