求用stm32f103c6t6在lcd1206上显示Door is open和password:
用keil来写,ch430串口下载程序,要完整代码mian和lcd.c这些文件都要,还有通信方式,我一个会的都没有,可以这个文件发的最好,酬金可以商量
求用stm32f103c6t6在lcd1206上显示Door is open和password:
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
9条回答 默认 最新
关注 以下参考免费微信小程序:皆我百晓生 作答,并由妄北y整理回复。
我可以为你提供一个基于STM32F103C6T6和LCD1602的示例代码,用于在LCD上显示"Door is open"和"password:"。请注意,这只是一个示例,可能需要根据您的硬件和需求进行调整。
首先,确保您已经正确连接了STM32F103C6T6和LCD1602。以下是连接方式:
- LCD VSS 连接到 GND
- LCD VDD 连接到 5V
- LCD RS 连接到 PA0
- LCD EN 连接到 PA1
- LCD D4 连接到 PA2
- LCD D5 连接到 PA3
- LCD D6 连接到 PA4
- LCD D7 连接到 PA5
接下来,创建一个名为
main.c
的文件,包含以下代码:#include "stm32f10x.h" #include "lcd.h" int main(void) { // 初始化LCD lcd_init(); // 设置显示模式 lcd_display(0x0C); // 清除屏幕 lcd_clear(); // 设置显示位置 lcd_setpos(0x00); // 显示 "Door is open" lcd_putstr("Door is open"); // 设置显示位置 lcd_setpos(0x40); // 显示 "password:" lcd_putstr("password:"); while(1) { // 无限循环 } }
然后,创建一个名为
lcd.h
的文件,包含以下代码:#ifndef _LCD_H #define _LCD_H #include "stm32f10x.h" #define LCD_RS_PA0 0 #define LCD_EN_PA1 1 #define LCD_DATA_PORT GPIOA #define LCD_DATA_PORT_CLK RCC_APB2Periph_GPIOA #define lcd_cmd(x) (LCD_DATA_PORT->GPIO_ODR=((LCD_DATA_PORT->GPIO_ODR)&((~(x))|(0x0F))))//发送指令或数据 #define lcd_data(x) (LCD_DATA_PORT->GPIO_ODR=((LCD_DATA_PORT->GPIO_ODR)&((~(x))|(0xF0))))//发送指令或数据 void lcd_init(void); void lcd_cmd_write(unsigned char cmd); void lcd_data_write(unsigned char dat); void lcd_setpos(unsigned char x, unsigned char y); void lcd_clear(void); void lcd_display(unsigned char bit); void lcd_putstr(unsigned char *str); #endif /* _LCD_H */
接着,创建一个名为
lcd.c
的文件,包含以下代码:#include "lcd.h" void lcd_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); lcd_cmd(0x38); // 8位数据接口,2行显示,5x7点阵 lcd_cmd(0x39); // 8位数据接口,2行显示,5x7点阵 lcd_cmd(0x14); // 启动显示 lcd_cmd(0x0C); // 显示开,光标关 lcd_cmd(0x06); // 写入新数据后,地址指针增1 lcd_cmd(0x01); // 清屏 } void lcd_cmd_write(unsigned char cmd) { lcd_setpos(0x00, 0x00); lcd_cmd(cmd); } void lcd_data_write(unsigned char dat) { lcd_setpos(0x00, 0x01); lcd_data(dat); } void lcd_setpos(unsigned char x, unsigned char y) { if(y == 0x00) { lcd_cmd_write(0x80 | x); // 显示第一行 } else if(y == 0x01) { lcd_cmd_write(0x80 | x | 0x40); // 显示第二行 } } void lcd_clear(void) { lcd_cmd_write(0x01); } void lcd_display(unsigned char bit) { lcd_cmd_write(bit); } void lcd_putstr(unsigned char *str) { unsigned char i = 0; while(str[i] != '\0') { lcd_data_write(str[i]); i++; } }
最后,使用Keil uVision编译并使用CH430串口下载程序到
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题
- ¥20 RL+GNN解决人员排班问题时梯度消失
- ¥60 要数控稳压电源测试数据
- ¥15 能帮我写下这个编程吗
- ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路