今天写了个一键多用的小程序,2种。数码管和流水灯显示。- #include <stc12c5a60s2.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define dat P0
- sbit key=P3^7;
- sbit wei=P2^7;
- sbit duan=P2^6;
- uchar jj,i;
- uchar liushui[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段码
- uchar seg1[10]={0x40,0x4F,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点断码
- void delay(int x)
- {
- int i,j;
- for (j=0;j<x;j++)
- for (i=0;i<420;i++);
- }
- void keyscan()
- {
- if(key==0)
- {
- delay(20);
- if(key==0)
- {
- jj++;
- if(jj==7)
- jj=0;
- }
- while(!key);
- }
- /* if(jj==1)
- {
- wei=1;
- dat=0xfe;
- wei=0;
- duan=1;
- dat=seg[0];
- duan=0;
- delay(60);
- dat=0xff;
- }
- if(jj==2)
- {
- wei=1;
- dat=0xfd;
- wei=0;
- duan=1;
- dat=seg[1];
- duan=0;
- delay(60);
- dat=0xff;
- }
- if(jj==3)
- {
- wei=1;
- dat=0xfb;
- wei=0;
- duan=1;
- dat=seg[2];
- duan=0;
- delay(60);
- dat=0xff;
- }
- if(jj==4)
- {
- wei=1;
- dat=0x00;
- wei=0;
- for(i=0;i<10;i++)
- {
- duan=1;
- dat=seg[i];
- duan=0;
- delay(900);
- dat=0xff;
- }
- }
- if(jj==5)
- {
- wei=1;duan=1;
- for(i=0;i<8;i++)
- {
- dat=liushui[i];
- delay(900);
- dat=0xff;
- }
- }
- if(jj==6)
- {
- wei=1;
- dat=0xff;
- wei=0;
- duan=1;
- dat=0xff;
- duan=0;
- }*/
- switch(jj)
- {
- case 0: wei=1;
- dat=0xfe;
- wei=0;
- duan=1;
- dat=seg[0];
- duan=0;
- delay(60);
- dat=0xff;
- break;
- case 1:wei=1;
- dat=0xfd;
- wei=0;
- duan=1;
- dat=seg[1];
- duan=0;
- delay(60);
- dat=0xff;
- break;
- case 2:wei=1;
- dat=0xfb;
- wei=0;
- duan=1;
- dat=seg[2];
- duan=0;
- delay(60);
- dat=0xff;
- break;
- case 3:wei=1;
- dat=0x00;
- wei=0;
- for(i=0;i<10;i++)
- {
- duan=1;
- dat=seg[i];
- duan=0;
- delay(900);
- dat=0xff;
- }
- break;
- case 4:wei=1;duan=1;
- for(i=0;i<8;i++)
- {
- dat=liushui[i];
- delay(900);
- dat=0xff;
- }
- break;
- case 5:wei=1;
- dat=0xff;
- wei=0;
- duan=1;
- dat=0xff;
- duan=0;
- break;
- }
- }
- void main()
- {
- while(1)
- {
- keyscan();
- }
- }
复制代码
|