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

12.2 秒表(定时器扫描按键数码管)

#include REGX52.H#include I2C.h#define AT24C02_ADDRESS 0xA0/*** brief AT24C02写入一个字节* param WordAddress 要写入字节的地址* param Data 要写入的数据* retval 无*/void AT24C02_WriteByte(unsigned char WordAddress,Data){I2C_Start();I2C_SendByte(AT24C02_ADDRESS);I2C_ReceiveAck();I2C_SendByte(WordAddress);I2C_ReceiveAck();I2C_SendByte(Data);I2C_ReceiveAck();I2C_Stop();}/*** brief AT24C02读取一个字节* param WordAddress 要读出字节的地址* retval 读出的数据*/unsigned char AT24C02_ReadByte(unsigned char WordAddress){unsigned char Data;I2C_Start();I2C_SendByte(AT24C02_ADDRESS);I2C_ReceiveAck();I2C_SendByte(WordAddress);I2C_ReceiveAck();I2C_Start();I2C_SendByte(AT24C02_ADDRESS|0x01);I2C_ReceiveAck();DataI2C_ReceiveByte();I2C_SendAck(1);I2C_Stop();return Data;}#include REGX52.Hsbit I2C_SCLP2^1;sbit I2C_SDAP2^0;/*** brief I2C开始* param 无* retval 无*/void I2C_Start(void){I2C_SDA1;I2C_SCL1;I2C_SDA0;I2C_SCL0;}/*** brief I2C停止* param 无* retval 无*/void I2C_Stop(void){I2C_SDA0;I2C_SCL1;I2C_SDA1;}/*** brief I2C发送一个字节* param Byte 要发送的字节* retval 无*/void I2C_SendByte(unsigned char Byte){unsigned char i;for(i0;i8;i){I2C_SDAByte(0x80i);I2C_SCL1;I2C_SCL0;}}/*** brief I2C接收一个字节* param 无* retval 接收到的一个字节数据*/unsigned char I2C_ReceiveByte(void){unsigned char i,Byte0x00;I2C_SDA1;for(i0;i8;i){I2C_SCL1;if(I2C_SDA){Byte|(0x80i);}I2C_SCL0;}return Byte;}/*** brief I2C发送应答* param AckBit 应答位0为应答1为非应答* retval 无*/void I2C_SendAck(unsigned char AckBit){I2C_SDAAckBit;I2C_SCL1;I2C_SCL0;}/*** brief I2C接收应答位* param 无* retval 接收到的应答位0为应答1为非应答*/unsigned char I2C_ReceiveAck(void){unsigned char AckBit;I2C_SDA1;I2C_SCL1;AckBitI2C_SDA;I2C_SCL0;return AckBit;}#include REGX52.H#include Timer0.h#include Key.h#include Nixie.h#include Delay.h#include AT24C02.hunsigned char KeyNum;unsigned char Min,Sec,MiniSec;unsigned char RunFlag;void main(){Timer0_Init();while(1){KeyNumKey();if(KeyNum1) //K1按键按下{RunFlag!RunFlag; //启动标志位翻转}if(KeyNum2) //K2按键按下{Min0; //分秒清0Sec0;MiniSec0;}if(KeyNum3) //K3按键按下{AT24C02_WriteByte(0,Min); //将分秒写入AT24C02Delay(5);AT24C02_WriteByte(1,Sec);Delay(5);AT24C02_WriteByte(2,MiniSec);Delay(5);}if(KeyNum4) //K4按键按下{MinAT24C02_ReadByte(0); //读出AT24C02数据SecAT24C02_ReadByte(1);MiniSecAT24C02_ReadByte(2);}Nixie_SetBuf(1,Min/10); //设置显示缓存显示数据Nixie_SetBuf(2,Min%10);Nixie_SetBuf(3,11);Nixie_SetBuf(4,Sec/10);Nixie_SetBuf(5,Sec%10);Nixie_SetBuf(6,11);Nixie_SetBuf(7,MiniSec/10);Nixie_SetBuf(8,MiniSec%10);}}/*** brief 秒表驱动函数在中断中调用* param 无* retval 无*/void Sec_Loop(void){if(RunFlag){MiniSec;if(MiniSec100){MiniSec0;Sec;if(Sec60){Sec0;Min;if(Min60){Min0;}}}}}void Timer0_Routine() interrupt 1{static unsigned int T0Count1,T0Count2,T0Count3;TL0 0x18; //设置定时初值TH0 0xFC; //设置定时初值T0Count1;if(T0Count120){T0Count10;Key_Loop(); //20ms调用一次按键驱动函数}T0Count2;if(T0Count22){T0Count20;Nixie_Loop();//2ms调用一次数码管驱动函数}T0Count3;if(T0Count310){T0Count30;Sec_Loop(); //10ms调用一次数秒表驱动函数}}Delay Key Nixie Timer0

