久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2528|回復: 2
打印 上一主題 下一主題
收起左側(cè)

單片機超聲波測距和控制燈泡亮度程序如何合并在一起就不行了,求幫助

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:852789 發(fā)表于 2020-12-4 18:14 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
請教大神們怎么改,兩個是超聲波測距和控制燈泡亮度,但兩個程序到一起燈泡亮度就無法實現(xiàn)了,請問怎么加以改正

#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;         //發(fā)射信號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;/*====================================函數(shù)        : delay(uint z)參數(shù)        :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--);                 } /*顯示函數(shù),顯示三位(米. 秒 毫秒)*/void display(){        du=0;        if(k==0)                P0=SMGdu[wat[0]]|0x80; //第一位顯示加上小數(shù)點        else                P0=SMGdu[wat[k]];        du=1;        du=0;        we=0;        P0=SMGwe[k];        we=1;        we=0;        if(++k>=3)     //三位循環(huán)顯示,定時器1中斷執(zhí)行顯示函數(shù)                k=0;                }void timer0() interrupt 1{        flag=1;                   //定時器0時間溢出}void timer1() interrupt 3{        TH1=0xf8 ;        //2ms        TL1=0xcb;        display();        t++;        if(t>=400)         //發(fā)送間隔800ms        {                t=0;                Se=1;           //信號發(fā)射持續(xù)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微秒以上的脈沖觸發(fā)信號        }}/*計算距離*/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);}//        蜂鳴器發(fā)出滴滴聲}                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);        //接收到信號后開始執(zhí)行                TR0=1;                //定時器0開始計數(shù)                while(Re);        //信號接收停止后結束                TR0=0;                //定時器0結束計數(shù)                count();        //距離計算                delay(20);                   nmd();        }}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:328014 發(fā)表于 2020-12-4 22:47 | 只看該作者
單片機程序合并教程:http://www.zg4o1577.cn/bbs/dpj-157117-1.html
回復

使用道具 舉報

板凳
ID:782582 發(fā)表于 2021-1-11 21:39 | 只看該作者
給你個思路,測距和亮度調(diào)節(jié)的函數(shù)分別放在兩個.C文件,先知道每個函數(shù)的功能,然后根據(jù)你的需要在主函數(shù)中調(diào)用,只要有動態(tài)測量的話肯定是在while(1)循環(huán)里編寫的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品福利视频 | 无码日韩精品一区二区免费 | 欧美精品一二三区 | 91久久久久久久 | 日韩精品在线播放 | 亚洲自拍偷拍免费视频 | 欧美亚洲国产一区二区三区 | 亚洲一区二区黄 | 一区二区三区视频在线观看 | 亚洲香蕉在线视频 | 毛片免费在线观看 | 精品久久久久久久久久久久 | 99久久99久久精品国产片果冰 | a级毛片毛片免费观看久潮喷 | 欧美日韩国产三级 | 国精产品一区一区三区免费完 | 久久精品一二三影院 | 老牛影视av一区二区在线观看 | 久色网 | 日本在线精品视频 | 日本成人在线观看网站 | 午夜精品久久久久久久99黑人 | 免费一级淫片aaa片毛片a级 | 午夜天堂精品久久久久 | 岛国毛片在线观看 | 欧美国产视频 | 亚洲日韩视频 | 亚洲乱码国产乱码精品精的特点 | 亚洲精品久久久一区二区三区 | 久久精品国产亚洲 | 国产精品99精品久久免费 | 一道本不卡 | 伊人91在线 | 久久国产欧美日韩精品 | 久久青青 | 国内91在线 | 中文字幕精品一区二区三区精品 | 国产精品国产精品国产专区不卡 | 99精品视频在线 | 日韩一区二区在线免费观看 | 亚洲在线日韩 |