单片机用汇编写两个数码管显示0到99循环的程序

单片机用汇编写两个数码管显示0到99循环的程序,第1张

1、新建项目,做好准备。

2、数码管段选表。

3、延时函数。

4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。

5、while(1) //死循环效果{} 。

6、dk = 1; //打开段选,P0 = leddata[i];,dk = 0; //关闭段选,delay(100);//延时效果。

7、选择效果,限制i值的循环范围。

用80C31单片机在P0口接一个共阳数码管,就可以显示0-9。再用定时器T0,选工作模式1,定时器50ms,采用中断方式,用一个变量对定时器中断计数,计数20次为1秒。再用一个变量n做显示计数,1秒到计数n加一,并从P0口输出n的段码,即可显示0-9。仿真图如下

#include <reg51h>

unsigned int num,a;

sbit key0=P1^0;

sbit key1=P1^1;

sbit key2=P1^2;

sbit key3=P1^3;

bit flag;

unsigned char code led_code[20] = {

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

void delay(unsigned char i)

{

unsigned char j;

for(;i>0;i--) for(j=110;j>0;j--);

}

void keyscan()

{

/实现加法功能/

if(key0==0) {

delay(7);

if(key0==0) {

num++;

if(num==10) num=0;

while(key0==0);

}

}

/实现减法功能/

if(key1==0) {

delay(7);

if(key1==0) {

num--;

if(num==-1) num=9;

while(key1==0);

}

}

/实现清零功能/

if(key2==0) {

delay(7);

if(key2==0) {

num=0;

while(key2==0);

}

}

/实现定时器1方式1定时1S使得数码管加1显示功能/

if(key3==0) {

delay(7);

if(key3==0) {

flag = ~flag;

while(key3==0);

}

}

}

void T1_ini()

{

TMOD=0X10;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

ET1=1;

TR1=1;

}

void timer1() interrupt 3

{

a++;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

}

void display()

{

P3=led_code[num];

}

void main()

{

T1_ini();

while(1)

{

keyscan();

display();

if(a >= 20 && flag) {

a = 0;

num++;

if(num==10) num=0;

}

}

}

试试看。

以上就是关于单片机用汇编写两个数码管显示0到99循环的程序全部的内容,包括:单片机用汇编写两个数码管显示0到99循环的程序、用80C31单片机怎样写一个0-9的数码管定时qi显示的程序、单片机程序求修改,实现按键控制数码管0-9,急!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9338830.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存