相关文章:

12.2 秒表(定时器扫描按键数码管)

#include <REGX52.H> #include "I2C.h"#define AT24C02_ADDRESS 0xA0/*** brief AT24C02写入一个字节* param WordAddress 要写入字节的地址* param Data 要写入的数据* retval 无*/ void AT24C02_WriteByte(unsigned char WordAddress,Data) {I2C_S…...

手把手教你用Gemma-3-12B-IT:免GPU一键部署,小白也能玩转大模型

手把手教你用Gemma-3-12B-IT&#xff1a;免GPU一键部署&#xff0c;小白也能玩转大模型 1. 为什么选择Gemma-3-12B-IT 在当今AI大模型百花齐放的时代&#xff0c;Google推出的Gemma系列模型以其出色的性价比脱颖而出。Gemma-3-12B-IT作为该系列的最新成员&#xff0c;在多个关…...

3步解决Zotero中文文献管理难题:Jasminum插件完整指南

3步解决Zotero中文文献管理难题&#xff1a;Jasminum插件完整指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 作为一名中文研…...

终极指南:使用ide-eval-resetter轻松重置JetBrains IDE试用期,实现开发自由

终极指南&#xff1a;使用ide-eval-resetter轻松重置JetBrains IDE试用期&#xff0c;实现开发自由 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否曾经在项目关键时期遭遇JetBrains IDE试用期突然结束的尴…...

ZeroTermux宝塔面板部署实战:从环境修复到Nginx/PHP服务调优

1. ZeroTermux环境准备与避坑指南 想在安卓手机上搭建完整的Web服务环境&#xff1f;ZeroTermuxUbuntu宝塔面板的组合绝对是移动端开发者的神器。不过别急着敲命令&#xff0c;先看看我踩过的那些坑——光是/proc分区挂载错误就让我折腾了大半天。 设备要求其实很简单&#xff…...

vLLM-v0.17.1快速上手:Jupyter+WebShell+SSH三端调用教程

vLLM-v0.17.1快速上手&#xff1a;JupyterWebShellSSH三端调用教程 1. vLLM框架简介 vLLM是一个专为大语言模型(LLM)设计的高性能推理和服务库&#xff0c;以其出色的速度和易用性著称。这个项目最初由加州大学伯克利分校的天空计算实验室开发&#xff0c;现在已经发展成为一…...

Poppler预编译包:Windows生态中的PDF处理标准化方案

Poppler预编译包&#xff1a;Windows生态中的PDF处理标准化方案 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 在跨平台软件开发实践中&#xff0…...

构建弹性数据中心供应链的5个技巧

数据中心供应链的弹性建设不是一次性项目&#xff0c;而是持续进化的能力。多元化供应商、战略库存、数字化孪生、模块化设计、生态系统协作五大技巧相互支撑&#xff0c;形成韧性网络。在全球不确定性成为常态的背景下&#xff0c;弹性供应链已从成本中心转化为战略资产——它…...

告别复杂配置!LumiPixel纯净人像创作站一键部署与使用指南

告别复杂配置&#xff01;LumiPixel纯净人像创作站一键部署与使用指南 1. 认识LumiPixel&#xff1a;纯净人像创作站 LumiPixel: Canvas Quest是一款专为艺术创作者设计的AI视觉创作平台。它将先进的Z-Image扩散模型与复古像素艺术美学完美结合&#xff0c;让AI艺术创作变得简…...

