脈寬測量儀設計與制作:
(1)設計并制作一個用于測量脈沖寬度的脈寬測量儀;
(2)可測量脈沖寬度范圍為1ms-1s;
(3)在LCD屏上顯示脈沖的寬度。
sbit lie2=P1^2;
sbit lie3=P1^1;
sbit lie4=P1^0;
sbit beep=P1^5;//蜂鳴器
sbit smg1=P2^2;//數(shù)碼管
sbit smg2=P2^3;
sbit smg3=P2^4;
//數(shù)碼管編碼
uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9,無小數(shù)點
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//顯示0~9,有小數(shù)點
uchar time=0,mode=0;//系統(tǒng)變量
uchar miao=0;//計時
uchar beep_time=0;//蜂鳴器計時
uchar fena=0,fenb=0;//分數(shù)
//延時
void delay(uint i)
{
while(i--);
}
//按鍵檢測
uchar key=0;
uchar key_scan()
{
uchar i=0;
h1=0;h2=0;h3=0;
if((P1 & 0x0f)!=0x0f)
{
delay(1000);
if((P1 & 0x0f)!=0x0f)
{
h1=0;h2=1;h3=1;
if(!lie1)
i=1;
if(!lie2)
i=2;
if(!lie3)
i=3;
if(!lie4)
i=4;
h1=1;h2=0;h3=1;
if(!lie1)
i=5;
if(!lie2)
i=6;
if(!lie3)
i=7;
if(!lie4)
i=8;
h1=1;h2=1;h3=0;
if(!lie1)
i=9;
if(!lie2)
i=10;
if(!lie3)
i=11;
if(!lie4)
i=12;
}
}
if(key!=i)
{
key=i;
return key;
}
else
return 0;
}
//主函數(shù)
void main()
{
uchar i=0;
beep=0;
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
while(1)
{
i=key_scan();//讀取按鍵
if(mode==0) //設置模式
{
if(i==9)//開始
{
mode=1;
miao=24;
}
}
else
{
if(i==2)//A加1
{
if(fena<99)
fena++;
}
if(i==3)//A加2
{
if(fena<98)
fena+=2;
}
if(i==4)//A加3
{
if(fena<97)
fena+=3;
}
if(i==6)//B加1
{
if(fenb<99)
fenb++;
}
if(i==7)//B加2
{
if(fenb<98)
fenb+=2;
}
if(i==8)//B加3
{
if(fenb<97)
fenb+=3;
}
}
if(i==10)//暫停
{
資料借鑒于此紛傳
閱讀全文