8253A驱动的电子时钟程序设计与仿真
需积分: 10 17 浏览量
更新于2024-09-12
收藏 209KB DOC 举报
"这篇资源是关于使用Protues软件仿真的电子时钟程序设计,主要讲述了电子时钟的三个核心组成部分:显示模块、对时模块和时钟运算模块。电子时钟采用8253A可编程定时/计数器进行时间计算,并利用中断服务程序更新显示。程序使用C语言编写,包含头文件`keil.h`,并定义了相关寄存器和控制位。同时,还提供了月份的英文字符串数组和一系列辅助函数,如延时、写指令、写数据和显示数字等。"
在这个电子时钟程序中,主要知识点包括:
1. **电子时钟结构**:由显示模块、对时模块和时钟运算模块构成。显示模块利用7段显示器展示时间;对时模块和时钟运算模块负责处理时间的增加和重置。
2. **时间进位逻辑**:秒、分、时在达到特定边界时需自动清零并向前一位进位,例如秒到达60时向分进1,分到达60时向时进1,时到达24时清零重新开始。
3. **中断机制**:时钟运算通过8253A的中断来实现。8253A工作在模式三,产生1KHz的方波,该方波作为定时/计数器2的时钟,每秒产生一个负脉冲,触发中断服务程序,更新时间。
4. **8253A定时/计数器**:8253A是一个可编程定时/计数器,用于精确的时间计算。它的工作模式、计数初值以及输入时钟频率决定了其输出的方波频率。
5. **C语言编程**:程序使用C语言编写,定义了几个关键的函数,如`delay()`用于延时,`write_com()`用于写指令,`write_dat()`用于写数据,`deplay()`用于显示数字。
6. **LCD接口**:通过P2口与LCD显示器交互,控制RS、RW和EN引脚实现对LCD的操作。
7. **时间变量和初始化**:程序中定义了存储年、月、日、时、分、秒的变量,并在`init()`函数中进行了初始化。
8. **日期处理**:包含了一个`test_yue()`函数,可能用于根据月份和年份计算该月的天数,但具体内容没有给出。
9. **定时器T0**:设置TMOD寄存器使T0工作在方式1,用于产生定时中断,初值设置使得中断间隔为50ms。
这个程序展示了如何利用微控制器(可能是51系列)和外围设备构建一个简单的电子时钟系统,涵盖了中断处理、定时器配置、LCD显示控制等多个嵌入式系统的核心概念。
2010-08-08 上传
2010-04-28 上传
2012-10-11 上传
2023-12-13 上传
2024-07-03 上传
2023-05-14 上传
2023-03-14 上传
2023-06-02 上传
2023-05-24 上传
李芦峰
- 粉丝: 0
- 资源: 3
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析