导航:首页 > 编程语言 > 数码管两位计数编程

数码管两位计数编程

发布时间:2023-10-17 08:46:53

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

1、新建项目拆猜兄旅袭,做好准备。

2. 单片机程序:两位数码管记秒【加分】

1.单片机用89C51或者89C52,P0 P2进行显示数据的输出, P3.0键接按键。 数码管用共阴极数码管。
2.主要功能:按键控制,按一下计秒再按停止。技术显示从0到99循环开始。
采用定时计数器T0实现秒中断:
#include <REG52.H> //注意头文件,调试的时候你的软件里面是否有这个文件
#define pb P3_0
unsigned int int_count=0;//T0中断计数
unsigned char second=0;//秒计数
unsigned char count=0;//分支选择,计数器开和关
unsigned char reg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//共阴极数码管码值表

void Key_delay()//按键延时
{unsigned char i,j;
for(i=100;i>0;i--)
for(j=248;j>0;j--);
}
void t0() interrupt 1 using 0 //T0中断函数 4000次一个循环 一个循环一秒
{int_count++;
if(int_count==4000)
{int_count=0;
second++;
if(second>99)
second=0;
}

}
void Key_scan()//按键扫描函数
{
if(pb==1)
{Key_delay();
if(pb==1)
Key_delay();//此延时主要考虑到个人的视觉感受和按键操作合理时间
count++;
switch(count)
case 0: break;
case 1: TR0=1;break;//开定时器
case 2: TR0=0;count=0;break;
}
}

void main()
{unsigned char sacn//按键扫描变量
TMOD=0X02;//8位自动重装
TH0=0x06;
TL0=0x06;//250us中断一次
ET0=1;
EA=1;//开单片机中断
while(1)//等待中断
{if(int_count)
{sacn=int_count;
if(!(scan%40))//10ms进行一次按键扫描
Key_scan();//调用按键扫描函数
P0=seg[second/10]//10位输出
P2=seg[second%10]//个位输出
}
}
}

注意共阴极数码管的连接方式:P0P2口低位到高位分别连接到两个数码管的a到g脚,因为连接方式决定了显示数据的编码方式;P0口务必要接上拉电阻。

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

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

4. 编程实现倒计时的秒表,2位LED数码管显示,延时采用硬件延时的方法

编程实现倒计时的秒表,2位LED数码管显示,延时埋闭采用硬件延时的方法
用单片机的定时器T0定时,计时1秒,实现倒计时的秒表的功能。
程序如下
#include<reg51.h>
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码表
unsigned char second;//秒倒计时变量
unsigned char t0n;//T0中断次数计数
sbit k1=P3^2;//定义按键
void delay()
{
unsigned int j;
for(j=400;j>0;j--);
}
void display()//显示子程序
{
P2=0x01;
P0=tab[second/10];//显示十位
delay();
P2=0x02;
P0=tab[second%10];//显示个位
delay();
}
void main()
{
TMOD=0x01;//用T0定时,中断方式
TH0 =0x3C;//晶振12M,定时50ms
TL0 =0xB0;
IE =0x82;
while(1)
{
display();//调显示子程序
if(k1==0)//按键按下
{
if(TR0==0)
{
TR0=1;//启动开始计时
second=60;//从60秒开始倒计时
}
else
TR0=0;
while(k1==0);/渗哗/等待按键释放
}
}
}
//T0中断程序
void T0_int() interrupt 1
{
TH0 =0x3C;
TL0 =0xB0;
t0n++;
if(t0n>=20)/弯喊裂/1秒到
{
t0n=0;
second--;//减1秒
if(second==0)TR0=0;
}
}

5. 单片机C语言两个数码管按键计数程序

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=
{
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
};
sbit key1=P3^4;

uchar num=0;
void delay(uint z);
void main()
{
while(1)
{
P2=0xfe;
P0=table[num];
delay(50);

if(key1==0)
{
while(!key1);
num++;
};

if(num==10)
{
num=0;
};
}
}

void delay(uint z)
{
while(z--);
}

看看吧,一个道理。

阅读全文

与数码管两位计数编程相关的资料

热点内容
凌阳单片机选型 浏览:478
android手机hosts 浏览:95
路由器l2tp服务器地址是什么 浏览:160
做解压手套视频 浏览:620
退役命令文件 浏览:676
linux递归查找文件 浏览:243
哪个app上才能看到免费的名门挚爱 浏览:839
mysql查看表字段的命令 浏览:521
ios里的文件夹怎么用 浏览:166
压缩银行开户时间表 浏览:429
银行人员如何解压 浏览:829
newfile命令快捷键 浏览:569
阿里云物理服务器 浏览:955
灵狐视频app哪个好 浏览:259
大厂退役程序员自述 浏览:254
linux命令watch 浏览:889
加密币哪些平台不撤出中国 浏览:553
max加线命令 浏览:424
app胖瘦模式哪个好用 浏览:724
可以下载源码的软件 浏览:487