
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,急!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)