基于51单片机点阵汉字显示程序设计

这篇具有很好参考价值的文章主要介绍了基于51单片机点阵汉字显示程序设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于51单片机点阵汉字显示程序设计

一、实践目的

本次实践是用51单片机最小系统为核心,并使用4块8×8LED点阵组成的16×16LED点阵、2块74HC595位移寄存器芯片作为16×16LED点阵的行驱动、2块74HC138译码器芯片作为16×16LED点阵的列驱动、和8个独立按键组成的51单片机系统,实现汉字在LED点阵屏幕上进行多种功能的显示:实现静态显示、动态显示包括向上移动、向下移动、向左移动、向右移动、移动显示暂停与继续、移动加速和减速的功能。

二、实践依托的实验设备与软件

1、设备

51单片机、74HC595芯片、74HC138芯片、独立按键、LED点阵屏幕、程序下载器等。

2、软件

编写51单片机代码的软件:Keil uVision4、绘制原理图与PCB的软件:立创EDA、进行仿真的软件:Proteus 8 Professional。

二、 系统或装置的设计

1、 硬件原理图设计

原理图包括了51单片机、晶振电路、复位电路、USB电源接口电路、74HC595寄存器串口转并口芯片电路、74HC138译码器芯片电路、4个8×8LED点阵组成的16×16点阵汉字显示电路和独立按键电路组成。绘制的原理图如图2.1到图2.5所示。

基于51单片机点阵汉字显示程序设计

图2.1:51单片机、晶振电路和复位电路组成51单片机最小系统

51单片机为整个系统的核心,控制着595芯片与138芯片驱动LED点阵汉字显示等功能。晶振电路为51单片机LED点阵汉字显示系统提供时钟信号。
基于51单片机点阵汉字显示程序设计

图2.2:独立按键与USB电源接口电路

USB电源接口电路为系统提供电源,独立按键电路实现LED点阵汉字显示的模式切换功能。其具体功能是按键key1~key4分别控制LED点阵显示汉字的向上移动、向下移动、向左移动、向右移动。按键key5控制LED点阵显示汉字的暂停移动与继续移动。Key7、key8分别控制LED点阵屏显示汉字移动的速度。

基于51单片机点阵汉字显示程序设计

图2.3:两块595芯片电路

74HC595寄存器串口转并口芯片电路驱动16×16点阵屏的行选,当其输出端口为高电平时,对应的LED点阵的行被选中。即LED点阵的行为高电平有效。

基于51单片机点阵汉字显示程序设计

图2.4:两块138芯片电路

74HC138译码器芯片电路驱动16×16点阵屏的列选,当其输出端口低电平时,对应LED点阵的列被选中。即LED点阵的列为低电平有效。

基于51单片机点阵汉字显示程序设计

图2.5:16×16LED点阵电路

16×16点阵是由四块8×8点阵电路组成的,16×16点阵汉字显示电路可以实现汉字的静态显示效果以及向上、向下、向左和向右动态滚动显示的效果。

2、印制板图绘制

根据绘制的原理图,先将其转换成PCB图,然后对其各个元器件进行合理的布局,然后用软件自动布线的功能进行布线操作。绘制的印制板图如图2.6所示
基于51单片机点阵汉字显示程序设计

图2.6:51单片机LED点阵汉字显示系统PCB图

三、程序框架及主要算法流程图及描述

基于51单片机点阵汉字显示程序设计

图2.7:程序的基本框架流程图

程序的基本框架是从主函数开始的,先进行相关变量的初始化操作,然后进行定时中断初始化的操作,打开51单片机的定时器对LED点阵屏显示汉字的滚动进行速度的控制。相关变量初始化操作后,进入while(1)循环里面,根据变量modeSelect的值进行显示模式的选择。最后,在循环的最后调用按键处理的函数keyProcess()判断是否有按键按下,如果有按键按键更新modeSelect变量的值,进行LED点阵汉字显示模式是更新。

基于51单片机点阵汉字显示程序设计

图2.8:按键处理流程图

按键处理采用if语句判断方式,判断是否有按键按键。当有按键按下时,会进行相关变量值的设置。例如当按键key1按下时,进行如下变量的设置

TR0 = 1;							// 定时器开
modeSelect = 1;					// 显示模式变量
speed = 10; 						// 汉字移动速度变量
moveBitNum = 0;					
net = zong1;						// 上下移动相关控制变量

以上是按键key1按下时对应的相关变量值的设定,其它按键的相关变量值的设置见附录: 完整代码处。

四、系统或装置的实现

