娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月28日(星期三)

2021年05月28日 | 紅外避障電動小車C51程序

發布者:心境恬淡 來源: eefocus關鍵字:紅外避障  電動小車  C51程序 手機看文章 掃描二維碼
隨時隨地手機看文章

簡介:整理了紅外避障電動小車C51程序,僅供參考,希望對正在學習的你有用。


#include"reg51.h"

#include

#define uchar unsigned char

#define uint unsigned int

#define left_infrare 0

#define right_infrare 1

#define dj_state1 0X5F //前進

#define dj_state2 0X4F //右轉

#define dj_state3 0X1F //左轉

#define dj_state4 0X0F //后退

#define dj_state5 0XfF //停車

#define light_off 0x0f //關轉向燈

#define left_light 0X5F //左轉向燈 兩個是5f

#define right_light 0XaF //右轉向燈0xaf,兩個是0xbf

#define back_light 0XcF //剎車燈即后燈

#define front_light 0x3f //前燈

#define light_on 0xff //開所有燈

#define true 1

#define false 0

#define LCD_Data P0

#define Busy 0x80 //用于檢測LCD狀態字中的Busy標識

sbit c=P1^2; //轉向燈使能端

uchar code talk1[]={"backward"};

uchar code talk2[]={"forward"};

uchar code talk3[]={"Turnleft"};

uchar code talk4[]={"Turn right"};

uchar flage =0x00;

sbit ledcs=P1^2; //74H573的片選信號

//sbit left_led=P0^2; //左紅外發射管

//sbit right_led=P0^3; //右紅外發射管


sbit LCD_RS = P1^5; //LCD定義引腳

sbit LCD_RW = P1^6; //

sbit LCD_E = P1^7 ;

void Delay5Ms(void)

{

uint TempCyc = 5552;

while(TempCyc--);

}

//400ms延時

void Delay400Ms(void)

{uchar TempCycA = 5;

uint TempCycB;

while(TempCycA--)

{ TempCycB=7269;

while(TempCycB--);

}

}

//LCD讀狀態

unsigned char ReadStatusLCD(void)

{

LCD_Data = 0xFF;

LCD_RS = 0;

LCD_RW = 1;

LCD_E = 0;

LCD_E = 0;

LCD_E = 1;

while (LCD_Data & Busy); //檢測忙信號

return(LCD_Data);

}

//LCD寫數據

void WriteDataLCD(unsigned char WDLCD )

{

ReadStatusLCD(); //檢測忙

LCD_Data = WDLCD;

LCD_RS=1;

LCD_RW =0;

LCD_E = 0; //若晶振速度太高可以在這后加小的延時

LCD_E = 0; //延時 ,為了安全

LCD_E = 0; //延時

LCD_E = 1;

}

//LCD寫指令

void WriteCommandLCD(unsigned char WCLCD,BuysC)

{

if (BuysC) ReadStatusLCD(); //根據需要檢測忙,BuysC為0時忽略忙檢測

LCD_Data = WCLCD;

LCD_RS= 0;

LCD_RW= 0;

LCD_E = 0; //延時 ,為了安全

LCD_E = 0;

LCD_E = 0; //延時

LCD_E = 1;

}

void LCDInit(void) //LCD初始化

{

Delay400Ms();

LCD_Data = 0;

WriteCommandLCD(0x38,0); //三次顯示模式設置,不檢測忙信號

Delay5Ms();

WriteCommandLCD(0x38,0);

Delay5Ms();

WriteCommandLCD(0x38,0);

Delay5Ms();


WriteCommandLCD(0x38,1); //顯示模式設置,開始要求每次檢測忙信號

WriteCommandLCD(0x08,1); //關閉顯示

WriteCommandLCD(0x01,1); //顯示清屏

WriteCommandLCD(0x06,1); // 顯示光標移動設置

WriteCommandLCD(0x0C,1); // 顯示開及光標設置

}

//按指定位置顯示一個字符

void DisplayOneChar(uchar X, uchar Y, uchar DData)

{

Y &= 0x1;

X &= 0xF; //限制X不能大于15,Y不能大于1

if (Y)

X |= 0x40; //當要顯示第二行時地址碼+0x40;

X |= 0x80; // 算出LCD的指令碼

WriteCommandLCD(X, 0); //這里不檢測忙信號,發送地址碼

WriteDataLCD(DData);

}

//按指定位置顯示一串字符(只能寫一行);

void DisplayListChar(uchar X, uchar Y,uchar ListLength, uchar *DData,uchar n)

