单片机中断控制为什么用两个数码管?
好酷屋教程网小编为您收集和整理了单片机中断控制为什么用两个数码管?的相关教程:单片机中断控制和数码管是没有关系的。你想问的应该是怎么用中断去控制两个数码管吧。中断控制是单片机的一个功能,也可以用作定时器。中断控制可以作为数码管扫描控制器。利用单片机的定时器/计数器定时和记数的原
单片机中断控制和数码管是没有关系的。你想问的应该是怎么用中断去控制两个数码管吧。中断控制是单片机的一个功能,也可以用作定时器。中断控制可以作为数码管扫描控制器。
利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器,具有00-99分
#include"reg51.h"
#include "intrins.h" //_nop_();延时函62616964757a686964616fe58685e5aeb931333264633436数用
#define uchar unsigned char
#define uint unsigned int
#define SEG_OUT P2 //段码输出口
#define BIT_OUT P3 //扫描口
#define KEY_IO P0 //键盘接口
sbit dot=P2^7; //LED小数点控制
uchar code tab[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */
uchar data dis_buff[6]={1,2,0,0,0,0}; //待显示单元数据,共6个数据
uchar data keytemp,key; //键值存放
uchar data t10ms=0,ts=0,tmin=0,thour=12,t50ms=0;
uchar data flag=0x00;
bit flag_key=0;
/*************1毫秒延时程序**************/
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
//
/***********LED显示动态扫描函数**********/
display()
{
char k;
char m=0xfe;
for(k=0;k<6;k++) //6位LED扫描控制
{ BIT_OUT=0xff;
SEG_OUT=tab[dis_buff[k]];
if(k==1|k==3) {dot=0;}
BIT_OUT=m;
if((flag!=0)&(t50ms>=10))
{
switch(flag)
{
case 1:BIT_OUT|=0x03;break;
case 2:BIT_OUT|=0x0c;break;
case 3:BIT_OUT|=0x30;break;
default:break;
}
}
delay1ms(3);
m=(m<<1)|0x01;
}
}
/***************按键扫描函数*************/
void keyscan()
{
uchar i,t=0xef; //1110 1111
KEY_IO=0x0f;
keytemp=(~KEY_IO)&0x0f;
if(keytemp!=0) //0000 0000 ;0000 1000; 0000 0100; 0000 0010; 0000 0001;
{
delay1ms(1);
for(i=0;i<4;i++)
{
KEY_IO=t;
keytemp=(~KEY_IO)&0x0f;
if(keytemp!=0&flag_key==0)
{
flag_key=1;
switch(keytemp)
{
case 0x08:key=0*4+i;break;
case 0x04:key=1*4+i;break;
case 0x02:key=2*4+i;break;
case 0x01:key=3*4+i;break;
default:break;
}
switch(key)
{
case 0:thour++;if(thour==24)thour=0;break;
case 1:tmin++;if(tmin==60)tmin=0;break;
case 2:ts++;if(ts==60)ts=0;break;
default:break;
}
}
t=(t<<1)|0x01;
}
}
else flag_key=0;
}
/**************初始化程序****************/
void initiation()
{
TMOD=0x11;
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
TH1=-25000/256;
TL1=-25000%256; //25MS定时初值(T1计时用)
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
/****************定时器0中断服务程序*****/
void init_timer0(void) interrupt 1
{
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
t10ms++;
if(t10ms==100)
{
t10ms=0;
ts++;
if(ts==60)
{
ts=0;
tmin++;
if(tmin==60)
{
tmin=0;
thour++;
if(thour==24)thour=0;
}
}
}
dis_buff[0]=thour/10;
dis_buff[1]=thour%10;
dis_buff[2]=tmin/10;
dis_buff[3]=tmin%10;
dis_buff[4]=ts/10;
dis_buff[5]=ts%10;
}
/****************主程序******************/
main()
{
initiation();
while(1)
{
display();
keyscan();
}
}
这是一个矩形按键控制6位数码管的一个时钟,里面都包含你所说的要求了,至于你说的哪个计数器可以通过TMOD寄存器来设置的。计数器跟定时器的区别是没有益出中断的功能。希望对你有帮助。
以上就是好酷屋教程网小编为您收集和整理的记数,计时器,数码管相关内容,如果对您有帮助,请帮忙分享这篇文章^_^
本文来源: https://www.haoku5.com/youxi/640974f3bf2660610106ba47.html
相关推荐
热门专题
乱世逐鹿张飞装备推荐
乱世逐鹿中推出了张飞这个武将,作为五虎将之一的张飞,到底应该如何选择他的装备搭配呢,本篇文章小编就来给大家分享一下他的装备和宝物推荐,还在纠结的玩家赶紧进来看看吧。乱世逐鹿张飞装备宝物推荐【装备】选择璀璨星途卡牌哪个最强
璀璨星途游戏里,有非常多的卡牌,但是养卡是很难的,玩家们也不知道哪个更强更值得养,那么璀璨星途卡牌哪个最强呢,接下来小编给大家带来卡牌强度榜介绍。璀璨星途卡牌哪个最强1.《璀璨星途》中卡牌一共五种属性璀璨星途女主配音在哪里开
璀璨星途游戏中,很多玩家甚至都没有发现有女主配音,这是需要自己去开启的,玩家们都很感兴趣,那么璀璨星途女主配音在哪里开呢,接下来小编给大家带来女主配音开启位置介绍。璀璨星途女主配音在哪里开位置:1、女火影忍者手游怎么获得惠比寿
1、首先打开【火影忍者手游】,进入【招募】界面。2、在【招募】界面,我们点击【高级招募】。3、我们看到【高级忍者招募】中的B级忍者有惠比寿。4、点击【高招】下方的【招募】。我们大概率可能招募到【惠比寿一念逍遥修炼到道祖要多久
一念逍遥游戏中最高的境界就是道祖,是很多玩家的梦想,到底这个游戏中玩家想要修炼到道祖需要花多久的时间呢,本篇文章小编就来给大家讲讲,感兴趣的玩家千万不要错过。一念逍遥修炼到道祖时长介绍1、化神之前皆为光遇破碎季兑换图
为各位玩家带来今年光遇破碎季的兑换内容介绍,游戏中玩家分为光明和黑暗阵营,在本季的兑换中也可以兑换到不同的游戏道具,到底玩家能兑换到哪些道具呢,分别需要多少蜡烛呢,本篇文章小编就来给大家讲讲吧。光遇破闪耀暖暖克制魔女的圣物答案分享
为各位玩家带来闪耀暖暖游戏中“童话跌落梦境”中问题的答案分享,很多玩家都在问克制魔女的圣物到底是个什么东西,本篇文章小编就来给大家分享一下问题的全部答案,还没答对的玩家赶紧进来看看吧。闪耀暖暖克制魔女艾尔登法环黄金面具在哪儿
很多玩家都不清楚,艾尔登法环游戏中黄金面具这个人装备到底在什么地方,本篇文章小编就来给大家讲讲这个装备的获取位置及方式,还没拿到的玩家赶紧进来看看吧。黄金面具获得位置介绍黄金面具的获得方法比想象中简单坎公骑冠剑守护者之旅挑战怎么打
坎公骑冠剑守护者之旅挑战打法攻略第一个蓝盾BOSS,通过摸索基本研究出尽量无伤的打法,但是会消耗土奶的治疗次数。蓝盾BOSS,只能靠远程输出,免疫近战,也就是说,全靠土弓输出,土弓练度不够高,因此要打dnf110级版本女柔道职业平衡
女柔道曾经是很多玩家的梦想,各种抓取技能让玩家在pk场玩的不亦乐乎,随着卢克版本的推出抓取有狂暴机制后逐渐没落,现在同样还有真爱玩家在坚持,到底本次110级版本平衡中会对这个职业有哪些调整呢,下面就一