單片機STC89C52RC及LCD12864液晶

單片機STC89C52RC芯片

? ? ? ?STC89C52RC單片機是宏晶公司生產(chǎn)的像鸡,它具有高速度辫塌、低功耗漏策、超強抗干擾等特點,指令代碼完全兼容傳統(tǒng)8051單片機臼氨,12時鐘/機器周期和6時鐘/機器周期可以任意選擇掺喻。內(nèi)部集成MAX810專用復位電路。STC89C52RC單片機的封裝其封裝號是(PDIP):

圖 1 STC12C5A60S2封裝引腳配置圖

LCD12864液晶及其接口的簡介

LCD12864液晶實物圖:


圖 2 LCD12864液晶實物圖

? ? ? ? 液晶顯示模塊具有體積小、功耗低感耙、顯示內(nèi)容豐富褂乍,操作簡單等特點。本LCD12864液晶使用ST7920控制器即硼,5V電壓驅(qū)動逃片,帶背光,內(nèi)置8192的16×16點陣只酥、128個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM)褥实。與外部CPU接口采用并行或串行兩種控制方式。

LCD12864液晶接口信號說明如表1所示:

表 1 LCD12864液晶接口信號表

液晶顯示原理

? ? ? ?并行基本操作時序:

? ? ? ?讀狀態(tài) 輸入:RS=L,RW=H, E=H? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 輸出:D0-D7=狀態(tài)字裂允。

? ? ? ?讀數(shù)據(jù) 輸入:RS=H,RW=H, E=H? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 輸出:無损离。

? ? ? ?寫指令 輸入:RS=L,RW=L, D0-D7=指令碼,E=高脈沖? ? ? ? ? ? ? ? 輸出:D0-D7=數(shù)據(jù)绝编。

? ? ? ?寫數(shù)據(jù) 輸入:RS=H,RW=L, D0-D7=數(shù)據(jù)僻澎,? E=高脈沖? ? ? ? ? ? ? ? ?輸出:無。

? ? ? ?漢字顯示坐標(見表2)

表 2 漢字顯示坐標表

?LCD12864液晶與單片機電路

? ? ? ?LCD12864液晶與單片機接口如圖3所示十饥。液晶1窟勃,2腳為電源端;19逗堵,20腳為背光電源拳恋,在19腳上要串聯(lián)一個10歐的電阻起到限流作用,用來保護和防止電壓過大而燒壞背光燈砸捏;液晶第3腳用來調(diào)節(jié)液晶顯示的比度,這里通過一個10千歐電位器接地來實現(xiàn)對比度的調(diào)節(jié)隙赁;液晶第4腳RS為向液晶控制器寫數(shù)據(jù)/寫命令選擇端垦藏,與單片機的P2.5引腳相連;液晶第5腳R/W為寫數(shù)據(jù)/寫命令選擇端伞访,高電平時為寫數(shù)據(jù)端掂骏、低電平時寫指令端,與單片機的P2.6相連厚掷;6腳EN連接單片機P2.7口弟灼;液晶的數(shù)據(jù)接口7腳至14腳和單片機P0口連接;液晶17腳接VCC高電平取消復位冒黑;液晶15腳引出J24端口通過接高低電平來選擇并串形式田绑。


圖 3 LCD12864液晶與單片機接口

液晶顯示程序代碼分析

/*******************************************************************/

/* ?main主函數(shù) ????????????????????????????????????????????????????????*/

/*******************************************************************/

#include

#include

#define uchar unsigned char

#define uint ?unsigned int

/************* LCD12864引腳定義 *************/

#define LCD_data ?P0 ??????//數(shù)據(jù)口

sbit LCD_RS ?= ?P2^5; ?????//寄存器選擇輸入

sbit LCD_RW ?= ?P2^6; ?????//液晶讀/寫控制

sbit LCD_EN ?= ?P2^7; ?????//液晶使能控制

/*******************************************************************/

/* ?LCD12864液晶顯示控制函數(shù) ??????????????????????????????????????*/

/*******************************************************************/

void lcd_delay_1ms(uint x) ??// ?LCD12864液晶延時函數(shù)

