亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
一個(gè)關(guān)于LCD1602延時(shí)的問題
[打印本頁(yè)]
作者:
290435619@qq
時(shí)間:
2020-2-12 22:28
標(biāo)題:
一個(gè)關(guān)于LCD1602延時(shí)的問題
請(qǐng)問一下各位大神,我看LCD1602的說明文檔上面寫的延時(shí)都是ns級(jí)別的,我用的單片機(jī)是12M晶振的,所以我在寫數(shù)據(jù)的時(shí)候沒有用延時(shí),但是LCD上就顯示不出數(shù)據(jù)來,我加了延時(shí)之后,LCD上就有數(shù)據(jù)了,而且不同的延時(shí),LCD上顯示的數(shù)據(jù)還不同,這是怎么回事?
作者:
csmyldl
時(shí)間:
2020-2-13 13:26
是傳送數(shù)據(jù)的時(shí)序不符合,特別是應(yīng)答的時(shí)序
作者:
290435619@qq
時(shí)間:
2020-2-13 20:56
csmyldl 發(fā)表于 2020-2-13 13:26
是傳送數(shù)據(jù)的時(shí)序不符合,特別是應(yīng)答的時(shí)序
我是按照教程上面寫的,但是我看LCD1602的說明文檔上面寫的ns,所以我就想應(yīng)該可以不用延時(shí),于是我就用短的延時(shí)和長(zhǎng)的延時(shí)分別對(duì)比了一下,發(fā)現(xiàn)有很大差異
作者:
CZFMDZ
時(shí)間:
2020-2-14 13:41
應(yīng)該是時(shí)序問題,傳一個(gè)驗(yàn)證過的程序給你參考。程序中用NOP短延時(shí)你也可以去掉或加長(zhǎng)延時(shí)測(cè)試。
void LCMInit(void) //LCM初始化
{
WriteCommandLCM(0x38,1); //顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào) 設(shè)置8位格式,2行,5*7
WriteCommandLCM(0x3c,1); //顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào) 設(shè)置8位格式,2行,5*10
//4 顯示開/關(guān)控制 0 0 0 0 1 D C B D=0關(guān)顯示 D=1開顯示 C=0無(wú)光標(biāo) C=1有光標(biāo) B=0光標(biāo)不閃爍 B=1光標(biāo)閃爍
WriteCommandLCM(0x08,1); //顯示關(guān)
WriteCommandLCM(0x06,1); //顯示光標(biāo)移動(dòng)設(shè)置 不移位
WriteCommandLCM(0x0E,1); //顯示開、有光標(biāo)、光標(biāo)不閃爍
WriteCommandLCM(0x01,1); //清除屏幕顯示
}
//寫數(shù)據(jù)
void WriteDataLCM(unsigned char WDLCM)
{
ReadStatusLCM(); //檢測(cè)忙
LCM_Data = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0;
_nop_();_nop_();_nop_();//延時(shí)
LCM_E = 1;
}
//寫指令
void WriteCommandLCM(unsigned char WCLCM, bit BuysC) //BuysC為0時(shí)忽略忙檢測(cè)
{
if (BuysC==1){ ReadStatusLCM();} //根據(jù)需要檢測(cè)忙
LCM_Data = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
_nop_();_nop_();_nop_();//延時(shí)
LCM_E = 1;
}
//讀數(shù)據(jù)
unsigned char ReadDataLCM(void)
{
LCM_RS = 1;
LCM_RW = 1;
LCM_E = 0;
_nop_();_nop_();_nop_();//延時(shí)
LCM_E = 1;
return(LCM_Data);
}
unsigned char ReadStatusLCM(void)// 讀狀態(tài)
{
LCM_Data = 0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
_nop_();_nop_();_nop_();//延時(shí)
LCM_E = 1;
while (LCM_Data & 0x80); //檢測(cè)忙信號(hào) 忙時(shí)一直等待
return(LCM_Data);
}
//按指定位置顯示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength=0;
Y &= 0x1; //限制 X不能大于15
X &= 0xF; //限制 Y不能大于1
while (DData[ListLength]!=0) //若到達(dá)字串尾則退出
{
if (X <= 20) //X坐標(biāo)應(yīng)小于0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //顯示單個(gè)字符
}
X++; ListLength++;
}
}
//按指定位置顯示一個(gè)字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1; //限制 X不能大于15
X &= 0xF; //限制 Y不能大于1
if (Y==1) { X |= 0x40; }//當(dāng)要顯示第二行時(shí)地址碼+0x40;
X |= 0x80; // 算出指令碼 寫入顯示地址時(shí)要求最高位D7恒定為高電平1
WriteCommandLCM(X, 0); //這里不檢測(cè)忙信號(hào),發(fā)送地址碼 X值>=0x80
WriteDataLCM(DData);
}
//-----------------------------------------------------------------
//將8字節(jié)自定義字符的字模寫到CGRAM中
void write_pic(unsigned char add, unsigned char *pic_num)
{
unsigned char i;
add=add<<3;
for(i=0;i<8;i++)
{
WriteCommandLCM(0x40|add+i,1); //D7D6=01 D5~D3顯示自定義字符時(shí)的字符號(hào) D2~D0行號(hào)
WriteDataLCM(*pic_num++);
}
ReadStatusLCM(); //檢測(cè)忙或延時(shí)一段時(shí)間 此行一定要,否則執(zhí)行完立即顯示該字符時(shí)會(huì)不顯示
}
作者:
CZFMDZ
時(shí)間:
2020-2-14 13:43
這是LCD1602使用總結(jié)
//讀狀態(tài) 輸入 RS=L,R/W=H,E=H 輸出 D0—D7=狀態(tài)字
//讀數(shù)據(jù) 輸入 RS=H,R/W=H,E=H 輸出 D0—D7=數(shù)據(jù)
//寫數(shù)據(jù) 輸入 RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈 沖 輸出 無(wú)
//寫指令 輸入 RS=L,R/W=L,D0—D7=指令碼,E=高 脈沖 輸出 無(wú)
//
//DDRAM-- 就是顯示數(shù)據(jù)RAM存放待顯示的字符代碼共80個(gè)字節(jié)
//CGROM-- 字模存儲(chǔ)器內(nèi)置192個(gè)常用字符的字模
//CGRAM-- 自定義的字符產(chǎn)生RAM 字符代碼0~F 為用戶自定義字符圖形RAM
//1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表10-14所示:
//序號(hào) 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
//1 清顯示 0 0 0 0 0 0 0 0 0 1 執(zhí)行時(shí)間1.64ms 清屏即將DDRAM全部填充為20H
//2 光標(biāo)返回 0 0 0 0 0 0 0 0 1 * 執(zhí)行時(shí)間1.64ms 將光標(biāo)定位到屏幕左上角
//3 置輸入模式 0 0 0 0 0 0 0 1 I/D S 執(zhí)行時(shí)間40us I/D=0寫入數(shù)據(jù)后光標(biāo)左移 I/D=1寫入數(shù)據(jù)后光標(biāo)右移 S=0寫入數(shù)據(jù)后顯示屏不移動(dòng) S=1寫入數(shù)據(jù)后顯示屏右移1字符
//4 顯示開/關(guān)控制 0 0 0 0 0 0 1 D C B 執(zhí)行時(shí)間40us D=0關(guān)顯示 D=1開顯示 C=0無(wú)光標(biāo) C=1有光標(biāo) B=0光標(biāo)不閃爍 B=1光標(biāo)閃爍
//5 光標(biāo)或字符移位 0 0 0 0 0 1 S/C R/L * * 執(zhí)行時(shí)間40us S/C R/L=00光標(biāo)左移1格且AC減1 S/C R/L=01光標(biāo)右移1格且AC加1 S/C R/L=10光標(biāo)不動(dòng)字符全部左移一格 S/C R/L=10光標(biāo)不動(dòng)字符全右移一格
//6 功能設(shè)定 0 0 0 0 1 DL N F * * 執(zhí)行時(shí)間40us DL=0數(shù)據(jù)總線為4位 DL=1數(shù)據(jù)總線為8位 N=0顯示1行 N=1顯示2行 F=0時(shí)字符5*7點(diǎn)陣 F=1時(shí)字符5*10點(diǎn)陣
//7 置字符發(fā)生存貯器地址 0 0 0 1 字符發(fā)生存貯器地址 執(zhí)行時(shí)間40us D5~D3顯示自定義字符時(shí)的字符號(hào) D2~D0行號(hào)
//8 置數(shù)據(jù)存貯器地址 0 0 1 顯示數(shù)據(jù)存貯器地址 執(zhí)行時(shí)間40us 設(shè)定一個(gè)要存入數(shù)據(jù)的DDRAM地址
//9 讀忙標(biāo)志或地址 0 1 BF 計(jì)數(shù)器地址 執(zhí)行時(shí)間40us BF=1表示液晶屏忙暫無(wú)法接收數(shù)據(jù)或命令
//10 寫數(shù)到CGRAM或DDRAM 1 0 要寫的數(shù)據(jù)內(nèi)容 執(zhí)行時(shí)間40us 將數(shù)據(jù)寫入DDRAM或CGRAM
//11 從CGRAM或DDRAM讀數(shù) 1 1 讀出的數(shù)據(jù)內(nèi)容 執(zhí)行時(shí)間40us 讀取DDRAM或CGRAM中的內(nèi)容
作者:
辰景
時(shí)間:
2020-2-14 17:29
LCD1602模塊的時(shí)序圖決定了它的正常顯示,時(shí)序圖里有延時(shí)時(shí)間
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1