国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 4848|回復(fù): 1
打印 上一主題 下一主題

ST7920中文字庫(kù)液晶顯示模塊LCD12232并行8位顯示C30演示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2009-4-2 23:00:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: 模塊 , 演示 , 液晶顯示 , 中文 , 字庫(kù)
/*------------------------------------------------------------
ST7920中文字庫(kù)液晶顯示模塊LCD12232并行8位顯示C30演示程序
C30菜鳥(niǎo)HotPower@126.com             2007.12.8 于雁塔菜地
-------------------------------------------------------------*/

#include "lcd.h"

unsigned char LcdRowWriteEnable[2] = {0, 0};//顯示行刷新允許標(biāo)志
unsigned char LcdBuffer[2][15];//LCD顯示緩沖區(qū)(2行15個(gè)字符)
unsigned char LcdRow = 0, LcdCol = 0;//虛擬光標(biāo)

void LcdInit(void)//LCD初始化
{
    LcdIOInit();//LCD管腳初始化
    LcdClearBuffer();//清空LCD顯示緩沖區(qū)

//    LcdWriteCommand(0x20);//發(fā)送功能設(shè)定控制命令(4位)
    LcdWriteCommand(0x30);//發(fā)送功能設(shè)定控制命令(8位)
    LcdWriteCommand(0x02);//發(fā)送位址歸位命令,設(shè)定DDRAM位址計(jì)數(shù)器為0
    LcdWriteCommand(0x04);//發(fā)送進(jìn)入點(diǎn)命令
    LcdWriteCommand(0x0c);//發(fā)送開(kāi)顯示關(guān)光標(biāo)命令
    LcdWriteCommand(0x01);//發(fā)送清除顯示命令
    LcdWriteCommand(0x80);//發(fā)送設(shè)定DDRAM地址0x00命令,光標(biāo)定位到(0,0)

/*----------------------------------------------------------------------
    LcdWriteCommand(0x30);//發(fā)送功能設(shè)定控制命令(8位)
    LcdWriteCommand(0x30);//發(fā)送功能設(shè)定控制命令(8位)
    LcdWriteCommand(0x30);//發(fā)送功能設(shè)定控制命令(8位)
    LcdWriteCommand(0x01);//發(fā)送清除顯示命令
    LcdWriteCommand(0x06);//發(fā)送進(jìn)入點(diǎn)命令0x06
    LcdWriteCommand(0x0a);//發(fā)送開(kāi)關(guān)顯示關(guān)光標(biāo)命令
    LcdWriteCommand(0x0c);//發(fā)送開(kāi)顯示關(guān)光標(biāo)命令
    LcdWriteCommand(0x02);//發(fā)送位址歸位命令,設(shè)定DDRAM位址計(jì)數(shù)器為0
    LcdWriteCommand(0x17);//游標(biāo)或顯示移位控制
    LcdWriteCommand(0x80);//發(fā)送設(shè)定DDRAM地址0x00命令,光標(biāo)定位到(0,0)
----------------------------------------------------------------------*/
    LCD_BK = 0;//打開(kāi)背光
}

void LcdIOInit(void)//LCD管腳初始化
{
    LCD_BK = 0;//打開(kāi)背光
    LCD_E = 0;//不使能
    LCD_RW = 1;//寫讀數(shù)據(jù)
    TRIS_E  =  PORTOUTMODE;//定義E為輸出IO
    TRIS_RW =  PORTOUTMODE;//定義RW為輸出IO
    TRIS_RS =  PORTOUTMODE;//定義RS為輸出IO
    TRIS_BK =  PORTOUTMODE;//定義BK為輸出IO
    TRIS_DATA = 0;//定義RE0~RE7為輸出IO
}

void LcdWriteCommand(unsigned char Command)//寫LCD命令字
{
    LCD_RS = 0;//命令
    Nop();
    LCD_RW = 0;//寫命令
    Nop();
    LCD_E = 1;//使能      
    Nop();
    LCD_BUS = Command;//發(fā)送8位命令
    Nop();     
    LCD_E = 0;//不使能,讀出數(shù)據(jù) 打入命令
    Nop();     
    LCD_RW = 1;//寫命令結(jié)束
      if (Command == 0x01)//清除顯示命令,需要等待時(shí)間相對(duì)較長(zhǎng)
    {
         _delay_loop(1600);//st7920要求等待1.6mS
    }
      else
    {
         _delay_loop(72);//st7920要求等待72uS
    }
}

void LcdWriteData(unsigned char data)//寫LCD顯示數(shù)據(jù)
{
    LCD_RS = 1;//數(shù)據(jù)
    Nop();
    LCD_RW = 0;//寫數(shù)據(jù)
    Nop();
    LCD_E = 1;//使能      
    Nop();
    LCD_BUS = data;//發(fā)送8位數(shù)據(jù)
    Nop();     
    LCD_E = 0;//不使能,打入數(shù)據(jù)
    Nop();     
    LCD_RW = 1;//寫數(shù)據(jù)結(jié)束
    _delay_loop(72);//st7920要求等待72uS
}

