51单片机LED点阵显示电路和独立按键组成的16×16

51单片机、74HC595芯片、74HC138芯片、独立按键、LED点阵屏幕、程序下载器等。51单片机LED点阵汉字显示程序编译信息如图3.2所示

基于51单片机的点阵汉字显示程序设计一、实用目的

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

二、基于实践的实验设备和软件 1、设备

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

2、软件

编写51单片机代码的软件:Keil uVision4,绘制原理图和PCB的软件:力创EDA,仿真软件:Proteus 8 Professional。

2. 系统或装置的设计 1. 硬件原理图设计

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

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

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

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

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

图2.3:两块595芯片电路

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

图2.4:两块138芯片电路

74HC138解码芯片电路驱动16×16点阵屏的列选择。 当其输出端口为低电平时,选择LED点阵的相应列。 即LED点阵的列在低电平有效。

图2.5:16×16LED点阵电路

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

2.印制板图纸

根据绘制的原理图,首先将其转换为PCB图,然后对各个元件进行合理布局,然后利用软件的自动布线功能进行布线操作。印刷电路板图如图2.6所示

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

3. 程序框架及主要算法流程图及说明

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

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

图2.8:按键处理流程图

按键处理采用if语句判断方式来判断是否有按键按下。 当按下某个按钮时,将会设置相关的变量值。例如,当按下 key1 时,设置以下变量:

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

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

4. 系统或设备的实现 1. 系统或设备的物理安装和调试

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

2. 代码与调试

1、使用keil4软件创建ledData.h头文件,使用汉字采集软件获取点阵汉字的字符数据,写入到ledData.h头文件中。定义138解码器的输出引脚是哪个在ledData.h头文件中有效,如下代码所示

/*
	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);				// 延时函数

定时器初始化(); 要实现的是51单片机定时器的初始化操作,打开51单片机的定时器,产生对LED点阵屏上汉字移动速度的定时控制; 写入数据(uchar); 就是改变ledData.h头文件,将定义的汉字数据写入到595芯片中,来控制LED点阵的哪些行为有效。 清除屏幕(); 实现LED点阵清零,并从并口输出595寄存器中的数据来控制LED显示。 keyProcess(); 是实现关键处理的相关操作。 当按键时,对应的变量被赋值,以控制汉字在LED点阵屏上的显示方式。

3、创建main.c源文件编写main函数,并在main.h头文件中编写声明函数的定义,实现对应函数的具体功能。 具体详细的代码见附录。

4、用keil4软件烧写程序后,编译生成.hex文件。 51单片机LED点阵汉字显示程序编译信息如图3.2所示

图3.2:程序编译的结果

从编译结果可以看出,该程序零错误和警告。然后在Proteus软件中对程序编译产生的.hex文件进行仿真。 仿真结果如图3.3和3.4所示。

图3.3:程序开始仿真结果

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

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

五、系统运行及结果分析 1、系统运行测试过程

使用keil4软件将编写的程序编译生成.hex文件,通过下载器将程序下载到单片机中。 写入程序的51单片机初始状态为静态显示状态,即显示第一个汉字:“电”。 然后分别按下按键key1~key4,LED点阵屏显示上、下、左、右移动的汉字。 按5键,LED点阵屏上移动的汉字变为静止。 当再次按下时,静止的汉字变成移动的汉字。 按6键实现LED点阵屏汉字闪烁功能。 按7键和8键分别增加或减少汉字的移动速度。 当单片机按下RST复位按钮时,51单片机运行在显示静态汉字的初始状态。

2. 功能总结

从硬件运行结果来看,由51单片机、16×16 LED点阵屏、独立按键、595芯片、138芯片组成的单片点阵汉字显示系统基本实现了实际所需的功能:软件对应功能 点阵显示汉字的相关信息; 实现51单片机和LED点阵屏的驱动功能; 通过kei4软件编写LED点阵汉字显示程序,实现汉字的上下移动以及到LED点阵屏上的显示。 具有左移、右移、特效闪烁显示等功能。

单片机

(廖友斌)设计建设ICU洁净病房的关键词

2024-2-7 10:02:04

单片机

某医院门急诊楼及手术科室楼改扩建工程建设

2024-2-7 11:02:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索