資源簡介
本程序是主控芯片為T6963C的LCD驅動,點陣為240128或者點陣160128或者其他都可行(簡單修改下即可);硬件定義在頭文件中,硬件為stm32F103VC系列單片機,IDE開發環境為keil4。此程序是直接可以使用,目前使用中未發現bug。
代碼片段和文件信息
/*************************************************************/
/* LCD.c:LCD操作函數的實現內置控制器T6963C??????*/
/*************************************************************/
#include?“T6963.h“
#include?“Ziku.h“
#include
////////////////////////////////////////////////////////////////?
void?LCD_DataIo_Out(void)//數據線輸出?
{?
????GPIO_InitTypeDef??GPIO_InitStructure;?
????GPIO_InitStructure.GPIO_Pin?=?DATA;?
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_PP;?
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;?
????GPIO_Init(DATA_LINE?&GPIO_InitStructure);????
}?
////////////////////////////////////////////////////////////////?
void?LCD_DataIo_In(void)//數據線輸入?
{?
????GPIO_InitTypeDef??GPIO_InitStructure;?
????GPIO_InitStructure.GPIO_Pin?=?DATA;?
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_IN_FLOATING;?
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;?
????GPIO_Init(DATA_LINE?&GPIO_InitStructure);????????
}?
void?LCD_I0_Config(void)?
{?
????GPIO_InitTypeDef??GPIO_InitStructure;?
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOG?ENABLE);
????GPIO_InitStructure.GPIO_Pin?=?WR?|?RD?|?CE?|?CD;?
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_PP;//輸出?
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;?
????GPIO_Init(CRL_LINE?&GPIO_InitStructure);?
CE_HIGH;
????GPIO_InitStructure.GPIO_Pin?=?DATA;?
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_PP;//輸出?
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;?
????GPIO_Init(DATA_LINE?&GPIO_InitStructure);
}?
/**********************************************************
//功能:查詢數據/指令是否可讀寫即判斷狀態字的STA0STA1標志位
//描述:STA0STA1為狀態字的低兩位STA0反應指令讀寫狀態STA1反應數據讀寫狀態1=準備好0=忙
**********************************************************/
void?CheckStatus(void)
{
uint16?dat;
//LCD_DataIo_In();
DATA_LINE->BRR?|=?0xFF00;
? ?do{
CD_HIGH;
?? __NOP();__NOP(); //此延時相當重要
?? CE_LOW; ?
?? WR_HIGH;
RD_LOW;? ????
__NOP();
dat=DATA_LINE->IDR; //讀狀態字
???? __NOP();
RD_HIGH; ????
???? dat=0x0300&dat; //保留低2位
?? }while(dat!=0x0300); //STA0STA1是否準備好
}
/**********************************************************
//功能:當使用自動寫功能時STA3將取代STA0STA1成為忙標志位
//描述:STA3為狀態字第三位STA3反應數據自動寫狀態1=準備好0=忙
**********************************************************/
void?CheckAutoWrite(void)
{
uint16?dat;
//LCD_DataIo_In();
//DATA_LINE->BRR?|=?0x00FF;
?? do{
CD_HIGH;
__NOP();__NOP();?__NOP();__NOP();__NOP();__NOP();__NOP(); //此延時相當重要
?? CE_LOW;
?? WR_HIGH;
???? RD_LOW;?????
?? __NOP();__NOP();__NOP();__NOP();__NOP();
???? dat=DATA_LINE->IDR; //讀狀態字
__NOP();
RD_HIGH ; //模擬操作時序
dat=0x0800&dat; //保留第3位
? }while(dat!=0x0800); //STA3是否準備好??????????????????
}
/**********************************************************
//函數原型:void?WriteData(uint8?dat)??????????????????????
//功能:向T6963C發送一字節數據
//參數:發送的數據(8位)
//描述:該函數向T6963C的數據通道寫數據該數據可以作為寫入當前顯示地址指針
所指的單元
評論
共有 條評論