初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2016-6-16
- 在线时间
- 20 小时
|
1金钱
lcd1602.c
#include "lcd1602.h"
#include "stm32f10x.h"
void lcd1602_Init()
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB ,ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStruct);
}
void lcd_init()
{
lcd_wcom(0x38);
delay(10);
lcd_wcom(0x0c);
delay(10);
lcd_wcom(0x06);
delay(10);
lcd_wcom(0x01);
delay(10);
}
void display()
{
lcd_wcom(0x80);
delay(10);
lcd_wdat(0x30);
while(1);
}
void delay(u32 z)
{
u32 x,y;
for(x=200;x>0;x--)
for(y=z;y>0;y--);
}
void lcd_wcom(u32 wcom)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
GPIO_Write(GPIOA,wcom);
delay(10);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_ResetBits(GPIOB, GPIO_Pin_2);
}
void lcd_wdat(u32 wdat)
{
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
GPIO_Write(GPIOA,wdat);
delay(10);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_ResetBits(GPIOB, GPIO_Pin_2);
}
|
最佳答案
查看完整内容[请看2#楼]
lcd1602 液晶屏的V0引脚,必须加偏置电压,就是调节液晶屏对比度的。
对比度不合适,什么东西也不会显示的!你可以参照一下我用的其他液晶屏的偏压设置。见下图:
我的VR3是220R是可以的,你的LCD1602有可能不合适,
你可以用一个电位器代替VR3,然后调节VR3,直到你的LCD显示出内容来!
|