新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > lcd1602 屏驅(qū)動(dòng)(自定義字符)

        lcd1602 屏驅(qū)動(dòng)(自定義字符)

        作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏

        //顯示字符
        void zf_1602(unsigned char x,unsigned char y,unsigned dat) //參數(shù)一是顯示的列,參數(shù)二是顯示的行,參數(shù)三是顯示的數(shù)據(jù)
        {
        if(y==0)
        {
        x_1602(0,(0x80+x)); //第一行
        }
        else
        {
        x_1602(0,(0xc0+x)); //第二行
        }
        x_1602(1,dat); //寫入數(shù)據(jù)
        }
        void zfc_1602(unsigned char x,unsigned char y,unsigned char *dat)
        {
        if(y==0)
        {
        x_1602(0,(0x80+x)); //第一行
        }
        else
        {
        x_1602(0,(0xc0+x)); //第二行
        }
        while(*dat) //&:取地址 *:取值
        {
        x_1602(1,*dat);
        dat ++;
        }
        }
        void csh_1602() //初始化1602
        {
        x_1602(0,0x38); //顯示模式設(shè)置
        Delayms(5);
        x_1602(0,0x38);
        Delayms(5);
        x_1602(0,0x38);
        Delayms(5);
        x_1602(0,0x38);
        x_1602(0,0x08); //顯示關(guān)閉.
        x_1602(0,0x01); //顯示清屏
        x_1602(0,0x06); //顯示光標(biāo)移動(dòng)設(shè)置
        Delayms(5);
        x_1602(0,0x0c); //顯示開及光標(biāo)設(shè)置
        }
        void main()
        {
        csh_1602();
        qp_1602();
        while(1)
        {
        zf_1602(0,0,Q); //寫入字符
        zf_1602(1,0,Q); //寫入字符
        zf_1602(2,0, ); //寫入字符
        zfc_1602(3,0,"www.baidu.con"); //寫入字符串
        zfc_1602(1,1,"1990.02.08"); //寫入字符串
        while(1);
        }
        }

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

        自定義字符 (轉(zhuǎn))

        圖示:

        用戶自定義字符的應(yīng)用:
        我們從CGROM表上可以看到,在表的最左邊是一列可以允許用戶自定義的CGRAM,從上往下看著是16個(gè),實(shí)際只有8個(gè)字節(jié)可用。它的字符碼是 00000000-00000111這8個(gè)地址,表的下面還有8個(gè)字節(jié),但因?yàn)檫@個(gè)CGRAM的字符碼規(guī)定0-2位為地址,3位無效,4-7全為零。因此 CGRAM的字符碼只有最后三位能用也就是8個(gè)字節(jié)了。等效為0000X111,X為無效位,最后三位為000-111共8個(gè)。
        如果我們要想顯示這8個(gè)用戶自定義的字符,操作方法和顯示CGROM的一樣,先設(shè)置DDRAM位置,再向DDRAM寫入字符碼,例如“A”就是41H。現(xiàn)在我們要顯示 CGRAM的第一個(gè)自定義字符,就向DDRAM寫入00000000B(00H),如果要顯示第8個(gè)就寫入00000111(08H),簡單吧!
        好!現(xiàn)在我們來看怎么向這八個(gè)自定義字符寫入字模。有個(gè)設(shè)置CGRAM地址的指令如下圖:


        從這個(gè)指令可以看出指令數(shù)據(jù)的高2位已固定是01,只有后面的6位是地址數(shù)據(jù),而這6位中的高3位就表示這八個(gè)自定義字符,最后的3位就是字模數(shù)據(jù)的八個(gè)地址了。例如第一個(gè)自定義字符的字模地址為01000000-01000111八個(gè)地址。我們向這8個(gè)字節(jié)寫入字模數(shù)據(jù),讓它能顯示出“℃”
        地址:01000000  數(shù)據(jù):00010000 圖示: ○○○■○○○○
           01000001     00000110 ○○○○○■■○
           01000010     00001001 ○○○○■○○■
           01000011     00001000 ○○○○■○○○
           01000100     00001000 ○○○○■○○○
           01000101     00001001 ○○○○■○○■
           01000110     00000110 ○○○○○■■○
           01000111     00000000 ○○○○○○○○



        上一頁 1 2 下一頁

        關(guān)鍵詞: lcd1602屏驅(qū)動(dòng)字

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 清苑县| 固镇县| 蓬溪县| 龙州县| 开阳县| 定远县| 南丰县| 张家口市| 航空| 黄冈市| 收藏| 牟定县| 和静县| 阳东县| 大荔县| 大厂| 皋兰县| 怀安县| 托克逊县| 芒康县| 铜梁县| 济源市| 时尚| 辉县市| 安庆市| 来凤县| 酉阳| 理塘县| 钟山县| 肇州县| 阿拉尔市| 新丰县| 昌乐县| 黔西县| 洛扎县| 肃宁县| 邹城市| 巴东县| 屏山县| 永丰县| 琼中|