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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

lcd显示c语言程序,1602液晶简单显示程序

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

1602 液晶手冊提供了一個初始化過程,由于不檢測“忙”位,所以程序比較復雜,而我們總結了一個更加簡易方便的過程提供給大家,手冊上描述的那個,大家僅僅作為了解就可以了,下面我把程序寫出來大家看下,我們的初始化只用了 4 條語句,沒有像手冊介紹的那么繁瑣。

#include

#define LCD1602_DB P0

sbit LCD1602_RS = P1^0;

sbit LCD1602_RW = P1^1;

sbit LCD1602_E = P1^5;

void InitLcd1602();

void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);

void main(){

unsigned char str[] = "Kingst Studio";

InitLcd1602();

LcdShowStr(2, 0, str);

LcdShowStr(0, 1, "Welcome to KST51");

while (1);

}

/* 等待液晶準備好 */

void LcdWaitReady(){

unsigned char sta;

LCD1602_DB = 0xFF;

LCD1602_RS = 0;

LCD1602_RW = 1;

do {

LCD1602_E = 1;

sta = LCD1602_DB; //讀取狀態字

LCD1602_E = 0;

}while (sta & 0x80); //bit7 等于 1 表示液晶正忙,重復檢測直到其等于 0 為止

}

/* 向 LCD1602 液晶寫入一字節命令,cmd-待寫入命令值 */

void LcdWriteCmd(unsigned char cmd){

LcdWaitReady();

LCD1602_RS = 0;

LCD1602_RW = 0;

LCD1602_DB = cmd;

LCD1602_E = 1;

LCD1602_E = 0;

}

/* 向 LCD1602 液晶寫入一字節數據,dat-待寫入數據值 */

void LcdWriteDat(unsigned char dat){

LcdWaitReady();

LCD1602_RS = 1;

LCD1602_RW = 0;

LCD1602_DB = dat;

LCD1602_E = 1;

LCD1602_E = 0;

}

/* 設置顯示 RAM 起始地址,亦即光標位置,(x,y)-對應屏幕上的字符坐標 */

void LcdSetCursor(unsigned char x, unsigned char y){

unsigned char addr;

if (y == 0){ //由輸入的屏幕坐標計算顯示 RAM 的地址

addr = 0x00 + x; //第一行字符地址從 0x00 起始

}else{

addr = 0x40 + x; //第二行字符地址從 0x40 起始

}

LcdWriteCmd(addr | 0x80); //設置 RAM 地址

}

/* 在液晶上顯示字符串,(x,y)-對應屏幕上的起始坐標,str-字符串指針 */

void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str){

LcdSetCursor(x, y); //設置起始地址

while (*str != '\0'){ //連續寫入字符串數據,直到檢測到結束符

LcdWriteDat(*str++); //先取 str 指向的數據,然后 str 自加 1

}

}

/* 初始化 1602 液晶 */

void InitLcd1602(){

LcdWriteCmd(0x38); //16*2 顯示,5*7 點陣,8 位數據接口

LcdWriteCmd(0x0C); //顯示器開,光標關閉

LcdWriteCmd(0x06); //文字不動,地址自動+1

LcdWriteCmd(0x01); //清屏

}

程序中有詳細的注釋,結合本節前面的講解,大家自己分析下,掌握 1602 液晶的基本操作函數。LcdWriteDat(*str++)這行語句中對指針 str 的操作大家一定要理解透徹,先把 str指向的數據取出來用,然后 str 再加 1 以指向下一個數據,這是非常常用的一種簡寫方式。另外關于本程序還有幾點值得提一下:

首先,我們把程序所有的功能都使用函數模塊化了,這樣非常有利于程序的維護,不管要寫一個什么樣的功能,只要調用相應的函數就可以了,大家注意學習這種編程方法。

其次,我們使用液晶的習慣,也是用數學上的(x,y)坐標來進行屏幕定位,但與數學坐標系不同的是,液晶的左上角的坐標是 x=0,y=0,往右邊是 x+偏移,下邊是 y+偏移。

第三,第一次接觸多個參數傳遞的函數,而且還帶了指針類型的參數,所以多留心熟悉一下。

第四,讀寫數據和指令程序,每次都必須進行“忙”判斷。

第五,領略一下指針在這個地方的巧妙用法,你可以嘗試不用指針改寫程序試試,感受一下指針的優勢。

總結

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

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