在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ 12.9 1602 液晶簡單顯示程序
8.3 C 語言函數(shù)的形參和實(shí)參
12.2 C 語言指針變量的聲明
12.5 ?C 語言字符數(shù)組和字符指針
7.3 單片機(jī) LED 點(diǎn)陣的介紹
11.5 UART 串口通信的基本應(yīng)用
9.9 單片機(jī)蜂鳴器控制程序和驅(qū)動(dòng)電路
10. 單片機(jī)實(shí)例練習(xí)與經(jīng)驗(yàn)積累
10.3 單片機(jī)交通燈控制程序和設(shè)計(jì)原理
9.8 實(shí)用的 28BYJ-48 步進(jìn)電機(jī)控制程序
8.2 C 語言函數(shù)的調(diào)用
12.4 C 語言指向數(shù)組元素的指針
7.1 C 語言變量的作用域
11.2 RS232 通信接口
12.7 1602 液晶的讀寫時(shí)序介紹
7.2 C 語言變量的存儲(chǔ)類別
8. C 語言函數(shù)進(jìn)階與單片機(jī)按鍵
10.4 51單片機(jī) RAM 區(qū)域的劃分
12.1 C 語言變量的地址
11. UART 串口通信
7. 變量進(jìn)階與點(diǎn)陣 LED
8.4 單片機(jī)按鍵介紹
9.3 電機(jī)的分類
9.1 單片機(jī) IO 口的結(jié)構(gòu)
單片機(jī)通信實(shí)例與 ASCII 碼
8.1 單片機(jī)最小系統(tǒng)解析(電源、晶振和復(fù)位電路)
9.2 單片機(jī)上下拉電阻
11.4 單片機(jī) IO 口模擬 UART 串口通信
9.5 讓 28BYJ-48 步進(jìn)電機(jī)轉(zhuǎn)起來
9.7 28BYJ-48 步進(jìn)電機(jī)控制程序基礎(chǔ)
12.8 1602 液晶指令介紹
12.3 C 語言指針的簡單示例
8.7 單片機(jī)矩陣按鍵的掃描
7.4 單片機(jī) LED 點(diǎn)陣的圖形顯示
8.6 單片機(jī)按鍵消抖程序
10.2 單片機(jī)中 PWM 的原理與控制程序
7.6 單片機(jī) LED 點(diǎn)陣的橫向移動(dòng)(動(dòng)態(tài)顯示)
11.3 USB 轉(zhuǎn)串口通信
12.9 1602 液晶簡單顯示程序
9.4 28BYJ-48 步進(jìn)電機(jī)原理
8.5 ?單片機(jī)獨(dú)立按鍵掃描程序
12. C 語言指針基礎(chǔ)與1602液晶的初步認(rèn)識(shí)
9. 單片機(jī)中的步進(jìn)電機(jī)與蜂鳴器
10.1 單片機(jī)數(shù)字秒表程序
7.5 單片機(jī) LED 點(diǎn)陣的縱向移動(dòng)(動(dòng)態(tài)顯示)
8.8 單片機(jī)簡易加法計(jì)算器程序
11.1 單片機(jī)串行通信介紹
10.5 單片機(jī)長短按鍵的應(yīng)用
12.6 1602 液晶介紹(電路和引腳圖)
9.6 28BYJ-48 步進(jìn)電機(jī)轉(zhuǎn)動(dòng)精度與深入分析

12.9 1602 液晶簡單顯示程序

1602 液晶手冊(cè)提供了一個(gè)初始化過程,由于不檢測(cè)“忙”位,所以程序比較復(fù)雜,而我們總結(jié)了一個(gè)更加簡易方便的過程提供給大家,手冊(cè)上描述的那個(gè),大家僅僅作為了解就可以了,下面我把程序?qū)懗鰜泶蠹铱聪拢覀兊某跏蓟挥昧?條語句,沒有像手冊(cè)介紹的那么繁瑣。

