单片机C语言实现:小型定时器设计与状态切换

需积分: 0 0 下载量 106 浏览量 更新于2024-08-04 收藏 740KB DOCX 举报
本实验报告主要涉及的是利用PlusKey、SubKey和RightSwitch等按键进行控制的小型定时器设计,实验背景是在2017/2018学年的第一学期。目标是让学生掌握单片机C语言编程,人机接口与机电设备的控制,以及基于状态转移和定时调度的系统设计方法。 实验的核心内容围绕单片机C51集成开发环境(KeilC51)和LBD简化版单片机教学实验系统展开,涉及到以下关键知识点: 1. **实验目的和要求**:学生需掌握如何通过单片机的IO端口控制行列式键盘、LED、数码管、蜂鸣器和继电器等硬件设备,同时学习如何使用C语言编写程序实现定时开关功能。系统能够根据用户设置的工作方式(定时开或定时关)进行倒计时,完成相应的逻辑动作。 2. **实验环境**:实验所需的设备包括PC机、KeilC51集成开发环境和实验平台,如LBD简化版单片机教学系统。 3. **系统分析与设计**: - **系统分析**:系统主要依赖于单片机的1号定时/计数器中断来实现定时功能。系统状态分为设置状态和倒计时状态,通过判断是否开始计时来区分。计时中断函数负责显示更新、输入处理和计时位的刷新。 - **系统设计**:包括四个部分:4x4矩阵键盘用于用户输入设置,8位数码管显示剩余时间,继电器执行动作,以及LED和蜂鸣器提供反馈。使用16位定时器(方式一),在11.0582MHz系统时钟频率下,设置初始计数值为0xDC00,每10ms产生中断。在中断处理中,每20ms更新键值和数码管,每1秒检查计时状态并刷新相应指示。 4. **硬件连接**:使用74HC573芯片作为数码管的段选驱动,利用单片机P2口的特定管脚作为位选信号,实现动态显示以减少I/O口的使用。 这个实验不仅锻炼了学生的编程技能,还加深了他们对硬件交互和系统架构的理解,为今后的嵌入式系统开发打下了坚实的基础。