具体功能实现:
按下“计数”按键可以自增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.#,然后点击“单击对象”,最后想要给哪根导线标号只需点击一下即可。
问:设计思路
答:利用计数器进行加数,利用中断系统做清零处理。
上一篇:基于51单片机实现LED模拟交通灯
下一篇:单片机课程设计一汇编语言实现四位数计算器
推荐阅读
史海拾趣
- 索取海报:泰克矢量网络分析仪基础知识
- 【已结束】R&S 直播【PCI Express Gen 3 一致性测试(含demo演示)】
- 关注有礼 | 泰克中端示波器增“重”计划
- ublox无线开发板EVK-NINA-B400免费申请
- 有奖直播|TI 工业多协议通信应用中的优化解决方案
- Microchip直播:单片机编程不再难, 利用MPLAB®代码配置器(MCC)实现快速开发
- Vicor可最大限度提高AI、HPC和数据计算性能的电源解决方案
- TI 汽车电子技术专区第二期|高级驾驶辅助系统(ADAS)
- 是德感恩月|天天抽示波器,推荐同享,百余份礼品等你拿!
- 有胆就来|英飞凌IGBT7密室逃脱,邀你来玩!



XC6406PP60DL






京公网安备 11010802033920号