实验报告
实验名称 |
小型定时开关控制系统设计 |
指导教师 |
倪晓军 |
||
实验类型 |
课内实验 |
实验学时 |
2 |
实验时间 |
2017-12-15 |
一、 实验目的和要求
1. 掌握行列式键盘、LED、数码管、蜂鸣器、继电器等人机接口和机电设备的工作原理,以及使用单片机C语言对其进行控制的方法;
2. 掌握基于状态转移及定时调度的系统分析方法,并使用此方法对系统软件结构进行分析和设计,实现所要求的功能;
3. 掌握使用集成开发环境Keil进行单片机程序的设计、开发及调试的方法和过程。
二、 实验要求
1. 通过单片机的IO端口控制人机接口及机电设备,完成一个定时开关的设计;
2. 定时开关的工作方式可设置为定时开或定时关;
3. 系统通过行列式键盘接受用户的按键输入,设置工作方式和定时时长;
4. 系统通过控制LED、数码管及蜂鸣器对用户的操作提供反馈和提示;
5. 当用户控制计时启动时,系统对用户设定的时长进行倒计时;
6. 如用户设置系统工作在定时开方式,则倒计时结束(计数到0)时控制继电器吸合;
7. 如用户设置系统工作在定时关方式,则倒计时开始时继电器吸合,倒计时结束(计数到0)时继电器断开。
三、 实验环境(实验设备)
PC机、Keil C51集成开发环境、LBD简化版单片机教学实验系统。
四、 实验原理及内容
1. 系统的分析和设计:
(1) 系统的分析:
系统核心为定时功能,在规定的时长后完成要求所需的功能动作,因此可采用系统内部的1号定时/计数器中断来实现。系统共存在两种状态:设置状态和倒计时状态, 可以通过是否开始计时来区分,因此主函数在初始化完成后主要完成两种状态的区分。在计时中断函数中,主要完成显示,输入和计时位的刷新工作。系统的简化时序流程 图如下:
图一 系统简化时序流程图
(2) 系统的设计:
系统所需的功能性模块包括:4*4矩阵键盘用于设置倒计时时长,切换工作方式和开始倒计时;8位数码管用于显示剩余时间;继电器,用以完成规定动作;LED和蜂鸣器,用于反馈系统各个细节的运行情况。
定时/计数器,设置工作在方式一:16位定时器。在系统时钟频率为11.0582MHz的情况下,初值设置为0xDC00,每10ms触发一次定时/计数器中断。定时器计数器中断函数中,处理两件事:基于是否开始定时判断的时间刷新和键盘、数码管的刷新。具体为:每20ms,刷新一次键值和数码管;每1s判断后刷新计时位。
八位数码管,选用八位共阴极数码管,采用动态显示,为了节省I/O口,在数码管的段选位前接一个74HC573,用51P2口的2,3,4管脚作为数码管的位选信号。
图二 数码管接线原理图
4*4矩阵键盘,采用行列刷新的方式获取按键值。由左至右,由上至下键值分别为0-15。其中键值对应功能如下表:
表一 键盘键值及功能
键值 |
功能 |
5(StartStopKey) |
开始/停止计时,在设置参数状态下,按下则开始倒计时。在计时状态下,按下则停止倒计时。 |
1(PlusKey) |
在对应的时间位上 +1 |
9(SubKey) |
在对应的时间位上 -1 |
6(RightSwitch) |
按 时分秒 时间位顺序右移一位 |
4(LeftSwitch) |
按 时分秒 时间位顺序左移一位 |
15(ModSwitch) |
在参数设置的状态下,按下则切换工作状态 |
I/O口的接线的具体含义见下表:
表二 单片机I/O口连接模块
管脚号 |
连接模块 |
P0(0~7) |
八位数码管位选。P0为0x3f时,对应数码管显示0。 |
P1(0~7) |
4*4矩阵键盘。高四位接行,第四位接列。 |
P2(0) |
LED,低电平点亮。 |
P2(1) |
继电器,低电平吸合。 |
P2(2~4) |
3-8译码器的输入位,为000时,第1个数码管被选中。 |
P2(5) |
蜂鸣器,低电平发声。 |
2. 关键代码的说明:
(1) 定时/技术器的中断函数
定时器工作在方式一,其中频率为11.0592MHz。每1s判断一次是否修改计时位,每20ms刷新一次键值和数码管。
voidTimer() interrupt 1
{
TH0 = 0xDC;
TL0 = 0x00;
Count10ms++;
Count1s++;
if(Count1s == 100)
{
if(StartFlag == 1)
{