久久人妻av一区二区软件 ,欧美日韩中文亚洲另类春色,国产欧美亚洲精品a,亚洲a∨无码男人的天堂,精品亚洲人伦一区二区三区,国产美女精品一区二区,欧美精品aaa久久久影院,成人精品天堂一区二区三区
首頁(yè) 新聞 > 科技 > 正文

LCD1602程序代碼及顯示流程圖

lcd1602顯示程序代碼

本文引用地址:http://www.eepw.com.cn/article/201710/366255.htm

前些天弄了最小系統(tǒng)板后就想著學(xué)習(xí)1602的顯示程序,可惜壇子里的或網(wǎng)上的,都沒(méi)有簡(jiǎn)單的1602顯示程序,無(wú)柰在網(wǎng)上下載了一段經(jīng)過(guò)反復(fù)修改測(cè)試,終于有了下面一段代碼:

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

// - - 初始化接口

# define LCD_DB P0 // - - P0 = DB0~DB7

sbit LCD_RS=P2^0; // - - p2.0 = RS

sbit LCD_RW=P2^1; // - - p2.1 = RW

sbit LCD_E=P2^2; // - - p2.2 = E

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

// - - 定義函數(shù)

# define uchar unsigned char

# define uint unsigned int

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

// - - 定義子程序函數(shù)

void LCD_init(void); // - - 初始化LCD1602函數(shù)

void LCD_write_command(uchar command); // - - 向LCD1602寫(xiě)指令函數(shù)

void LCD_write_data(uchar dat); // - - 向LCD1602寫(xiě)數(shù)據(jù)函數(shù)

void LCD_set_xy(uchar x,uchar y); // - - 設(shè)置LCD1602顯示位置 X(0-16),y(1-2)

void LCD_disp_char(uchar x,uchar y,uchar dat); // - - 在LCD1602上顯示一個(gè)字符

void LCD_disp_string(uchar X,uchar Y,uchar *s); // - - 在LCD1602上顯示一個(gè)字符串

//void LCD_check_busy(void);//檢查忙函數(shù)。我沒(méi)用到此函數(shù),因?yàn)橥ㄟ^(guò)率極低。

void LCD_delay_10us(uint n); // - - 10微秒的延時(shí)子程序

void LCD_delay_50us(uint n); // - - 50微秒的延時(shí)子程序

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

// - - 初始化LCD1602

void LCD_init(void)

{

LCD_delay_10us(20);

LCD_write_command(0x38); // - - 設(shè)置8位格式,2行,5x7

LCD_delay_10us(5);

LCD_write_command(0x0c); // - - 整體顯示,關(guān)光標(biāo),不閃爍

LCD_delay_10us(5);

LCD_write_command(0x06); // - - 設(shè)定輸入方式,增量不移位

LCD_delay_10us(5);

LCD_write_command(0x01); // - - 清除屏幕顯示

LCD_delay_50us(40);

}

//********************************

// - - 向LCD1602寫(xiě)指令

void LCD_write_command(uchar dat)

{

LCD_delay_10us(5);

LCD_RS=0; // - - 指令

LCD_RW=0; // - - 寫(xiě)入

LCD_DB=dat;

LCD_delay_10us(5);

LCD_E=1; // - - 允許

LCD_delay_10us(5);

LCD_E=0;

}

// - - 向LCD1602寫(xiě)數(shù)據(jù)

void LCD_write_data(uchar dat)

{

LCD_delay_10us(5);

LCD_RS=1;// - - 數(shù)據(jù)

LCD_RW=0;// - - 寫(xiě)入

LCD_DB=dat;

LCD_delay_10us(5);

LCD_E=1;// - - 允許

LCD_delay_10us(5);

LCD_E=0;

}

// - - 設(shè)置顯示位置

void LCD_set_xy(uchar x,uchar y)

{

uchar address;

if(y==1)

{

address=0x80+x; // - - 第一行位置

} else {

address=0xc0+x; // - - 第二行位置

}

LCD_delay_10us(5);

LCD_write_command(address);

}

// - - 顯示一個(gè)字符函數(shù)

void LCD_disp_char(uchar x,uchar y,uchar dat) // - - LCD_disp_char(0,1,0x38); // - - 顯示8

{

LCD_set_xy(x,y);

LCD_delay_10us(5);

LCD_write_data(dat);

}

// - - 顯示一個(gè)字符串函數(shù)

void LCD_disp_string(uchar x,uchar y,uchar *s)

{

LCD_set_xy(x,y);

LCD_delay_10us(5);

while(*s!=‘\0’)

{

LCD_write_data(*s);

s++;

}

}

//********************************

/*******檢查忙函數(shù)*************

void LCD_check_busy() //實(shí)踐證明,在我的LCD1602上,檢查忙指令通過(guò)率極低,以

{ //至于不能正常使用LCD。因此我沒(méi)有再用檢查忙函數(shù)。而使

do //用了延時(shí)的方法,延時(shí)還是非常好用的。我試了一下,用

{ LCD_E=0; //for循環(huán)作延時(shí),普通指令只要1次循就可完成。清屏指令

LCD_RS=0; //要用200次循環(huán)便能完成。

LCD_RW=1;

LCD_DB=0xff;

LCD_E=1;

}while(LCD_DB^7==1);

******************************/

