以下代码是根据不完全手册,现修改为只是读出LCD 的 Id
#include "hand.c"
#define RD1 GPIOC->BSRR=1<<6 //读数据
#define RD0 GPIOC->BRR=1<<6
#define WR1 GPIOC->BSRR=1<<7 //写数据
#define WR0 GPIOC->BRR=1<<7
#define RS1 GPIOC->BSRR=1<<8 //数据|命令
#define RS0 GPIOC->BRR=1<<8
#define CS1 GPIOC->BSRR=1<<9 //片选端口
#define CS0 GPIOC->BRR=1<<9
#define BACK_LIGHT1 GPIOC->BSRR=1<<10 //背光开启
#define BACK_LIGHT0 GPIOC->BRR=1<<10
#define DATAOUT(data) GPIOB->ODR=data //输出数据
#define WRITE_DATA(data) { RS1;CS0;DATAOUT(data);WR0;WR1;CS1;} // 写数据
//=============================================
void delay(u16 time); //延时函数
void init( void ); //初始化
void WRITE_CMD(u8 cmd); //写命令
void WRITE_CD(u8 cmd,u16 data); //写数据和命令
int main(void)
{
Stm32_Clock_Init(9);
init();
}
void init()
{
//--------端口初始化-----------------------------
RCC->APB2ENR|=1<<3;//先使能外设PORTB时钟
RCC->APB2ENR|=1<<4;//先使能外设PORTC时钟
GPIOC->CRH&=0XFFFFF000; //PORTC6~10复用推挽输出
GPIOC->CRH|=0X00000333;
GPIOC->CRL&=0X00FFFFFF;
GPIOC->CRL|=0X33000000;
GPIOC->ODR|=0X07C0; //PORTB 推挽输出
GPIOB->CRH=0X33333333;
GPIOB->CRL=0X33333333;
GPIOB->ODR=0XFFFF;
//------------------------------------------------------
BACK_LIGHT1; //开启背光
}
void WRITE_CMD(u8 cmd) //写命令
{
RS0;
//RD1; 根据80时序,RD应该为高,光盘程序中没有
CS0;
DATAOUT(cmd);
WR0;
WR1;
CS1;
}
void WRITE_CD(u8 cmd , u16 data) //写命令和数据
{
WRITE_CMD(cmd);
WRITE_DATA(data);
}
void delay(u16 time) //延时函数
{
u16 i,j;
for(i=0;i<time;i++)
for(j=0;j<10290;j++)
;
}
|