51瞎搞系列---独立键盘+数码管

来源:互联网 发布:怎么用数据库做购物车 编辑:程序博客网 时间:2024/06/10 01:22

瞎写着玩玩。。。

/******************************************************************************** 实 验 名 : 数码管+独立键盘实验* 使用的IO     : 数码管使用P0 独立键盘开关K1使用P3.1* 实验效果       : 按开关K1使数码管从左侧由数字1亮至右侧8* 注    意 :*******************************************************************************/#include <reg52.h>#include <intrins.h>#define GPIO_LED P2#define GPIO_DIG P0#define uint unsigned int#define uchar unsigned charsbit K1=P3^1;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值void DIG_DISPLAY(uchar n,uchar num);void Delay10ms();void GO();uint m=0,n=0,num=1;void main(){while(1){GO();}}void Delay10ms()  {      uchar i=38,j=130;      while(i--)          while(j--);  }  void DIG_DISPLAY(uchar n,uchar num){switch(n){case 0:LSA=0;LSB=0;LSC=0;break;case 1:LSA=1;LSB=0;LSC=0;break;case 2:LSA=0;LSB=1;LSC=0;break;case 3:LSA=1;LSB=1;LSC=0;break;case 4:LSA=0;LSB=0;LSC=1;break;case 5:LSA=1;LSB=0;LSC=1;break;case 6:LSA=0;LSB=1;LSC=1;break;case 7:LSA=1;LSB=1;LSC=1;break;}GPIO_DIG=DIG_CODE[num];}void GO(){DIG_DISPLAY(m,num);if(K1==0){Delay10ms();if(K1==0){++m;++num;if(m==8)m=0;if(num==9)num=1;while((n<50)&&(K1==0)){Delay10ms();++n;}n=0;}}}


1 0