專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

HOLTEK單片機(jī)-LCD

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年01月02日   【字體:

功能說明:

16X2 的字符型LCD顯示“LCD TEST OK”

電路說明:

        電路圖如下圖所示:


     HT48R50A-1 的端口A接到字符型LCD的D0-D7(數(shù)據(jù)總線),使用字符型LCD的8位數(shù)據(jù)接口。

        將HT48R50A-1的PC1接到LCD的讀/寫引腳。當(dāng)LCD的讀/寫引腳為高電平時(shí),表示將從LCD內(nèi)部讀取數(shù)據(jù),當(dāng)LCD的讀/寫引腳為低電平時(shí),表示將數(shù)據(jù)寫入LCD中。

        將HT48R50A-1的PC2接到LCD的E引腳。當(dāng)LCD的E引腳為高電平時(shí),LCD的D0-D7引腳上的數(shù)據(jù)將會(huì)被寫入LCD中,平時(shí)LCD的E引腳保持在低電平。

        將HT48R50A-1的PC0接到LCD的RS引腳。當(dāng)LCD的RS引腳為低電平并對(duì)LCD做讀寫操作時(shí),可以把LCD的指令寫入LCD的指令寄存器,若對(duì)LCD做讀寫操作,可以讀取LCD的忙標(biāo)志位及地址計(jì)數(shù)器。LCD的忙標(biāo)志位為1位,地址計(jì)數(shù)器為7位,合計(jì)8位。當(dāng)LCD的RS引腳為高電平時(shí),可以對(duì)LCD的數(shù)據(jù)寄存器做讀/寫操作。

        將字符型LCD的CO引腳接到GND。VO引腳是字符型LCD的亮度調(diào)整電壓輸入引腳,通常VO引腳接地時(shí)字符型LCD上的字符最清晰,也可以把VO引腳接一個(gè)可變電阻作為字符型LCD的對(duì)比度調(diào)整。

完整版本的程序源碼下載地址: http://www.torrancerestoration.com/f/htlcd.rar ,以下列出main.c文件:
 

#include "HT46F49E.H"

 

#define lcd_en    _pc1

#define lcd_rs    _pc0

#define lcd_date   _pa

 

unsigned char table1[]="LCD 1602";

unsigned char table2[]="TEST IS OK!";

unsigned char num;

void delayms(unsigned int n)//ms 延時(shí)

{

    while(n>0)

    {

        _delay(984);

        n--;  

    }  

}

 

void write_com(unsigned char com)// 寫命令

{

    lcd_rs=0;//lcdrs=0 ,選擇寫命令模式

    delayms(5);

    lcd_date=com;// 命令字送到數(shù)據(jù)總線

    delayms(5);

    lcd_en=1;//lcden=1 ,使能,init初始化中已經(jīng)置低

    delayms(5);

    lcd_en=0;

}

 

void write_date(unsigned char date)// 寫數(shù)據(jù)

{

    lcd_rs=1;

    delayms(5); 

    lcd_date=date;

    delayms(5);

    lcd_en=1;

    delayms(5);

    lcd_en=0;

}

 

void lcd_init()

{  

    write_com(0x38);

    delayms(2);

    write_com(0x0c);

    delayms(2);

    write_com(0x06);

    deleyms(2);

    write_com(0x01);

    delayms(2);

}

 

void main()

{  

    lcd_init();

    write_com(0x80);

    for(num=0;num<8;num++)

    {

        write_date(table1[num]);

        delayms(2); 

    }

    write_com(0x80+0x40);

    for(num=0;num<11;num++)

    {

        write_date(table[num]);

        delayms(2); 

    }

    while(1);

} 
關(guān)閉窗口

相關(guān)文章