#include <reg52.h>
#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);
}
    /* 等待液晶準(zhǔn)備好 */
void LcdWaitReady(){
    unsigned char sta;
    LCD1602_DB = 0xFF;
    LCD1602_RS = 0;
    LCD1602_RW = 1;
    do {
        LCD1602_E = 1;
        sta = LCD1602_DB; //讀取狀態(tài)字
        LCD1602_E = 0;
    }while (sta & 0x80); //bit7 等于1表示液晶正忙,重復(fù)檢測(cè)直到其等于0為止
}
/* 向 LCD1602 液晶寫入一字節(jié)命令,cmd-待寫入命令值 */
void LcdWriteCmd(unsigned char cmd){
    LcdWaitReady();
    LCD1602_RS = 0;
    LCD1602_RW = 0;
    LCD1602_DB = cmd;
    LCD1602_E = 1;
    LCD1602_E = 0;
}
/* 向 LCD1602 液晶寫入一字節(jié)數(shù)據(jù),dat-待寫入數(shù)據(jù)值 */
void LcdWriteDat(unsigned char dat){
    LcdWaitReady();
    LCD1602_RS = 1;
    LCD1602_RW = 0;
    LCD1602_DB = dat;
    LCD1602_E = 1;
    LCD1602_E = 0;
}
/* 設(shè)置顯示 RAM 起始地址,亦即光標(biāo)位置,(x,y)-對(duì)應(yīng)屏幕上的字符坐標(biāo) */
void LcdSetCursor(unsigned char x, unsigned char y){
    unsigned char addr;
    if (y == 0){ //由輸入的屏幕坐標(biāo)計(jì)算顯示 RAM 的地址
        addr = 0x00 + x; //第一行字符地址從 0x00 起始
    }else{
        addr = 0x40 + x; //第二行字符地址從 0x40 起始
    }
    LcdWriteCmd(addr | 0x80); //設(shè)置 RAM 地址
}
/* 在液晶上顯示字符串,(x,y)-對(duì)應(yīng)屏幕上的起始坐標(biāo),str-字符串指針 */
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str){
    LcdSetCursor(x, y); //設(shè)置起始地址
    while (*str != '\0'){ //連續(xù)寫入字符串?dāng)?shù)據(jù),直到檢測(cè)到結(jié)束符
        LcdWriteDat(*str++); //先取 str 指向的數(shù)據(jù),然后 str 自加1
    }
}
/* 初始化 1602 液晶 */
void InitLcd1602(){
    LcdWriteCmd(0x38); //16*2 顯示,5*7 點(diǎn)陣,8位數(shù)據(jù)接口
    LcdWriteCmd(0x0C); //顯示器開,光標(biāo)關(guān)閉
    LcdWriteCmd(0x06); //文字不動(dòng),地址自動(dòng)+1
    LcdWriteCmd(0x01); //清屏
}

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

  • 首先,我們把程序所有的功能都使用函數(shù)模塊化了,這樣非常有利于程序的維護(hù),不管要寫一個(gè)什么樣的功能,只要調(diào)用相應(yīng)的函數(shù)就可以了,大家注意學(xué)習(xí)這種編程方法。
  • 其次,我們使用液晶的習(xí)慣,也是用數(shù)學(xué)上的(x,y)坐標(biāo)來進(jìn)行屏幕定位,但與數(shù)學(xué)坐標(biāo)系不同的是,液晶的左上角的坐標(biāo)是 x=0,y=0,往右邊是 x+ 偏移,下邊是 y+ 偏移。
  • 第三,第一次接觸多個(gè)參數(shù)傳遞的函數(shù),而且還帶了指針類型的參數(shù),所以多留心熟悉一下。
  • 第四,讀寫數(shù)據(jù)和指令程序,每次都必須進(jìn)行“忙”判斷。
  • 第五,領(lǐng)略一下指針在這個(gè)地方的巧妙用法,你可以嘗試不用指針改寫程序試試,感受一下指針的優(yōu)勢(shì)。