通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B09622050.

Slides:



Advertisements
Similar presentations
人機介面 Arduino 簡介 授課教師 開課單位. Arduino 簡介 Arduino 是一塊 Open source 的 Simple i/o 介面板,並 且具有使用類似 java, C 語言的開發環境。 可以快速使用 Arduino 語言 ( 基於 wiring) 與 Flash 或 Processing…
Advertisements

美 丽的轴对称图形 教学内容 教学目标 教学重点、难点 教法、学法 教学过程 教材从具体到抽象,从感性到理性,从实 践到理论,再用实践检验理论,层次分明,循序 渐进的指导学生认识自然界和日常生活中具有轴 对称性质的事物,使学生进一步认识前面所学的 平面图形的本质特征。 教 学 内 容教 学 内.
单片机 C 语言应用程序设计 主讲教师:廉哲 QQ: 电话: 办公室:综合楼 C318.
现代电子技术实验 ——综合实验之单片机部分
第11章 基本振盪電路 11-1 正弦波產生電路 11-2 多諧振盪器 11-3 施密特觸發器 11-4 方波產生電路
藥物濫用 華德學校上午校 黃秀雯.
现代农业创业指导 广西省兴安县农广校.
姓名:劉芷瑄 班級:J201 座號:39號 ISBN:957-33-1963-2
TMS320F2812串行外设接口 Serial Peripheral Interface (SPI)
总 复 习 班 级:测控技术与仪器2011-1、2班 授 课:滕召胜.
不動產市場 分析與預測 第四章 不動產市場分析與研究.
心理的力量 --兼谈教师心理压力的调适
加速度計 指導老師 : 洪正瑞 製作人 : 蔡昌佑.
Arduino Wifi 模組 學生:楊御政 指導老師:林得裕 老師.
电工电子实验中心.
使用F320撰寫程式控制搖控車發射端PPM編碼輸出
CH.2 Introduction to Microprocessor-Based Control
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
项目成果展示 ——深圳凯吉尔科技—— 凯吉尔全线代理无锡研奥产品 说明:
微處理機原理與應用 Chapter 1 簡介 Chung-Min Wu, Ph.D
Timer & KEYPAD 11/24.
102年度新北市立三重商工旗艦計畫實施方案 先進車用電子控制技術培育計畫
第9章 数模转换器与模数转换器 本章学习目标 了解数模转换器的工作原理及性能指标 掌握模数转换器的应用 掌握数模转换器的应用.
CH5 數位訊號 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
第二部分 微机原理 第8章 单片机的 定时/计数器 主讲教师:喻红.
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
第八章 数据通信.
    Arduino 1602 LCD 量測電壓顯示 LCD 示波器    林品成 月.
HOLTEK 产品 在小家电的应用.
小專題-霍爾電路之IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
港口股份有限公司东源分公司 降本增效 部门:机械队流机二班 发言人:程广州.
Arduino.
初始化串列通訊埠 在啟始串列傳輸介面時有以下3個步驟:假設傳輸的通訊協定為9600bps,傳送8個位元資料,沒有同位位元,1個停止位元。
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第14章 其它DSP设计库 14.1 总线控制库 14.2 复数信号库 14.3 Gates库 14.4 状态机函数库
概述 一、数/模和模/数器是模拟、数字系统间的桥梁 数 / 模(D / A)转换:
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
第七章 定时/计数器.
智慧電子應用設計導論(1/3) Display
語法:Variables & Functions 實作:Digital out (Button+LED) 簡報:廖崇義
Labview內部Linx功能簡介(Analog/Digital/PWM)
DHT11 溫溼度感測器 林品成 月.
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
K60基础课程 02 首都师范大学物理系 王甜.
GSM手机射频工作原理与电路分析 2019/1/11 RF DBTEL.
電路基礎知識 Willess 2009/3/5.
指導教授 張寶棣 助教 黃智穎 第十七組 B 物理三 李明哲 B 大氣三 吳宛真
基于神经刺激止痛系统的无线电压信 号采集与刺激脉冲产生模块的设计
遙控車程式 學號:B 姓名:楊 穎 穆 老師:田 慶 誠.
主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用
電子音樂 通訊系 B 楊穎穆.
    使用Arduino量測交流(AC)電壓    林品成 月.
    使用Arduino量測直流(DC)電壓    林品成 月.
