新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機驅動LCD12864液晶顯示閃動字體程序

        PIC單片機驅動LCD12864液晶顯示閃動字體程序

        作者: 時間:2016-12-02 來源:網絡 收藏

        /****************************************************************************
        * 名 稱:wr_zb()
        * 功 能:顯示設置
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void wr_zb()
        {
        send_i(lcd_y);
        send_i(lcd_x);
        }

        /****************************************************************************
        * 名 稱:flash()
        * 功 能:顯示閃爍
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        voidflash()
        {
        send_i(0x08); //關顯示
        delay1(); //延長一定時間
        send_i(0x0c); //開顯示
        delay1();delay1(); //延長關顯示兩倍的時間
        send_i(0x08); //關顯示
        delay1();
        send_i(0x0c); //開顯示
        delay1();delay1();
        send_i(0x08); //關顯示
        delay1();
        send_i(0x0c); //開顯示
        delay1();delay1();

        }

        /****************************************************************************
        * 名 稱:clear_p()
        * 功 能:清屏
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void clear_p()
        {
        send_i(0x1); //清除所有顯示
        send_i(0x34); //擴展指令操作
        send_i(0x30); //基本指令操作
        }

        /****************************************************************************
        * 名 稱:send_d()
        * 功 能:寫一個字節數據到LCD
        * 入口參數:unsigned char x 字符
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void send_d(unsigned char x)
        {
        chk_busy(); //檢測LCD是否工作繁忙
        rs = 1; //設置該字節數據是顯示數據
        rw = 0; //設置該次操作為寫
        PORTD = x; //送數據口PORTD
        e = 1; //使能
        nop();
        nop();
        nop();
        e = 0; //禁止
        }

        /****************************************************************************
        * 名 稱:send_i()
        * 功 能:寫一個字節命令到LCD
        * 入口參數:unsigned char x 字符
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void send_i(unsigned char x)
        {
        chk_busy(); //檢測LCD是否工作繁忙
        rs = 0; //設置該字節數據為控制命令
        rw = 0; //設置此次操作為寫
        PORTD = x; //送數據口PORTD
        e = 1; //使能
        nop();
        nop();
        nop();
        e = 0; //禁止
        }

        /****************************************************************************
        * 名 稱:chk_busy()
        * 功 能:檢測LCD是否工作繁忙
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void chk_busy()
        {
        busy = 1; //先置位繁忙標志位
        TRISD = 0XFF; //更改通信為輸入
        rs = 0; //設置該字節數據為命令代碼
        rw = 1; //設置此次操作為讀
        while (busy)
        {
        nop();nop();nop();
        e = 1; //使能
        nop();nop();nop();
        if (!RD7) busy = 0; //檢測LCD是否工作繁忙
        nop();nop();nop();
        e = 0; //禁止
        }
        e = 0; //禁止
        TRISD = 0X00; //恢復通信為輸出
        }

        /****************************************************************************
        * 名 稱:delay()
        * 功 能:延時
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void delay()
        {
        int i;
        for (i = 0;i < 5000;i++);
        }

        /****************************************************************************
        * 名 稱:delayl()
        * 功 能:延時
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void delay1()
        {
        int i;
        for (i = 0;i < 10;i++)
        {
        delay(); //調用延時函數
        }
        }

        /****************************************************************************
        * 名 稱: writelcd()
        * 功 能: 在LCD上顯示字符串
        * 入口參數:const unsigned char *pt 字符串的首地址
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void writelcd(const unsigned char *pt)
        {
        while(*pt) //檢測是否達到了字符串最后
        send_d(*pt++); //發送數據給lcd
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 南漳县| 黔南| 新民市| 城市| 孟津县| 朔州市| 玛多县| 泸州市| 临西县| 清新县| 中宁县| 河北区| 阿坝| 盈江县| 古浪县| 伊宁县| 湟中县| 裕民县| 阿坝县| 永顺县| 青阳县| 肥西县| 淮安市| 玛纳斯县| 渭南市| 信丰县| 穆棱市| 马关县| 大悟县| 南郑县| 德兴市| 荥经县| 金坛市| 德庆县| 藁城市| 微山县| 百色市| 敦煌市| 通河县| 郸城县| 乐业县|