久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機驅動1602液晶的C程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年11月06日   【字體:

# include<AT89x51.h>

 

/*****************************************
電路連接 

 

P1------DB0DB7
P2.0------RS

 

P2.1------RW

 

P2.2------E

 

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

 

# define LCD_DB   P1

 

sbit LCD_RS=P2^0;

 

sbit LCD_RW=P2^1;

 

sbit LCD_E=P2^2;

 

/******定義函數****************/

 

# define ucharunsigned char

 

# define uint unsigned int

 

void  LCD_init(void);//聲明初始化函數

 

void  LCD_write_command(uchar command);//寫指令函數

 

void  LCD_write_data(uchar dat);//寫數據函數

 

void  LCD_disp_char(uchar x,uchar y,uchar dat);//在某個屏幕位置上顯示一

 

個字符,X0-16),y(1-2)

 

//void  LCD_check_busy(void);//檢查忙函數。我沒用到此函數,因為通過率極

 

低。

 

void  delay_n40us(uint n);//延時函數

 

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

 

//*******初始化函數***************

 

void  LCD_init(void)

 

{

 

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

 

LCD_write_command(0x0c);//整體顯示,關光標,不閃爍

 

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

 

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

 

delay_n40us(100);//實踐證明,我的LCD1602上,用for 循環200 次就能可靠

 

完成清屏指令。

 

}

 

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

 

//********寫指令函數***********設置先向1602寫入的數據為地址*

 

void   LCD_write_command(uchar dat)

 

{

 

LCD_DB=dat;

 

LCD_RS=0;//指令

 

LCD_RW=0;//寫入

 

LCD_E=1;//允許

 

LCD_E=0;//產生下降沿

 

delay_n40us(1);//實踐證明,我的LCD1602 上,用for 循環1 次就能完成普通

 

寫指令。

 

}

 

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

 

//********再寫數據函數*****向1602中寫入數據********

 

void   LCD_write_data(uchar dat)

 

{

 

LCD_DB=dat;

 

LCD_RS=1;//數據

 

LCD_RW=0;//寫入

 

LCD_E=1;//允許

 

LCD_E=0;//產生下降沿

 

delay_n40us(1);

 

}

 

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

 

//*******顯示一個字符函數*********

 

void LCD_disp_char(uchar x,uchar y,uchar dat)

 

{

 

uchar address;

 

if(y==1)

 

address=0x80+x;

 

else

 

address=0xc0+x;

 

LCD_write_command(address);

 

LCD_write_data(dat);

 

}

 

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

 

/*******檢查忙函數*************

 

voidLCD_check_busy()       
 //
實踐證明,在我的LCD1602 上,檢查忙指令通

 

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

 

LCD_RS=0;                  //要用200次循環便能完成。

 

LCD_RW=1;

 

LCD_DB=0xff;

 

LCD_E=1;

 

while(LCD_DB^7==1);

 

 

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

 

//********延時函數***************

 

void delay_n40us(uint n)

 

{ uint i;

 

uchar j;

 

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

 

for(j=0;j<2;j++); //在這個延時循環函數中我只做了

 

2次循環,

 

} //實踐證明我的LCD1602 上普

 

通的指令只需1次循環就能可靠完成。

 

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

 

//*********主函數*****************

 

void main(void)

 

{

 

LCD_init();

 

LCD_disp_char(0,1,"A");

 

while(1);

 

}

過率極低,以至于不能正常使用LCD。因此我沒有再用檢查忙函數。而使

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

關閉窗口

相關文章

主站蜘蛛池模板: 天天干天天操天天看 | 国产精品日韩欧美一区二区三区 | 成人av一区二区三区 | 综合久久一区 | 精品国产乱码久久久久久丨区2区 | 国产欧美日韩一区二区三区在线 | 国产黄色大片 | 国产成人精品久久二区二区91 | 在线一区| 在线免费观看视频你懂的 | 在线伊人网 | 美女福利视频一区 | 国产中文| 日本不卡一区二区三区 | 亚洲成人免费观看 | 7799精品视频天天看 | 亚洲成人三级 | 国产欧美精品一区二区色综合朱莉 | 99re6在线视频精品免费 | 欧洲精品码一区二区三区免费看 | 激情亚洲 | 草草草影院 | 亚洲色图50p| 亚洲三区在线观看 | 精品中文字幕一区二区三区 | 国产免费一区二区三区 | 国产精品天堂 | 久久久久久国产精品免费免费男同 | 国产一二三区在线 | 一级网站 | 欧美日韩国产一区二区三区 | 国产三级精品三级在线观看四季网 | 久草欧美 | 手机看片1| 国产黄色在线 | 中文精品视频 | 欧美成人免费在线视频 | 天天干国产 | 男人天堂久久 | 中文字幕视频在线 | 精品免费国产 |