{

???uint i,j;

???for(j=0;j

?for(i=0;i<110;i++);

}

void lcd_wcmd(uchar cmd) /*寫指令數(shù)據(jù)到LCD ?RS=L,RW=L抡爹,E=高脈沖掩驱,D0-D7=指令碼。*/

{ ?????????????????????????

LCD_RS = 0; ????????//指令開啟

LCD_RW = 0; ???????//寫指令

????LCD_EN = 0;

????P0 = cmd;

lcd_delay_1ms(5);

LCD_EN = 1; ???????//高脈沖

lcd_delay_1ms(5);

????LCD_EN = 0; ?

} ????????????????????????????????????????????????

void lcd_wdat(uchar dat) ?/*寫顯示數(shù)據(jù)到LCD *RS=H,RW=L欧穴,E=高脈沖民逼,D0-D7=數(shù)據(jù)。*/

{ ?????????????????????????

LCD_RS = 1; ??????//數(shù)據(jù)開啟

LCD_RW = 0; ?????//寫數(shù)據(jù)

????LCD_EN = 0; ?????

????P0 = dat;

????lcd_delay_1ms(5);

LCD_EN = 1; ?????//高脈沖

????lcd_delay_1ms(5);

????LCD_EN = 0; ?????

}

void lcd_init() ??/*LCD初始化設定*/

{

lcd_wcmd(0x30); ?????//基本指令操作

????lcd_delay_1ms(1);

lcd_wcmd(0x0C); ?????//顯示開涮帘,關(guān)光標

????lcd_delay_1ms(1);

lcd_wcmd(0x01); ?????//清除LCD的顯示內(nèi)容

????lcd_delay_1ms(1);

}

void lcd_pos(uchar X,uchar Y) /*設定顯示位置拼苍,X表示行,Y表示列*/

{

???uchar ?pos;

???if (X==0)

{X=0x80;} ?????//液晶第1行

???else if (X==1)

{X=0x90;} ?????//液晶第2行

???else if (X==2)

{X=0x88;} ?????//液晶第3行

???else if (X==3)

{X=0x98;} ?????//液晶第4行

???pos = X+Y ;

lcd_wcmd(pos); ????//顯示地址

}

/*******************************************************************/

/*顯示函數(shù) ??????????????????????????????????????????????????????*/

/*******************************************************************/

????????void hzkdis(unsigned char code *s)

{

????while(*s > 0)

????{

lcd_wdat(*s); ?????//顯示字符

????????s++;

????}

}

/*******************************************************************/

/* ????????????????????????????????????????????????????????????????*/

/* ?LCD12864液晶函數(shù)聲明 ??????????????????????????????????????????*/

/* ????????????????????????????????????????????????????????????????*/

/*******************************************************************/

void lcd_pos(uchar X,uchar Y);

void lcd_wdat(uchar dat);

void lcd_init();

void hzkdis(unsigned char code *s); ?????//顯示字符串

void Test1(); ???????????????????????????//顯示子函數(shù)

void Test2(uint x); ???????????????????????//顯示子函數(shù)

void xianshi(unsigned char code *s);

/*******************************************************************/

/*系統(tǒng)字符顯示庫 ????????????????????????????????????????????????*/

/*******************************************************************/

uchar code dis2[] = {"LCD12864液晶顯示"};

uchar code dis3[] = {"007行動"};

uchar code dis4[] = {"沈淵|007-8109|踐行"};

uchar code dis5[] = {"2018年7月14日"};

/*******************************************************************/

/* ?1ms延時函數(shù) ???????????????????????????????????????????????????*/

/*******************************************************************/

void delay_1ms(uint x)

{

???uint i,j;

???for(j=0;j

?????for(i=0;i<110;i++);

}

/*******************************************************************/

void main()

{

IE = 0x81; ????????????????//允許總中斷中斷,使能 INT0 外部中斷

TCON = 0x01; ??????????????//觸發(fā)方式為脈沖負邊沿觸發(fā)

IRIN=1; ???????????????????//I/O口初始化

delay_1ms(10); ????????????//上電调缨,等待穩(wěn)定

lcd_init(); ???????????????//初始化LCD

Test1(); ??????????????????//初始文字顯示

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疮鲫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子同蜻,更是在濱河造成了極大的恐慌棚点,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件湾蔓,死亡現(xiàn)場離奇詭異瘫析,居然都是意外死亡,警方通過查閱死者的電腦和手機默责,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門贬循,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桃序,你說我怎么就攤上這事杖虾。” “怎么了媒熊?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵奇适,是天一觀的道長。 經(jīng)常有香客問我芦鳍,道長嚷往,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任柠衅,我火速辦了婚禮皮仁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菲宴。我一直安慰自己贷祈,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布喝峦。 她就那樣靜靜地躺著势誊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪愈犹。 梳的紋絲不亂的頭發(fā)上键科,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天闻丑,我揣著相機與錄音,去河邊找鬼勋颖。 笑死嗦嗡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的饭玲。 我是一名探鬼主播侥祭,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼茄厘!你這毒婦竟也來了矮冬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤次哈,失蹤者是張志新(化名)和其女友劉穎胎署,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窑滞,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡琼牧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哀卫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巨坊。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖此改,靈堂內(nèi)的尸體忽然破棺而出趾撵,到底是詐尸還是另有隱情,我是刑警寧澤共啃,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布占调,位于F島的核電站,受9級特大地震影響移剪,放射性物質(zhì)發(fā)生泄漏妈候。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一挂滓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啸胧,春花似錦赶站、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陷谱,卻和暖如春烙博,著一層夾襖步出監(jiān)牢的瞬間瑟蜈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工渣窜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铺根,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓乔宿,卻偏偏與公主長得像位迂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子详瑞,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 分開已經(jīng)是第34天坝橡,心卻依然在痛泻帮。說好的愛情,沒能堅持下去计寇÷嘣樱或許愛情二字,本身就是充滿傷感饲常,碰碎了蹲堂,心也是滿滿的...
    Rachel1閱讀 288評論 0 0
  • 每個追求者都渴望成功,然而贝淤,還有比成功更寶貴的東西柒竞,這就是追求本身。我寧愿做一個未必成功的追求者播聪,而不愿是一個不再...
    簡單的小小世界閱讀 895評論 0 1
  • Hadoop的前世今生 什么是大數(shù)據(jù) 各行各業(yè)都會產(chǎn)生大量的數(shù)據(jù),比如社交網(wǎng)站的意見觀點离陶,電商平臺人們?yōu)g覽網(wǎng)頁停留...
    dy2903閱讀 426評論 0 1
  • 一稼虎、開學季 一九九八年的那個初秋,北方九月的驕陽似老虎的舌頭招刨,毒辣辣的舔舐著大地霎俩,而我的心也似小兔子,蹦蹦跳跳個不...
    夏日樹蔭閱讀 333評論 0 1