標(biāo)題:
LCD12864串行通信的時(shí)序不是很懂,有誰(shuí)可以解釋一下么?感謝!
[打印本頁(yè)]
作者:
我是滾滾T呀
時(shí)間:
2018-6-19 11:42
標(biāo)題:
LCD12864串行通信的時(shí)序不是很懂,有誰(shuí)可以解釋一下么?感謝!
串行通信的時(shí)序不是很懂,有誰(shuí)可以解釋一下么?感謝。!
作者:
mengsiu
時(shí)間:
2018-6-19 13:28
/*--------------------------------------------------------------------------
LCD12864.H
128*64 液晶顯示屏
--------------------------------------------------------------------------*/
#ifndef __LCD12864_H__
#define __LCD12864_H__
/*****************************************************************************/
//定義參數(shù)
sbit CLK_l = P1^3; //時(shí)鐘 6腳
sbit DAT_l = P1^4; //數(shù)據(jù) 5腳
sbit RES_l = P1^0; //復(fù)位 17腳
/*******************************************************************************/
//液晶顯示程序
/******************************************************************************/
//發(fā)送一個(gè)字節(jié)(底層函數(shù))
void write_lcd_byte(uchar bbyte) {
uchar i;
for(i=0;i<8;i++){
DAT_l=bbyte&0x80; //取出最高位
CLK_l=1;
CLK_l=0;
bbyte<<=1; //左移
}
}
/*****************************************************************************/
//寫(xiě)指令或數(shù)據(jù) (0,指令) (1,數(shù)據(jù))
void write_lcd_code(bit start, uchar ddata) {
uchar start_data,Hdata,Ldata;
if(start==0)
start_data=0xf8; //0:寫(xiě)指令
else
start_data=0xfa; //1:寫(xiě)數(shù)據(jù)
Hdata=ddata&0xf0; //取高四位
Ldata=(ddata<<4)&0xf0; //取低四位
write_lcd_byte(start_data); //發(fā)送起始信號(hào)
DelayUs(1); //延時(shí)是必須的
write_lcd_byte(Hdata); //發(fā)送高四位
DelayUs(1); //延時(shí)是必須的
write_lcd_byte(Ldata); //發(fā)送低四位
DelayUs(1); //延時(shí)是必須的
}
/*****************************************************************************/
//向lcd發(fā)送一個(gè)字符串,長(zhǎng)度64字符之內(nèi)。
void write_lcd_word(uchar *str){
while(*str != '\0'){
write_lcd_code(1,*str++);
}
*str = 0;
}
/****************************************************************************/
//初始化lcd
void Init_Lcd(void) {
DelayMs(1); //啟動(dòng)等待,等lcd講入工作狀態(tài)
write_lcd_code(0,0x30); //8 位介面,基本指令集
write_lcd_code(0,0x0c); //顯示打開(kāi),光標(biāo)關(guān),反白關(guān)
write_lcd_code(0,0x01); //清屏,將DDRAM的地址計(jì)數(shù)器歸零
DelayMs(1); //啟動(dòng)等待,等lcd講入工作狀態(tài)
}
/******************************************************************************/
//清屏函數(shù)
void Clean(){
uint j=0;
uchar x,y;
for(y=0;y<32;y++) {
write_lcd_code(0,0x36);//功能設(shè)置---8BIT控制界面,擴(kuò)充指令集
write_lcd_code(0,0x80+y); //行地址
write_lcd_code(0,0x80); //列地址
write_lcd_code(0,0x30);
for(x=0;x<32;x++){
write_lcd_code(1,0x00);
}
}
}
void Clr_Lcd(void){
write_lcd_code(0,0x01);
DelayMs(1); //啟動(dòng)等待,等lcd講入工作狀態(tài)
}
#endif
復(fù)制代碼
作者:
ARM學(xué)習(xí)能手
時(shí)間:
2018-6-19 14:08
你不能這樣直接問(wèn),你應(yīng)該看完手冊(cè)之后對(duì)時(shí)序那個(gè)位置不明白,必要時(shí)自己畫(huà)下圖,自己就找到答案了。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1