1、系统或装置实物安装调试

基于51单片机点阵汉字显示程序设计

图3.1:51单片机LED点阵汉字显示系统实物图

2、代码及其调试

1、用keil4软件建立ledData.h头文件,用汉字获取软件获取点阵汉字的字符数据,将其写到ledData.h头文件中。在ledData.h头文件中定义控制138译码器哪个输出管脚有效,如下代码所示

/*
	38译码器的输出端口的选择
*/
uchar code columnSlect[] = 		// 行选
{
	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
	0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
};

2、然后建立一个main.h头文件,在main.h头文件中,定义51单片机驱动芯片的管脚如下所示

sbit ds = P1^0;	  				// 数据端口
	sbit shcp = P1^2;				// 数据输入时钟线
	sbit stcp = P1^1;				// 输出存储器锁存时钟线

	sbit key1 = P3^4;				// 向上移动控制按钮
	sbit key2 = P3^5;				// 向下移动控制按钮
	sbit key3 = P3^6;				// 向左移动控制按钮
	sbit key4 = P3^7;				// 向右移动控制按钮

	sbit key5 = P3^3;				// 静态显示显示的控制按钮
	sbit key6 = P3^2; 				// 闪烁显示的控制按钮

	sbit key7 = P1^6;   			// 控制汉字移动速度增加的控制按钮
	sbit key8 = P1^7;				// 控制汉字移动速度减小的控制按钮

然后定义一些变量如下所示

uchar speed = 30;				// 汉字移动速度控制的标志

uchar alt;
uint net, index;
uint zong, zong1;
uchar modeSelect;				// 	汉字显示的模式方式选择

uchar buff[4];
uchar moveBitNum;
uchar moveBitNumTemp;
	uchar IncNum;				// 上下左右移动的相关控制变量

其中主要的变量modeSelect控制汉字在LED点阵屏上显示模式方式的选择。
在声明一些函数,实现相关的功能,如下所示

void timerInit();				// 定时器初始化函数
	void writedata(uchar);			// 向595芯片写入数据函数
	void clearScreen();				// led点阵显示与清屏
	void keyProcess();				// 按键处理的函数
	void delay(uint);				// 延时函数

timerInit();要实现的是51单片机定时器初始操作,将51单片机的定时器打开,产生定时控制汉字在LED点阵屏上移动的速度;writedata(uchar);是将ledData.h头文件中定义的有关汉字字符数据写入595芯片中,使其控制LED点阵的哪一些行为有效。clearScreen();实现LED点阵清屏以及将595寄存器中的数据从并口输出以控制LED的显示。keyProcess();是实现按键处理的相关操作,按键按下时,对相应的变量进行赋值操作,从而控制LED点阵屏上汉字显示的方式。
3、建立一个main.c源文件编写主函数,以及编写main.h头文件中声明函数的定义,实现相应函数的具体功能。具体详细的代码在附录中。
4、用keil4软件编好程序以后,进行编译生产.hex文件。51单片机LED点阵汉字显示程序编译信息如图3.2所示

基于51单片机点阵汉字显示程序设计

图3.2:程序编译的结果

从编译的结果可以看出,程序是零错误, 领警告。然后对程序编译生产的.hex文件在Proteus软件中进行仿真,仿真的结果如图3.3、3.4所示
基于51单片机点阵汉字显示程序设计

图3.3:程序开始仿真结果

基于51单片机点阵汉字显示程序设计

图3.4:按下按键一的仿真结果:向上移动

从仿真的结果来看,编写的程序符合51单片机LED点阵汉字显示设计功能的要求,及系统实现了LED点阵系统的静态显示,动态显示:向上下移动、左右移动、闪烁显示和移动的速度控制。

五、系统的运行与结果分析

1、系统运行测试过程

用keil4软件将写好的程序进行编译生产.hex文件,将其通过下载器下载程序于单片机中。写入程序的51单片机初始状态是处于静态显示的状态,即显示第一个汉字:“电”。然后分别通过按键key1~key4的按下,分别实现LED点阵屏显示汉字的向上移动、向下移动、向左移动,向右移动。按下按键key5实现LED点阵屏上移动的汉字变为静止,当再按一下时,静止的汉字字符变为移动的汉字字符。按下按键key6实现LED点阵屏闪烁显示汉字字符的功能。按下key7、key8分别实现汉字移动速度的增加与减少。单片机按下RST复位按键时,使51单片机运行于显示静态汉字字符的初始状态。

2、功能总结

