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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

lcd显示c语言程序,LCD1602液晶显示(51单片机c语言)

發布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lcd显示c语言程序,LCD1602液晶显示(51单片机c语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

效果圖:

電路圖:

#include

#include? //包含_nop_()函數定義的頭文件

#define uchar unsigned char

#define uint unsigned int

sbit RS=P2^5;??? //寄存器選擇位

sbit RW=P2^6;??? //讀寫選擇位

sbit E=P2^7;???? //使能信號位

//sbit BF=P0^7;??? //忙碌標志位

const uchar string1[ ]={"??? mazirong???? "};

const uchar string2[ ]={"TEL:13297961386? "};

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

函數功能:判斷液晶模塊的忙碌狀態

返回值:result。result=1,忙碌;result=0,不忙

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

/*uchar BusyTest()

{

bit result;

RS=0;?????? //根據規定,RS為低電平,RW為高電平時,可以讀狀態

RW=1;

E=1;??????? //E=1,才允許讀寫

_nop_();?? //空操作

_nop_();

_nop_();

_nop_();?? //空操作四個機器周期,給硬件反應時間

result=BF;? //將忙碌標志電平賦給result

E=0;

return result;

}*/

//*********************延時

void delay(uchar z)

{

uchar i,j;

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

for(j=110;j>0;j--);

}

//********************寫指令

void WriteInstruction(uchar dictate)

{

// while(BusyTest()==1);

RS=0;????????????????? //根據規定,RS和R/W同時為低電平時,可以寫入指令

RW=0;

E=0;?????????????????? //E置低電平(寫指令時,E為高脈沖)

// 就是讓E從0到1發生正跳變,所以應先置"0"

P0=dictate;??????????? //將數據送入P0口,即寫入指令或地址

delay(1);

/*_nop_();

_nop_();

_nop_();

_ nop_();*/

E=1;?????????????????? //E置高電平

_nop_();

_nop_();

_nop_();

_nop_();?????????????? //空操作四個機器周期,給硬件反應時間

E=0;????????????????? //當E由高電平跳變成低電平時,液晶模塊開始執行命令

}

//*********************寫數據

void WriteData(uchar dat)

{

// while(BusyTest()==1);

RS=1;?? //RS為高電平,RW為低電平時,可以寫入數據

RW=0;

E=0;??????????? //(寫指令時,E為高脈沖)

// 就是讓E從0到1發生正跳變,所以應先置"0"

P0=dat;???????? //將數據送入P0口,即將數據寫入液晶模塊

delay(1);

/*_nop_();

_nop_();

_nop_();

_ nop_();*/

E=1;????????? //E置高電平

_nop_();

_nop_();

_nop_();

_nop_();????? //空操作四個機器周期,給硬件反應時間

E=0;????????? //當E由高電平跳變成低電平時,液晶模塊開始執行命令

}

//*******************初始化

void Init(void)

{

WriteInstruction(0x38);? //顯示模式設置:16×2顯示,5×7點陣,8位數據接口

WriteInstruction(0x0c);? //顯示模式設置:顯示開,無光標

WriteInstruction(0x06);? //顯示模式設置:光標右移,字符不移

WriteInstruction(0x01);? //清屏幕指令,將以前的顯示內容清除

}

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

void main(void)

{

uchar a;

Init();

while(1)

{

a=0;

WriteInstruction(0x80);? // 設置顯示位置為第一行的第1個字

while(string1[a] != '\0')?? //'\0'是數組結束標志

{

WriteData(string1[a]);

a++;

}

a=0;

WriteInstruction(0x80+0x40); // 設置顯示位置為第二行的第1個字

while(string2[a] != '\0') //'\0'是數組結束標志

{

WriteData(string2[a]);

a++;

}

}

}

總結

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

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