用51單片機(STC89C52RC、STC12C5A60S2、STC15W104)驅動MzLH03-12864液晶顯示模塊

 

目錄

前言

1.軟硬件平臺

2.硬件焊接

2.1元件:

2.2電路原理圖

2.3焊接

3.新建keil工程

3.1新建文件夾

3.2新建工程

3.3新建main.c文件

3.4編寫程序

3.5編譯項目

4.程序燒寫進單片機

4.1硬件連接

4.2燒寫程序

5.實驗效果

6.展望

文件下載


前言

從實驗室翻出來一塊2009年生產的古董12864液晶顯示模塊,心血來潮想要把它驅動起來,從網上找資料,焊接簡單的電路,花費大半天時間才完成,詳細記錄如下。

1.軟硬件平臺

硬件:51單片機最小系統(天津銳志電子),本文采用的芯片是STC89C52RC 40I-PDIP,11.0592MHz晶振,也可使用STC12C5A60S2 35I-PDIP40,兩者引腳基本一致。此外,也可使用只有8腳的STC15W104,自己焊接外圍電路,只要有5個IO口即可。

軟件:Keil5 C51

2.硬件焊接

2.1元件:

(1)7cm*9cm洞洞板

(2)插針7P、插座10P、杜邦線11根

(3)68Ω電阻6個(33Ω-100Ω均可)

2.2電路原理圖

2.3焊接

焊錫走線大法好,原諒我的垃圾焊工,哈哈哈哈哈哈

正面

用杜邦線連接電路

3.新建keil工程

3.1新建文件夾

這裏我建在E盤,E:/12864液晶顯示,待會工程放在這個文件夾。

3.2新建工程

啓動keil5 C51,點擊Project>>New uVision Project,彈出創建窗口,選擇我們創建好的文件夾,項目命名爲 液晶顯示

點擊 保存,彈出選擇仿真模型窗口,STC89C52RC對應着NXP的P89V51RD2,STC12C5A60S2對應Micro-chip的AT89C52,STC15W104對應Intel的8051AH

點擊OK,彈出提示框,選擇 否

項目創建完成。

3.3新建main.c文件

右擊Source Group 1,選擇Add New Item to Group 'Source Group 1'

彈出文件命名窗口,命名爲main,類型爲C File,點擊Add,將main.c添加進項目。

這裏也可以先新建main.c文件,再右擊 Source Group 1,選擇Add Existing Files to Group 'Source Group 1',將main.c添加進項目。

3.4編寫程序

漢字GBK碼查詢網址:http://www.mytju.com/classcode/tools/encode_gb2312.asp

#include "reg52.h"
#include "intrins.h"
#define u8 unsigned char
#define u16 unsigned int
	
sbit res=P1^7;//SPI_RES
sbit cs=P1^6;
sbit sck=P1^5;
sbit sda=P1^4;
sbit busy=P1^3;

void Delay1ms()		//@11.0592MHz
{
	u8 i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}

void delay_n_ms(u16 n)
{
	while(n--)
	{
		Delay1ms();
	}
}

/*==============================================
函數:void LCD_init(void)
描述:LCD初始化程序,完成端口初始化以及復位
參數:無
返回:無
================================================*/
void LCD_init(void)
{
	cs=1;
	sda=1;
	sck=1;
	busy=1;
	
	res=0;//復位
	delay_n_ms(10);//延時10ms
	res=1;//恢復高電平,復位完成
	delay_n_ms(20);//延時20ms
}

/*==============================================
函數:void CS_set(u8 Status)
描述:置CS線狀態
參數:Status     =1則置高電平,=0則置低電平
返回:無
================================================*/
void CS_set(u8 Status)
{
	while(busy);//如果busy爲高電平,則循環等待
	if(Status)
	{
		cs=1;//CS置高電平
	}
	else
		cs=0;//CS置低電平
	
}

/*==============================================
函數:void Send(u8 Data)
描述:通過串行SPI口輸送一個byte的數據置模組
參數:Data     要傳送的數據
返回:無
================================================*/
void Send(u8 Data)
{
	u16 i=0;
	for(i=0;i<8;i++)
	{
		sck=0;//SCK置低電平
		if(Data&0x0080)
		{
			sda=1;
		}
		else
			sda=0;
		sck=1;//SCK上升沿觸發串行數據採樣
		Data=Data<<1;//數據左移一位
	}
}

int main(void)
{
	LCD_init();//LCD初始化,清屏
	CS_set(0);//CS置低電平
	Send(0x80);//發送指令0x80
	Send(0xAA);//指令數據
	CS_set(1);//CS置高電平
	
	//接下來設置背光亮度
	CS_set(0);//CS置低電平
	Send(0x8A);//發送指令0x8A
	Send(100);//亮度100
	CS_set(1);//CS置高電平
	
	//繪製點
	CS_set(0);//CS置低電平
	Send(0x01);//發送指令0x01
	Send(100);//設置X軸位置
	Send(5);//設置Y軸位置
	CS_set(1);//CS置高電平
	
	//設置ASCII字符的字型
	CS_set(0);//CS置低電平
	Send(0x81);//發送指令0x81
	Send(0x11);//選擇8X16的ASCII字體,黑色
	CS_set(1);//CS置高電平
	
	//顯示ASCII字符
	CS_set(0);//CS置低電平
	Send(7);//發送指令0x07
	Send(20);//設置字符左上角的X軸位置
	Send(36);//設置字符左上角的Y軸位置
	Send('A');//字符的ASCII碼值,直接用引號即可
	CS_set(1);//CS置高電平
	
	//顯示16x16點陣漢字“液”,GBK碼爲0xD2BA
	CS_set(0);//CS置低電平
	Send(8);//發送指令0x08
	Send(100);//設置字符左上角的X軸位置
	Send(36);//設置字符左上角的Y軸位置
	Send(0xD2);//發送二級字庫中漢字GB碼的高八位值
	Send(0xBA);//發送二級字庫中漢字GB碼的低八位值
	CS_set(1);//CS置高電平
	
	while(1);//一直顯示
	
}

3.5編譯項目

先點擊Options for Target,點擊Output,勾選創建hex文件,這樣編譯完成會生成.hex文件,以供燒寫使用。

點擊OK,完成設置。

點擊Rebuild,編譯文件

等待狀態欄提示".\Objects\液晶顯示" - 0 Error(s), 0 Warning(s).

編譯完成!

4.程序燒寫進單片機

4.1硬件連接

將最小系統板的VCC/TXD/RXD/GND用杜邦線連接USB-TTL轉接頭的5V0/RXD/TXD/GND

4.2燒寫程序

打開STC-ISP軟件(可以在宏晶科技官網下載),會自動識別單片機所連串口,單片機型號選擇STC89C52RC/LE52RC,點擊 打開程序文件,選擇E:\12864液晶顯示\Objects\液晶顯示.hex,點擊 下載/編程。

將單片機斷電,再重新上電,開始燒寫,稍等片刻,燒寫完成!

5.實驗效果

 

6.展望

驅動了顯示屏,下一步可以做一個溫溼度監測,顯示出來,或者爲其他項目提供交互。

文件下載

項目文件、stc下載軟件、MzLH03-12864液晶顯示模塊說明文檔已上傳百度網盤

百度網盤鏈接

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章