利用STM32f103c8t6单片机驱动1602A液晶进行显示功能

上图即为写入信息后的效果图

本人用的是STM32的核心系统,无任何外设

库函数:3.5版本的库函数

驱动模式:采用4线驱动模式

供电:STM32采用3.3v供电,1602液晶采用5v供电(如果采用3.3v供电,只能显示背光,其他数据均无法显示)

上图所示的杜邦线的连接方法:
RS->C13,   RW->C14,   E->C15,  D4-D7->A4-A7

代码部分:
/****************************LCD.c**************************/

#include "stm32f10x.h"
#include "stm32f10x_conf.h"
#include "LCD.h"
unsigned char LCD_PORT;

void LCD_delay(void)
{
unsigned int i,j;
for(i=0;i<800;i++)
for(j=0;j<800;j++);
}

void LCD_Write_Com(unsigned char c)
{
u16 f;
register unsigned char i;
GPIO_SetBits(GPIOA,GPIO_Pin_7);
LCD_RS_L();
LCD_RW_H();
do
{
LCD_E_H();
f=LCD_FLAG();
LCD_E_L();
}while(f==1);

LCD_RW_L();

i=c;
i&=0xf0;
GPIO_Write(GPIOA,i|0);
LCD_E_H();
LCD_delay();
LCD_E_L();

i=c<<4;
i&=0xf0;
GPIO_Write(GPIOA,i);
LCD_E_H();
LCD_delay();
LCD_E_L();

}

void LCD_Write_Data(unsigned char d)
{
u16 f;
register unsigned char i;
GPIO_SetBits(GPIOA,GPIO_Pin_7);
LCD_RS_L();
LCD_RW_H();
do
{
LCD_E_H();
f=LCD_FLAG();
LCD_E_L();
}while(f==1);

LCD_RS_H();
LCD_RW_L();

i=d;
i&=0xf0;
GPIO_Write(GPIOA,i);
LCD_E_H();
LCD_delay();
LCD_E_L();

i=(d<<4);
i&=0xf0;
GPIO_Write(GPIOA,i);
LCD_E_H();
LCD_delay();
LCD_E_L();
}

void LCD_INIT(void)
{
LCD_delay();
LCD_Write_Com(0x28);
LCD_Write_Com(0x01);
LCD_Write_Com(0x06);
LCD_Write_Com(0x0f);
}

void LCD_PUTS(unsigned char line,unsigned char col,unsigned char *s)
{
unsigned char i,addr;
if(line==1) addr=0x80;
else if(line==2) addr=0x80+0x40;
LCD_Write_Com(addr+col);
for(i=0;i<20;i++)
{
if(s[i]!=0)
LCD_Write_Data(s[i]);
else
break;
}
}

/*****************主函数中的端口设置***********************/

void Display_GPIO_Conf(void)
{

GPIO_InitTypeDef GPIO_InitIntructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitIntructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitIntructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitIntructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_Init(GPIOC,&GPIO_InitIntructure);

GPIO_InitIntructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;
GPIO_Init(GPIOA,&GPIO_InitIntructure);

GPIO_InitIntructure.GPIO_Pin=GPIO_Pin_7;
GPIO_InitIntructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_Init(GPIOA,&GPIO_InitIntructure);

}

其中最为特殊的是:A7,需要将其设置为OD模式,外接上拉电阻,将其拉到5v,目的:将其变为准双向IO口,可以读取1602的忙状态信号。

STM32 驱动1602液晶的更多相关文章

  1. stm32驱动12832液晶屏程序(ST7565R控制器)

    LCD12832.c文件: #include"stm32f10x_lib.h" #include "OCM12232.h" void Lcd12232delay ...

  2. STM32驱动ILI9341控制器控制TFTLCD显示

    STM32驱动ILI9341控制器控制TFTLCD显示 一.用STM32控制TFTLCD显示的编程方法,在编程驱动TFTLCD液晶显示器之前,我们先熟悉以下概念: 1.色彩深度,这是一个与TFTLCD ...

  3. 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...

  4. STM32驱动LCD实战

    前段时间写了<STM32驱动LCD原理>和<STM32的FSMC外设简介>两篇文章,本文将对STM32驱动LCD进行实战应用.LCD是深圳市拓普微科技开发有限公司的LMT028 ...

  5. esp8266的STM32驱动

    esp8266的STM32驱动,数据发送接收由DMA完成,释放CPU. 目前只能发送返回消息为成功或失败的AT命令,并判断是否成功,详见esp8266_cmd():其它返回消息不可预知的命令(如查看A ...

  6. STM32驱动DS18B20

    DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线”接口的温度传感器.与传 统的热敏电阻等测温元件相比,它是一种新型的体积小.适用电压宽.与微处理器接口简单的 数字化温度传感器.一线 ...

  7. STM32驱动OV7725摄像头颜色识别

    实验目的: 使用stm32驱动OV7725摄像头进行图像实时采集,在tft屏幕上实时显示并识别图像中的特定颜色,在颜色的周围画上框. 实验现象: 我的工程代码链接: http://download.c ...

  8. Arduino入门笔记(5):1602液晶实验(实现时钟)

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino板 https://item.taoba ...

  9. AMS5601的ardunio和STM32驱动开发

    AMS5601的ardunio和STM32驱动开发 本文有麦粒电子撰写,并提供相应产品服务. 前言 目前ams关于磁编码芯片用的比较多的可能是ams5600,能够输出pwm信号,电压信号以及I2C通信 ...

随机推荐

  1. acm课程练习2--1002

    题目描述 Now, here is a fuction:  F(x) = 6 * x^7+8x^6+7x^3+5x^2-yx (0 <= x <=100)Can you find the ...

  2. 转:selenium webdriver 执行javascript代码

    在用selenium webdriver 编写web页面的自动化测试代码时,可能需要执行一些javascript代码,selenium本身就支持执行js,我们在代码中import org.openqa ...

  3. Oracle 使用sql创建表空间及用户

    create tablespace OrcalDBNamedb datafile 'C:\OracleDBDirc\OrcalDBNamedb.dbf' size 300m; 创建用户create u ...

  4. JavaScript返回上一页并自动刷新

    返回并刷新 <script>alert("恭喜您,操作成功!"); window.location.href=document.referrer; </scrip ...

  5. 把MSSQL的表数据查询成 insert into格式的函数

    USE [db] GO /****** Object: StoredProcedure [dbo].[proc_insert] Script Date: 12/05/2012 17:18:31 *** ...

  6. Android----ListView入门知识--各种Adapter配合使用

    引自:http://www.cnblogs.com/playing/archive/2011/03/21/1990555.html 在android开发中ListView是比较常用的组件,它以列表的形 ...

  7. JavaScript中call,apply,bind方法的总结

    原文链接:http://www.cnblogs.com/pssp/p/5215621.html why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之 ...

  8. docker 容器日志集中 ELK + filebeat

    docker 容器日志集中 ELK ELK 基于 ovr 网络下 docker-compose.yaml version: '2' networks: network-test: external: ...

  9. VS2015安装提示出现“安装包丢失或损坏”解决方法

    原因:microsoft root certificate authority 2010.microsoft root certificate authority 2011证书未安装,导致文件校验未通 ...

  10. 基于Spring的异步系统实现方案

    一般的实现方案 发送异步消息所使用的工具类: import java.util.Date; import javax.jms.Destination; import javax.jms.JMSExce ...