/****************************************************************【文 件 名 稱】lcd12864.h【功 能 描 述】lcd12864 頭文件【 作 者 】shifu*****************************************************************/#ifndef __LCD12864_H#define __LCD12864_H//****************************************************************#include "stm32f10x_gpio.h"#include "systick_delay.h"http://*****************************************************************//管腳定義#define GPIO_LCD GPIOE#define RCC_APB2Periph_GPIO_LCD RCC_APB2Periph_GPIOE//片選#define LCD_CS_1 GPIO_LCD->BSRR = GPIO_Pin_8#define LCD_CS_0 GPIO_LCD->BRR = GPIO_Pin_8//數據#define LCD_SID_1 GPIO_LCD->BSRR = GPIO_Pin_9#define LCD_SID_0 GPIO_LCD->BRR = GPIO_Pin_9//同步時鐘#define LCD_CLK_1 GPIO_LCD->BSRR = GPIO_Pin_10#define LCD_CLK_0 GPIO_LCD->BRR = GPIO_Pin_10//復位 低電平復位#define LCD_RET_1 GPIO_LCD->BSRR = GPIO_Pin_11#define LCD_RET_0 GPIO_LCD->BRR = GPIO_Pin_11#define LCD_Write_Con_Cmd (uc32)0xf8000000 // 1111 1000 0000 0000 0000 0000 0000 0000#define LCD_Write_Dis_Data (uc32)0xfa000000 // 1111 1010 0000 0000 0000 0000 0000 0000//********************函數聲明************************************void LCD_Port_Config(void);void LCD_Init(void);void LCD_Write(u32 inst, u8 ddata);void LCD_Dis_Str(u8 row, u8 col, u8 *str);void LCD_Dis_Digital(u8 row, u8 col,u32 Dig_Data);void LCD_Clear(void);void LCD_Reset(void);void LCD_Dis_Frame(void);void LCD_Clear_GDRAM(void);void LCD_Clear_Graphics(u8 row, u8 col, u8 row_Pixel, u8 col_Pixel);void LCD_Dis_Graphics(u8 row, u8 col, u8 row_Pixel, u8 col_Pixel, u8 *Dis_Data);/*****************************************************************液晶模塊指令集定義*****************************************************************0x01 //清顯示指令0x06 //設置輸入模式0x0c //設置開顯控制0x30 //功能設定(基本指令)0x34 //功能設定(擴充指令)0x36 //打開繪圖(擴充指令)*****************************************************************/#endif/****************************************************************************【文 件 名 稱】lcd12864.c【功 能 描 述】lcd12864 驅動【 作 者 】shifu****************************************************************************//**************************************************************************/#include "lcd12864.h"#include "stm32f10x_lib.h"/****************************************************************************【功能說明】I/O端口功能、方向設定****************************************************************************/void LCD_Port_Config(void){GPIO_InitTypeDef GPIO_InitStructure;/* 使能端口時鐘*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_LCD, ENABLE);/* 配置所用管腳為推免輸出,端口速度為50MHz*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIO_LCD, &GPIO_InitStructure);}/****************************************************************************【功能說明】 LCD寫字節函數入口參數 inst=cmd/data: 命令/數據標志(data:寫顯示數據 cmd:寫控制指令)x : 命令/數據字節****************************************************************************/void LCD_Write(u32 inst, u8 ddata){u32 temp = inst;u32 i,t;temp |= ((u32)(ddata & (u8)0xf0) << 16) + ((u32)(ddata & (u8)0x0f) << 12);LCD_CS_1; //選中12864//拉低CLK引腳,準備產生上升沿LCD_CLK_0;//串行傳送24個二進制位for(i=0;i<24;i++){if(temp & 0x80000000) LCD_SID_1;else LCD_SID_0;//拉高CLK引腳,產生一個上升沿,最高位被傳送到LCD模塊中LCD_CLK_1;t = 0x10; while(t--); //延時 lcd讀取數據//拉低CLK引腳,準備產生上升沿LCD_CLK_0;//左移一位,準備下一個待傳送的位temp = temp<<1;}LCD_CS_0; //取消選中12864}/****************************************************************************【功能說明】LCD字符串顯示函數:void LCD_Dis_Str(u8 x, u8 y, u8 *str);入口參數 row: 字符串起始顯示位置的行col: 字符串起始顯示位置的列str: 指向待顯示字符串的字符指針,字符串以
主站蜘蛛池模板:
洪江市|
蓝田县|
津市市|
靖远县|
清苑县|
施甸县|
平潭县|
玛多县|
普格县|
图木舒克市|
肇庆市|
贡嘎县|
太白县|
志丹县|
南木林县|
左云县|
迁西县|
巴里|
浦城县|
佛坪县|
南漳县|
宜兴市|
呼玛县|
东丽区|
冕宁县|
商都县|
六枝特区|
桂阳县|
昔阳县|
潢川县|
玉屏|
慈溪市|
北流市|
北川|
龙游县|
阳信县|
广水市|
遂川县|
桂东县|
瑞昌市|
寻乌县|