显示器与按键(LCD 1602 + button)

这篇具有很好参考价值的文章主要介绍了显示器与按键(LCD 1602 + button)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的:

(1)学习lcd 1602的编程与使用、

(2)机械式复位开关button软件消抖的方法。

二、实验内容:

1、必做:先显示开机画面,:在1602显示器上,分两行分别居中显示字符“  AHAU  CHINA  ” 和 "  I LOVE YOU  "。然后从右向左移动直至消失。其中1602的rs、rw、en引脚分别使用单片机的P1.0、P1.1、P1.2引脚,数据引脚接单片机的P0口。

要求:(1)将两行字符存储在数组中。

(2)将lcd1602的基本操作都写到一个头文件中,供主函数文件调用。在主函数文件中,只处理与显示内容有关的业务。

显示器与按键(LCD 1602 + button),51单片机,c语言

提高版:两行逐个显示,两行字符全部出现后整体静态显示1秒左右,然后闪烁3次,最后从右向左移动直至消失。

2、接上1题(必做,按键button与lcd1602):当两行字符左移消失以后,在lcd1602的第一行居中显示:“a:?”,其中?为a的值,随按键变化。

其中无符号字节型变量a初值为0,其值实时显示在lcd 1602上。当复位开关S1(设置)按下时,a的值闪烁显示;S2(增加)每按一次,a增1;直至a增为 9,再按一次S2,a 归 0;S3(减少)按键每按一次,a 自减 1; 如此反复,并将 a 的值实时送至lcd 1602以闪烁的形式显示出来“a:?”,其中?为a的值,并闪烁显示。当按下S4(确认)时,a的值确定并不再闪烁。

其中S1、S2、S3、S4均为复位开关(button),即轻按接通、释放后自动复位断开。S1、S2、S3、S4与单片机的接口请遵照学习板电路的设置(见学习板电路原理图)。

显示器与按键(LCD 1602 + button),51单片机,c语言

要求:

(1)使用开关需要进行软件消抖(软件消抖方法在教材5.6.1和5.6.2中有介绍);

(2)注意lcd 1602基本操作的时序。

显示器与按键(LCD 1602 + button),51单片机,c语言

main.c

#include "lcd1602.h"
#include "Delay.h"

unsigned char code date[]="  AHAU  CHINA " ;
unsigned char code time[]="  I   LOVE   YOU  ";

void char_writer()									// 写入两行待显示字符数组
{
	uchar i,j;
	for(i=0;i<16;i++)									// 写入第一行待显示字符数组
	{
		write_data(date[i]);
	}
	
	write_command(0x80+0x40);					// 更改地址到第二行
	
	for(j=0;j<16;j++)									// 写入第二行待显示字符数组
	{
		write_data(time[j]);
	}
}

void main()
{
	lcd_initial();										// 1602初始化
	char_writer();										// 写入两行待显示字符数组
	while(1)											
	{
		write_command(0x18);						// 字符左移消失0001 1000
		Delay(50);
	}	
}

Delay.c

#include "Delay.h"

void delay(unsigned int j)									// 延时函数,此处使用晶振为11.0592MHz
{
	unsigned char i = 250;
	for(;j>0;j--)
	{
		while(--i);
		i = 249;
		while(--i);
		i = 250;
	}
}

Delay.h

#ifndef __DELAY_H
#define __DELAY_H

#include <reg51.h>
#include <intrins.h>

void Delay(unsigned int j);
#endif

lcd1602.h

#ifndef __LCD1602_H
#define __LCD1602_H

#include <reg51.h>
#include <intrins.h>

#define out P0										//数据到LCD

typedef unsigned int uint;
typedef unsigned char uchar;

sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P1^2;

void check_busy();
void write_command( uchar com );
void write_data(uchar dat);
void lcd_initial();
void string(uchar ad, uchar *s);

#endif

lcd1602.c

#include "lcd1602.h"
#include "Delay.h"

void check_busy()										//检查忙标志位
{
	uchar dt;
	do
	{
		dt = 0xff;
		E = 0;
		RS = 0;
		RW = 1;
		E = 1;
		dt = out;
	}while(dt&0x80);
	E = 0;
}

void write_command(uchar com)				//写命令函数
{
	check_busy();
	E = 0;
	RS = 0;
	RW = 0;
	out = com;
	E = 1;
	_nop_();
	E = 0;
	Delay(1);
}

void write_data(uchar dat)					// 写显示数据函数
{
	check_busy();
	E = 0;
	RS = 1;
	RW = 0;
	out = dat;
	E = 1;
	_nop_();
	E = 0;
	Delay(1);
}