第2章 MATLAB程序设计 编者.
6-1 功能簡介 6-4 實驗成果 6-2 電路說明 6-5 延伸應用與練習 6-3 程式設計
亚博科技 Arduino视频教程 第8讲 蜂鸣器发声实验.
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
5-6 串列埠模式0輸出埠擴充實習.
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
K60入门课程 06 首都师范大学物理系 靳熙芃.
四川工商学院 单片机原理及应用 刘 强
UART通信实验(二) McBSP软件模拟异步通信
微算機(二) 's UART mode1 communication
遙控車程式流程圖規劃 學號:B 姓名:楊 穎 穆 老師:田 慶 誠.
第四章 MSP430數位I/O原理與實驗.
第六章 S3C2410的串口UART及编程 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
臺中市龍山國小 校園常見瓢蟲辨識   瓢蟲屬於鞘翅目瓢蟲科。目前世界上約有5000多種瓢蟲,台灣地區約有80種以上,其中能捕食有害生物的瓢蟲約七十種之多。瓢蟲因為捕食有害生物為主食,所以又稱為『活農藥』。
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
講師:劉俊民(金剛) Idea 創意應用科技有限公司
Presentation transcript:

通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B09622050

Outline Main ( ) : 主程式 System_Initial ( ) : 系統初始化 A2D( ) : ADC PPM( ) : 輸出PPM訊號 Output_high ( ) : 輸出PPM訊號的high Output_low ( ) : 輸出PPM訊號的low

Outline Main ( ) : 主程式 System_Initial ( ) : 系統初始化 A2D( ) : ADC PPM( ) : 輸出PPM訊號 Output_high ( ) : 輸出PPM訊號的high Output_low ( ) : 輸出PPM訊號的low

使用C8051撰寫程式輸出PPM訊號 總週期 煞車 方向盤 油門 x 1234

Main ( )主程式 Main( ) A System_Initial( ) B A2D( ) C PPM( ) 使用 Timer 開始計數22ms D A2D( ) E 22ms計數完成? NO YES

Main( ): 系統初始化 分別對 方向盤、油門、煞車 3個channel 做A/D轉換 開始計數22ms(總週期) 開始輸出3個channel的PPM 等待22ms計數完成 跳至步驟3

