一、前期準備
開發環境:MDK5.14
庫函數:標準庫V3.5
LCD12864模塊:淘寶有售
二、實驗效果
3.3V LCD12864
5V LCD12864
三、驅動原理
5V和3.3V模塊均可以用STM32直接驅動,而不像1602那樣5V必須是用5V驅動。注意的是模塊上面的PSB腳接VCC,接VCC的話是采用并口傳輸數據,接GND采用串口傳輸,串口程序會在以后的博客中跟新。RST腳接VCC,此處沒有用到硬件復位,所以直接接VCC,其復位低電平有效。驅動芯片資料,請自行搜索ST7920,里面自帶字庫。
需要完整工程或者有問題的請加QQ:1002521871,驗證:呵呵。
四、驅動代碼
LCD12864.h
#ifndef __LCD_12864_H__
#define __LCD_12864_H__
#include "stm32f10x.h"
#include "gpio.h"
#include "delay.h"
//IO Definitions
#define RS PCout(0)
#define RW PCout(1)
#define EN PCout(2)
//#define PSB PCout(3)
//#define RST PCout(4)
#define RS_Pin GPIO_Pin_0
#define RW_Pin GPIO_Pin_1
#define EN_Pin GPIO_Pin_2
//#define PSB_Pin GPIO_Pin_3
//#define RST_Pin GPIO_Pin_4
typedef enum
{
Command,
Data
}WR_Mode;
#define LINE1 0x80
#define LINE2 0x90
#define LINE3 0x88
#define LINE4 0x98
extern void LCD12864_Show(uint8_t line, uint8_t pos, uint8_t *str);
extern void LCD12864Configuration(void);
extern void LCD_Clr(void);
#endif
LCD12864.c
#include "lcd12864.h"
void LCD_Wait_Ready(void)
{
uint8_t status;
RS = 0;
RW = 1;
GPIOD->ODR = 0xFF;
do
{
EN = 1;
DelayMs(5);
status = GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_7);
}while(status & 0x80);
EN = 0;
}
void LCD_Write_Cmd(uint8_t cmd)
{
LCD_Wait_Ready();
RS = 0;
RW = 0;
EN = 1;
GPIOD->ODR = cmd;
EN = 0;
}
void LCD_Write_Dat(uint8_t dat)
{
LCD_Wait_Ready();
RS = 1;
RW = 0;
EN = 1;
GPIOD->ODR = dat;
EN = 0;
}
void LCD_Init(void)
{
LCD_Write_Cmd(0x30);
LCD_Write_Cmd(0x0C);
LCD_Write_Cmd(0x01);
}
void LCD_Write_Word(uint8_t *str)
{
while (*str > 0)
{
LCD_Write_Dat(*str);
str ++;
}
}
void LCD_Write_Test(WR_Mode mode, uint8_t word)
{
switch(mode)
{
case Command:
LCD_Write_Cmd(word);
break;
case Data:
LCD_Write_Dat(word);
break;
}
}
void LCD_Clr(void)
{
LCD_Write_Test(Command, 0x01);
}
void LCM_CLR(void)
{
uint8_t clear[16] = " ";
// "1234567812345678"
LCD_Write_Test(Command, LINE1);
LCD_Write_Word(clear);
LCD_Write_Test(Command, LINE2);
LCD_Write_Word(clear);
LCD_Write_Test(Command, LINE3);
LCD_Write_Word(clear);
}
void LCD12864_Show(uint8_t line, uint8_t pos, uint8_t *str)
{
LCD_Write_Test(Command, line + pos);
LCD_Write_Word(str);
}
void LCD12864Configuration(void)
{
GPIO_InitTypeDef GPIO;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);
GPIO.GPIO_Pin = RS_Pin | RW_Pin | EN_Pin;//| PSB_Pin | RST_Pin;
GPIO.GPIO_Speed = GPIO_Speed_50MHz;
GPIO.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO);
//Data Port , PD0 ~ PD7
GPIO.GPIO_Pin = 0xFF;
GPIO_Init(GPIOD, &GPIO);
LCD_Init();
LCD_Clr();
}
上一篇:STM32F103ZE FreeRTOS移植、測試
下一篇:LCD1602驅動(STM32)5V和3.3V
推薦閱讀
史海拾趣
隨著市場的不斷發展,華宇創意識到單一產品無法滿足日益增長的市場需求。于是,公司加大了對研發的投入,積極引進高端人才,與國內外知名科研機構建立合作關系。經過不懈努力,華宇創成功研發出一系列智能電子設備,包括智能手表、智能眼鏡、智能家居控制器等。這些新產品的推出不僅豐富了公司的產品線,也進一步提升了華宇創的市場競爭力。
近年來,輝芒微積極籌備上市工作,旨在通過資本市場進一步拓展融資渠道和品牌影響力。盡管在上市過程中經歷了兩次撤回申請資料的波折,但公司始終保持著對資本市場的熱情和信心。通過不斷優化內部管理、提升產品競爭力和加強市場拓展,輝芒微最終贏得了市場的廣泛認可。其產品被廣泛應用于智能家居、生活電器、智能穿戴等領域,并與小米、飛科、中興等眾多知名品牌建立了長期穩定的合作關系。
在國內市場取得一定成功后,Brilliance公司開始將目光投向國際市場。公司制定了詳細的國際化戰略,積極尋求與國際知名企業的合作機會。通過與國外合作伙伴的共同努力,Brilliance的產品逐漸打入國際市場,并獲得了良好的口碑。同時,公司還積極參加國際電子展會和交流活動,提升了品牌知名度和影響力。
AMRI Enterprise Co Ltd在電子行業中嶄露頭角,源于其一次重大的技術突破。公司研發團隊經過數年的努力,成功開發出了一款具有高效能、低功耗特點的芯片,引起了市場的廣泛關注。這一技術突破不僅提升了AMRI的產品競爭力,還為公司贏得了眾多合作伙伴的青睞。隨著產品線的不斷擴展和市場份額的逐步增加,AMRI逐漸在電子行業中站穩了腳跟。
隨著產品線的不斷豐富和技術實力的不斷提升,Aborn Electronics開始積極尋求市場拓展。公司先后在國內外多個地區設立了銷售網點和分支機構,并通過參加各類行業展會和論壇,加強與其他企業的交流與合作。同時,Aborn Electronics注重品牌建設,通過提升產品質量和服務水平,逐漸樹立起了良好的企業形象和口碑。
HANBIT Electronics自成立以來,便致力于技術創新與產品研發。2005年,公司投入大量資源研發新一代高性能手機顯示屏技術,成功推出了具有低能耗、高清晰度和廣視角特性的OLED屏幕。這一創新不僅迅速獲得了市場的認可,還使得HANBIT Electronics在手機零部件供應商中脫穎而出,與多家國際知名品牌建立了長期合作關系。該技術的成功不僅提升了公司的市場份額,也為其后續在高端顯示技術領域的持續探索奠定了堅實基礎。
我有個ca卡,mmc接口 winxp上,接個usb的讀卡器,顯示盤符H: 我用createfile("\\\\\\\\.\\\\H:",...); 可以正常操作,reset, read,write都正常。 write一個命令,可以read一串返回值, 現在想在arm wince5平臺下操作它, 我用crea ...… 查看全部問答∨ |
|
為什么我的顯示總為零,大伙看看.以下是我的程序: #include "reg52.h" #include "absacc.h" #include "math.h" #define uchar unsigned char #define uint unsigned int #define dm XBYTE[0x8000] #defi ...… 查看全部問答∨ |
|
前言: 火災監控報警系統能夠在火災初期,將燃燒產生的煙霧、熱量、火焰等物理量,通過火災探測器變成電信號,通過無線傳輸到監控中心,并同時顯示出火災發生的部位、時間等,使人們能夠及時發現火災,并及時采取有效措施,撲滅初期火災,最大限度 ...… 查看全部問答∨ |
|
我用的STM32F103采集攝像頭OV7670(帶FIFO)的圖像,在LCD上顯示的圖像沒什么問題,但是當把圖片存到SD卡里,顏色就不對了。我往SD卡里存,用到了文件系統,首先新建一個文件,先寫入54個字節的BMP文件字頭,然后再寫入圖像數據,生成的bmp圖像顏色有 ...… 查看全部問答∨ |
|
DIY回流焊機,應該是最簡單的了,最簡單的方法是,用個鐵盒盒把電爐絲裝起來。 當然,作為DIY,也不能太簡單了, 大伙提提意見吧, 一、有沒有必要DIY它 二、具體怎么DIY… 查看全部問答∨ |
我在看Flash的文檔的時候遇到一個問題不明白:當要往一個新的block_1寫一個page數據時,假設:該block_1中有數據,那么我是不是要進行一下的操作: 1:將該block_1中的數據通過copyback備份到另外一個新的沒用到的block_2中。 2:擦除該block_1。 ...… 查看全部問答∨ |