新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 LCD1602

        51單片機 LCD1602

        作者: 時間:2016-11-25 來源:網絡 收藏
        LCD1602算是很簡單的人機交互,有了這家伙,從此學習不再寂寞了,至少有這家伙的陪伴。注釋很詳細的,看代碼。

        原理圖:

        本文引用地址:http://www.104case.com/article/201611/321315.htm



        代碼:

        #include
        #define uint unsigned int
        #define uchar unsigned char
        //端口聲明
        sbit duanxuan=P2^6;
        sbit weixuan=P2^7;
        sbit lcd1602_E=P3^4;
        sbit lcd1602_RS=P3^5;
        //顯示數據數組
        uchar table1[]="^_^I LOVE MCU^_^"; //第一行顯示數據
        uchar table2[]=" --WgChnLn--"; //第二行顯示數據
        //變量定義
        uint number; //用于依次顯示出所有數據
        //相關函數聲明
        void delay(uint); //延時函數聲明
        void lcd1602_control(uchar); //輸入控制指令函數聲明
        void lcd1602_init(); //lcd初始化函數聲明
        void lcd1602_data(uchar); //輸入數據函數聲明
        //主函數
        void main()
        {
        lcd1602_init(); //初始化
        //輸入第一行數據
        lcd1602_control(0x80+0x10); //定位到第一行剛好不能顯示的區域
        for(number=0;number<16;number++)
        {
        lcd1602_data(table1[number]); //顯示出第一行
        delay(5);
        }
        //輸入第二行數據
        lcd1602_control(0x80+0x50); //定位到第二行剛好不能顯示的區域
        for(number=0;number<16;number++)
        {
        lcd1602_data(table2[number]); //顯示出第二行
        delay(5);
        }
        //循環左移效果
        while(1)
        {
        for(number=0;number<16;number++)
        {
        lcd1602_control(0x18); //左移
        delay(500);
        }
        delay(1000);
        delay(1000);
        }
        }
        //延時函數主體
        void delay(uint xs)
        {
        uint i,j;
        for(i=xs;i>0;i--)
        {
        for(j=110;j>0;j--)
        {
        }
        }
        }
        //lcd1602寫入控制指令函數主體
        void lcd1602_control(uchar control_data)
        {
        lcd1602_RS=0; //RS=0,處于輸入控制指令狀態
        P0=control_data;
        delay(5);
        lcd1602_E=1; //使能端高電平有效
        delay(5);
        lcd1602_E=0;
        }
        //lcd1602初始化函數主體
        void lcd1602_init()
        {
        duanxuan=0;
        weixuan=0;
        lcd1602_E=0; //因為引腳默認是高電平
        lcd1602_control(0x0c);
        lcd1602_control(0x06);
        lcd1602_control(0x38);
        lcd1602_control(0x01);
        }
        //lcd1602寫入數據指函數主體
        void lcd1602_data(uchar data_data)
        {
        lcd1602_RS=1; //RS=1.處于輸入數據狀態
        P0=data_data;
        delay(5);
        lcd1602_E=1; //使能端高電平脈沖有效
        delay(5);
        lcd1602_E=0;
        }

        以上,結束。



        關鍵詞: 51單片機LCD160

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 景泰县| 荥阳市| 呼图壁县| 泌阳县| 金寨县| 观塘区| 宜黄县| 白水县| 淮南市| 陆河县| 太谷县| 彭泽县| 从化市| 砚山县| 治多县| 安西县| 陇西县| 车致| 涿鹿县| 延庆县| 施甸县| 天柱县| 永川市| 桂阳县| 霍山县| 酉阳| 綦江县| 青浦区| 吐鲁番市| 潮安县| 巴东县| 多伦县| 黔西县| 厦门市| 那曲县| 东港市| 色达县| 黄骅市| 建德市| 文山县| 洛浦县|