news 2026/3/28 3:01:26

设计分享|51单片机INT1中断计数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
设计分享|51单片机INT1中断计数

目录

具体实现功能

设计介绍

51单片机简介

设计思路

设计内容

程序(Keil5)

仿真实现(protues8.7)


具体实现功能

利用51单片机INT1中断计数实现按键计数,并用五位数码管显示。

设计介绍

51单片机简介

51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

51系列单片机具有以下标准功能:

8k字节Flash,512字节RAM,

32位I/O口线,看门狗定时器,

内置4KB EEPROM,

MAX810复位电路,

三个16位定时器/计数器,

一个6向量2级中断结构,

全双工串行口。

另外, 51系列在空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机停止工作,直到下一个中断或硬件复位为止。本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

设计思路

文献研究法:搜集整理相关研究资料,阅读文献,为研究做准备;

调查研究法:通过调查、分析、具体实验等方法,发现相关存在问题和解决办法;

比较分析法:比较不同设计的具体原理,以及同一类传感器性能的区别,分析系统的研究现状与发展前景;

软硬件设计法:通过软硬件设计实现硬件,最后测试各项功能是否满足要求。

设计内容

程序(Keil5)

本设计利用KEIL5软件实现程序设计,主函数如下:

///////////// /* *INT1中断5位计数* */ #include<reg51.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit K2 = P3^4; void delay(uint16 x) { uint16 i,j; for(i = x; i > 0; i --) for(j = 114; j > 0; j --); } code uint8 LED_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF}; code uint8 Scan_BITs[]= {0x20,0x10,0x08,0x04,0x02}; uint8 Buffer_Counts[]={0,0,0,0,0}; uint16 Count=0; void Show_Counts() { uint8 i; Buffer_Counts[4] = Count / 10000; Buffer_Counts[3] = Count % 10000 / 1000; Buffer_Counts[2] = Count % 1000 / 100; Buffer_Counts[1] = Count % 100 /10; Buffer_Counts[0] = Count % 10; if(Buffer_Counts[4] == 0) { Buffer_Counts[4] = 10; if(Buffer_Counts[3] == 0) { Buffer_Counts[3] = 10; if(Buffer_Counts[2] == 0) { Buffer_Counts[2] = 10; if(Buffer_Counts[1] == 0) Buffer_Counts[1] = 10; } } } for(i = 0;i < 5;i ++) { P0 = 0xFF; P1 = Scan_BITs[i]; P0 = LED_CODE[Buffer_Counts[i]]; delay(2); } } void main() { IP = 0x04; IT1 = 1; IE = 0x84; while(1) { if(K2 == 0) Count = 0; Show_Counts(); } } void ISR1() interrupt 2 { Count++; }

代码运行截图:

仿真实现(protues8.7)

本设计利用protues8.7软件实现仿真设计。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 0:18:15

34、Bash脚本中的循环控制与故障排查

Bash脚本中的循环控制与故障排查 1. 循环控制 在Bash脚本中,循环是一种强大的工具,可用于重复执行特定的代码块。下面将介绍 while 、 until 循环以及如何在循环中控制程序流程。 1.1 while 循环 while 循环会在条件为真时持续执行代码块。以下是一个简单菜单程序…

作者头像 李华
网站建设 2026/3/25 15:07:35

直接撸起袖子开干!今天咱们聊聊怎么用LabVIEW整一个带报警记录的上位机监控系统。这玩意儿在工业现场特别实用,尤其是需要24小时盯着设备状态的时候

labview上位机监测报警记录&#xff0c;状态显示。 报警记录存储&#xff0c;存储格式txt。 csv保存文件。先看状态显示部分。LabVIEW的前面板放几个指示灯控件就能实时反映设备状态&#xff0c;比如用绿色圆形表示正常&#xff0c;红色三角表示报警。背后用个While循环不断读取…

作者头像 李华
网站建设 2026/3/26 22:01:09

基于A*算法的无人机三维动态避障路径规划设计,MATLAB编程实现

基于A* 算法的无人机三维路径规划算法&#xff0c;可以动态避障&#xff0c;自己可以规定设计障碍物位置&#xff0c;MATLAB编程实现。 无人机在三维空间耍杂技这事儿&#xff0c;靠的就是路径规划的真功夫。今天咱们来聊个硬核玩法——基于MATLAB实现的A*算法三维动态避障系统…

作者头像 李华
网站建设 2026/3/25 0:28:55

基于vue的宠物寄养机构管理系统_96zn64i1_springboot php python nodejs

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/3/25 20:41:38

20、GTK+ Tree View 开发指南

GTK+ Tree View 开发指南 1. 引言 在 GTK+ 开发中,Tree View 是一个非常重要的组件,它实现了 MVC(Model-View-Controller)模式中的视图部分。用户可以通过 Tree View 与数据进行交互,如选择行、展开或折叠树等。本文将详细介绍 GTK+ 中 Tree View 的相关函数、属性、信号…

作者头像 李华
网站建设 2026/3/28 0:00:52

22、文本缓冲区操作全解析

文本缓冲区操作全解析 1. 文本缓冲区基础 1.1 基本特性 文本缓冲区采用 UTF - 8 编码,这使得字节计数(索引)和字符计数(偏移量)有所不同。一个文本缓冲区至少包含一行(可能为空),除最后一行外,每行以行分隔符结尾,行分隔符被视为一个字符,它可以是 Unix 换行符、…

作者头像 李华