一位数码管连在51单片机上,按键后数码管加1,按一下加1.怎样用汇编语言编写

一位数码管连在51单片机上,按键后数码管加1,按一下加1.怎样用汇编语言编写,第1张

一、图貌似有点问题:

1、用的是共阴极数码管如果单片机直接驱动的话,应该用共阳极的;

2、所有LED(包括数码管)都未接限流电阻,建议串接470欧左右的;

3、单片机直接驱动“sounder”,估计驱动电流不够,建议接三极管后再输出

二、程序可以借鉴楼上的,但需要修改:

SETB P10

JNB P10,$

在这2句之间需要加入:

JB 10 LP0

LCALL DELAY_50MS

另:加入子程序DELAY_50MS

DELAY_50MS:

MOV R7,#0C3H

LP_DL:

MOV R6,#00H

DJNZ R6,$

DJNZ R7,LP_DL

RET

如果换成共阳极数码管后,数据表换成以下的:

TABLE: ;表:共阳数码管 0-9 A-F

DB 0C0H,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH

以上意见供参考

-\x0d\建立一个数组,用于存放 0-9的段码。\x0d\int Shuzu[]={---------};\x0d\如果会用指针\x0d\int P;\x0d\P=Shuzu; //指针指向数组!\x0d\用外部中断,\x0d\每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=P++)\x0d\以上假设P0口驱动数码管!\x0d\至于数码管使用的是共阳还是共阴,就把相对的数值存在数组中!\x0d\-\x0d\外部中断0的中断程序入口\x0d\void TI_0() interrupt 0\x0d\{\x0d\ --------\x0d\}\x0d\都提示到这里了,下面自己该会吧?\x0d\如果是新手的新手---想要我帮你写全部程序--\x0d\那至少你得把你单片机芯片型号说给我才能帮你!\x0d\还有数码管是用单片机哪个IO口!\x0d\数码管是怎么连接的?(串/并)

你既能够实现按一下,数据加1的话,那就差一点就可以实现你所说的功能了。

不过还要看你的中断是边沿触发呢,还是电平触发?

如果是边沿触发呢,每次进入中断的时候把一个位变量置1,并且保存外部中断口的电平。然后我们在主程序中读取这个位变量,如果位变量为1说明已经有铵键被按下。然后开如计时,并将位变量清零。当时间达到某一个值(如:200ms)我们就让计数寄存器加1,以此类推,当时间达到另一个值时(如:400ms),再将计数据器加1。不过,当主程序中再次读到位变量被置1时,我们要停止计时。并判断时间是否达到设定值,如果比设定值小的话,就视为干扰信号。这时清除计时器。这样就能实现连续加1的功能。

希望能让你得到启发。祝你好运!

这个可以用定时器来做,比如检查某键,按键时间超过2秒后一个变量开始累加知道键释放为止。实现方法如下:

#include<reg51h>

#define uint unsigned int

#define uchar unsigned char

uint v=0,time=0;

sbit key=P1^0;

void t0isr() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

time++;

if((key==0)&&(time>40)v++; //如果按键时间超过2秒且键未释放,变量+1

if(key==1)time=0; //如果键释放,时间复位

}

main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

ET0=1;

EA=1;

while(1);

}

-

建立一个数组,用于存放 0-9的段码。

int Shuzu[]={---------};

如果会用指针

int P;

P=Shuzu; //指针指向数组!

用外部中断,

每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=P++)

以上假设P0口驱动数码管!

至于数码管使用的是共阳还是共阴,就把相对的数值存在数组中!

-

外部中断0的中断程序入口

void TI_0() interrupt 0

{

--------

}

都提示到这里了,下面自己该会吧?

如果是新手的新手---想要我帮你写全部程序--

那至少你得把你单片机芯片型号说给我才能帮你!

还有数码管是用单片机哪个IO口!

数码管是怎么连接的?(串/并)

以上就是关于一位数码管连在51单片机上,按键后数码管加1,按一下加1.怎样用汇编语言编写全部的内容,包括:一位数码管连在51单片机上,按键后数码管加1,按一下加1.怎样用汇编语言编写、c51单片机按键每按一次同时数码管显示数字加一是什么、单片机怎么用键盘中断实现按住按键,使内部RAM中的一个数据不停加1等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9969407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存