<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機驅動(dòng)LCD1602的制作二

單片機驅動(dòng)LCD1602的制作二

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò ) 收藏
具體電路的制作是很簡(jiǎn)單的,就接了兩個(gè)電阻,一個(gè)是10歐姆的背光限流電阻,另一個(gè)是2K的LCD極板電壓調節電阻。這兩個(gè)電阻的阻值怎么定呢?背光比較簡(jiǎn)單,它就相當于在后面接了幾個(gè)發(fā)光二極管,任何時(shí)候你只要在15、16腳串上個(gè)100歐的電位器接上電源,調節電位器,覺(jué)得亮度合適。此時(shí)的阻值便可。LCD液晶極板驅動(dòng)電壓調節電阻的確定就稍微麻煩一點(diǎn)。在各數據線(xiàn),控制線(xiàn)接好關(guān)通上電源的前提下在第3腳(VEE)和地之間接一個(gè)10K的電位器。調節電位器。當3腳電壓高時(shí)為全亮,電壓為0時(shí)為全暗(液晶全顯示為黑塊)。你用電位器把屏幕從全暗剛好調到變亮。這時(shí)便可調試程序。待屏幕能正確顯示后再細調電位器,使對比度合適。這時(shí)的阻值便可確定,然后換成等值的固定電阻焊上便可。

我們接著(zhù)上次的系統板制做:

本文引用地址:http://dyxdggzs.com/article/201611/319669.htm













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

從這個(gè)指令可以看出指令數據的高2位已固定是01,只有后面的6位是地址數據,而這6位中的高3位就表示這八個(gè)自定義字符,最后的3位就是字模數據的八個(gè)地址了。例如第一個(gè)自定義字符的字模地址為01000000-01000111八個(gè)地址。我們向這8個(gè)字節寫(xiě)入字模數據,讓它能顯示出“℃”
地址:01000000  數據:00010000 圖示:○○○■○○○○
   01000001     00000110 ○○○○○■■○
   01000010     00001001 ○○○○■○○■
   01000011     00001000 ○○○○■○○○
   01000100     00001000 ○○○○■○○○
   01000101     00001001 ○○○○■○○■
   01000110     00000110 ○○○○○■■○
   01000111     00000000 ○○○○○○○○
下面我們寫(xiě)一段程序讓這8個(gè)自定義字符顯示出一個(gè)心的圖案:
# include
unsigned char table1[]={0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00};//心圖案
unsigned char table[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//字符℃
#define CLEARSCREEN LCD_write_command(0x01)
#define LCDIO P2
sbit LCD1602_RS=P3^0;
sbit LCD1602_RW=P3^1;
sbit LCD1602_EN=P3^2;

void LCD_write_command(unsigned char command);//寫(xiě)入指令函數
void LCD_write_dat(unsigned char dat);//寫(xiě)入數據函數
void LCD_set_xy( unsigned char x, unsigned char y );//設置顯示位置函數
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat);//顯示一個(gè)字符函數
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s);//顯示字符串函數
void LCD_init(void);//初始化函數
void delay_nms(unsigned int n);//延時(shí)函數

void LCD_init(void)
{
CLEARSCREEN;//clear screen
LCD_write_command(0x38);//set 8 bit data transmission mode
LCD_write_command(0x0c);//open display (enable lcd display)
LCD_write_command(0x80);//set lcd first display address
CLEARSCREEN;//clear screen
}

void LCD_write_command(unsigned char command)
{
LCDIO=command;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_EN=0;
LCD1602_EN=1;
delay_nms(10);
}


void LCD_write_dat(unsigned char dat)
{
LCDIO=dat;
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_EN=0;
delay_nms(1);
LCD1602_EN=1;
}

void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 1)
address = 0x80 + x;
else
address =0xc0+ x;
LCD_write_command(address);
}

void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y );
LCD_write_dat(dat);
}

void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y );
while (*s)
{
LCD_write_dat(*s);
s ++;
}
}

void delay_nms(unsigned int n)
{
unsigned int i=0,j=0;
for (i=n;i>0;i--)
for (j=0;j<10;j++);
}

void main(void)
{
unsigned char i,j,k,tmp;
LCD_init();
delay_nms(100);
tmp=0x40;//設置CGRAM地址的格式字
k=0;
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
LCD_write_command(tmp+i); // 設置自定義字符的 CGRAM 地址
delay_nms(2);
LCD_write_dat(table1[k]); // 向CGRAM寫(xiě)入自定義字符表的數據
k++;
delay_nms(2);
}
tmp=tmp+8;
}
LCD_dsp_string(1,1,"LCD TEST ");//在第一行第一列顯示“LCD TEST”
LCD_dsp_string(1,2,"SUCCESSFUL ");//在第二行第一列顯示“SUCCESSFUL”
for (i=0;i<4;i++)
{
LCD_dsp_char( 12+i,1,i);//在第一行第12列位置顯示心圖案的上半部
delay_nms(1);
}
for (i=4;i<8;i++)
{
LCD_dsp_char( 12+i-4,2,i);在第二行第12列位置顯示心圖案的下半部
delay_nms(1);
}
while (1);
}
實(shí)際效果如圖:




關(guān)鍵詞: 單片機驅動(dòng)LCD160

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>