使用单片机制作一个手动计数器的详细资料说明

利用at89s51单片机来制作一个手动计数器,在at89s51单片机的p3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的p2.0-p2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的p0.0-p0.7接一个共阴数码管,作为00-99计数的十位数显示;硬件电路图如图19所示。
2.电路原理图
3.系统板上硬件连线
(1. 把“单片机系统”区域中的p0.0/ad0-p0.7/ad7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:p0.0/ad0对应着a,p0.1/ad1对应着b,……,p0.7/ad7对应着h。
(2. 把“单片机系统”区域中的p2.0/a8-p2.7/a15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;
(3. 把“单片机系统”区域中的p3.7/rd端口用导线连接到“独立式键盘”区域中的sp1端口上;
4.程序设计内容
(1. 单片机对按键的识别的过程处理
(2. 单片机对正确识别的按键进行计数,计数满时,又从零开始计数;
(3. 单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。如何拆开十位和个位我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。
(4. 通过查表方式,分别显示出个位和十位数字。
5.程序框图
图4.10.2
6.汇编源程序
count equ 30h
sp1 bit p3.7
org 0
start: mov count,#00h
next: mov a,count
mov b,#10
div ab
mov dptr,#table
movc a,@a+dptr
mov p0,a
mov a,b
movc a,@a+dptr
mov p2,a
wt: jnb sp1,wt
wait: jb sp1,wait
lcall dely10ms
jb sp1,wait
inc count
mov a,count
cjne a,#100,next
ljmp start
dely10ms: mov r6,#20
d1: mov r7,#248
djnz r7,$
djnz r6,d1
ret
table: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
7. c语言源程序
#include 《at89x51.h》
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char count;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i》0;i--)
for(j=248;j》0;j--);
}
void main(void)
{
count=0;
p0=table[count/10];
p2=table[count];
while(1)
{
if(p3_7==0)
{
delay10ms();
if(p3_7==0)
{
count++;
if(count==100)
{
count=0;
}
p0=table[count/10];
p2=table[count];
while(p3_7==0);
}
}
}
}

贸泽电子全面备货STM32H7系列微控制器
旷视深度学习框架旷视天元宣布开源
炼钢转炉主轴磨损原因及修复方法
数字资产交易所的7个常见问题解答
java工程师的就业前景发展方向
使用单片机制作一个手动计数器的详细资料说明
雷克沙发布专业级1TB存储卡新品 价格比黄金贵十倍还不止
福田汽车9月销量为5.8万辆,新能源汽车今年累销同比增长90%
德施曼获人民日报高度评价,人民日报X德施曼智能锁将派发亿元消费券
坚果R1纯白色版高清图赏
信号完整性之差分信号(四)
便捷高效的安全保障!AI盒子报警预录像让安防更智能
陶瓷滤波器的生产工艺及调试
锐越微5.8G微波雷达感应传感器解决方案
Master & Dynamic推出两款真无线耳机,长达40小时的电池寿命
华为P30评测 到底怎么样
玻璃液位计缺点
像 “父亲” 般为你保驾护航的自动驾驶技术!
LED显示屏的选购重点解析
高压功率放大器在MEMS微结构模态测试静电激励技术中的应用