初级会员

- 积分
- 76
- 金钱
- 76
- 注册时间
- 2020-11-19
- 在线时间
- 11 小时
|
1金钱
我用的stc32F103zet6的板子,用LCD1602显示!
我的硬件连接如下:
我用的板子上的5V和GND。
vss接地,vdd5V,vo接了10k电阻,再接地。
d0~d7连的PD0~PD7.
(用的正点原子给的库函数工程模板)程序如下:
//LCD1602.h
#ifndef __LCD1602_H
#define __LCD1602_H
#include "sys.h"
#define RS PBout(3)
#define RW PBout(4)
#define EN PBout(6)
void LCD1602_Init(void);
void LCD_Write_cmd(u8 cmd);
void LCD_Write_dat(u8 dat);
#endif
//LCD1602.c
#include "LCD1602.h"
#include "delay.h"
void LCD_Write_cmd(u8 cmd)
{
RS = 0;
RW = 0;
EN = 0;
EN = 1;
GPIO_Write(GPIOD, (cmd&0x00ff)|(GPIO_ReadOutputData(GPIOD)&0xff00));
delay_ms(5);
EN = 0;
}
void LCD_Write_dat(u8 dat)
{
RS = 1;
RW = 0;
EN = 0;
EN = 1;
GPIO_Write(GPIOD, (dat&0x00ff)|(GPIO_ReadOutputData(GPIOD)&0xff00));
delay_ms(5);
EN = 0;
}
void LCD1602_Init(void)
{
GPIO_InitTypeDef GPIO_Initlcd;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_Initlcd.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Initlcd.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_Initlcd.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOD,&GPIO_Initlcd);
GPIO_Initlcd.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Initlcd.GPIO_Pin=GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_6;
GPIO_Initlcd.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_Initlcd);
delay_ms(5);
LCD_Write_cmd(0x01);
delay_ms(5);
LCD_Write_cmd(0x02);
delay_ms(5);
LCD_Write_cmd(0x06);
delay_ms(5);
LCD_Write_cmd(0x0C);
delay_ms(5);
LCD_Write_cmd(0x38);
delay_ms(5);
}
//main.c
#include "stm32f10x.h"
#include "LCD1602.h"
#include "delay.h"
int main(void)
{
LCD1602_Init();
delay_init();
LCD_Write_cmd(0x80);
LCD_Write_dat(0x41);
while(1);
}
|
|