void LCD_delay_10us(uint n) // - - 10微秒的延時(shí)子程序

{

uint i,j;

for(i=n;i》0;i--)

for(j=2;j》0;j--);

}

void LCD_delay_50us(uint n) // - - 50微秒的延時(shí)子程序

{

uint i,j;

for(i=n;i》0;i--)

for(j=22;j》0;j--);

}

LCD1602顯示程序流程圖及句解

讓LCD1602顯示字符前要輸入字符所在的地址,這也是每顯示一個(gè)字符地址要加一的原因,在下面的一段代碼里你會(huì)明白怎么設(shè)置地址,怎么讓地址自動(dòng)加一,怎么清屏,怎么顯示字符,希望你能看懂哦

sbit LCD_E=P2^0; //lcd1602控制置位

sbit LCD_RW=P2^1; //lcd1602控制置位

sbit LCD_RS=P2^2; //lcd1602控制置位

void LCD_command(unsigned char com)

{

LCD_E=0;

LCD_RW=0;

LCD_RS=0;

P1=com;

delay_us(100);

LCD_E=1;

delay_us(100);

LCD_E=0;

}

void LCD_date(unsigned char dat)

{

LCD_E=0;

LCD_RW=0;

LCD_RS=1;

P1=dat;

delay_us(100);

LCD_E=1;

delay_us(100);

LCD_E=0;

}

LCD_command(0x38); //設(shè)置LCD為16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口

LCD_command(0x0c); //設(shè)置LCD顯示開(kāi),光標(biāo)顯示關(guān)

LCD_command(0x06); //寫(xiě)一個(gè)數(shù)據(jù)后地址加1

LCD_command(0x01); //顯示清屏

LCD_command(0x80); //數(shù)據(jù)指針設(shè)置為第一行第一位

LCD_date(‘pi’);

LCD_date(‘l’);

LCD_date(‘e’);

LCD_date(‘a’);

LCD_date(‘s’);

LCD_date(‘e’);

LCD_date(‘ ’);

LCD_date(‘c’);

LCD_date(‘h’);

LCD_date(‘e’);

LCD_date(‘c’);

LCD_date(‘k’);

LCD_date(‘ ’);

LCD_date(‘t’);

LCD_date(‘h’);

LCD_date(‘e’);

LCD_command(0x80+0x40); //LCD地址指針指向第二行第一個(gè)位置

LCD_date(‘c’);

LCD_date(‘o’);

LCD_date(‘n’);

LCD_date(‘n’);

LCD_date(‘e’);

LCD_date(‘c’);

LCD_date(‘t’);

LCD_date(‘i’);

LCD_date(‘o’);

LCD_date(‘n’);

LCD_date(‘!’);

LCD_date(‘!’);

關(guān)鍵詞: LCD1602 LCD1602顯示程序

最近更新

關(guān)于本站 管理團(tuán)隊(duì) 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2018 創(chuàng)投網(wǎng) - www.bbcnxku.cn All rights reserved
聯(lián)系我們:33 92 950@qq.com
豫ICP備2020035879號(hào)-12

 

主站蜘蛛池模板: 国产无遮挡无码视频在线观看| 人妻熟女一区二区aⅴ| 深夜国产一区二区三区在线看| 免费乱码人妻系列无码专区| 国产精品亚洲第一区焦香味 | 亚洲日韩av无码美腿丝袜| 亚洲国产欧美中文手机在线| 色宅男看片午夜大片啪啪| 久久久橹橹橹久久久久高清| 99热都是精品久久久久久| 国产亚洲精品久久www| 尤物国产在线精品福利三区| 亚洲精品卡2卡三卡4卡2卡乱码| 视频二区精品中文字幕| 久久亚洲精品成人无码网站| 伊人久久综合精品无码av专区 | 国产精品福利一区二区久久 | 成人国产精品日本在线| 手机无码人妻一区二区三区免费| 日韩成人无码毛片一区二区| 亚洲成片在线观看12345| 高清国产一区二区三区在线| 国产精品福利在线观看无码卡一| 国产精品ⅴ无码大片在线看| 日韩精品人妻无码久久影院| 精品国产丝袜自在线拍国语| 久久久久亚洲精品成人网| 毛片a久久99亚洲欧美毛片| 国产精品无码专区久久久| 中文字幕免费无码专区剧情| 国产乱子伦视频大全| 成在人线av无码免费漫画| 亚洲精品毛片av一区二区三区| 茄子视频国产在线观看| 中文字幕制服丝袜人妻动态图| 日韩欧美亚洲综合久久影院d3 | 蜜乳av久久久久久久久久久| 国产成人欧美亚洲日韩电影| 亚洲国产精品久久久久网站| 中文字幕 在线观看 亚洲| 欧美日韩国产专区一区二区|