200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00——99)

51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00——99)

时间:2021-10-04 16:30:25

相关推荐

51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00——99)

51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00——99)

功能描述:

开关key1控制实现每按一次,数码管数字加1,实现00-99的循环

开关key2按键按一下实现数码管减1,实现00-99的循环

数码管初始数值为00

当数码管数值为00时,按下key2(减1)数码管显示99

仿真电路图:

代码如下:

/*---------------------------------------------------------------------*功能:开关key1控制实现每按一次,数码管数字加1,实现00-99的循环*开关key2按键按一下实现数码管减一*数码管初始数值为00*00时按下key2数码管显示99*----------------------------------------------------------------------*/#include<reg52.h>sbit SEG1 = P1^0; //定义显示十位的数码管sbit SEG2 = P2^0; //定义显示个位的数码管sbit key1 = P3^2; //定义实现数字加1的开关key1sbit key2 = P3^3; //定义实现数字减1的开关key2void display(uint i,uint j); //数码管显示函数 typedef unsigned int uint;uint i,j;uint sum = 0;unsigned char code DSY_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳极数码管 //--------------------------------//主函数//-------------------------------void main(){IE = 0X85;IT0 = 1;IT1 = 1;while(1){display(i,j);}}//-----------------------------------------------//外部中断0,实现按键按一下数码管数字加一//-----------------------------------------------void EX0_INT(void) interrupt 0{sum++; }//---------------------------------------------// 外部中断1,按键按一下实现数码管减一//---------------------------------------------void EX1_INT(void) interrupt 2{if(sum != 0){sum--;}else{sum = 99;}}//--------------------------------------------// 数码管显示数字//--------------------------------------------void display(uint i,uint j){i = sum/10;//数码管显示十位数字j = sum%10; //数码管显示个位数字if(sum == 100)//实现00——99循环sum = 0; P1 = DSY_CODE[i];P2 = DSY_CODE[j];}

仿真结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。