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

QQ登錄

只需一步,快速開始

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

80c52驅(qū)動(dòng)LCD1602程序(proteus仿真驗(yàn)證通過)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:814673 發(fā)表于 2020-8-17 15:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
本帖最后由 yangwanxue99 于 2020-8-17 15:12 編輯

#include<reg52.h>
#include <stdio.h>
    int init();    //聲明初始化函數(shù)
    int write_com(unsigned char);//聲明寫命令函數(shù)
    int write_date(unsigned char);//聲明寫數(shù)據(jù)函數(shù)
    int delay(unsigned char);//聲明延遲函數(shù)
    unsigned char x;
    sbit RS = P1^0;
    sbit RW = P1^1;
    sbit EN = P1^2;
    unsigned char code table[]="Welcome to the";
    unsigned char code table1[]="MCU learning!";

        void LcdWaitReady()         //判忙子程序
{
        unsigned char sta;

    P0 = 0xFF;
        RS = 0;
        RW = 1;
           EN = 0;
        EN = 0;        
        EN = 1;
        delay(5) ;
         
         
//while((P2&0x80));//proteus仿真時(shí)將該行注釋掉,實(shí)際板上運(yùn)行時(shí)去掉注釋即可
  EN = 0;
}           




int main(void)//主函數(shù)                          
{  char a,b;

    init();
    write_com(0x80);//第一行
         a =sizeof(table); //計(jì)算字符串的長(zhǎng)度
    for(x=0;x<a;x++)
    {
         write_date(table[x]);
        delay(150);
    }
    write_com(0x80+0x40);//第二行
        b =sizeof(table1); //計(jì)算字符串的長(zhǎng)度
    for(x=0;x<b;x++)
    {
         write_date(table1[x]);
        delay(150);
    }
    while(1);
    return 0;
}

int init()//初始化函數(shù)體
{
    EN = 0;
    write_com(0X38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
    write_com(0X0C);//設(shè)置開顯示,不顯示光標(biāo)
    write_com(0X06);//寫一個(gè)字符時(shí),整屏右移
    write_com(0X01);//顯示清零
    return 0;
}

int write_com(unsigned char com)//寫命令的函數(shù)體
{
   //EN=0;
           LcdWaitReady();
    RS = 0;
    RW = 0;
    P2 = com;
    delay(5);
    EN = 1;
    delay(5);
    EN = 0;
    return 0;
}

int write_date(unsigned char date)//寫數(shù)據(jù)的函數(shù)體
{
    LcdWaitReady();
        RS = 1;
    RW = 0;
    P2 = date;
    delay(5);
    EN = 1;
    delay(5);
    EN = 0;
    return 0;
}

int delay(unsigned char xms)
{
    unsigned char x,y;
    for(x=xms;x>0;x--)
        for(y=110;y>0;y--);
    return 0;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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