Main ( ) main( ) { System_Initial( ); // 程式初始化 A2D( ); // 對3個channel做A/D轉換 while(1) TH0 = (65536 - 22000)/256; // 計時 22ms 的 TH0 TL0 = (65536 - 22000)%256; // 計時 22ms 的 TL0 TR0 = 1; // 開啟Timer0 計數 PPM( ); // 輸出3個channel的PPM while(TF0==0); // 等待22ms計數完成 TR0 = 0; // 關閉 Timer0 計數 TF0 = 0; // 清除 Timer0 溢位旗標 } while(1),1代表是真實的.接下來就會做下列的動作 0的話就會跳出迴圈

Outline Main ( ) : 主程式 System_Initial ( ) : 系統初始化 A2D( ) : ADC PPM( ) : 輸出PPM訊號 Output_high ( ) : 輸出PPM訊號的high Output_low ( ) : 輸出PPM訊號的low

使用的8051:c8051F320 Block Diagram

System_Initial ( ) System_Initial( ): 設定 Oscillator 關閉 PCA0 WDT Timer PCA0 Oscillator ADC0 I/O Port RET System_Initial( ): 設定 Oscillator 關閉 PCA0 WDT 設定 Timer 設定 ADC0 設定 I/O Port Return

System_Initial ( ) void System_Initial(void) { /* Oscillator Initial */ OSCICN=0x83; // Internal Oscillator Enabled and SYSCLK derived by 1 (P.117) CLKSEL=0x00; // Selected Clock from Internal Oscillator (P.123) /* PCA0 Initial*/ PCA0MD&=~0x40; // WDTE = 0 (clear watchdog timer enable IN ORDER TO CHANGE PCA0MD) (P.241) /* Timer Initial */ TMOD = 0x01; // Use Timer1 Mode1 and Timer0 Mode1 (P.214) /* ADC0 Initial */ AMX0P = 0x02; // Select positive channel : P1.2 (P.45) AMX0N = 0x1F; // Select negative channel : GND (ADC in Single-Ended Mode) (P.46) ADC0CF = 0xF8; // SAR clock = 31 and Data in ADC0H:ADC0L registers are right-justified (P.47) ADC0CN = 0x80; // ADC0 Enabled and ADC0 conversion initiated on every write of '1' to AD0BUSY... (P.48) REF0CN = 0x08; // VDD use as Voltage reference (P.55) /* I/O Port Initial */ P1MDIN = 0xE3; // Corresponding P1.2、P1.3 and P1.4 pin are configured as an analog input (P.133) P2MDOUT = 0x01; // Corresponding P2.0 Output is push-pull (P.135) P1SKIP = 0x1C; // Corresponding P1.2、P1.3 and P1.4 pin are skipped by the Crossbar (P.134) XBR1 = 0x40; // Crossbar enabled (P.131) }

Outline Main ( ) : 主程式 System_Initial ( ) : 系統初始化 A2D( ) : ADC PPM( ) : 輸出PPM訊號 Output_high ( ) : 輸出PPM訊號的high Output_low ( ) : 輸出PPM訊號的low

A2D ( ) A2D( ) 開啟 A/D 轉換 設定 ch n 做A/D轉換 n=1 將 A/D數值 存至矩陣[n] n++ RET NO YES

A2D( ): n=1 設定 channel n 做A/D轉換 開啟A/D轉換 等待A/D轉換完成 將A/D數值存至矩陣[n]之中 n++ Return

A2D ( ) void A2D (void) { for(AMX0P=2;AMX0P<=4;AMX0P++) // 3個channel AD0BUSY=1; // 開啟 A/D 轉換 while(AD0BUSY==1); // 等待 A/D 轉換完成 adval = ADC0L + ( ADC0H << 8 ); // 計算 A/D 數值 switch(AMX0P) case 2: // 方向盤 TAD = -1.2153*adval + 1788.6; break; case 3: // 煞車 TAD = 1.0712*adval + 598.68; case 4: // 油門 } AD_table[AMX0P]=TAD; // 將數值存入矩陣當中

發射機之系統架構圖 油門的機制:   當前進時,switch上面接上面,下面接下面。   當後退時,switch反過來接,上面接下面,下面接上面。 Input為3個channel的輸入:油門(前進、後退)、煞車、方向。 Output為PPM編碼輸出,RST是Reset。 動作: F320分別對3個channel做A/D轉換,每轉換一次就判別輸出 一組PPM編碼。

ADC0 Function Block Diagram Analog 輸入端 Digital 輸出端

Outline Main ( ) : 主程式 System_Initial ( ) : 系統初始化 A2D( ) : ADC PPM( ) : 輸出PPM訊號 Output_high ( ) : 輸出PPM訊號的high Output_low ( ) : 輸出PPM訊號的low

遙控車發射端PPM訊號 總週期 煞車 方向盤 油門 x 1234

遙控車發射端PPM訊號 煞車 方向盤 油門 1 2 3

PPM( ) PPM( ) n=1 n++ RET NO YES Output_high( ) Output_low(矩陣[n]) PPM output = 0 n<4?

PPM( ): n=1 Output_high( ) Output_low(矩陣[n] ) n++ n<4則跳至步驟2 PPM output輸出‘0’ Return

PPM( ) void PPM(void) { for(i=2;i<=4;i++) // 產生3個channel的PPM Output_high( ); // 輸出PPM的high Output_low( ); // 輸出PPM的low } Output_high( ); // 輸出最後的high P20 = 0; // 輸出low

Outline Main ( ) : 主程式 System_Initial ( ) : 系統初始化 A2D( ) : ADC PPM( ) : 輸出PPM訊號 Output_high ( ) : 輸出PPM訊號的high Output_low ( ) : 輸出PPM訊號的low

遙控車發射端PPM訊號為high的部分 煞車 方向盤 油門 1 2 3

Output_high( ) Output_ high( ) RET NO YES 計數 完成? PPM output = 1 設定 TL1 和 TH1 開啟計數 關閉計數 清除溢位旗標

Output_high( ): PPM Output 輸出’1’ 設定TL1和TH1 開啟計數器 等待計數完成 關閉計數器 清除溢位旗標 Return

Output_high ( ) Void Output_high(void) { P20 = 1; // 設定輸出 high TH1 = (65536 – 500)/256; // 500us TL1 = (65536 – 500)%256; // 500us TR1 = 1; // 開啟計數 while(TF1==0); // 等待計數完成 TR1 = 0; // 關閉計數 TF1 = 0; // 清除溢位旗標 }

Outline Main ( ) : 主程式 System_Initial ( ) : 系統初始化 A2D( ) : ADC PPM( ) : 輸出PPM訊號 Output_high ( ) : 輸出PPM訊號的high Output_low ( ) : 輸出PPM訊號的low

Output_low( 矩陣[n] ) Output_ low( ) RET NO YES 計數 完成? PPM output = 0 經由矩陣[n]換算 設定 TL1 和 TH1 開啟計數 關閉計數 清除溢位旗標

Output_low(矩陣[n] ): PPM Output 輸出’0’ 經由矩陣[n]內的A/D數值換算出TL1和TH1的設定值 開啟計數器 等待計數完成 關閉計數器 清除溢位旗標 Return

Timer_Out_Low ( ) void Timer_Out_Low(void) { P20 = 0; // 輸出low TH1 = (65536-AD_table[i])/256; // 設定該channel計數的時間 TL1 = (65536-AD_table[i])%256; // 設定該channel計數的時間 TR1 = 1; // 開啟計數 while(TF1==0); // 等待計數完成 TR1 = 0; // 關閉計數 TF1 = 0; // 清除溢位旗標 }

END