历史上的今天
今天是:2026年02月01日(星期日)
2023年02月01日 | 基于51单片机利用中断实现100以内的按键计数
2023-02-01 来源:zhihu
具体功能实现:
按下“计数”按键可以自增1,按下“清零”按键可以将两位数码管全部置0
使用器件:
两只数码管、总线、排阻、两个按键、AT89C51芯片

Proteus仿真原理图:

仿真:

知识介绍 :
Proteus布线
为了让整个原理图看上去简洁明了,我们对元器件的导线进行标号,而不是直接和芯片相连。
数码管共阳、阳极断码
共阳极(1-9):
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
共阴极(1-9):
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
中断系统
执行现程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。

中断初始化代码:

定时器:
定时器可以实现准确定时,定时功能,计数功能。
51单片机有2个16位的定时器/计数器,定时器0(T0位P3.4)和定时器1(T1为P3.5)
主要代码(C语言)KEIL5实现:
#include
unsigned code Code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f};
unsigned char count=0;
void main(){
P0 = 0x00;
P2=0x00;
TMOD = 0X06;
TH0=256-1;
TL0=256-1;
ET0=1;
EX0=1;
EA=1;
IT0=1;
TR0=1;
while(1){
P0=Code[count/10];
P2=Code[count%10];
}
}
void key_count() interrupt 1 //计数自增1
{
count++;
if(count>100)
{
count=0;
}
}
void clear() interrupt 0 //清零
{
count=0;
}
问:Proteus如何快速布线?
答:按键按下大写的A,输入指令net=P0.#,然后点击“单击对象”,最后想要给哪根导线标号只需点击一下即可。
问:设计思路
答:利用计数器进行加数,利用中断系统做清零处理。
史海拾趣
|
摘要:使用无损吸收电路,能够提高硬开关PFC的工作频率,并降低开关损耗。应用全桥移相软开关技术,实现了DC/DC变换器的大功率输出。通过应用这两种技术,研制HF220/10型高频开关电源。 关键词:无损吸收PFC变换器ZVS?FB … 查看全部问答> |
|
公司找的外包软件公司需要direct3d功能,对此不了解,所以有几个问题想请教一下: 1、外包公司一直提到direct3d.dll,而WINCE5.0中有d3dm.dll,两者之间的关系是类似于MDD与PDD之间的关系还是同等关系? 2、看他们软件介绍是需要Pocket PC\\Windo ...… 查看全部问答> |
|
我按照网上查到的方法 用自己的程序替换掉了explorer.exe [HKEY_LOCAL_MACHINE\\Init] \"Launch50\"=\"myapp.exe\" \"Depend50\"=hex:14,00,1e,00 编译的系统能够运行,并且程序全屏。 我的疑问是,我想在程序的界面中输入东西怎么办? 我看不 ...… 查看全部问答> |
|
我现在在做一个频率计,用FPGA做数据采集,51单片机做显示,数据通信上我说一下我的思路,当P3-0口为低电平,其他为高电平时,FPGA的数据口传送给P1口一组8位数据,当P3-1口为低电平,其他为高电平时,FPGA的数据口再传送给P1口一组8位数据,一共四 ...… 查看全部问答> |
|
[手机远程无线温湿度监控系统] [无线温湿度监控系统] 【手机温湿度监控系统】 农业大棚温湿度监控系统方案 本文编辑 九纯健刘重庆 本方案主要是针对手机检测大棚温湿度所开发设计 ...… 查看全部问答> |
|
由于我电路设计失误,导致VCCA本来应该2.5V的供电现在大约2.3V,不知道这个影响FPGA的工作吗? 我程序烧写是正常的,但是程序不是立刻执行,过了得有半分钟才开始执行? 这个和电压不够有关系吗? 谢谢啊… 查看全部问答> |




