日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机控制lcd序c语言,51单片机驱动1602液晶的C程序

發布時間:2025/3/20 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机控制lcd序c语言,51单片机驱动1602液晶的C程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

# include

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

電路連接

P1------DB0~DB7

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);//在某個屏幕位置上顯示一

個字符,X(0-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//用了延時的方法,延時還是非常好用的。我試了一下,用//

總結

以上是生活随笔為你收集整理的单片机控制lcd序c语言,51单片机驱动1602液晶的C程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。