欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機超聲波測距和控制燈泡亮度程序如何合并在一起就不行了,求幫助
[打印本頁]
作者:
zrczrc1234
時間:
2020-12-4 18:14
標題:
單片機超聲波測距和控制燈泡亮度程序如何合并在一起就不行了,求幫助
請教大神們怎么改,兩個是超聲波測距和控制燈泡亮度,但兩個程序到一起燈泡亮度就無法實現了,請問怎么加以改正
#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit P2_0=P2^4;sbit key3=P3^0;sbit key4=P3^1;sbit key1=P3^2;sbit key2=P3^3;uchar zkb,i;void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void init() { TMOD=0X01; TH0=(65536-100)/256; TL0=(65536-100)%256; EA=1; ET0=1; TR0=1;}void keyscan() { if(key3==0) { delay(10); if(key3==0) { zkb=11; while(!key3); } } if(key4==0) { delay(10); if(key4==0) { zkb=0; while(!key4); } } if(key1==0) { delay(10); if(key1==0) { if(zkb<10) { zkb++; } while(!key1); } } if(key2==0) { delay(10); if(key2==0) { if(zkb>0) { zkb--; } while(!key2); } } }void main(){ zkb=2; init(); while(1) { keyscan(); }}void time0(void) interrupt 1 { TH0=(65536-100)/256; TL0=(65536-100)%256; ++i; if(i==10) { i=0; } if(zkb>i) { P2_0=1; } else P2_0=0;}
/*Echo接P20,Trig接P21*/#include<reg51.h>#include<intrins.h >typedef unsigned char uchar;typedef unsigned int uint;sbit beep = P2^3;//蜂鳴器sbit we=P2^7;sbit du=P2^6;sbit Re=P2^0; //接收信號sbit Se=P2^1; //發射信號uchar code SMGwe[]={0xfe,0xfd,0xfb};uchar code SMGdu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; uchar wat[4]={0,0,0,0};uint flag=0,t=0,k=0,time;unsigned long S=0;/*====================================函數 : delay(uint z)參數 :z 延時毫秒設定,取值范圍0-65535返回值 :無描述 :12T/Fosc11.0592M毫秒級延時====================================*/void delay(uint z){ uint x,y; for(x = z; x > 0; x--) for(y = 114; y > 0 ; y--); } /*顯示函數,顯示三位(米. 秒 毫秒)*/void display(){ du=0; if(k==0) P0=SMGdu[wat[0]]|0x80; //第一位顯示加上小數點 else P0=SMGdu[wat[k]]; du=1; du=0; we=0; P0=SMGwe[k]; we=1; we=0; if(++k>=3) //三位循環顯示,定時器1中斷執行顯示函數 k=0; }void timer0() interrupt 1{ flag=1; //定時器0時間溢出}void timer1() interrupt 3{ TH1=0xf8 ; //2ms TL1=0xcb; display(); t++; if(t>=400) //發送間隔800ms { t=0; Se=1; //信號發射持續10微秒以上 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); Se=0; //提供一個10微秒以上的脈沖觸發信號 }}/*計算距離*/void count(){ time=TH0*256+TL0; //計算周期 TH0=0;//定時器0定時時間清零 TL0=0; S=(float)(time*1.085)*0.017; //計算距離(時間*速度) if(S>=700||flag==1) { flag=0; wat[0]=10; wat[1]=10; wat[2]=10; } else { wat[0]=S%1000/100; wat[1]=S%100/10; wat[2]=S%10; }}void nmd(){ if(S<50) {beep = ~beep;delay(20);}// 蜂鳴器發出滴滴聲} void main(){ TMOD=0x11; //打開定時器1,2 16位工作模式 TR1=1; TH0=0; TL0=0; TH1=0xf8 ; //2ms TL1=0xcb; ET1=1; ET0=1; EA=1; while(1) { while(!Re); //接收到信號后開始執行 TR0=1; //定時器0開始計數 while(Re); //信號接收停止后結束 TR0=0; //定時器0結束計數 count(); //距離計算 delay(20); nmd(); }}
作者:
51hei團團
時間:
2020-12-4 22:47
單片機程序合并教程:
http://www.raoushi.com/bbs/dpj-157117-1.html
作者:
1648915681
時間:
2021-1-11 21:39
給你個思路,測距和亮度調節的函數分別放在兩個.C文件,先知道每個函數的功能,然后根據你的需要在主函數中調用,只要有動態測量的話肯定是在while(1)循環里編寫的
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1