51微控制器三線序列驅動12864液晶

2021-07-23 14:41:40 字數 1642 閱讀 9120

以前寫12864的液晶程式都是用的並行的方式,這種方式焊接起來很麻煩,而且占用的io口比較多。

今天嘗試使用序列方式來驅動該模組。

本程式是基於stc89c52的12864序列模式的程式,硬體電路連線只需要5根線,vcc  gnd rs rw  e , 只需要三個個io 口就可以顯示,大大節省了資源。

12864液晶晶元是st7920。自帶中文字庫。

該程式功能:實現使用12864液晶顯示字元、漢字(程式有詳細的中文注釋)。

已經除錯通過,很好用。

下面是電路原理圖

其時序圖如下:

根據其時序圖寫出其**如下:

#include #include #include #include #define uchar unsigned char

#define uint unsigned int

sbit cs = p2^7;//第4根線 rs

sbit sid = p2^6;//第5根線 rw

sbit sck = p2^5;//第6根線 e

uchar code ac_table=;

/******************************** 函式名稱 :sendbyte 串列埠傳送乙個位元組*****/

void sendbyte(uchar dbyte)} 

/***********接收乙個位元組***/

uchar receivebyte(void)

for(i=0;i<8;i++)

return ((0xf0&temp1)+(0x0f&temp2));} 

void checkbusy( void )

void writecommand(uchar cbyte )

void writedata(uchar dbyte )

uchar readdata( void )

void delay(uint ms)

; usn--;

}ms--;

}} void lcminit( void )

void lcmcleartxt( void )  

void putstr(uchar row,uchar col,uchar *puts)

if(row==4) row='0';

writecommand(ac_table[8*row+col]);

writedata(*puts);

puts++;

writedata(*puts);

puts++;

col++;

}} void displaydots(uchar dotbyte)

dotbyte=~dotbyte;

}} void main( void )

}

顯示效果如下:

51微控制器入門(三)

數碼管顯示,定時器中斷 鍵盤檢測 1.數碼管 分共陽極和共陰極數碼管。我的實驗板是共陰極,多位數碼管的公共端叫做 位選線 連線在一起的段線叫做 段選線 位選是獨立控制的,而段選是連線在一起的。段選資料由p0口傳送,位選由p2口的2.3.4控制。消影用p0 0x00 2.中斷 為使微控制器具有對外部或...

51微控制器輸出pwm驅動電機

參考 51微控制器按鍵控制輸出pwm的占空比 原理圖 這兩個小燈意味著電流方向,到時候是可以控制電機的正轉反轉的 程式 include define uint unsigned int define uchar unsigned char sbit pwm p1 0 p1.0輸出pwm sbit k...

51微控制器教程 二相四線步進電機驅動

第乙個問題 什麼是步進電機?步進電機就是用電脈衝訊號控制電機轉動特定角度的一種電機。比如說你給電機乙個脈衝訊號電機就轉動90度,那麼你給電機4個脈衝訊號電機就轉動了一圈。這個90度,就是步進電機的步進角,給乙個脈衝,它就轉動乙個步進角,於是它取名 步進電機 第二個問題 步進電機的特性?在非超載的情況...