• 方案介紹
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

基于51單片機的脈寬測量【LCD1602,NE555】(仿真)

02/03 08:43
1025
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

有需要資料的可了解一下.docx

共1個文件

脈寬測量儀設計與制作:

(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)//暫停
		{

資料借鑒于此紛傳

  • 有需要資料的可了解一下.docx
    下載

相關推薦