基于51单片机的独立按键

    科技2022-09-12  114

    基于51单片机的独立按键

    选用芯片AT89S52

    /***************************************************************** //此程序功能如下:独立按键按下后数码管加一,同时蜂鸣器响一下 ******************************************************************/ #include "reg52.h" typedef unsigned char u8; typedef unsigned int u16; u16 i,j,k,q; u16 n=0; u8 code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; u8 code smgwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; sbit k1=P1^4; sbit beep=P3^6; void delayms(u16 ms) //毫秒延时 { for(i=0;i<ms;i++) { for(j=115;j>0;j--); } } void speaker() //蜂鸣器发声 { beep=0; delayms(1); beep=1; delayms(1); } void key() //按下检查和消抖 { if(k1==0) { delayms(20); if(k1==0) { n=n+1; //按下后数码管加一,同时蜂鸣器响一下 for(q=0;q<100;q++) { speaker(); } } if(n>15) { n=0; } P0=smgduan[n]; while(k1==0); } } void main() { P2=smgwei[0]; P0=smgduan[0]; while(1) { key(); } }
    Processed: 0.009, SQL: 9