从硬件的运行结果来看,由51单片机、16×16LED点阵屏、独立按键、595芯片、138芯片组成的单片机点阵汉字显示系统基本上实现了实践中所要求的功能:从软件获取相应的点阵显示汉字的相关信息;实现了51单片机与LED点阵屏的驱动功能;通过kei4软件编写LED点阵汉字显示的程序实现了汉字在LED点阵屏上向上移动、向下移动、向左移动、向右移动以及具有特效的闪烁显示等功能。文章来源地址https://www.toymoban.com/news/detail-446396.html

到了这里,关于基于51单片机点阵汉字显示程序设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 51单片机——LED点阵屏(显示滚动画面)

    目录   一、关于数码管、LED点阵屏显示的注意点 二、功能介绍 三、主要模块的介绍 3.1 74HC595模块和点阵屏显示函数 3.1.1 74HC595介绍 3.1.2 点阵屏显示函数MatrixLED() 3.2定时器中断模块 四、程序实现 五、效果展示   一定要消影,不然显示的画面有重影。不管是数码管还是LED点阵

    2023年04月17日
    浏览(41)
  • 【【51单片机实现LED点阵屏幕和动画显示】】

    我们先搞清楚74HC595的原理 sfr 特殊功能寄存器声明 sbit 特殊位声明 就举个例子,我们在之前的各种测试中对LED进行控制会直接输入P2=什么什么,那我想问你怎么知道P2口控制的就是LED呢,其实这些就是已经在内部声明完成了,我们可以直接拿来使用 内部

    2024年02月11日
    浏览(48)
  • 51单片机学习--LED点阵屏显示图形&动画

    为了通用性考虑,需要把用到的几个口用特殊位声明来重新命名,由于RCLK在头文件中已有定义,所以这里把P3^5声明成RCK吧。。这样的做法可以提高可读性 接下来编写74HC595的输入函数 执行完八次循环后数据就会存到移位寄存器里面了,接下来要输出只需要给RCLK一个高电平即

    2024年02月14日
    浏览(41)
  • 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

      开发板上使用了 64 个红色 LED 按照行列排布组成的 8*8 LED 点阵。下面介绍 LED 点阵的使用。    LED 点阵 是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见,被广泛应用于汽车报站器,广告屏等。如下所示:   通常应用较多的是 8*8 点阵,然后使

    2023年04月08日
    浏览(43)
  • 【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)

    【普中开发板】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频) Proteus 仿真:Proteus 8.16(有低版本) 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:P04 普中开发板实验设计 本设计旨在设计一个基于51单片机的简易计算器仿真设计。 功能要求

    2024年02月02日
    浏览(62)
  • 51单片机LED点阵控制原理、74HC595工作原理和字母和滚动显示实验代码

    目录 1. 74HC595工作原理图解  2.LED点阵控制原理 3.点阵LED实验 3.1 配置74HC595代码 3.2 D点阵LED显示H   3.3 滚动LED  (1) 滚动扫描图示  (2)程序代码 4.遇到奇怪的bug    :        输出使能,输入低电平允许输出,因此需要用接线帽j24让oe和地短接。 (但是我普中A2的板子,不

    2024年02月04日
    浏览(61)
  • 218、仿真-基于51单片机步进电机正反转加减速度LCD1602显示Proteus仿真设计(程序+Proteus仿真+配套资料等)

    目录 一、硬件设计 二、设计功能 三、Proteus仿真图​编辑 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足

    2024年02月12日
    浏览(46)
  • 51单片机【点阵屏】

    ​我们有一个8*8的点阵屏,里面是64个发光二极管。 ​二极管的阳极我们给它接了74HC595的八个输出引脚,阴极接P00-P07引脚。 ​74HC595的八个引脚控制八个行,P00-P07控制八个列,行为1,列为0 对应的那个LED灯会亮,其他的组合不行。 ​如何让74HC595的八个输出引脚输出不同的值

    2024年02月04日
    浏览(37)
  • 基于单片机的点阵电子显示屏上下左右移加减速系统

    一、系统方案 本设计的任务就是完成一个16 16的点阵设计,并能滚动显示“ ********************”内容。 主要内容是,能同时流动显示汉字;能实现显示汉字无闪烁;能实屏幕亮度较高。本LED显示屏能够以动态扫描的方式显示一个16×16点阵汉字,并能通过单片机实现内容滚动显示

    2024年02月09日
    浏览(41)
  • 【51单片机】LED 点阵

    参考:普中 51 单片机开发攻略 第13章 mian.c

    2024年01月22日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包