void lcd_initial()									//液晶显示器初始化函数
{
	write_command(0x38);
	write_command(0x0C);
	write_command(0x05);
	write_command(0x01);
	Delay(1);
}

void string(uchar ad, uchar *s)			//输出显示字符串的函数
{
	write_command(ad);
	while(*s > 0)
	{
		write_data(*s++);
		Delay(100);
	}
}

显示器与按键(LCD 1602 + button),51单片机,c语言文章来源地址https://www.toymoban.com/news/detail-775045.html

到了这里,关于显示器与按键(LCD 1602 + button)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用STM32微控制器驱动LCD1602显示器

    驱动LCD1602显示器是嵌入式系统常见的任务之一,而STM32微控制器因其灵活性和丰富的外设而成为了广泛采用的解决方案。 在这篇文章中,我们将探讨如何使用STM32微控制器来驱动LCD1602显示器。我们将从STM32的GPIO配置、延时函数以及LCD1602的初始化和写入数据等方面展开讨论,

    2024年04月17日
    浏览(41)
  • 字符型液晶显示器LCD 1602的显示控制(Keil+Proteus)

    趁机把LCD 1602的实验完成了,那个电路图有几个地方没弄懂,但是去掉也没有报错,就没管了。 LCD1602_百度百科 (baidu.com) https://baike.baidu.com/item/LCD1602/6014393?fr=ge_ala LCD1602液晶显示屏通过电压来改变填充在两块平行板之间的液晶材料内部分子的排列状况,以达到遮光和透光的目

    2024年02月06日
    浏览(47)
  • 51单片机矩阵键盘——LCD1602显示

    本次的实验需要用到LCD1602液晶屏,需要用到LCD1602.c 与LCD1602.h文件链接: https://download.csdn.net/download/YLG_lin/86404949 使用矩阵键盘随意按下按键,LCD1602第二行前两位就会显示对应按键按下的数字。 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用

    2023年04月09日
    浏览(42)
  • 单片机接口与技术 实验03 显示器与按键

    目录 前言: 1、实验目的: 2、实验内容: 第一版:lcd1602显示器: 代码 电路图 第二版(提高版): 代码: lcd1602.h lcd1602.c main.c 电路图: 电路图详解: 代码详解: lcd1602.h lcd1602.c lcd1602命令字 重点:         首先是初始化         显示字符串         设置光标位置    

    2024年02月08日
    浏览(37)
  • 51单片机 | LCD1602 液晶显示实验

      在前面章节,我们已经学习过几种显示装置,例如静态数码管、动态数码管、 8*8LED 点阵、串口通信。使用它们可以直观显示一些字符数据,但是它们也有各种局限性,比如显示字符数据太少,硬件设计复杂、代码编写难度大等。这一章就来介绍一种非常简单且常用的显

    2023年04月11日
    浏览(60)
  • 51单片机LCD1602液晶屏显示方法

    以显示hello,world!    2022.10.17  为例。 首先把LCD1602的模块化程序添加到项目目录中,模块化方法在51单片机之程序模块化_学习笔记吧的博客-CSDN博客这里可以学习。 实验程序: LCD1602.c文件代码: LCD1602.h文件代码: 把这两个代码,分别添加到LCD1602.c 和 LCD1602.h 文件,然后添加

    2023年04月08日
    浏览(50)
  • 【51单片机】LCD1602 液晶显示实验指导书

             来介绍一种非常简单且常用的显示装置——LCD1602 液晶显示器,使用它可以显示更多的字符数字。这将有助于我们清晰的观察程序的运行结果,更加方便我们的后续调试和开发。         我们的开发板上集成了一个 LCD1602 液晶显示器接口,将LCD1602 液晶对应插

    2024年02月01日
    浏览(59)
  • 基于51单片机驱动MPU6050模块(LCD1602显示)

    @TOC MPU-6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP,可用IIC接口连接一个第三方的数字传感器。MPU-6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范

    2024年02月11日
    浏览(39)
  • STM32单片机三线制PT100温度采集控制系统LCD12864显示器

    功能介绍:    

    2024年02月15日
    浏览(59)
  • 【附报告】51单片机计算器(LCD1602液晶显示)

      由于本文较早,这里推荐一下近期刚优化的:【优化】51单片机计算器(LCD1602液晶显示)_Gxtoeilee的博客-CSDN博客   1 设计目标 设计可选模式的计算器  2 主要功能 功能一:可选两种计算模式,模式一为四则运算,模式二为扩展内容; 功能二:除法的计算结果保留到小数点

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包