编写stm32f103c6t6用LCD1602显示数字的代码
时间: 2024-01-04 12:04:37 浏览: 55
以下是一个简单的示例代码,可以让您开始使用STM32F103C6T6和LCD1602显示数字。
```c
#include "stm32f10x.h"
#define RS GPIO_Pin_0
#define RW GPIO_Pin_1
#define EN GPIO_Pin_2
#define D0 GPIO_Pin_3
#define D1 GPIO_Pin_4
#define D2 GPIO_Pin_5
#define D3 GPIO_Pin_6
#define D4 GPIO_Pin_7
#define D5 GPIO_Pin_8
#define D6 GPIO_Pin_9
#define D7 GPIO_Pin_10
void delay_ms(uint32_t ms)
{
uint32_t i;
for(i=0;i<ms*4000;i++);
}
void LCD_Enable(void)
{
GPIO_SetBits(GPIOC, EN);
delay_ms(1);
GPIO_ResetBits(GPIOC, EN);
delay_ms(1);
}
void LCD_SendHalfByte(uint8_t c)
{
GPIO_ResetBits(GPIOC, D4|D5|D6|D7);
if(c&0x01) GPIO_SetBits(GPIOC, D4);
if(c&0x02) GPIO_SetBits(GPIOC, D5);
if(c&0x04) GPIO_SetBits(GPIOC, D6);
if(c&0x08) GPIO_SetBits(GPIOC, D7);
LCD_Enable();
}
void LCD_SendByte(uint8_t c, uint8_t mode)
{
if(mode == 0) GPIO_ResetBits(GPIOC, RS);
else GPIO_SetBits(GPIOC, RS);
GPIO_ResetBits(GPIOC, RW);
LCD_SendHalfByte(c>>4);
LCD_SendHalfByte(c);
}
void LCD_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = RS | RW | EN | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
delay_ms(15);
LCD_SendHalfByte(0x03);
delay_ms(5);
LCD_SendHalfByte(0x03);
delay_ms(1);
LCD_SendHalfByte(0x03);
delay_ms(1);
LCD_SendHalfByte(0x02);
LCD_SendByte(0x28, 0);
LCD_SendByte(0x0C, 0);
LCD_SendByte(0x06, 0);
LCD_SendByte(0x01, 0);
delay_ms(2);
}
void LCD_PrintChar(uint8_t c)
{
LCD_SendByte(c, 1);
}
void LCD_PrintString(char* str)
{
while(*str)
{
LCD_PrintChar(*str++);
}
}
void LCD_Clear(void)
{
LCD_SendByte(0x01, 0);
delay_ms(2);
}
void LCD_SetCursor(uint8_t x, uint8_t y)
{
if(y == 0) LCD_SendByte(0x80 | x, 0);
else LCD_SendByte(0xC0 | x, 0);
}
void LCD_PrintInt(uint16_t num)
{
char buf[6];
sprintf(buf, "%d", num);
LCD_PrintString(buf);
}
int main(void)
{
LCD_Init();
LCD_PrintString("Hello World!");
LCD_SetCursor(0, 1);
LCD_PrintInt(12345);
while(1)
{
}
}
```
这是一个基本的代码框架,您需要根据您的具体要求进行修改和调整。如果您遇到任何问题,请随时向我提问。