新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機的1602LCD液晶反顯程序

        基于51單片機的1602LCD液晶反顯程序

        作者: 時間:2012-11-15 來源:網絡 收藏

        /*1602LCD演示程序*/
        /*單片機型號:*/
        /*晶振:11.0592MHZ*/
        /*作者:http://www.51hei.com*/
        /*編譯環境:Keil 7.50A*/
        /****包含頭文件*****/
        #include reg51.h>
        #include intrins.h>
        /******************端口定義可根據你的電路自行修改*******/
        sbit rs=P3^5;
        sbit rw=P2^7;
        sbit cs=P3^4;
        sbit ep=P3^4;/*****顯示數據表*******/
        unsigned char code dis1[] = {"xu han jun"};
        unsigned char code dis2[] = {"best wishes"};
        /********************
        函數功能:LCD延時子程序
        入口參數:ms
        出口參數:
        ********************/
        void delay(unsigned char ms)
        {
        unsigned char i;
        while(ms--)
        {
        for(i = 0; i250; i++)
        {
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        }
        }
        }
        /********************
        函數功能:測試LCD忙碌狀態
        入口參數:
        出口參數:result
        **********************/
        bit lcd_bz()
        {
        bit result;
        rs = 0;
        rw = 1;
        ep = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        result = (bit)(P0 0x80);
        ep = 0;
        return result;
        }
        /*****************
        函數功能:寫指令數據到LCD子程序
        入口參數:cmd
        出口參數:
        ***************/
        void lcd_wcmd(unsigned char cmd)
        {
        while(lcd_bz());//判斷LCD是否忙碌
        rs = 0;
        rw = 0;
        ep = 0;
        _nop_();
        _nop_();
        P0 = cmd;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep = 0;
        }
        /*************************
        函數功能:設定顯示位置子程序
        入口參數:pos
        出口參數:
        *************************/
        void lcd_pos(unsigned char pos)
        {
        lcd_wcmd(pos | 0x80);
        }
        /***********************
        函數功能:寫入顯示數據到LCD子程序
        入口參數:dat
        出口參數:
        ************************/
        void lcd_wdat(unsigned char dat)
        {
        while(lcd_bz());//判斷LCD是否忙碌
        rs = 1;
        rw = 0;
        ep = 0;
        P0 = dat;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep = 0;
        }
        /**********************
        函數功能:LCD初始化子程序
        入口參數:
        出口參數:
        ***********************/
        void lcd_init()
        {
        lcd_wcmd(0x38);
        delay(1);
        lcd_wcmd(0x0c);
        delay(1);
        lcd_wcmd(0x01);
        delay(1);
        lcd_wcmd(0x04);
        delay(1);
        }
        /*****************
        函數功能:主程序
        入口參數:
        出口參數:
        ********************/
        void main(void)
        {
        unsigned char i;
        lcd_init();// 初始化LCD
        delay(10);
        lcd_pos(0x0E);//設置顯示位置
        i = 0;
        while(dis1[i] != '

        主站蜘蛛池模板: 宽甸| 伊春市| 陆河县| 塔城市| 榆林市| 林芝县| 农安县| 灵璧县| 大关县| 喀喇| 龙州县| 元江| 松溪县| 涡阳县| 河南省| 青神县| 米易县| 吉首市| 柳州市| 南部县| 平度市| 勐海县| 大新县| 洛宁县| 汤原县| 牟定县| 利辛县| 邯郸县| 名山县| 缙云县| 广南县| 淮南市| 万山特区| 余姚市| 凤山市| 休宁县| 邵阳市| 武定县| 牟定县| 泸水县| 广河县|