ide-eval-resetter:为什么这款工具能成为JetBrains开发者评估期的智能管家?

ide-eval-resetter&#xff1a;为什么这款工具能成为JetBrains开发者评估期的智能管家&#xff1f; 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 在软件开发团队的日常工作中&#xff0c;JetBrains IDE的30天试…...

Embedding List 检索策略:多向量何时值得做,模型与策略如何匹配

01 为什么需要多向量检索&#xff1f; 在传统的稠密检索&#xff08;Dense Retrieval&#xff09;中&#xff0c;一个文档被编码为单个向量&#xff0c;检索时通过 ANN&#xff08;近似最近邻&#xff09;算法快速找到与查询最相似的文档。这种方式简单高效&#xff0c;但存在…...

破解工业文档幻觉——基于 Dify 搭建知识图谱 RAG 系统

Techub&#xff1a;解构前沿技术&#xff0c;重塑应用场景&#xff0c;把未来的智能生态提前剧透给你。 &#x1f4cc; 省流速读 核心观点&#xff1a;传统 RAG 在工业场景易产生致命幻觉&#xff0c;知识图谱 RAG 将向量检索升级为精确的"实体-关系"网络关键点1&…...

AWS MSK Kafka min.insync.replicas 配置风险排查与修复实战

RF=3, MinISR=3 看似"写入三副本才算成功,最安全",实则是定时炸弹——任何一个 broker 不可用就全面写入中断。本文记录从 AWS Health 告警发现到零停机修复的完整过程。 前言 某天巡检 AWS Health Dashboard,收到一条告警: AWS_KAFKA_HIGH_RISK_CONFIG_RF_EQU…...

小白也能玩转Qwen3.5-2B:无需GPU,开箱即用的多模态对话体验

小白也能玩转Qwen3.5-2B&#xff1a;无需GPU&#xff0c;开箱即用的多模态对话体验 1. 引言&#xff1a;零门槛体验AI多模态对话 你是否曾经想体验AI的多模态对话能力&#xff0c;却被复杂的部署流程和高昂的硬件要求劝退&#xff1f;今天我要介绍的Qwen3.5-2B轻量化多模态基…...

FogGate-YOLO:直击雾天检测痛点,基于通道选择的 YOLOv8 优化方案

点击蓝字关注我们关注并星标从此不迷路计算机视觉研究院公众号ID&#xff5c;计算机视觉研究院学习群&#xff5c;扫码在主页获取加入方式https://pmc.ncbi.nlm.nih.gov/articles/PMC13030070/pdf/sensors-26-01811.pdf计算机视觉研究院专栏Column of Computer Vision Institut…...

Phi-4-mini-reasoning辅助Anaconda环境管理:依赖冲突的智能解决建议

Phi-4-mini-reasoning辅助Anaconda环境管理&#xff1a;依赖冲突的智能解决建议 1. 引言&#xff1a;Python开发者的依赖管理之痛 如果你经常使用Anaconda进行Python开发&#xff0c;一定遇到过这样的场景&#xff1a;当你满怀期待地运行conda install安装新包时&#xff0c;…...

深入解析Node.js事件循环机制

深入解析Node.js事件循环机制 Node.js以其非阻塞I/O和事件驱动特性成为高性能服务端开发的首选&#xff0c;而这一切的核心正是事件循环机制。理解这一机制不仅能帮助开发者优化代码性能&#xff0c;还能避免常见的异步陷阱。本文将带你深入Node.js事件循环的运作原理&#xf…...

openEuler(CentOS8)防火墙firewall与Selinux实战配置指南

1. 防火墙firewalld基础操作指南 刚接触openEuler或CentOS8系统的朋友&#xff0c;经常会遇到服务端口无法访问的问题。这十有八九是防火墙在"作怪"。别担心&#xff0c;今天我就带大家彻底搞定这个安全卫士。 firewalld是新一代动态防火墙管理工具&#xff0c;相比传…...

