80C51单片机C语言子程序:延时、数码管与中断
需积分: 50 191 浏览量
更新于2024-07-21
1
收藏 49KB DOC 举报
"这篇文档介绍了51单片机中使用C语言编写的几个关键子程序,包括延时子程序、数码管扫描子程序、74LS164脉冲输出及数码管计数子程序、数码管显示子程序以及中断子程序。这些子程序在单片机控制和显示应用中非常常见,对于理解和开发基于80C51单片机的系统具有重要价值。"
1. **延时子程序**:
延时子程序用于在单片机程序中实现时间间隔,通常通过循环结构来消耗一定的时间。例如,给出的`void delay(uint t)`函数使用了两层嵌套循环,通过计数器`i`和`j`来实现不同时间长度的延时。这种延时方法适用于简单应用,但对于精确延时可能不够准确,因为它依赖于单片机的时钟速度。
2. **数码管扫描子程序**:
数码管扫描子程序`uchar keyscan()`用于检测按键并更新数码管显示。它通过扫描8个独立的输入端口(这里假设是`key`)来查找按键状态,并利用74LS164芯片进行数码管的扫描显示。`clear164()`函数用于清除164芯片的输出,确保在新的扫描周期开始时数码管处于非显示状态。
3. **74LS164脉冲输出与数码管计数**:
74LS164是一种串行输入、并行输出的移位寄存器,常用于驱动数码管的段选。`clear164()`函数用于清零输出,而数码管显示子程序则结合74LS164输出脉冲来控制数码管的显示内容。
4. **数码管显示子程序**:
子程序`void display(char wei, char shu)`用于显示特定数值。它接受两个参数,`wei`表示要显示的位数,`shu`是实际的数值。子程序首先清除无效位,然后按照数码管的显示规则设置段选,最后通过74LS164输出来驱动数码管。
5. **中断子程序**:
中断子程序是单片机系统中的关键部分,用于处理外部或内部发生的事件。`void init()`函数初始化定时器0,设置其工作在方式1,计算并设置初值以实现定时功能。同时开启总中断和定时器0中断,使能中断功能。这通常用于实现周期性的任务,如数码管的刷新或者按键的扫描。
以上子程序都是构建基于51单片机系统的基础组件,它们可以组合起来实现更复杂的控制和显示功能。在实际项目中,开发者可以根据需求调整和优化这些子程序,以适应不同的硬件环境和应用需求。
2011-03-09 上传
2009-03-01 上传
2009-02-19 上传
2008-09-03 上传
点击了解资源详情
2012-06-22 上传
119 浏览量
天儿是我老婆
- 粉丝: 1
- 资源: 2
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器