|
|
针对http://www.51hei.com/bbs/dpj-188270-1.html 做了如下修改
修复了一些接线错误 --- 原版IN1通道接线错误 以及ADD A-C 接反
增加按键切换通道显示
- #include<reg51.h>
- unsigned char a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71},b[4],c=0x01;
- sbit START=P2^4;
- sbit OE=P2^6;
- sbit EOC=P2^5;
- sbit add_a=P2^0;
- sbit add_b=P2^1;
- sbit add_c=P2^2;
- sbit led=P2^7;
- sbit buzzer=P2^3;
- sbit KEY=P1^4;
- unsigned char disp_ch=0;
- void Delay1ms(unsigned int count)
- {
- unsigned int i,j;
- for(i=0;i<count;i++)
- for(j=0;j<120;j++);
- }
- void show()
- {
- unsigned int r;
- for(r=0;r<4;r++)
- {
- P1=(c<<r);
- P3=b[r];
- if(r==2)
- P3=P3|0x80;
- Delay1ms(1);
- }
- }
- void KeyScan(void)
- {
- P1 |= 0x10;
- if(KEY==0)
- disp_ch=1;
- else
- disp_ch=0;
- }
- void main(void)
- {
- unsigned int addata=0,addata2=0,i,disp_val=0;
- while(1)
- {
- KeyScan();
- add_a=0;
- add_b=0;
- add_c=0;
- Delay1ms(1);
- START=1;
- START=0;
- while(EOC==0);
- OE=1;
- addata=P0;
- if(addata>=0x40)
- {
- for(i=0;i<100;i++)
- {
- led=~led;
- buzzer=~buzzer;
- }
- led=1;
- buzzer=1;
- }
- else
- {
- led=0;
- buzzer=0;
- }
- OE=0;
- add_a=1;
- add_b=0;
- add_c=0;
- Delay1ms(1);
- START=1;
- START=0;
- while(EOC==0);
- OE=1;
- addata2=P0;
- if(addata2>=0x80)
- {
- for(i=0;i<100;i++)
- {
- led=~led;
- buzzer=~buzzer;
- }
- led=1;
- buzzer=1;
- }
- else
- {
- led=0;
- buzzer=0;
- }
- OE=0;
- disp_val=0;
- if(disp_ch==0)
- disp_val=addata*1.96;
- else
- disp_val=addata2*1.96;
- b[0]=a[disp_val%10];
- b[1]=a[disp_val/10%10];
- b[2]=a[disp_val/100%10];
- b[3]=a[disp_val/1000];
- for(i=0;i<=200;i++)
- {
- show();
- }
- }
- }
复制代码
|
评分
-
查看全部评分
|