避坑!这些毕设太好抄了,3000+毕设案例推荐第1062期

621、基于Java的执法部门行政人员智慧管理系统的设计与实现(论文&#xff0b;代码&#xff0b;PPT)执法部门行政人员智慧管理系统主要功能包括&#xff1a;执法单位、执法人员、奖惩记录、培训记录。当前社会信息化水平提升行政执法单位需高效精准管理亟需数字化系统整合信息资…...

原神帧率解锁完全指南:如何安全突破60FPS限制

原神帧率解锁完全指南&#xff1a;如何安全突破60FPS限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 对于《原神》PC玩家来说&#xff0c;60FPS的帧率限制常常让高性能硬件无法发挥全…...

站群系统的技术内核与商业逻辑:从开源到合正的选择

站群系统的技术内核与商业逻辑&#xff1a;从开源到合正的选择 2026年的春天&#xff0c;数字资产的管理方式正经历一场静默的变革。当单体网站的运营成为常态&#xff0c;一种更高效、更具规模效应的策略——站群管理&#xff0c;正从技术极客的圈子走向更广泛的商业应用。这…...

终极指南:5分钟快速解锁微信网页版,让浏览器中的微信重新可用

终极指南&#xff1a;5分钟快速解锁微信网页版&#xff0c;让浏览器中的微信重新可用 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版…...

京东抢购神器:JDspyder自动化脚本完整使用指南

京东抢购神器&#xff1a;JDspyder自动化脚本完整使用指南 【免费下载链接】JDspyder 京东预约&抢购脚本&#xff0c;可以自定义商品链接 项目地址: https://gitcode.com/gh_mirrors/jd/JDspyder 还在为抢不到心仪商品而烦恼吗&#xff1f;JDspyder是一款专业的京东…...

如何用biliTickerBuy实现B站会员购智能抢票?5个实战技巧帮你提升90%成功率

如何用biliTickerBuy实现B站会员购智能抢票&#xff1f;5个实战技巧帮你提升90%成功率 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 在B站会员购抢票大战中&#xff0c;你是否总是因为手速不…...

信捷PLC运动控制避坑指南:为什么绝对位置比较比静止判断更靠谱?

信捷PLC运动控制避坑指南&#xff1a;绝对位置比较为何优于静止判断 在工业自动化领域&#xff0c;运动控制的精度和可靠性直接影响着生产效率和产品质量。信捷XDH系列PLC凭借其出色的EtherCAT总线性能和灵活的C语言编程环境&#xff0c;已成为许多设备制造商的首选控制器。然而…...

简单免费:猫抓浏览器插件帮你轻松获取网页视频和音频资源的完整指南

简单免费&#xff1a;猫抓浏览器插件帮你轻松获取网页视频和音频资源的完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这…...

Blender化学品插件终极指南:从零开始创建专业3D分子模型

Blender化学品插件终极指南&#xff1a;从零开始创建专业3D分子模型 【免费下载链接】blender-chemicals Draws chemicals in Blender using common input formats (smiles, molfiles, cif files, etc.) 项目地址: https://gitcode.com/gh_mirrors/bl/blender-chemicals …...

哔哩下载姬DownKyi完全指南:如何免费批量下载B站8K超高清视频

哔哩下载姬DownKyi完全指南&#xff1a;如何免费批量下载B站8K超高清视频 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等…...

《信息系统项目管理师教程(第4版)》——采购管理知识要点

以下是《信息系统项目管理师教程&#xff08;第4版&#xff09;》第16章“项目采购管理”的核心知识要点梳理&#xff0c;结合教程内容与高频考点整理&#xff1a;一、采购管理基础 1. 采购的定义与类型 定义&#xff1a;项目采购管理包括从项目团队外部获取或购买所需产品、服…...

Windows系统激活难题终极解决方案:KMS_VL_ALL_AIO智能脚本全解析

Windows系统激活难题终极解决方案&#xff1a;KMS_VL_ALL_AIO智能脚本全解析 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否也曾面对Windows系统"未激活"的红色警告束手无策&a…...