新聞中心

        51單片機(jī) LCD12864

        作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
        有了LCD12864,人機(jī)交互就友好的多了。

        原理圖:

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





        上代碼:

        //程序可能,驅(qū)動(dòng)12864液晶顯示文字
        //本程序有問題,見實(shí)際效果,1數(shù)碼管在接入串口線亂碼;2無法多頁顯示
        #include
        #define uint unsigned int
        #define uchar unsigned char
        //端口聲明
        sbit duanxuan=P2^6; //數(shù)碼管段選端
        sbit weixuan=P2^7; //數(shù)碼管位選端
        sbit lcd12864_RS=P3^5; //12864數(shù)據(jù)/指令選擇端
        sbit lcd12864_WR=P3^6; //讀/寫選擇端
        sbit lcd12864_E=P3^4; //信號(hào)時(shí)能端
        sbit lcd12864_PSB=P3^7; //串/并選擇端
        //顯示數(shù)據(jù)定義
        uchar display_date0[]="閆偉 luobin 彭超:"; //第一行顯示文字
        uchar display_date1[]="歡迎你們來到我家"; //第二行顯示文字
        uchar display_date2[]="我們是朋友--永遠(yuǎn)"; //第三行顯示文字
        uchar display_date3[]="王春林2012-7-6-N"; //第四行顯示文字

        //相關(guān)函數(shù)聲明
        void delay(uint); //延時(shí)函數(shù)聲明
        void system_init(); //系統(tǒng)初始化函數(shù)
        void writting_order(uchar); //寫入指令函數(shù)
        void lcd_init(); //初始化函數(shù)
        void writting_date(uchar); //寫入數(shù)據(jù)函數(shù)
        void display1(); //顯示函數(shù)
        //void display2();
        //主函數(shù)
        void main()
        {
        system_init(); //系統(tǒng)初始化
        lcd_init(); //lcd初始化-指令設(shè)置
        display1(); //顯示
        while(1);
        }
        //延時(shí)函數(shù)主體
        void delay(uint s)
        {
        uint i,j;
        for(i=s;i>0;i--)
        {
        for(j=110;j>0;j--)
        {
        }
        }
        }
        //系統(tǒng)初始化函數(shù)主體
        void system_init()
        {
        //防止數(shù)碼管亂碼,關(guān)閉數(shù)碼管
        duanxuan=0;
        weixuan=0;
        }
        //lcd12864寫入指令函數(shù)主體
        void writting_order(uchar order_date)
        {
        lcd12864_WR=0; //WR-0,寫
        lcd12864_RS=0; //RS-0,寫指令
        lcd12864_E=0;
        P0=order_date;
        delay(5);
        lcd12864_E=1; //E高脈沖有效
        delay(5);
        lcd12864_E=0; //回到0,是為了防止誤寫入數(shù)據(jù)
        }
        //lcd12864初始化函數(shù)主體
        void lcd_init()
        {
        lcd12864_PSB=1; //選擇并口
        writting_order(0x01); //AC指針歸零
        delay(5);
        writting_order(0x03); //指針歸零,游標(biāo)原點(diǎn)
        delay(5);
        writting_order(0x0d); //顯示開,游標(biāo)關(guān),循序反白
        delay(5);
        writting_order(0x06); //寫入數(shù)據(jù)AC自動(dòng)加以,游標(biāo)自動(dòng)右移一位
        delay(5);
        writting_order(0x30); //8位數(shù)據(jù),基本指令操作
        delay(5);
        }
        //lcd12864寫入顯示數(shù)據(jù)函數(shù)主體
        void writting_date(uchar disolay_data)
        {
        lcd12864_WR=0; //寫
        lcd12864_RS=1; //數(shù)據(jù)
        lcd12864_E=0;
        P0=disolay_data; //寫入數(shù)據(jù)
        delay(5);
        lcd12864_E=1; //E高脈沖有效
        delay(5);
        lcd12864_E=0;
        }
        //顯示函數(shù)主體__第一頁
        void display1()
        {
        uint number;
        //寫第一行數(shù)據(jù)
        writting_order(0x80);
        for(number=0;number<16;number++)
        {
        writting_date(display_date0[number]); //循環(huán)寫入第一行文字
        }
        //寫第二行數(shù)據(jù)
        writting_order(0x90);
        for(number=0;number<16;number++)
        {
        writting_date(display_date1[number]);
        }
        //寫第三行數(shù)據(jù)
        writting_order(0x88);
        for(number=0;number<16;number++)
        {
        writting_date(display_date2[number]);
        }
        //寫第四行數(shù)據(jù)
        writting_order(0x98);
        for(number=0;number<16;number++)
        {
        writting_date(display_date3[number]);
        }
        }

        以上,結(jié)束。



        關(guān)鍵詞: 51單片機(jī)LCD1286

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 观塘区| 米脂县| 保德县| 神木县| 大同市| 合阳县| 崇明县| 边坝县| 德兴市| 饶平县| 阿图什市| 六安市| 聂荣县| 沙田区| 托克逊县| 客服| 陈巴尔虎旗| 东方市| 岗巴县| 沙湾县| 万山特区| 台山市| 远安县| 昔阳县| 峨山| 威远县| 集贤县| 库车县| 望城县| 新丰县| 呼伦贝尔市| 太原市| 武宣县| 镇赉县| 大理市| 疏勒县| 阜新| 肥东县| 连州市| 郑州市| 镇远县|