新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機實現液晶顯示

        單片機實現液晶顯示

        作者: 時間:2016-11-18 來源:網絡 收藏
        單片機的輸出方式除了二極管、數碼管外,還有一中重要的方式:液晶顯示。鑒于液晶顯示的用途越來越廣泛,在學習了LED顯示后,又學習了如何利用液晶顯示模塊驅動LCD顯示的方法。在了解了點陣式和圖形式LCD的顯示方法,又熟悉了16*16字模的編寫方法上學習了基于GXM12864的液晶顯示方法。

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

        主要器件:

        1、AT89C52作為液晶顯示的控制芯片。

        2、選用內含KS0108B/HD61202控制器的圖形液晶顯示模塊CXM12864,實現128點*64點大小的平板顯示,可以滿足一般的顯示要求。

        3、雙電壓輸出升壓芯片MAX1677專用LCD電源芯片。

        試驗電路圖:

        試驗程序代碼:

        //lcd_show.h程序

        #ifndef_LCD_SHOW_H//防止lcd_show.h被重復引用

        #define_LCD_SHOW_H

        #include <at89c51.h>

        #include

        unsigned char code QING[32]={

        /*請*/

        0x20,0x22,0xEC,0x00,0x20,0x22,0xAA,0xAA,

        0xAA,0xBF,0xAA,0xAA,0xEB,0xA2,0x20,0x00,

        0x00,0x00,0x7F,0x20,0x10,0x00,0xFF,0x0A,

        0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00

        };

        unsigned char code CHA[32]={

        /*插*/

        0x10,0x10,0x10,0xFF,0x90,0x24,0x24,0xA4,

        0x24,0xFC,0x22,0x23,0x22,0xB0,0x20,0x00,

        0x02,0x42,0x81,0x7F,0x00,0xFF,0x49,0x48,

        0x40,0x7F,0x40,0x49,0x49,0xFF,0x01,0x00

        };

        unsigned char code KA[32]={

        /*卡*/

        0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x44,

        0x44,0x44,0x46,0x44,0x40,0x60,0x40,0x00,

        0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,

        0x02,0x04,0x0C,0x18,0x00,0x00,0x00,0x00

        };

        #define LCD XBYTE[0xffff] /* LCD端口*/

        #endif

        //lcd_show.c程序實現顯示“請插卡”

        #include "lcd_show.h"

        #define uint unsigned int

        #define uchar unsigned char

        #define CSA P2^1

        #define CSB P2^0

        #define E P2^3

        #define RW P2^5

        #define DI P2^6

        sbit busy_bit=ACC^7;//lcd state byte bit 7

        /*下面是對液晶屏gxm12864d操作的函數, 128x64點陣,漢字顯示,CSA,CSB用來進行左右顯示區的選擇。*/

        /*發命令i到主窗口*/

        void lcd_mwc(uchar i)

        {

        CSA=1;

        CSB=0;

        RW=1;

        DI=0;

        do {ACC=LCD;}

        while (busy_bit) ;//wait for lcd not busy

        RW=0;

        LCD=i;

        }

        /*寫數據i到主窗口*/

        void lcd_mwd(uchar i)

        {

        CSA=1;

        CSB=0;

        RW=1;

        DI=0;

        do {ACC=LCD;} while (busy_bit);//wait for lcd not busy

        RW=0;

        DI=1;

        LCD=i;

        }

        /*清屏*/

        void lcd_clear(void)

        {

        uchar i;

        uchar page;

        for (page=0xb8;page<0xc0;page++)

        {

        lcd_mwc(page);/*設置顯示頁面*/

        lcd_mwc(0x40);/*設置列地址*/

        for (i=0;i<64;i++)

        {

        lcd_mwd(0);

        }

        }

        }

        //初始化lcd

        void lcd_init(void)

        {

        lcd_mwc(0xc0);

        lcd_mwc(0x3f);

        }

        //dispm_hz_up() display up half of a hanzi in left area

        void dispm_hz_up(uchar code * hz)

        {

        uchar i;

        for (i=0;i<16;i++) lcd_mwd(*(hz+i));

        }

        //dispm_hz_down() display down half of a hanzi in left area

        void dispm_hz_down(uchar code * hz)

        {

        uchar i;

        for (i=16;i<32;i++) lcd_mwd(*(hz+i));

        }

        void main(void)

        {

        E=1;

        lcd_clear();

        lcd_init();

        lcd_mwc(0xb8);

        lcd_mwc(0x40);

        dispm_hz_up(&QING);

        dispm_hz_up(&CHA);

        dispm_hz_up(&KA);

        lcd_mwc(0xb9);

        lcd_mwc(0x40);

        dispm_hz_down(&QING);

        dispm_hz_down(&CHA);

        dispm_hz_down(&KA);//display "請插卡"

        }



        關鍵詞: 單片機液晶顯

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 东海县| 康定县| 桃园县| 衡东县| 易门县| 宁武县| 闽侯县| 荔波县| 花莲市| 榆树市| 镇赉县| 栾川县| 兰溪市| 贵溪市| 信阳市| 长海县| 兴和县| 景泰县| 射洪县| 上犹县| 隆尧县| 连州市| 泰顺县| 库车县| 崇义县| 黄骅市| 广东省| 喀什市| 平潭县| 化州市| 巴里| 田林县| 尚义县| 惠来县| 乌什县| 大连市| 柳河县| 龙江县| 乐清市| 赞皇县| 红桥区|