初级会员

- 积分
- 181
- 金钱
- 181
- 注册时间
- 2019-10-29
- 在线时间
- 47 小时
|

楼主 |
发表于 2019-11-4 08:21:57
|
显示全部楼层
主函数
int main()
{
delay_init();
lcd_config();
lcd_init();
clr_scr();
lcd_write_string(0,0,"hello");
}
12864
void lcd_config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStruct.GPIO_Mode= GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_4;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
}
void send_byte(u8 bbyte)
{
u8 i;
for(i=0;i<8;i++)
{
if((bbyte)&0x80)
{
SID_H;
}
else
{
SID_L;
}
SCLK_H;
SCLK_L;
bbyte<<=1;
}
}
void write_char(u8 start,u8 ddata)
{
u8 start_data,Hdata,Ldata;
if(start==0)
{
start_data=0xf8;
}
else
{
start_data=0xfa;
}
Hdata=ddata&0xf0;
Ldata=(ddata<<4)&0xf0;
send_byte(start_data);
delay_ms(5);
send_byte(Hdata);
delay_ms(1);
send_byte(Ldata);
delay_ms(1);
}
void lcd_init(void)
{
delay_ms(10);
CS_H;
write_char(0,0x30);
write_char(0,0x0c);
write_char(0,0x01);
}
void clr_scr(void)
{
write_char(0,0x01);
delay_ms(5);
}
void lcd_set_xy(u8 X,u8 Y)
{
u8 address;
switch(X)
{
case 0: address=0x80+Y;break;
case 1: address=0x90+Y;break;
case 2: address=0x88+Y;break;
case 3: address=0x98+Y;break;
default: address=0x80+Y;break;
}
write_char(0,address);
}
void lcd_write_string(u8 X,u8 Y,uc8 *s)
{
lcd_set_xy(X,Y);
while(*s)
{
write_char(1,*s);
s++;
delay_ms(1);
}
}
通电后不现实内容,屏幕亮
|
|