|
本帖最后由 人人學(xué)會(huì)單片機(jī) 于 2021-4-23 22:16 編輯
15 03 18 01 LCD1602詳細(xì)中文資料 20210423.pdf
(2.35 MB, 下載次數(shù): 127)
2021-4-23 22:10 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
//**************************************************/******************祁緒電子---2021年4月 *************
//0、本程序配套視頻教程《人人學(xué)會(huì)單片機(jī)》錄制時(shí)間為:2020年6月25日
//1、本代碼和資料最后編輯時(shí)間為:2021年4月24日,視頻和代碼不同之處,以本代碼為準(zhǔn)。
//2、本代碼只適合STC15W單片機(jī)。可能不兼容其他單片機(jī)。
//**************************************************/*******************祁緒電子---2021年4月 *************
#include "all.h"
u8 xdata LCD1602_Write_Buffer1[16]; //1602 上行數(shù)據(jù)
u8 xdata LCD1602_Write_Buffer2[16]; //1602 下行數(shù)據(jù)
u8 code LCD1602_5x8[8]={0x08,0x00,0x07,0x08,0x08,0x08,0x08,0x07};
u8 xdata LCD1602_Write_Cursor_Add;
//**************************************************/*******************祁緒電子---2021年4月 *************
//LCD1602驅(qū)動(dòng)芯片AiP31066要求:兩次寫(xiě)入的時(shí)間間隔有39us、43us等,為確保穩(wěn)定好記,周期取50微秒最好。
//LCD1602_Delay函數(shù)的參數(shù)是工作在STC15W單片機(jī)+30M晶振頻率,74HC595數(shù)據(jù)發(fā)送時(shí)間15us,
//如果74HC595使用bit方式操作,或者直接單片機(jī)并口發(fā)送到LCD,請(qǐng)將本延遲函數(shù)改成50us。
//74HC595使用循環(huán)移位方式,那么,執(zhí)行delay函數(shù)的時(shí)間 = 50us - 74HC595數(shù)據(jù)發(fā)送時(shí)間15us ≈ 35us,既len=1 執(zhí)行35us
//**************************************************/*******************祁緒電子---2021年4月 *************
void LCD1602_Delay(u8 len) //既len=1 執(zhí)行35us
{
u8 idata i;
while(len--)
{
i=70; //經(jīng)過(guò)測(cè)量得到的值
while(i--);
}
}
//**************************************************/*******************祁緒電子---2021年4月 *************
//向LCD1602液晶里面寫(xiě)入一個(gè)命令(既地址),兩次調(diào)用時(shí)間間隔絕對(duì)要大于40us。
//**************************************************/******************祁緒電子---2021年4月 *************
void LCD1602_Write_Add(u8 Add)
{
LCD1602_RS=0;
LCD1602_E=0;
LCD1602_Delay(1);
LCD1602_E=1;
HC595_Write_Buffer[0]=Add;
HC595_Write_Buffer[1]=0;
HC595_Write_Data_Drive();
LCD1602_E=0;
}
//**************************************************/*******************-祁緒電子---2021年4月 *************
//向LCD1602液晶里面寫(xiě)入一個(gè)數(shù)據(jù)(既字符),兩次調(diào)用時(shí)間間隔絕對(duì)要大于40us。
//**************************************************/*******************祁緒電子---2021年4月 *************
void LCD1602_Write_Dat(u8 Dat) //寫(xiě)內(nèi)容
{
LCD1602_RS=1;
LCD1602_E=0;
LCD1602_Delay(1);
LCD1602_E=1;
HC595_Write_Buffer[0]=Dat;
HC595_Write_Buffer[1]=0;
HC595_Write_Data_Drive();
LCD1602_E=0;
}
//**************************************************/*******************--祁緒電子---2021年4月 *************
//LCD1602的硬件初始化,以及寫(xiě)入自定義圖像,(特別注意:使用595驅(qū)動(dòng)LCD,則本函數(shù)必須寫(xiě)在595初始化后面)
//**************************************************/*******************--祁緒電子---2021年4月 *************
void LCD1602_Init()
{
u8 i;
LCD1602_Delay(250); //上電后等待至少15ms,才能往LCD寫(xiě)指令
LCD1602_Delay(250); //上電后等待至少15ms,才能往LCD寫(xiě)指令
LCD1602_Write_Add(0x38); //執(zhí)行時(shí)間40us 設(shè)置總線模式為八位 總線
LCD1602_Write_Add(0x01); //執(zhí)行時(shí)間1.53ms 清除整個(gè)屏幕需要很長(zhǎng)時(shí)間
LCD1602_Delay(50);
LCD1602_Write_Add(0x02); //執(zhí)行時(shí)間1.53ms 光標(biāo)地址返回到原點(diǎn)
LCD1602_Delay(50);
LCD1602_Write_Add(0x06); //執(zhí)行時(shí)間40us 字符書(shū)寫(xiě)模式
LCD1602_Write_Add(0x0C); //執(zhí)行時(shí)間40us 顯示開(kāi)、關(guān)
LCD1602_Write_Add(0x14); //執(zhí)行時(shí)間40us 光標(biāo)或者字符移動(dòng)設(shè)置
LCD1602_Write_Add(0x40); //執(zhí)行時(shí)間40us 自定義存儲(chǔ)空間起始地址
for(i=0;i<8;i++)
{
LCD1602_Write_Dat(LCD1602_5x8);//每寫(xiě)入一個(gè)字節(jié)的執(zhí)行時(shí)間是45us
}
}
//**************************************************/******************* -祁緒電子---2021年4月 *************
//LCD1602 顯示字符和光標(biāo)控制
//**************************************************/******************-祁緒電子---2021年4月 *************
void LCD1602_Display_Ser()
{
u8 i;
LCD1602_Write_Add(0x80); //40us 設(shè)置顯示地址
for(i=0;i<16;i++)
{
LCD1602_Write_Dat(LCD1602_Write_Buffer1);//每寫(xiě)入一個(gè)字節(jié)的執(zhí)行時(shí)間是45us
}
LCD1602_Write_Add(0xC0); //40us 設(shè)置顯示地址
for(i=0;i<16;i++)
{
LCD1602_Write_Dat(LCD1602_Write_Buffer2);//每寫(xiě)入一個(gè)字節(jié)的執(zhí)行時(shí)間是45us
}
switch(LCD1602_Write_Cursor_Add)
{
case 0:LCD1602_Write_Add(0x0C);break;//不顯示也不閃爍光標(biāo)
case 1:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCa);break;
case 2:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCd);break;
case 3:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC7);break;
case 4:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC4);break;
case 5:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC1);break;
case 6:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCf);break;
case 7:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x89);break;
case 8:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x86);break;
case 9:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x83);break;
}
}
|
評(píng)分
-
查看全部評(píng)分
|