void LcdWaitBusy(void)//LCD忙標(biāo)志測(cè)試(有時(shí)死機(jī),故沒(méi)用)  
{
    TRIS_DATA = 0xff;//定義RE0~RE7為輸入IO
    LCD_BUS = 0xff;
    Nop();
    LCD_RS = 0;//命令         
    Nop();
    LCD_RW = 1;//讀數(shù)據(jù)
    Nop();
    LCD_E = 1;//使能      
    Nop();
    while(LCD_BF)//讀取忙碌標(biāo)志BF(LCD_DATA.7)
    {
        Nop();//搞不清有時(shí)死機(jī)在此處,所以用_delay_loop()代替
    }
    LCD_E = 0;//不使能,讀出狀態(tài)
    Nop();     
    TRIS_DATA = 0;//定義RE0~RE7為輸出IO
    Nop();     
}

void LcdClearBuffer(void)
{
unsigned char i, j;
    for (i = 0;i < 2;i ++)//2行字符
    {//2行漢字
        for (j = 0;j < 15; j ++)//15個(gè)字符
        {//每行7個(gè)半漢字15個(gè)字符
            LcdBuffer[j] = ' ';//空白字符
        }
        LcdRowWriteEnable = 1;//允許此行刷新漢字顯示
    }
    LcdRow = 0;//虛擬光標(biāo)定位在0行
    LcdCol = 0;//虛擬光標(biāo)定位在0列
}


void LcdDisplayPos(unsigned char row, unsigned char col)
{
    if ((row < 2) && (col < 15))//容錯(cuò)處理,光標(biāo)越界
    {
        LcdRow = row;//刷新虛擬光標(biāo)
        LcdCol = col;//刷新虛擬光標(biāo)
        LcdRowWriteEnable[row] = 1;//允許此行刷新漢字顯示
    }
}

void LcdDisplay(const char * string)//不真的LCD顯示
{
    while(*string)//0字符結(jié)束
    {
        LcdBuffer[LcdRow][LcdCol ++] = *string ++;//寫入顯示緩沖區(qū)
    }
}

unsigned char LcdDisplayBuffer(void)//顯示刷新LCD緩沖區(qū)內(nèi)的數(shù)據(jù)(一般0.25S~0.5S刷新一次)
{
unsigned char i, j;
unsigned char num = 0;//刷新字符個(gè)數(shù)
    for (i = 0; i < 2; i ++)
    {//2行漢字
        if (LcdRowWriteEnable)
        {//允許此行刷新漢字顯示
            LcdWriteCommand(0x80 + (i << 4));//移動(dòng)真的LCD光標(biāo)
            for (j = 0; j < 15; j ++)
            {//每行7個(gè)半漢字15個(gè)字符
                LcdWriteData(LcdBuffer[j]);//刷新顯示字符
                num ++;//刷新字符個(gè)數(shù)計(jì)數(shù)
            }
            LcdRowWriteEnable = 0;//過(guò)后不允許此行刷新漢字顯示
        }
    }
    return num;//返回實(shí)際刷新字符個(gè)數(shù)
}

void _delay_loop(unsigned long count)//軟件延時(shí)
{
    while(count --)
    {
        //ClrWdt();//注意大延時(shí)要記住喂狗
    }
}


St7920中文字庫(kù)LCD驅(qū)動(dòng)控制器資料
沙發(fā)
發(fā)表于 2011-11-2 09:13:00 | 只看該作者
很好

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 狠狠综合久久久综合 | 亚洲韩精品欧美一区二区三区 | 国产精品国产三级农村妇女 | 免费看污黄网站 | 日韩黑丝| 久久丁香视频 | 麻豆igao在线视频 | 亚洲视频欧洲视频 | 99精品视频免费在线观看 | 97视频| 污污的网站在线免费观看 | 九九热在线视频观看这里只有精品 | 欧美精品成人久久网站 | 欧美三级视频网 | 国产精品麻豆一区二区 | 丝瓜草莓向日葵芭比小猪 | 五月天色婷婷综合 | 久久久久成人精品免费播放动漫 | 欧美性色欧美a在线观看 | 亚洲欧美中日韩中文字幕 | 免费视频精品一区二区三区 | 久久国产精品一国产精品金尊 | 狼久久| 国产精品动漫网站 | 99re热这里只有精品视频 | 天天干天天摸天天操 | 欧美日韩性生活视频 | 亚洲 欧美 另类中文字幕 | 欧美丝袜高跟鞋一区二区 | 精品无人区乱码在线观看 | 国产小视频在线看 | 亚洲va| 拍真实国产伦偷精品 | 国产亚洲人成网站天堂岛 | 在线高清h视频在线观看 | 91精品免费看 | 极品美女国产精品免费一区 | 扒丝袜basiwa影院首页 | 韩国高清不卡一区二区 | 日本-区二区三区免费精品 日本强日本不卡一 | 伊人网站 |