当前位置: 首页 > news >正文

【物联网专业】案例9_2:控制数码管(定时器中断)

文章目录

  • 0 文章介绍
  • 1 仿真图
  • 2 效果图
  • 3 不完整代码
  • 4 思考题

0 文章介绍

对应定时器/计数器案例目标的实现
用计数器中断0(P3^4)控制数码管段选
P1^6)控制数码位选

1 仿真图

2 效果图

3 不完整代码

复制该代码,其中有7个补充点,补充点1-3自己思考,补充点567见下方图片

#include<reg52.h>// 包含51单片机特殊功能寄存器定义头文件// 定义无符号整型类型别名#defineuintunsignedint#defineucharunsignedchar// 数码管控制引脚定义sbit dula=P3^4;// 段选锁存器控制引脚(U2锁存器),控制显示内容sbit wela=P1^6;// 位选锁存器控制引脚(U3锁存器),控制显示位置// 拆分后的时间显示变量(十位和个位)uchar shi2,shi1;// 小时十位、个位uchar fen2,fen1;// 分钟十位、个位uchar miao2,miao1;// 秒钟十位、个位// 当前时间变量(初始为11:12:13)uchar shi=11;// 当前小时uchar fen=12;// 当前分钟uchar miao=13;// 当前秒钟uchar count;// 定时器计数变量(用于每秒计时,50ms × 20 = 1秒)// 数码管段码表(无小数点),按0~9的显示编码,连接至段选锁存器uchar code tabledula[]={【补充1};// 数码管段码表(带小数点),用于显示冒号效果(通过点亮小数点位置)uchar code tableduladian[]={【补充2};// 数码管位选码(控制哪一位被选中)// 依次对应数码管第1位~第6位(从左到右)// 注意:这些值为逐位取0,低电平有效(共阴极数码管常见)uchar code tablewela[]={【补充3};// 简单延时函数(x 约等于 x 毫秒)voiddelay(uchar x){【补充4}// 数码管动态显示函数:依次点亮6位数码管,显示“时:分:秒”voiddisplay(uchar shi2,uchar shi1,uchar fen2,uchar fen1,uchar miao2,uchar miao1){// 防止误触发,先清除锁存控制引脚wela=0;dula=0;// 显示第1位:小时的十位P0=tablewela[0];// 选中第1位wela=1;wela=0;// 鎖存位选信号P0=tabledula[shi2];// 发送段码(无小数点)dula=1;dula=0;// 鎖存段选信号delay(1);// 稍作延时(防止闪烁)// 显示第2位:小时的个位(带小数点)P0=tablewela[1];wela=1;wela=0;P0=tableduladian[shi1];// 段码带小数点(模拟冒号)dula=1;dula=0;delay(1);// 显示第3位:分钟的十位wela=0;dula=0;P0=tablewela[2];wela=1;wela=0;P0=tabledula[fen2];dula=1;dula=0;delay(1);// 显示第4位:分钟的个位(带小数点)P0=tablewela[3];wela=1;wela=0;P0=tableduladian[fen1];// 带小数点,模拟冒号dula=1;dula=0;delay(1);// 显示第5位:秒钟的十位P0=tablewela[4];wela=1;wela=0;P0=tabledula[miao2];dula=1;dula=0;delay(1);// 显示第6位:秒钟的个位P0=tablewela[5];wela=1;wela=0;P0=tabledula[miao1];dula=1;dula=0;delay(1);}// 定时器0初始化函数(设置50ms中断)voidinit(){【补充5}// 主函数:程序入口voidmain(){init();// 初始化定时器while(1){// 主循环中不断刷新6位数码管的显示内容display(shi2,shi1,fen2,fen1,miao2,miao1);}}// 定时器0中断服务函数(每50ms进入一次)voidtime0()interrupt1{// 重装载定时器初值,确保下次50ms【补充6】 count++;// 每50ms中断一次,累积20次为1秒if(count>=20){count=0;// 归零计数miao++;// 秒钟+1// 进位判断处理if(miao>=60){miao=0;fen++;// 分钟+1if(fen>=60){fen=0;shi++;// 小时+1if(shi>=24){shi=0;// 24小时制归零}}}}// 将当前时间变量拆分为“十位”和“个位”数字,以便送入数码管显示// 例如:shi = 11,将被拆为 shi2 = 1(十位),shi1 = 1(个位)// miao = 13,将被拆为 miao2 = 1,miao1 = 3【补充7}

补充点567


4 思考题

实现以下效果

http://www.jsqmd.com/news/854892/

相关文章:

  • 【物联网专业】案例11_1:液晶应用实例LCD1602(1)
  • 志高空压机技术解析及四川服务商地址全梳理:真空泵厂家/矿山用空压机/移动式空压机/空压机价格/排行一览 - 优质品牌商家
  • 【26年社工】初级社会工作者历年真题及答案PDF电子版(2010-2025年)
  • C语言学习笔记20260520之递归与迭代
  • Excel里用RANDBETWEEN和DEC2HEX造UUID?小心这3个坑!
  • 2026实验室超声波清洗机:医用超声波清洗机/单槽超声波清洗机/双槽超声波清洗机/吻合器超声波焊接机/塑料超声波焊接机/选择指南 - 优质品牌商家
  • VirtualBox虚拟机里Win10远程桌面黑屏?手把手教你改组策略搞定它
  • 让Cadence Virtuoso界面更顺眼:手把手教你定制display.drf显示规则(从原理图到波形图)
  • 1987年5月10日下午13-15点出生性格、运势和命运
  • 【26年7月】日语N1、N2、N3、N4、N5历年真题及答案PDF电子版(2010-2025年12月)
  • 自驱动关节臂坐标测量机精度提升理论与技术【附程序】
  • ChipDNA PUF技术:从晶体管失配到硬件安全密钥的工程实践
  • c# 简单记录一下我学习的过程 2026.5.20
  • Int J Surg华中科技大学同济医学院附属协和医院:可解释机器学习模型预测胰腺癌早期复发:整合瘤内瘤周影像组学及身体成分分析
  • 2026年HR SaaS选型实测:用友领跑,多场景适配全规模企业!
  • 2026.05 视觉巅峰对决:ImageNet 图像分类 SOTA 模型终极盘点
  • 两个IO口,四根线!51单片机IIC控制LCD1602的究极偷懒方案!!!
  • 避坑指南:在ArcGIS中提取DEM高程点,为什么导入Global Mapper后看不到高度?
  • 【2026年】中考初中语文必背古诗词与文言文PDF电子版(含默写练习题)
  • 告别部署焦虑:用FastDeploy在国产昇腾NPU上跑通PP-OCRv3文字识别(附完整代码)
  • 不止是部署:ZStack快速安装后的初始化配置与第一个业务网络创建全流程
  • 过了查重还要查AI?2026 AIGC检测原理+AI率降到20%全攻略
  • 别再手动画流程图了!Flowable UI 6.6.0 + Tomcat 保姆级部署教程,从安装到登录一次搞定
  • Perplexity数学推理准确率暴跌?紧急预警:2024年Q2模型更新后3类关键公式解析已失效,速查修复方案
  • RK3399 Linux内核深度调试:CodeViser实战与多核问题排查
  • Spring Boot项目整合腾讯云COS,手把手教你实现文件上传功能(附完整工具类代码)
  • 深入 MQTT:从初学者到行业专家的全栈指南
  • 集成学习知识点讲解
  • 从游戏特效到场景交互:解锁UE材质中Dot/Cross/Normalize节点的3个实战应用
  • 查重vs查AI完整对比,2026 AIGC检测原理+AI率降到20%教程