[Micropython][TPBasic F103]LCD1602显示实例
原创版权归山东萝卜科技有限公司所有,转载必须以链接形式注明作者和原始出处
一、什么是TPBasicF103
TPYBasicF103是由TurnipSmart公司制作的一款STM32开发板,它基于STM32F103单片机,通过USB接口进行数据传输。该开发板可在3V-10V之间的电压正常工作。
TPYBasicF103让用户可以通过C语言轻松控制微控制器的各种外设,比如LED等,读取管脚电压等等.
二、利用TPBasicF103完成LCD1602显示
1、具体要求
利用TPBasicF103完成LCD1602显示
(1)学习stm32芯片I/O配置
(2)学习LCD1602显示的用法
(3)学习数据输出程序的设计方法
2、熟悉所需器件
TPBasicF103开发板一块
10K电位器一个
杜邦线22条
3、所需器件介绍
将板子boot0与GND用跳线帽短接,PC0-PC7接D0-D7,PA0接E,PA1接RW,PA2接RS。Vss和K接GND,Vdd和A接5V电源。Vo接电位器中间脚,电位器其余两脚分别接5V和GND。
编号 | 符号 | 引脚说明 | 编号 | 符号 | 引脚说明 |
1 | VSS | 电源地 | 9 | D2 | 数据 |
2 | VDD | 电源正极 | 10 | D3 | 数据 |
3 | VL | 液晶显示偏压 | 11 | D4 | 数据 |
4 | RS | 数据/命令选择 | 12 | D5 | 数据 |
5 | R/W | 读/写选择 | 13 | D6 | 数据 |
6 | E | 使能信号 | 14 | D7 | 数据 |
7 | D0 | 数据 | 15 | BLA | 背光源正极 |
8 | D1 | 数据 | 16 | BLK | 背光源负极 |
三、制作主要过程
1、制作流程
控制命令表
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
2、具体代码:
#include "stm32f10x.h" #include "math.h" #include "delay.h" ErrorStatus HSEStartUpStatus; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; EXTI_InitTypeDef EXTI_InitStructure; unsigned char word1[]="TPBasic f103"; u8 alarm_on=0; /* Private function prototypes -----------------------------------------------*/ void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); void TIM_Configuration(void); void EXTI_Configuration(void); void Delay(vu32 nCount); void Init_LCD1602(void); void w_cmd(u8 cmd); void w_dat(u8 dat); void w_string(u8 addr_start, unsigned char *p); void w_number(u8 addr_start, u8 num); void w_array(u8 addr_start, unsigned char *p,u8 nn); int main() { delay_init(8); /* System Clocks Configuration */ RCC_Configuration(); /* Configure the GPIO ports */ GPIO_Configuration(); NVIC_Configuration(); TIM_Configuration(); EXTI_Configuration(); Init_LCD1602(); w_string(0x82,word1);