新聞中心

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

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

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

        *** 功能:12864LCD顯示 顯示閃動字體,各位同學可以自己修改。
        *** 實驗內容:0x81 0x90 0x88 0x98 分別是LCD四行的行首地址,我們操作LCD現實的字符就是分別放在這里面的
        ***開發板連接方法: 接上有字庫LCD12864 注意調節對比度,LCD12864工作電流較大,請用外接電源供電。
        ****************************************************************************************************/
        #include
        __CONFIG(0xff32);
        //芯片配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振蕩

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

        #define rs RA5 //定義LCD的數據/命令控制口
        #define rw RA4 //定義LCD的讀/寫控制口
        #define e RA3 //定義LCD的使能口
        #define psb RA2 //定義通信方式控制口
        #define rst RA1 //定義復位口
        #define nop()asm("nop") //定義空操作函數

        const unsigned char TAB1A[ ] = {"中科技電子網"};
        const unsigned char TAB1B[ ] = {***.*********.***"};
        const unsigned char TAB1C[ ] = {"0755-110"};
        const unsigned char TAB1D[ ] = {"HD-34 PIC開發板"};

        unsigned int lcd_x; //定義LCD頁地址寄存器
        unsigned int lcd_y; //定義LCD列地址寄存器
        bit busy; //定義LCD忙標志位

        void init(); //申明I/O口設置函數
        void lcd_init(); //申明LCD初始化函數
        void clear_p(); //申明清屏函數
        void writelcd(const unsigned char *pt); //聲明LCD寫字符串函數
        void wr_zb(); //申明有關顯示設置函數
        voidflash(); //申明設置LCD顯示閃爍函數
        void send_d(unsigned char x); //申明送一字節數據顯示函數
        void send_i(unsigned char x); //申明送一字節控制命令函數
        void chk_busy(); //申明檢測LCD是否工作繁忙函數
        void delay(); //申明延時函數1,供各命令之間的延時和決定顯示快慢
        void delay1(); //申明延時函數2,用以決定顯示閃爍快慢

        /****************************************************************************
        * 名 稱:main()
        * 功 能:主函數
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void main()
        {
        init(); //調用I/O口設置函數
        while (1)
        {
        lcd_init(); //調用LCD初始化函數
        clear_p(); //調用清屏函數
        send_i(0x81); //第1行
        writelcd(TAB1A);
        send_i(0x90); //第2行
        writelcd(TAB1B);
        send_i(0x88); //第3行
        writelcd(TAB1C);
        send_i(0x98); //第4行
        writelcd(TAB1D);
        delay(); //延長顯示一段時間
        flash(); //調用顯示閃爍函數
        clear_p(); //調用清屏函數
        }
        }

        /****************************************************************************
        * 名 稱:init()
        * 功 能:I/O口初始化
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        void init()
        {
        ADCON1 = 0X07; //設置A口為普通I/O口
        TRISA = 0X00; //設置A口為輸出
        TRISD = 0X00; //設置D口為輸出
        PORTA = 0X00000001;
        }


        /****************************************************************************
        * 名 稱:lcd_init()
        * 功 能:LCD初始化
        * 入口參數:
        * 出口參數:
        * 說 明:
        ****************************************************************************/
        voidlcd_init()
        {
        rst = 0; //復位LCD
        delay(); //保證復位所需要的時間
        rst = 1; //恢復LCD正常工作
        nop();
        psb = 1; //設置LCD為8位并口通信
        send_i(0x30); //基本指令操作
        send_i(0x01); //清除顯示
        send_i(0x06); //指定在寫入或讀取時,光標的移動方向
        send_i(0x0c); //開顯示,關光標,不閃爍
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 临湘市| 陇西县| 耿马| 芜湖市| 桐乡市| 湟源县| 明光市| 贡山| 巴东县| 彭水| 汝阳县| 威远县| 陆良县| 巨鹿县| 五大连池市| 宜川县| 大石桥市| 上虞市| 开平市| 盐亭县| 玉林市| 淮北市| 姜堰市| 宁晋县| 锦州市| 汉中市| 红安县| 恭城| 乐业县| 望都县| 灌阳县| 白山市| 宁阳县| 临西县| 靖江市| 凤阳县| 文登市| 陆河县| 邛崃市| 安多县| 雷山县|