目录
一、设计目的
(1) 软件安装,Proteus和Keil4
(2) 软件使用熟悉
(3) 建立一个单片机最小系统及基本电路,掌握I/O口使用、软件延时、定时/计数器基本应用等模块功能实现
二、设计任务
项目内容:
在单片机最小系统的基础上,配置I/O口基本输入输出接口,包括但不局限于LED、键盘、蜂鸣器等,实现以下功能:
1) 通过键盘控制LED的亮灭,或其他输出器件的开关
2) 采用软件延时控制LED或其他输出器件的开关,延时时间可调节
3) 采用定时器和中断控制LED或其他输出器件的开关,延时时间可调节
三、设计内容
选择AT89C51单片机模型创建工程,并添加元件组成8051单片机最小系统,包括LED、键盘(矩阵键盘)、8051单片机等。

通过keil软件使用c语言编写8051程序。在Proteus中,配置仿真选项,选择关联的.h程序文件,设置仿真时钟频率。

开始运行仿真,观察LED的状态随键盘输入的变化而改变。在仿真中,调试程序,确保LED的控制和键盘输入响应按预期工作。如果出现问题,根据仿真结果及时进行修改和优化。
本次设计总体采用软件控制硬件的方式,用Keil软件编写相应C语言程序用于驱动和控制芯片的工作,同时应用Proteus仿真软件搭建仿真电路完成整体电路仿真。
电路总体以AT89C51单片机为核心,由电源电路进行驱动,键盘电路进行控制,当按下键盘控制,单片机根据P1.0口的按键控制P2.0口的LED灯亮灭,按下复位键后恢复初始状态。
3.1 硬件设计与仿真
使用八级联七段数码管,分别连接到到89C51单片机的P0口和P2口输出引脚上,共需要需要16个引脚来控制八级联7段数码管显示。
设计键盘矩阵,连接4x4的键盘矩阵到89C51单片机的P1口输入引脚上,4行和4列需要8个引脚,其中4个用于输入行和4个用于输出列。并设计一个蜂鸣器以实现闹钟接口。
主要实现的功能有,日期显示,时间显示,日期,时间切换,修改日期及时间,12小时/24小时切换 ,闹钟功能 ,闹钟关闭/打开 。
所用的电子元器件有单片机89C51,八级联LED数码管(共阳极),上拉电阻,按键若干。因为需要实现闹钟,加入蜂鸣器,按键连接到P1.0-P1.6,P1.7连接蜂鸣器,P0,P2口控制显示器显示日期,时间等。

3.2 局部电路
3.2.1晶振电路
晶振电路主要用于产生12M 的晶振,给单片机提供工作信号脉冲。如图所示,将两个电容C1、C2串联在AT89C51的18和19端口即XTAL1和XTAL2两个端口,再并联一个晶振器(如图中Y1),最后整体接地,构成晶振电路。

3.2.2 复位电路
将如图所示电路接入AT89C51的9号端口RST端口,用于总电路的复位。
3.2.3按键电路
使用独立式键盘的按键,当按下按键时,产生一个低电平,信号经过单片机处理,然后传递给P2.0口一个高电平,从而点亮LED灯

3.2.4 LED灯电路

<div align=center>图 5 显示电路
四、软件设计、说明与仿真
通过89C51单片机循环读取按键此时的电平高低,从而判断是否在P2.0口输出高电平,这样就实现了通过键盘控制LED的亮灭。代码如下图
通过在keil软件中调整延时函数delay的计数值多少,即可延时控制LED的亮灭。代码如下图所示。
通过单片机的定时器进行定时中断,在中断服务程序中将单片机上完结单片机IO口来回置高电平或者是低电平的,从而让LED亮或灭。代码如下图所示。
五、联合仿真结果及分析
键盘控制的系统运行图如下所示:
当按下键盘后,LED灯亮,如图
软件延时控制LED时,只需要调节延时函数的计数值即可
通过单片机的定时器进行定时中断时,根据定时器设置时长,单片机自动改变电平
六、优化及讨论
使用89C51单片机通过按键控制LED,用延时函数控制LED,用定时器控制LED这三种方式各有优缺点:
通过按键控制LED的优点是相对简单,适用于简单的应用,不需要精确的时间控制,不要额外的硬件。缺点是响应时间受限于主循环的速度,不适合需要高精度定时控制的应用,不便于实现复杂的时间控制逻辑,如多个LED的不同闪烁频率。
通过延时函数控制LED的优点是相对简单,具有一定的时间控制能力,适用于需要基本的时间控制的应用。缺点是延时函数会占用CPU资源,降低系统的响应速度,不适用于需要较长、稳定和高精度的延时的应用。
通过定时器控制LED的优点是精确的时间控制,不受CPU负载的影响,允许多任务并行执行,提高系统的响应速度,可以轻松实现复杂的时间控制逻辑。
缺点是配置和编程相对复杂,需要理解定时器的工作原理,需要了解硬件的特性,如时钟频率和定时器寄存器的操作。
总之,使用89C51单片机通过按键控制LED简单易懂但响应时间有限,延时函数控制LED具备一定时间控制能力但会占用CPU资源,定时器控制LED提供精确时间控制,允许多任务并行执行,适用于高精度、长时间延时和复杂时间控制的应用,但需要更复杂的配置和编程。所以选择LED控制方式应根据应用需求和硬件特性进行权衡。