{ uchar i;

Y &= 0x01;

X &= 0x0F; //限制X不能大于15,Y不能大于1

for(i=0;i{ if (X <= 0x0F) //X坐標應小于0xF

{ DisplayOneChar(X, Y, DData[i]); //顯示單個字符

if(n==true)Delay400Ms();

X++;

}

}

}

/****************************

紅外線接收子程序,利用了中斷的下降沿觸發方式

****************************/

void infrared_ray()interrupt 0 using 3

{ uchar i=90;

flage=0x01; //接受標志位

while(i--); //減小靈敏度

EX0=0; //關掉中斷,等到發射方波后才開啟,處于別動

}

// 延時子程序

void delay(uint n)

{

while(--n);

}

//中斷初始化

void Init0(void)

{ EA=1;

IT0=1;

}

/***************************************

/*原理是把中斷打開并 發射方波,

當有中斷時就轉到中斷產生中斷位為下一步轉向做準備,

當沒有是關閉中斷

****************************************/

void seng_wave(uchar timer,bit n)//timer通過載波發射信號的時間,n->左右發射管的選擇

{ uchar i;

P1 |= 0X04; //ledcs=1為74ls573為11腳為高電平時數據直接輸出,為低時把數據鎖存住,即保持

IE |= 0X01;

P0 |=0x0c; //04

for(i=timer;i>0;i--)

{ if(n)P0^=0x08; // 右發射管通過載波發射信號//00

else P0^=0x04; // 左發射管通過載波發射信號//0c

delay(100); //這里控制著靈敏度(控制38khz的方波的多少)和距離

} //timer*delay(x)即為發射管得到的平均電流

P1 &= 0Xfb;

IE &= 0Xfe;

}

//led轉向燈指示子程序

void light_control(uchar deng)

{ ledcs=1;

P0 =deng;

ledcs=0; //11111011

}

//電機和燈光的控制部分

void control(uchar n,uchar dj_state,uchar light)

{ uchar i;

// P1|=0x04;

light_control(light); //led轉向指示燈

delay(100);

P2 =dj_state; //電機的方向控制

WriteCommandLCD(0x01,1); //LCD顯示清屏


switch(dj_state)

{ case dj_state2 :{ DisplayListChar(3,1,10,talk4,false);}break;

case dj_state3: { DisplayListChar(3,1,8,talk3,false);}break;

case dj_state4: { DisplayListChar(3,1,7,talk1,false); }break;

default :break;

}

for(i=n;i>0;i--)

{delay(2000);}

P2=dj_state5; //停車

light_control(light_off); //led關閉

WriteCommandLCD(0x01,1); //LCD顯示清屏

P2=dj_state1; //前進

if(dj_state1)

{ P1|=0X04; //ledcs=1;

P0=0x0f;

P1&=0XFB;

delay(100);

DisplayListChar(0,0,7,talk2,false);

}

}

/****************************************

避障主要控制部分

*****************************************/

void move_car(void)

{

uchar temp =0x00;

//左邊紅外管發射

seng_wave(1,left_infrare); //向下為中斷開啟有關閉后,要執行的語句

if(flage==0x01){temp|=0x01;flage=0x00;}

//右邊紅外管發射

delay(30);

seng_wave(1,right_infrare); //向下為中斷開啟有關閉后,要執行的語句

if(flage==0x01){temp|=0x02;flage=0x00;}


//左邊有障礙物,右轉

if(temp==0x01){control(2,dj_state2,left_light); temp =0x00;}

//右邊有障礙物,左轉

else if(temp==0x02) {control(2,dj_state3,right_light ); temp =0x00;}

//兩個方向都有障礙物,后退,右轉

else if(temp==0x03) {control(10,dj_state4,back_light );

control(5,dj_state2,right_light ); temp =0x00;}


}

void main(void)

{ Init0(); //中斷初始化

P1 |= 0X04; //開鎖存器的控制位

P0 = 0xFf; //數據口的清零

P1&=0XFB; //關鎖存器的控制位

LCDInit(); //LCD初始化

WriteCommandLCD(0x01,1); //顯示清屏

delay(100);

P2=dj_state1;

DisplayListChar(0,0,8,talk2,false);

while(1)

{ move_car(); //主要控制部分

delay(200000);//延時

}

}


關鍵字:紅外避障  電動小車  C51程序 引用地址:紅外避障電動小車C51程序

上一篇:51+ch375讀寫U盤超精簡源程序
下一篇:最后一頁

推薦閱讀

根據此前小米官方預告,MIUI 10將隨同小米8一起在5月31日發布,MIUI 10內測報名已經開啟,但僅限小部分人。現在有使用紅米Note4X國際版系統的用戶發現,在最新的國際版8.5.25開發者版本更新中,小米已經將MIUI 9標識改成了MIUI 10。在紅米Note4X國際版MIUI 10 8.5.25開發版更新中,主要提高了系統穩定性,優化系統的流暢度。目前來看可能在為MIUI 9...
近幾年各個手機廠商都在追求屏占比,在這個時候前置的攝像頭就變成了一個十分尷尬的部件了。劉海屏、水滴屏、挖孔屏、彈出式似乎都不能完成滿足到現在的消費者。vivo之前的APEX概念機一出震驚業界,并不久就以nex這個名字推向市場了。而近日則有消息傳出,vivo將會在nex 2上配備可拆卸式攝像頭模組。 按照慣例我們還是對爆料保持理性的判斷,我...
調研機構IDC在市場跟蹤報告中預測,到2023年,中國可穿戴設備市場出貨量將接近2億臺。這意味著,智能耳機、智能眼鏡、智能手表等可穿戴設備市場在未來將擁有光明的前景。 在數字經濟時代,電子產品的更新迭代非常快,廠商們無疑想要找到一種“Turnkey(交鑰匙)”的解決方案,降低自身研發風險和成本,更快速地將產品落地和迭代。為了滿足行業需求,Thunde...
安霸、Lumentum和安森美半導體為下一代AIoT設備合作開發結合3D感知技術的AI處理方案新的聯合參考設計為生物識別門禁,3D電子鎖和各個垂直領域的智能傳感設備提供了行業首創的技術美國加州圣克拉拉,2021年5月28日 — AI視覺芯片公司Ambarella(中文名稱:安霸,NASDAQ:AMBA,專注于人工智能視覺的半導體公司),市場領先的創新光學和光電產品的設計和制...

史海拾趣

問答坊 | AI 解惑

急~~求個單片機報警聲音設計的畢業論文--最好能完整點的--謝謝各位了啊--!

求個單片機報警聲音設計的畢業論文--最好能完整點的--謝謝各位了啊--! 著急用啊--自己寫也來不急了。。有的兄弟姐妹幫幫忙吧--謝謝了 我郵箱418370882@qq.com…

查看全部問答∨

wince gprs撥號連接,加上CGDCONT命令后撥不上號

wince6.0 板子上建立一個撥號連接,波特率等等設置好之后,連接到網絡,撥號完成。 但是如果我想指定是cmnet網,在附加指令里加入“AT+CGDCONT=1,"IP","CMNET"”,再次撥號,出錯,提示端口不可用或在占用 很怪異,請問這是為什么啊 ...…

查看全部問答∨

宏基AS4720主板通電后重復自動加電斷電后開機

宏基AS4720主板通電后電壓到達1.1時自動斷電自動加電重復5次后開機,所有功能正常,是什么回事呀?我這里有兩塊一樣的主板都這個問題!!換了3V 5V芯片也不管用,搞得我摸不著頭腦了?有沒有人碰到過這種情況啊?…

查看全部問答∨

學習用evc開發wince程序,安裝evc4.0前一定要先安裝pb4.2嗎??

開始看的書是Programming Microsoft Windows CE .NET, Third Edition,想照書上講的練練,不知安裝evc4.0前一定要先安裝pb4.2嗎?? 謝謝!!…

查看全部問答∨

開始調試觸摸屏

   今天開始用44b0調試觸摸屏,先模擬ILI9320的時序,看了它的pdf,我感覺時序應該沒有問題,先寫ILI9320的控制器的寄存器,然后在讓寄存器中寫入相應的數據,最后讓0x0022 單元中寫入 要顯示的數據,程序寫完之后,怎么液晶老是不顯示呢 ...…

查看全部問答∨

AD轉換輸入電壓可以大于參考電壓嗎?

AD轉換輸入電壓可以大于參考電壓嗎?AD自帶自動增益控制PGA,可編程設置為0.5,1,,,,參考電壓為內部2.4V,輸入模擬電壓通過滑動變阻器接入,范圍0--3.3V,這樣可以嗎?自動增益設置為PGA=0.5,最大3.3V輸入為1.5V,似乎可以啊?…

查看全部問答∨

LM3S811-ND,Keil仿真不了

通過CCS轉換為Keil的模式,硬件管理器中顯示的正確。 Keil仿真能進去,但是控制不了,運行的還是原來的默認程序。 暫停也能停下來,單步運行也是全速運行原來的默認程序。…

查看全部問答∨

電路圖設計和編程

我想給老人做一臺單手控制輪椅,可前進、停止、左右轉動。可以給一些設計費。謝謝…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 徐水县| 东阿县| 淮北市| 洪洞县| 神农架林区| 竹溪县| 榕江县| 桓台县| 蓬溪县| 泾川县| 鹤岗市| 连江县| 东明县| 上蔡县| 开平市| 大埔县| 临朐县| 霞浦县| 嵊泗县| 肇州县| 阿拉善左旗| 嘉禾县| 济宁市| 靖边县| 平昌县| 临沂市| 高碑店市| 公主岭市| 买车| 武宣县| 霞浦县| 杂多县| 通渭县| 桃源县| 呼和浩特市| 张家口市| 兴安县| 阿图什市| 金乡县| 东光县| 翁源县|