版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Zigbee無線傳感網(wǎng)技術與應用廚房監(jiān)控系統(tǒng)0401了解串口通信原理03掌握溫濕度傳感器數(shù)據(jù)的獲取05掌握單片機輸出PWM信號的方法04了解AD采樣方法02掌握串口使能方法學習目標Learningobjectives任務一:廚房溫濕度監(jiān)控系統(tǒng)任務要求要求讀者查看SHT11數(shù)字溫濕度傳感器芯片資料,實現(xiàn)系統(tǒng)對溫濕度的ZigBee數(shù)據(jù)采集、存儲和收集功能,并通過RS232與PC機相聯(lián),把收集到的溫濕度數(shù)據(jù)傳輸?shù)絇C機中進行分析處理。任務目標Missionobjectives01掌握單片機串行通信的方法03了解數(shù)字傳感器串行數(shù)據(jù)的讀取方法02了解SHT11數(shù)字式溫濕度傳感器儲備知識微控制器與外設之間的數(shù)據(jù)通信分為兩種:并行通信、串行通信,它們根據(jù)連接結構和傳輸方式的不同而制定的。1.什么是串口通信并行通信與串行通信
并行通信(如右圖)至數(shù)據(jù)的每個位同時發(fā)送或接收,每個數(shù)據(jù)位都有一個導線。其特點為傳輸速度快、效率高,但需要較多數(shù)據(jù)口、成本高。儲備知識1.什么是串口通信
串行通信(如右圖)其通信為一位一位發(fā)送或接收。數(shù)據(jù)口較少即TXD、RXD兩個口,成本低,但傳輸速度慢,效率低。串行通信又分同步和異步兩種方式
串行同步通信同步通信中,所有設備使用同一個時鐘,以數(shù)據(jù)塊為單位傳送數(shù)據(jù),每個數(shù)據(jù)塊包括同步字符、數(shù)據(jù)塊和校驗字符。同步字符位于數(shù)據(jù)塊的開頭,用于確認數(shù)據(jù)字符的開始;接收時,接收設備連續(xù)不斷地對傳輸線采樣,并把接收到的字符與雙方約定的同步字符進行比較,只有比較成功后才會把后面接收到的字符加以存儲。儲備知識1.什么是串口通信同步通信的優(yōu)點是數(shù)據(jù)傳輸速率高,缺點是要求發(fā)送時鐘和接收時鐘保持嚴格同步。在數(shù)據(jù)傳送開始時先用同步字符來指示,同時傳送時鐘信號來實現(xiàn)發(fā)送端和接收端同步,即檢測到規(guī)定的同步字符后,接著就連續(xù)按順序傳送數(shù)據(jù)。這種傳送方式對硬件結構要求較高。
串行異步通信異步通信中,每個設備都有自己的時鐘信號,通信中雙方的時鐘頻率保持一致。異步通信以字符為單位進行數(shù)據(jù)傳送,每一個字符均按照固定的格式傳送,又被稱為幀,即異步串行通信一次傳送一個幀。儲備知識1.什么是串口通信每一幀數(shù)據(jù)由起始位(低電平)、數(shù)據(jù)位、奇偶校驗位(可選)、停止位(高電平)組成。幀的格式如下圖:圖:異步通信數(shù)據(jù)幀格式儲備知識1.什么是串口通信起始位:發(fā)送端通過發(fā)送起始位而開始一幀數(shù)據(jù)的傳送。起始位使數(shù)據(jù)線處于邏輯0,用來表示一幀數(shù)據(jù)的開始。數(shù)據(jù)位:起始位之后就開始傳送數(shù)據(jù)位。在數(shù)據(jù)位中,低位在前,高位在后。數(shù)據(jù)的位數(shù)可以是5、6、7或者8。奇偶校驗位:是可選項,雙方根據(jù)約定用來對傳送數(shù)據(jù)的正確性進行檢查??蛇x用奇校驗、偶校驗和無校驗位。停止位:在奇偶檢驗位之后,停止位使數(shù)據(jù)線處于邏輯1,用以標志一個數(shù)據(jù)幀的結束。停止位邏輯值1的保持時間可以是1、1.5或2位,通信雙方根據(jù)需要確定??臻e位:在一幀數(shù)據(jù)的停止位之后,線路處于空閑狀態(tài),可以是很多位,線路上對應的邏輯值是1,表示一幀數(shù)據(jù)結束,下一幀數(shù)據(jù)還沒有到來。儲備知識2.使能CC2530串口通信CC2530有兩個串行通信接口USART0和USART1,兩個USART接口具有相同的功能,其通過PERCFG寄存器可以設置兩個USART接口對應外部I/O引腳的映射關系。選擇串口位置:PERCFG寄存器位名稱復位功能介紹1U1CFG0USART1的I/O位置0:表示RX0、TX01:表示RX1、TX10U0CFG0USART0的I/O位置0:表示RX0、TX01:表示RX1、TX1圖:USART接口位置圖:UxCSR寄存器儲備知識2.使能CC2530串口通信教材采用開發(fā)板的I/O位置位于位置1->P0.2、P0.3口,故需要將PERCFG&=~(0x01);使第0位置為0,表示選擇USART0->RX0、TX0位置。一、請在下方編寫代碼,將USART1,RX1、TX1設置為作用。二、請在下方編寫代碼,將USART0,RX1、TX1設置為作用。思考練習:儲備知識2.使能CC2530串口通信設置模式:UxCSR寄存器UxCSR分為U0CSR、U1CSR分別控制USART0、USART1接口,UxCSR控制著USART的模式如SPI模式、UART模式,包含一個ACTIVE位用于判斷USART是否處于空閑狀態(tài)。其相關位說明如表所示。(為了使讀者能快速理解,教材只列舉最重要的幾個位,讀者如需了解更全面的資料可查看芯片手冊)位名稱復位功能介紹7MODE0USART模式選擇0:SPI模式1:UART模式6REN0UART接收使能0:關閉接收1:開啟接收0ACTIVE0表示USART狀態(tài)0:空閑1:忙碌儲備知識2.使能CC2530串口通信如表所示,如需開啟USART0工作模式則需要使U0CSR|=0xC0,將第7、6位置為1,表示工作在UART模式、接收使能開啟。一、請在下方編寫代碼,使USART1,工作模式為SPI模式。二、請在下方編寫代碼,使USART0,工作模式為UART模式、但不接收。思考練習:儲備知識2.使能CC2530串口通信設置通信協(xié)議:UxUCR寄存器UxUCR控制著串口通信協(xié)議的具體狀態(tài),如奇偶校驗、停止位、校驗位等,其相關位說明如下表所示。(為了使讀者能快速理解,教材只列舉最重要的幾個位,讀者如需了解更全面的資料可查看芯片手冊)位名稱復位功能介紹5D90奇偶校驗:0:奇校驗1:偶校驗4BIT90數(shù)據(jù)位(如開啟奇偶校驗則必須9位):0:8位1:9位3PARITY0UART奇偶校驗使能0:關閉奇偶校驗1:開啟奇偶校驗2SPB0停止位位數(shù):0:1位停止位1:2位停止位1STOP1停止位的電平:0:停止位為低電平1:停止位為高電平0START0啟始位的電平:0:起始位為低電平1:起始位為高電平儲備知識2.使能CC2530串口通信如表所示,如需要設置特殊狀態(tài)串口通信則需要設置UxUCR,如無需特殊要求則不需要對其進行設置。一、請在下方編寫代碼,使串口通信開啟偶數(shù)校驗模式。二、請在下方編寫代碼,使串口通信起時位電平為高電平。思考練習:儲備知識2.使能CC2530串口通信設置波特率:UxBAUD寄存器與UxGCRUxBAUD分為U0BAUD、U1BAUD分別控制USART0、USART1兩個串口的波特率。UxGCR也分為U0GCR、U1GCR分別控制USART0、USART1兩個串口的波特率。CC2530的波特率由UxBAUD、UxGCR共同決定,計算公式為:儲備知識2.使能CC2530串口通信在TI公司手冊中,給出了32MHZ系統(tǒng)時鐘下各個常用波特率的參數(shù)值,由計算公式即可得出16MHZ時鐘下的對應參數(shù)。波特率16MHZ系統(tǒng)時鐘32MHZ系統(tǒng)時鐘UxBAUDUxGCR80059859796005995981920059105995760021611216101152002161221611圖:波特率計算儲備知識2.使能CC2530串口通信根據(jù)上表所示,如在波特率為16MHZ的情況下需要設置USART0波特率為57600則需要將U0BAUD=216;U0GCR=11。一、請在下方編寫代碼,如芯片工作在32MHZ設置USART1波特率為115200。二、請在下方編寫代碼,如芯片工作在16MHZ設置USART0波特率為9600。思考練習:儲備知識2.使能CC2530串口通信發(fā)送與接收:UxDBUF寄存器UxDBUF分為U0DBUF、U1DBUF分別為USART0、USART1的接收/發(fā)送數(shù)據(jù)緩沖區(qū),即當需要發(fā)送數(shù)據(jù)0x11給USART0時則需U0BUF=0x11即可,同理獲取為申明變量a=U0DBUF。但在發(fā)送后需要等待發(fā)送完成,這里可判斷一個中斷標志UTX0IF,其為1則完成發(fā)送。代碼如下所示。U0DBUF=0x11;//發(fā)送數(shù)據(jù)while(!UTX0IF);//表示等待完成,如為1則完成UTX0IF=0;//清除標志位一、在下方編寫在USART0發(fā)送數(shù)據(jù)0xaa的代碼。二、在下方編寫在USART0接收數(shù)據(jù)的代碼。思考練習:儲備知識2.使能CC2530串口通信串口使能流程圖觀看流程圖,重新整理記憶使能串口流程,串口使能流程圖如右圖所示。儲備知識3.開發(fā)板串口電路圖由于計算機的串行通信接口是RS-232的標準接口,而Zigbee開發(fā)板的USART接口為TTL電平,兩者的電氣規(guī)范不同(即電壓不同),所以要完成兩者之間的數(shù)據(jù)通信,就需要借助接口芯片在兩者直接進行電平的轉(zhuǎn)換,其中常用的芯片為MAX232。圖:串口電路圖儲備知識3.開發(fā)板串口電路圖TTL電平:邏輯0表示電壓為小于0.8V邏輯1表示電壓為大于2.4VRS232電平:邏輯0表示電壓為5到15V邏輯1表示電壓為-5V到-15V知識補充儲備知識4.SHT11數(shù)字式溫濕度傳感器SHT11傳感器簡介它是瑞士Sensirion公司生產(chǎn)的具有接口的單片全校準數(shù)字式相對濕度和溫度傳感器,采用獨特的CMOSensTM技術,具有數(shù)字輸出、免調(diào)試、免校準、外圍電路全互換等特點。詳細介紹了傳感器的性能特點、接口時序和命令,給出了接口電路和相應的程序。綜述了溫濕度測量在倉庫管理、生產(chǎn)、氣象觀測、科學研究和日常生活中的廣泛應用。傳統(tǒng)的模擬濕度傳感器一般需要設計信號調(diào)理電路,經(jīng)過復雜的校準和校準過程,測量精度難以保證,線性、重復性等性能往往不理想。CMOSensTM技術是由瑞士Sensirion公司開發(fā)的,該傳感器將CMOS芯片技術與傳感器技術相結合,起到了很強的互補作用。模塊如圖所示。儲備知識4.SHT11數(shù)字式溫濕度傳感器圖:SHT11模塊儲備知識4.SHT11數(shù)字式溫濕度傳感器集成溫濕度傳感器、信號放大與調(diào)理、AD轉(zhuǎn)換與接口為一體。輸出標定的相對濕度和溫度值。I2C總線數(shù)字輸出接口。具有露點計算輸出功能。具有露點計算輸出功能。具有優(yōu)良的長期穩(wěn)定性。SHT11型溫濕度傳感器的主要特點是:儲備知識4.SHT11數(shù)字式溫濕度傳感器SHT11傳感器引腳說明SHT11的供電電壓范圍為2.4-5.5V,建議供電電壓為3.3V。DATA為數(shù)據(jù)引腳、SCK為時鐘引腳。SHT11采用I2C通信協(xié)議,由于協(xié)議難度較高,故教材不設計該內(nèi)容,讀者直接調(diào)用類庫即可。5.設備與設備通信本任務所需軟件已安裝至電腦可直接使用。本任務所需硬件:下載器、ZigBee開發(fā)板、5V電源適配器、USB下載線、串口線。環(huán)境準備任務實施5.設備與設備通信硬件連接任務實施任務實施
使用串口調(diào)試助手,打開串口監(jiān)聽波特率為9600
按下按鈕sw1輸出“hello”任務要求編寫代碼步驟1:新建工程->工程名稱為“串口通信”->保存->新建語言程序.c文件名稱為“main.c”->設置opion->編寫最簡單的代碼,代碼如下所示。(新建工程具體步驟,不再重復介紹)5.設備與設備通信#include"iocc2530.h"voidmain(){while(1){
}}任務實施步驟2:編寫I/O初始化P0.2、P0.3為外設口,代碼如下所示。5.設備與設備通信#include"iocc2530.h"voidmain(){
P0SEL|=0x0c;//設置外設
while(1){
}}
任務實施步驟3:編寫設置USART0–>I/O位置P0.2、P0.3代碼,代碼如下所示。5.設備與設備通信#include"iocc2530.h"voidmain(){
P0SEL|=0x0c;//設置外設
PERCFG&=~0x01;//設置I/O位置
while(1){
}}任務實施步驟4:編寫設置UART模式代碼,代碼如下所示。5.設備與設備通信#include"iocc2530.h"voidmain(){
P0SEL|=0x0c;//設置外設
PERCFG=0x00;//設置I/O位置
U0CSR|=0x80;//設置UART模式while(1){
}}任務實施步驟5:編寫設置波特率為9600并開啟總中斷使能,代碼如下所示。(系統(tǒng)默認波特率為16MHZ)5.設備與設備通信#include"iocc2530.h"voidmain(){ P0SEL|=0x0c;//設置外設 PERCFG=0x00;//設置I/O位置 U0CSR|=0x80;//設置UART模式 U0BAUD=59;//設置波特率為9600 U0GCR=9;//設置波特率為9600 EA=1; //開啟總中斷
while(1)
{
}}任務實施步驟6:經(jīng)過上述5個步驟,即完成了串口初始化過程,現(xiàn)需要發(fā)送一個字符‘a(chǎn)’給電腦,代碼如下所示。5.設備與設備通信#include"iocc2530.h"voidmain(){ P0SEL|=0x0c;//設置外設 PERCFG=0x00;//設置I/O位置 U0CSR|=0x80;//設置UART模式 U0BAUD=59;//設置波特率為9600 U0GCR=9;//設置波特率為9600 EA=1; //開啟總中斷 U0DBUF='a';//發(fā)送a
while(1){ }}任務實施步驟7:打開配套資料\項目四\串口調(diào)試助手.exe,設置COM口、波特率9600->打開串口。5.設備與設備通信圖:串口調(diào)試助手任務實施步驟8:設置斷點,位于U0DBUF發(fā)送的位置處。5.設備與設備通信圖:設置斷點任務實施步驟9:單步執(zhí)行,查看串口調(diào)試助手接收到數(shù)據(jù)a。5.設備與設備通信圖:串口調(diào)試助手數(shù)據(jù)任務實施步驟10:在代碼完成調(diào)試后,將兩段代碼改寫成函數(shù),方便后續(xù)調(diào)用,同時在發(fā)送函數(shù)中加入判斷標志,代碼如右所示。5.設備與設備通信#include"iocc2530.h"voidUartInit(){P0SEL|=0x0c;//設置外設PERCFG=0x00;//設置I/O位置U0CSR|=0x80;//設置UART模式U0BAUD=59;//設置波特率為9600U0GCR=9;//設置波特率為9600EA=1;//開啟總中斷}voidsend(unsigned
chars){U0DBUF=s;//發(fā)送a
while(!UTX0IF);UTX0IF=0;}voidmain(){UartInit();send('a');
while(1){
}}任務實施5.設備與設備通信一、修改上述代碼,使波特率變?yōu)?8400。二、修改上述代碼,按下按下sw1發(fā)送數(shù)字1,再次為2,一次累加。拓展練習:任務實施5.設備與設備通信步驟11:進一步編寫批量發(fā)送字符串口函數(shù),代碼如下所示?!璿oidsend(unsigned
chars){U0DBUF=s;//發(fā)送a
while(!UTX0IF);UTX0IF=0;}voidsendstr(unsigned
char*s,unsigned
charlen){
intcount=0;
while(len--){send(*(s+count));count++;}}voidmain()……代碼小貼士:代碼:調(diào)用函數(shù):sendstr(參數(shù)1,參數(shù)2);表示獲取溫濕度數(shù)據(jù)。函數(shù):call_sht11(參數(shù)1,參數(shù)2);參數(shù)1:指針參數(shù)可傳入字符串如“你好”,數(shù)組等參數(shù)2:整型發(fā)送字符的數(shù)量任務實施5.設備與設備通信一、調(diào)用“sendstr”函數(shù)實現(xiàn)顯示“你好世界”字符串。技能拓展6.廚房溫濕監(jiān)控系統(tǒng)本任務所需軟件已安裝至電腦可直接使用。本任務所需硬件:下載器、ZigBee開發(fā)板、5V電源適配器、USB下載線、SHT11溫濕度傳感器模塊。環(huán)境準備任務實施任務實施
獲取溫濕度值
將溫濕度值傳輸給PC機。任務要求模塊連接將SHT11溫濕度模塊連接至zigbee模塊,連接串口線至電腦,如右圖所示。6.廚房溫濕監(jiān)控系統(tǒng)6.廚房溫濕監(jiān)控系統(tǒng)步驟1:新建工程,復制將上述任務代碼,“配套資料\項目四\SHT11”目錄下提供的SHT11等文件到工程根目錄下。編寫代碼(由SHT11的驅(qū)動比較難理解,故本任務在提供的調(diào)用文件實現(xiàn)調(diào)用即可)任務實施圖:復制調(diào)用文件6.廚房溫濕監(jiān)控系統(tǒng)步驟2:編寫引用頭文件,方便后續(xù)調(diào)用其中函數(shù),代碼如下所示。任務實施#include"SHT11.h"http://引用溫濕度頭文件步驟3:聲明全局整型全局變量temp、hum,在主函數(shù)中調(diào)用頭文件中函數(shù),獲取溫濕度數(shù)據(jù),代碼如下所示?!璱nttemp,hum;//聲明全局變量……voidmain()……call_sht11(&temp,&hum);//調(diào)用函數(shù)獲取溫濕度……代碼小貼士:代碼:調(diào)用函數(shù):call_sht11(&temp,&hum);表示獲取溫濕度數(shù)據(jù)。函數(shù):call_sht11(參數(shù)1,參數(shù)2);參數(shù)1:指針參數(shù)表示將溫度數(shù)據(jù)傳給temp,調(diào)用時將temp變量地址傳入?yún)?shù)2:指針參數(shù)表示將溫度數(shù)據(jù)傳給hum,調(diào)用時將hum變量地址傳入6.廚房溫濕監(jiān)控系統(tǒng)步驟4:設置斷點至獲取溫濕度函數(shù)位置,并查看temp、hum變量的變化。temp為270/10=27度,hum為750/10=75%。任務實施圖:獲取的溫濕度信息6.廚房溫濕監(jiān)控系統(tǒng)步驟5:編寫發(fā)送溫度數(shù)據(jù)同時解析數(shù)據(jù)發(fā)送串口,由于發(fā)送串口需要單個字符單個字符發(fā)送,需將整型數(shù)據(jù)拆分成十位、個位。部分代碼如下所示。任務實施……inttemp,hum;voidmain(){
UartInit();sendstr("溫度:",5);send((temp/100)+'0');send((temp/10%10)+'0');send('.');send((temp%10)+'0');sendstr("℃",2);send('\n');while(1){
}}……6.廚房溫濕監(jiān)控系統(tǒng)步驟6:設置斷點,單步調(diào)試代碼查看發(fā)送數(shù)據(jù)單個執(zhí)行,同時打開串口調(diào)試助手選擇“字符串接收”方式。任務實施圖:獲取溫度顯示數(shù)據(jù)任務實施一、根據(jù)任務代碼進行修改,編寫獲取濕度代碼。二、添加按鈕代碼,使按下按鈕顯示當前溫度、濕度信息。三、使用定時器,每1秒發(fā)送一次當前的溫度信息。6.廚房溫濕監(jiān)控系統(tǒng)技能拓展Zigbee無線傳感網(wǎng)技術與應用廚房監(jiān)控系統(tǒng)0401了解串口通信原理03掌握溫濕度傳感器數(shù)據(jù)的獲取05掌握單片機輸出PWM信號的方法04了解AD采樣方法02掌握串口使能方法學習目標Learningobjectives任務二:廚房火災報警系統(tǒng)任務要求要求讀者查看火焰?zhèn)鞲衅髂K資料,實現(xiàn)CC2530單片機系統(tǒng)對數(shù)字量信號的采集,掌握接收PC串口信號的方法。任務目標Missionobjectives01了解火焰?zhèn)鞲衅髂K的結構03掌握接收串口信號的方法02掌握廚房火災報警系統(tǒng)的調(diào)試儲備知識開關量輸出是實現(xiàn)傳感器將感應到的模擬或數(shù)字信號轉(zhuǎn)換成一個開關量信號,再繼而輸出的一個功能。一般的開關量輸出通過繼電器實現(xiàn),如單擲單刀,單擲雙刀,雙擲雙刀等。該物理量只有兩種狀態(tài),如開關的導通和斷開的狀態(tài),繼電器的閉合和打開,電磁閥的通和斷,等等。開關量傳感器發(fā)出的信號是數(shù)字信號,有斷開和閉合兩種狀態(tài),比如液位傳感器開關就是一種常見的開關量傳感器。當液位傳感器低于設定值時,液位傳感器開關斷開(或閉合);當液位傳感器高于設定值時,開關閉合(或斷開)。對控制系統(tǒng)來說,由于CPU是二進制的,數(shù)據(jù)的每位有“0”和“1”兩種狀態(tài),因此,開關量只要用CPU內(nèi)部的一位即可表示,比如,用“0”表示開,用“1”表示關。1.什么是開關量儲備知識ZigBee火焰?zhèn)鞲衅髂K由紅外接收二極管及比較器電路構成,該模塊只有4個接口引腳,分別為VCC、GND、DOUT、AOUT,其中VCC、GND為電路的供電端,DOUT為模塊開關量輸出端,輸出高低電平信號,對應是否檢測到火焰;AOUT為模擬量輸出,輸出的電壓值會根據(jù)接收到的火焰強度而發(fā)生變化。2.ZigBee火焰?zhèn)鞲衅髂K圖:火焰模塊儲備知識由電路圖可知火焰?zhèn)鞲衅鞯腄out連接至P0.0的IO口,火焰?zhèn)鞲衅鳛閿?shù)字量傳感器代碼與按鈕類似。3.火焰?zhèn)鞲衅麟娐穲D4.廚房火災報警系統(tǒng)本任務所需軟件已安裝至電腦可直接使用。本任務所需硬件:下載器、ZigBee開發(fā)板、火焰?zhèn)鞲衅髂K、5V電源適配器、USB下載線。環(huán)境準備任務實施任務實施
獲取廚房火焰?zhèn)鞲衅鲾?shù)據(jù)
如果有火焰則持續(xù)發(fā)送報警信息
當電腦發(fā)送0x01時停止報警任務要求編寫代碼步驟1:新建工程->工程名稱為“廚房火焰報警系統(tǒng)”->保存->新建源程序.c文件名稱為“main.c”->設置Opion->編寫最簡單的代碼,代碼如下所示。(新建工程具體步驟,不再重復介紹)4.廚房火災報警系統(tǒng)#include"iocc2530.h"voidmain(){
while(1){
}}任務實施步驟2:編寫火焰?zhèn)鞲衅鱅/O宏定義,代碼如下所示。4.廚房火災報警系統(tǒng)步驟3:編寫獲取火焰?zhèn)鞲衅鞯臓顟B(tài)代碼并設置發(fā)送串口標志,根據(jù)電路圖設置I/O口P0.0為輸入。代碼如下所示。//宏定義
火焰?zhèn)鞲衅鱅/O口#defineflameP0_0#include"iocc2530.h"#defineflameP0_0voidmain(){
charflag=0;//聲明標志P0DIR&=~(0x01);
while(1){
if(flame==0)//如果有火焰{flag=1;//設置標志,便于發(fā)送串口循環(huán)}}}代碼小貼士:代碼:charflag=0;說明:程序設計時長用一個變量標示一些標志,flag表示一個標志,判斷當標志為1時則不斷執(zhí)行所需代碼。任務實施步驟4:編寫獲取串口接收、發(fā)送與初始化數(shù)據(jù)代碼,代碼與任務一類似,在U0CSR開啟接收使能,URX0IE=1開啟中斷使能,代碼如右所示。4.廚房火災報警系統(tǒng)voidsend(unsigned
chars){U0DBUF=s;//發(fā)送a
while(!UTX0IF);UTX0IF=0;}voidsendstr(unsigned
char*s,unsigned
charlen){
intcount=0;
while(--len){send(*(s+count));count++;}}voidUartInit(){P0SEL|=0x0c;//設置外設PERCFG=0x00;//設置I/O位置U0CSR|=0xc0;//設置UART模式
使能接收U0BAUD=59;//設置波特率為9600
U0GCR=9;//設置波特率為9600;
URX0IE=1;//開啟串口接收中斷EA=1;//開啟總中斷}任務實施步驟5:編寫串口中斷函數(shù),聲明接收數(shù)據(jù)變量Command,代碼如下所示。4.廚房火災報警系統(tǒng)…charCommand;…#pragmavector=URX0_VECTOR__interruptvoidUART(){Command=U0DBUF;//接收緩存數(shù)據(jù)到dataURX0IF=0;//清中斷標志}任務實施步驟6:編寫發(fā)送串口代碼,當有火焰時不斷每秒發(fā)送報警數(shù)據(jù),代碼如下所示。4.廚房火災報警系統(tǒng)voidmain(){
charflag=0;UartInit();
while(1){
if(flame==0)//如果有火焰{flag=1;//設置標志,便于發(fā)送串口循環(huán)}
if(flag){sendstr("火焰報警",8);}}}任務實施步驟7:在while循環(huán)中編寫判斷停止報警信號代碼,代碼如下所示。4.廚房火災報警系統(tǒng)voidmain(){
charflag=0;UartInit();
while(1){
if(flame==0)//如果有火焰{flag=1;//設置標志,便于發(fā)送串口循環(huán)}
if(flag){sendstr("火焰報警",8);}
if(Command==0x01){Command=0;//清空數(shù)據(jù)接收flag=0;//清空發(fā)送標志}}}代碼小貼士:代碼:if(flag){}說明:在條件內(nèi)容可以簡寫flag大于1則條件滿足為0則不滿足,與代碼if(flag==1)相同任務實施步驟8:打開串口調(diào)試助手,設置發(fā)送發(fā)送為“16進制發(fā)送”。4.廚房火災報警系統(tǒng)圖:設置16進制發(fā)送任務實施步驟9:在串口接收中斷函數(shù)中設置斷點,使用串口調(diào)試助手發(fā)送數(shù)據(jù)01(注意選擇16進制發(fā)送)->點擊“手動發(fā)送”,查看效果。4.廚房火災報警系統(tǒng)圖:發(fā)送數(shù)據(jù)任務實施4.廚房火災報警系統(tǒng)圖:設置斷點任務實施一、如果停止的指令為英文字符“s”,代碼需要如何修改。二、如果停止指令為“stop”字符串,代碼需要如何修改。4.廚房火災報警系統(tǒng)技能拓展Zigbee無線傳感網(wǎng)技術與應用廚房監(jiān)控系統(tǒng)0401了解串口通信原理03掌握溫濕度傳感器數(shù)據(jù)的獲取05掌握單片機輸出PWM信號的方法04了解AD采樣方法02掌握串口使能方法學習目標Learningobjectives任務三:廚房照明燈調(diào)節(jié)系統(tǒng)任務要求要求讀者編寫程序?qū)崿F(xiàn)實驗板獲取芯片外部光敏傳感器的電壓,通過串口發(fā)送電壓值。實驗板安裝上光線傳感器,光線的強弱轉(zhuǎn)換成電壓的高低,經(jīng)ADC轉(zhuǎn)換以后通過串口將電壓值發(fā)送給PC,可以通過串口調(diào)試軟件讀取電壓值。同時控制Zigbee開發(fā)板上的LED根據(jù)外界光照強度的不同自動調(diào)節(jié)LED亮度。任務目標Missionobjectives01模擬信號和數(shù)字信號有哪些區(qū)別?03CC2530的模數(shù)轉(zhuǎn)換精度及如何處理數(shù)據(jù)?02CC2530的ADC需要設置那些寄存器?如何設置?儲備知識信息是指客觀事物屬性和相互聯(lián)系特性的表征,它反映了客觀事物的存在形式和運動狀態(tài)。表示信息的形式可以是數(shù)值、文字、圖形、聲音、圖像以及動畫等。信號是信息的載體,是運載信息的工具,信號可以是光信號、聲音信號、電信號。電話網(wǎng)絡中的電流就是一種電信號,人們可以將電信號經(jīng)過發(fā)送、接收以及各種變換,傳遞著雙方要表達的信息。數(shù)據(jù)是把事件的屬性規(guī)范化以后的表現(xiàn)形式,它能被識別,可以被描述,是各種事物的定量或定性的記錄。信號數(shù)據(jù)可以表示任何信息,如文字、符號、語音、圖像、視頻等等。從電信號的表現(xiàn)形式上,可以分為模擬信號和數(shù)字信號。1.電信號的形式與轉(zhuǎn)換模擬信號是指用連續(xù)變化的物理量所表達的信息,如溫度、濕度、壓力、長度、電流、電壓等等,我們通常又把模擬信號稱為連續(xù)信號,它在一定的時間范圍內(nèi)可以有無限多個不同的取值。模擬信號儲備知識1.電信號的形式與轉(zhuǎn)換數(shù)字信號數(shù)字信號指自變量是離散的、因變量也是離散的信號,這種信號的自變量用整數(shù)表示,因變量用有限數(shù)字中的一個數(shù)字來表示,在計算機中,數(shù)字信號的大小常用有限位的二進制數(shù)表示。由于數(shù)字信號是用兩種物理狀態(tài)來表示0和1的,故其抵抗材料本身干擾和環(huán)境干擾的能力都比模擬信號強很多;在現(xiàn)代技術的信號處理中,數(shù)字信號發(fā)揮的作用越來越大,幾乎復雜的信號處理都離不開數(shù)字信號,只要能把解決問題的方法用數(shù)學公式表示,就能用計算機來處理代表物理量的數(shù)字信號。模擬/數(shù)字轉(zhuǎn)換通常簡寫為ADC,是將輸入的模擬信號轉(zhuǎn)換為數(shù)字信號。各種被測控的物理量(如:速度、壓力、溫度、光照強度、磁場等)是一些連續(xù)變化的物理量,傳感器將這些物理量轉(zhuǎn)換成與之相對應的電壓和電流就是模擬信號。單片機系統(tǒng)只能接收數(shù)字信號,要處理這些信號就必須把他們轉(zhuǎn)換成數(shù)字信號。模擬/數(shù)字轉(zhuǎn)換是數(shù)字測控系統(tǒng)中必須的信號轉(zhuǎn)換。模擬/數(shù)字轉(zhuǎn)換儲備知識2.CC2530的模數(shù)轉(zhuǎn)換(ADC)模塊CC2530的ADC模塊支持最高14位二進制的模擬數(shù)字轉(zhuǎn)換,具有12位的有效數(shù)據(jù)位。它包括一個模擬多路轉(zhuǎn)換器,具有8個各自可配置的通道;以及一個參考電壓發(fā)生器。轉(zhuǎn)換結果通過DMA寫入存儲器,還具有多種運行模式。ADC模塊結構如圖所示。圖:LED與CC2530連接電路圖儲備知識2.CC2530的模數(shù)轉(zhuǎn)換(ADC)模塊可選的抽取率,設置分辨率(7到12位)8個獨立的輸入通道,可接收單端或差分信號參考電壓可選為內(nèi)部單端、外部單端、外部差分或AVDD5轉(zhuǎn)換結束產(chǎn)生中斷請求轉(zhuǎn)換結束時可發(fā)出DMA觸發(fā)CC2530的ADC模塊有如下主要特征:可以將片內(nèi)溫度傳感器作為輸入電池電壓測量功能儲備知識對于CC2530的ADC模塊,端口P0引腳可以配置為ADC輸入端,依次為AIN0~AIN7??梢园演斎肱渲脼閱味嘶虿罘州斎?。在選擇差分輸入的情況下,差分輸入包括輸入對AIN0-AIN1、AIN2-AIN3、AIN4-AIN5和AIN6-AIN7。除了輸入引腳AIN0-AIN7,片上溫度傳感器的輸出也可以選擇作為ADC的輸入用于溫度測量;還可以輸入一個對應AVDD5/3的電壓作為一個ADC輸入,在應用中這個輸入可以實現(xiàn)一個電池電壓監(jiān)測器的功能。特別提醒,負電壓和大于VDD(未調(diào)節(jié)電壓)的電壓都不能用于這些引腳。它們之間的轉(zhuǎn)換結果是在差分模式下每對輸入端之間的電壓差值。3.使能CC2530模數(shù)轉(zhuǎn)換(ADC)ADC模塊的輸入儲備知識8位模擬量輸入來自I/O引腳,不必通過編程將這些引腳變?yōu)槟M輸入,但是,當相應的模擬輸入端在APCFG寄存器中被禁用時,此通道將被跳過。當使用差分輸入時,相應的兩個引腳都必須在APCFG寄存器中設置為模擬輸入引腳。APCFG寄存器如表所示。3.使能CC2530模數(shù)轉(zhuǎn)換(ADC)位名稱復位R/W描述7:0APCFG[7:0]0x00R/W模擬外設I/O配置。APCFG[7:0]選擇P0.7~P0.0作為模擬I/O0:模擬I/O禁用1:模擬I/O使用表:APCFG–模擬I/O配置寄存器單端電壓輸入AIN0到AIN7以通道號碼0到7表示。通道號碼8到11表示差分輸入,它們分別是AIN0–AIN1、AIN2–AIN3、AIN4–AIN5和AIN6–AIN7組成。通道號碼12到15分別用于GND(12)、預留通道(13)、溫度傳感器(14)和AVDD5/3(15)。儲備知識CC2530的ADC模塊可以按序列進行多通道的ADC轉(zhuǎn)換,并把結果通過DMA傳送到存儲器,而不需要CPU任何參與。轉(zhuǎn)換序列可以由APCFG寄存器設置,八位模擬輸入來自I/O引腳,不必經(jīng)過編程變?yōu)槟M輸入。如果一個通道是模擬I/O輸入,它就是序列的一個通道,如果相應的模擬輸入在APCFG中禁用,那么此I/O通道將被跳過。當使用差分輸入,處于差分對的兩個引腳都必須在APCFG寄存器中設置為模擬輸入引腳。寄存器位ADCCON2.SCH用于定義一個ADC轉(zhuǎn)換序列。如果ADCCON2.SCH設置為一個小于8的值,ADC轉(zhuǎn)換序列包括從0通道開始,直到并包括ADCCON2.SCH所設置的通道號碼。當ADCCON2.SCH設置為一個在8和12之間的值,轉(zhuǎn)換序列包括從通道8開始差分輸入,到ADCCON2.SCH所設置的通道號碼結束。3.使能CC2530模數(shù)轉(zhuǎn)換(ADC)序列ADC轉(zhuǎn)換與單通道ADC轉(zhuǎn)換儲備知識除可以設置為按序列進行ADC轉(zhuǎn)換之外,CC2530的ADC模塊可以編程實現(xiàn)任何單個通道執(zhí)行一個轉(zhuǎn)換,包括溫度傳感器(14)和AVDD5/3(15)兩個通道。單通道ADC轉(zhuǎn)換通過寫ADCCON3寄存器觸發(fā),轉(zhuǎn)換立即開始。除非一個轉(zhuǎn)換序列已經(jīng)正在進行,在這種情況下序列一完成,單個通道的ADC轉(zhuǎn)換就會被執(zhí)行。3.使能CC2530模數(shù)轉(zhuǎn)換(ADC)ADC的相關寄存器IO口的配置,其實仔細用大腦想想不用看數(shù)據(jù)手冊就應該想到,IO口要配置成為輸入模式,以下摘自數(shù)據(jù)手冊:當使用ADC時,端口0引腳必須配置為ADC輸入??梢允褂枚噙_八個ADC輸入引腳。要配置一個端口0腳為一個ADC輸入,APCFG寄存器中相應的位必須設置為1。這個寄存器的默認值選擇端口0引腳為非ADC,即數(shù)字輸入輸出。APCFG寄存器的設置將覆蓋P0SEL的設置。儲備知識ADC有兩個數(shù)據(jù)寄存器:ADCL(0xBA)–ADC數(shù)據(jù)低位寄存器、ADCH(0xBB)–ADC數(shù)據(jù)高位寄存。ADC有三個控制寄存器:ADCCON1、ADCCON2和ADCCON3。這些寄存器用來配置ADC并返回轉(zhuǎn)換結果。關于和ADC有關的幾個寄存器,使用ADCL和ADCH,主要放的是ADC轉(zhuǎn)換完畢的值,控制ADC啟用轉(zhuǎn)換的是三個控制器,分類是ADCCON1,ADCCON2,ADCCON3。其中ADCCON1,ADCCON2可以啟用連續(xù)轉(zhuǎn)換,而ADCCON3可以控制某一個通道執(zhí)行一次轉(zhuǎn)換。以上這些一般人都是可以通過看手冊配置的,但是配置不是什么大問題,但是從ADCL和ADCH取值有疑問的。3.使能CC2530模數(shù)轉(zhuǎn)換(ADC)ADC的配置和應用ADC有三種控制寄存器:ADCCON1,ADCCON2和ADCCON3。這些寄存器用于配置ADC,以及讀取ADC轉(zhuǎn)換的狀態(tài)。儲備知識ADCCON1.EOC位是一個狀態(tài)位,當一個轉(zhuǎn)換結束時,設置為高電平;當讀取ADCH時,它就被清除。ADCCON1.ST用于啟動一個轉(zhuǎn)換序列。當沒有轉(zhuǎn)換正在運行時這個位設置為高電平,ADCCON1.STSEL是11,就啟動一個序列。當這個序列轉(zhuǎn)換完成,ADCCON1.ST就被自動清0。ADCCON1.STSEL位選擇哪個事件將啟動一個新的轉(zhuǎn)換序列。該選項可以選擇為外部引腳P2.0上升沿或外部引腳事件,之前序列的結束事件,定時器1的通道0比較事件或ADCCON1.ST是1。ADCCON2寄存器設置轉(zhuǎn)換序列的執(zhí)行方式。ADCCON2.SREF用于選擇參考電壓。ADCCON2.SDIV位用來選擇抽取率,抽取率的設置決定分辨率和完成一個轉(zhuǎn)換所需的時間。ADCCON2.SCH設置轉(zhuǎn)換序列的最后一個通道數(shù)。ADCCON3寄存器控制單個轉(zhuǎn)換的通道號碼、參考電壓和抽取率。該寄存器位的設置選項和ADCCON2是完全一樣的。單通道轉(zhuǎn)換在寄存器ADCCON3寫入后將立即發(fā)生,如果一個轉(zhuǎn)換序列正在進行,該序列結束之后立即啟動ADC轉(zhuǎn)換。3.使能CC2530模數(shù)轉(zhuǎn)換(ADC)儲備知識3.使能CC2530模數(shù)轉(zhuǎn)換(ADC)ADC轉(zhuǎn)換使能流程圖觀看流程圖,方便讀者理解并記憶各個寄存器功能。儲備知識4.光照模塊電路圖:光照模塊電路圖5.獲取數(shù)字量光照值本任務所需軟件已安裝至電腦可直接使用。本任務所需硬件:下載器、Zigbee開發(fā)板、5V電源適配器、USB下載線、光照傳感器。環(huán)境準備任務實施任務實施
獲取廚房光照強度;
發(fā)送數(shù)據(jù)至PC的串口。任務要求模塊連接將光照傳感器模塊連接至zigbee模塊,連接串口線至電腦,如右圖所示。5.獲取數(shù)字量光照值任務實施編寫代碼步驟1:新建工程->工程名稱為“廚房光照系統(tǒng)”->保存->新建源程序.c文件名稱為“main.c”->設置Opion->編寫最簡單的代碼,代碼如下所示。(新建工程具體步驟,不再重復介紹)#include"iocc2530.h"voidmain(){
while(1){
}}5.獲取數(shù)字量光照值任務實施步驟2:初始化P0_0I/O狀態(tài),設置外設、設置I/O為ADC使用,代碼如下所示:5.獲取數(shù)字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//設置P0_0為ADC使用P0SEL|=0x01;//設置P0_0為外設口
while(1){
}}任務實施步驟3:編寫啟動轉(zhuǎn)換代碼包含設置參考電壓為引腳AVDD5輸入、10位ADC、P0_0通道,代碼如下所示。5.獲取數(shù)字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//設置P0_0為ADC使用
P0SEL|=0x01;//設置P0_0為外設口
//參考電壓AVDD5引腳、12位精度ADC、P0_0通道
//啟動轉(zhuǎn)換
ADCCON3=(0x80|0x30|0x00);
while(1){
}}任務實施步驟4:編寫清除標志,等待轉(zhuǎn)換成功代碼,代碼如下所示。5.獲取數(shù)字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//設置P0_0為ADC使用
P0SEL|=0x01;//設置P0_0為外設口
//參考電壓AVDD5引腳、10位精度ADC、P0_0通道
//啟動轉(zhuǎn)換
ADCCON3=(0x80|0x30|0x00);
ADCIF=0;//清除標志
while(!ADCIF);//等待完成
while(1){
}}任務實施步驟5:在轉(zhuǎn)換成功后,聲明一個全局變量無符號整型變量data,提取高8位與低8位數(shù)據(jù),同時轉(zhuǎn)換成int類型數(shù)據(jù),代碼如下所示。5.獲取數(shù)字量光照值#include"iocc2530.h"
unsigned
intdata=0;
voidmain(){
APCFG|=0x01;//設置P0_0為ADC使用
P0SEL|=0x01;//設置P0_0為外設口
//參考電壓AVDD5引腳、12位精度ADC、P0_0通道
//啟動轉(zhuǎn)換
ADCCON3=(0x80|0x30|0x00);ADCIF=0;//清除標志
while(!ADCIF);//等待完成
data=ADCL;//提取低位
data|=(unsignedint)(ADCH<<8);//提取高位
data=data>>3;//轉(zhuǎn)換為12位
while(1){
}}任務實施步驟6:在轉(zhuǎn)換成功代碼處data=data>>3,設置斷點查看數(shù)據(jù)情況。5.獲取數(shù)字量光照值圖:轉(zhuǎn)換結果任務實施步驟7:用手遮住光照傳感器查看數(shù)據(jù)是否發(fā)送變化,如數(shù)值變小則表示轉(zhuǎn)換成功。5.獲取數(shù)字量光照值圖:轉(zhuǎn)換結果2任務實施步驟8:封裝對應代碼,方便后續(xù)調(diào)用,封裝后的代碼如下所示。5.獲取數(shù)字量光照值#include"iocc2530.h"voidAdcInit(){APCFG|=0x01;//設置P0_0為ADC使用P0SEL|=0x01;//設置P0_0為外設口}unsigned
intAdcGet(){
unsigned
inttmp=0;
//參考電壓AVDD5引腳、12位精度ADC、P0_0通道
//啟動轉(zhuǎn)換ADCCON3=(0x80|0x30|0x00);ADCIF=0;//清除標志
while(!ADCIF);//等待完成
tmp=ADCL;//提取低位tmp|=(unsigned
int)(ADCH<<8);//提取高位tmp=tmp>>3;//轉(zhuǎn)換為12位
returntmp;}unsigned
intdata=0;voidmain(){AdcInit();data=AdcGet();
while(1){
}}任務實施步驟9:使用任務一編寫的串口發(fā)送代碼,將數(shù)據(jù)結果發(fā)送至電腦,關鍵代碼如下所示。5.獲取數(shù)字量光照值voidmain(){
unsigned
chardisp[4];AdcInit();UartInit();
while(1)
{
data=AdcGet();disp[0]=data/1000+'0';//提取千位disp[1]=data/100%10+'0';//提取百位disp[2]=data/10%10+'0';//提取十位
disp[3]=data%10+'0';//提取個位
sendstr("光照值:",8);//發(fā)送中文sendstr(disp,4);//發(fā)送數(shù)據(jù)send('\n');//發(fā)送換行符
delay_ms(2000);
//延遲一段時間發(fā)送}}任務實施步驟10:全速執(zhí)行代碼,過程中可用手去遮住光照傳感器查看數(shù)值的變化,打開串口調(diào)試助手,查看效果。5.獲取數(shù)字量光照值圖:獲取光照值任務實施一、如使用10位ADC精度進行轉(zhuǎn)換數(shù)據(jù),代碼將如何更改。5.獲取數(shù)字量光照值技能拓展儲備知識PWM是PulseWidthModulation的英文單詞縮寫,中文意思就是脈沖寬度調(diào)制,簡稱脈寬調(diào)制。PWM是利用微處理器輸出數(shù)字信號來對模擬電路進行控制的一種非常有效的技術方法,廣泛應用于測量、通信、功率控制與變換等眾多領域。6.什么是PWM儲備知識占空比是指脈沖信號的通電時間與通電周期之比。在一串理想的脈沖周期序列中(如方波),正脈沖的持續(xù)時間與脈沖總周期的比值。例如:脈沖寬度2μs,信號周期4μs的脈沖序列占空比為0.5。7.什么是占空比圖:占空比儲備知識PWM是一種對模擬信號電平進行數(shù)字編碼的方法,也可以理解為在一定的時間內(nèi)用高低電平所占的比例不同來控制一個對象。通過改變方波信號的占空比改變加到控制設備的平均電壓,從而達到改變流過設備的平均電流、功率的目的。例如在1ms周期內(nèi),高電平占0.3ms,低電平占0.7ms。如果用高電平去控制一個開關閉合,此開關再去控制一個LED燈,低電平時這個開關斷開,那么在1ms內(nèi),這個燈就只能通電0.3ms,而0.7ms內(nèi)是不通電的。這個燈的通電時間只有30%。如果把高電平的時間延長到0.7ms,而低電平就只有0.3ms了,此時燈的通電時間就變成70%了,燈獲得的能量變大,亮度自然就提高了。8.PWM調(diào)光原理儲備知識CC2530定時器1是一個獨立的16位定時器,支持典型的定時/計數(shù)功能,例如:輸入捕獲,輸出比較和PWM功能。定時器1有五個獨立的捕獲/比較通道。每個通道使用一個I/0引腳。CC2530的每個輸出通道都有相關的寄存器控制,通道捕獲/比較控制寄存器用于設置輸出PWM信號的波形,通道捕獲/比較值寄存器和T1CC0用于設置PWM信號的周期和占空比。定時器1的功能如下:9.CC2530定時器的PWM功能五個捕獲/比較通道可選擇上升沿、下降沿或任何邊沿進行輸入捕獲設置、清除或切換輸出比較自由運行、?;蛘嫈?shù)/倒計數(shù)操作在每個捕獲/比較和最終計數(shù)上生成中斷請求DMA觸發(fā)功能儲備知識可以通過兩個8位的SFR讀取16位的計數(shù)器值:T1CNTH和T1CNTL,分別包含高位和低位字節(jié)。當讀取T1CNTL時,計數(shù)器的高位字節(jié)在那時被緩沖到T1CNTH,以便高位字節(jié)可以從T1CNTH中讀出。因此T1CNTL必須總是在讀取T1CNTH之前首先讀取。對T1CNTL寄存器的所有寫入訪問將復位16位計數(shù)器。當達到最終計數(shù)值(溢出)時,計數(shù)器產(chǎn)生一個中斷請求??梢酝ㄟ^設置T1CTL來控制定時器開始或掛起。如果是非00值寫入T1CTL.MODE時,計數(shù)器開始運行;如果是00寫入T1CTL.MODE,計數(shù)器停止在它現(xiàn)在的值上。9.CC2530定時器的PWM功能儲備知識與定時器1相關的寄存器有:9.CC2530定時器的PWM功能T1CNTH、T1CNTL:定時器1計數(shù)器高低字節(jié)T1CTL:定時器1控制器T1STAT:定時器1狀態(tài)標志位T1CCTLn:定時器1捕獲/比較控制T1CCnH、T1CCnL:定時器1捕獲寄存器高低字節(jié)TIMIF:定時器1/3/4中斷屏蔽/標志儲備知識如下表所述,PWM使能需要占用一個定時器,把定時器工作在對應的模式下,建議直接使用定時器->1分頻、自由運行模式即可。使用定時器1、1分頻工作在自由運行模式下,代碼如下所示。10.使能PWM功能定時器工作模式–TxCTLT1CTL|=0x01;//1分頻,自由口運行模式表:定時器1--T1CTL寄存器位名稱復位功能介紹7:4--0000保留3:2DIV[1:0]001時鐘分頻設置00:1分頻01:8分頻10:32分頻11:128分頻1:0MODE[1:0]00定時器1工作模式設置00:暫停運行01:自由運行模式,0x0000到0xffff反復計數(shù)11:正計數(shù)/倒計數(shù)模式儲備知識10.使能PWM功能表:定時器3--T3CTL寄存器名稱復位功能介紹7:5DIV[1:0]000定時器3時鐘分頻設置000:1分頻100:16分頻001:2分頻101:32分頻010:4分頻110:64分頻011:8分頻111:128分頻1:0MODE[1:0]0定時器3工作模式設置00:暫停運行01:自由運行模式,0x0000到0xffff反復計數(shù)11:正計數(shù)/倒計數(shù)模式儲備知識10.使能PWM功能表:定時器4--T4CTL位名稱復位功能介紹7:5DIV[2:0]000定時器4時鐘分頻設置000:1分頻100:16分頻001:2分頻101:32分頻010:4分頻110:64分頻011:8分頻111:128分頻1:0MODE[1:0]0定時器4工作模式設置00:暫停運行01:自由運行模式,0x0000到0xffff反復計數(shù)11:正計數(shù)/倒計數(shù)模式儲備知識10.使能PWM功能一、請在下方編寫代碼,使定時器2工作在自由運行模式,編寫對應代碼。二、請在下方編寫代碼,使定時器3工作在正計數(shù)/倒計數(shù)模式,編寫對應代碼。思考練習:定時器對應通道設置–PERCFG如上表所述對應教材開發(fā)板LED燈,如需設置P1_0、P1_1、P1_3、P1_4所在通道與定時器為“定時器1備用位置2通道2、通道1”、“定時器3備用位置1通道0、通道1”,代碼為:PERFCG|=0x40(01000000)。儲備知識10.使能PWM功能表:PERCFG寄存器名稱復位功能介紹6T1CFG0定時器10:備用位置1
1:備用位置253FG0定時器30:備用位置1
1:備用位置24T4FG0定時器40:備用位置1
1:備用位置2儲備知識10.使能PWM功能表:通道對應I/O位置定時器備用位置1與通道備用位置2與通道定時器1P0.2->通道0P0.3->通道1P0.4->通道2P0.5->通道3P0.6->通道4P1.0->通道2P1.1->通道1P1.2->通道0定時器3P1.3->通道0P1.4->通道1P1.6->通道0P1.7->通道1定時器4P1.0->通道0P1.1->通道1P2.0->通道0P2.3->通道1儲備知識10.使能PWM功能一、請在下方編寫代碼,選擇P0.2、P1.0作為PWM輸出,編寫對應PERFCG代碼,并說明用到的定時器。二、請在下方編寫代碼,選擇P2.0、P1.6作為PWM輸出,編寫對應PERFCG代碼,并說明用到的定時器。思考練習:設置對應通道PWM模式–TxCCTLx如上表所述TxCCTLx,Tx的x表示定時器1、2、4其中的一個,Lx的x表示通道,任務工作模式主要工作在“比較模式”,向下比較低電平模式。故如需控制開啟P1.0PWM則需要根據(jù)下表,代碼為:T1CCTL|=0x24(00100100)。儲備知識10.使能PWM功能表:TxCCTLx寄存器位名稱復位功能介紹5:3CMP[2:0]000通道比較模式選擇000:比較設置輸出001:比較清楚輸出010:比較切換輸出011:向上比較高電平,在定時器值為0時低電平。100:向下比較低電平,在定時器值為0時高電平。2MODE0模式:選擇定時器x通道x模式0:捕獲模式1:比較模式儲備知識10.使能PWM功能一、請在下方編寫代碼,選擇P0.2、P1.0作為PWM輸出,編寫對應TxCCTLx代碼。二、請在下方編寫代碼,選擇P2.0、P1.6作為PWM輸出,編寫對應TxCCTLx代碼。思考練習:設置比較值–TxCCx如上表所述TxCCxH,Tx的x表示定時器1、2、4其中的一個,CCx表示通道,該寄存器控制著PWM周期時間。以教材開發(fā)板LED為例對應“定時器1->備用位置2->通道2、通道1->P1.0、P1.1->D3、D4”寄存器為T1CC2、T1CC1,設置比較值一般情況下只需讓TxCCxH作出改變占空比將根據(jù)其數(shù)值大小作出對應的變化,如定時器工作在自由運行模式,其最大值為255,設置成最大值則表示占空比為99%接近100%(工作在向下比較低電平模式即高電平占100%)。TxCCxL則需要一直保持在0xff數(shù)值下。儲備知識10.使能PWM功能如使P1.0控制其占空比為50%代碼如下所示:T1CC2L=0xff;//默認保持0xffT1CC2H=255;//一半占空比即除上2表:TxCCxH寄存器位名稱復位功能介紹7:0TxCCxH0x00定時器x通道x捕獲比較值,高字節(jié)表:TxCCxL寄存器位名稱復位功能介紹7:0TxCCxL0x00定時器x通道x捕獲比較值,低字節(jié)儲備知識10.使能PWM功能一、請在下方編寫代碼,選擇P0.2、P1.0作為PWM輸出占空比為30%,編寫對應TxCCxL、TxCCxH代碼。二、請在下方編寫代碼,選擇P2.0、P1.6作為PWM輸出占空比為20%,編寫對應TxCCxL、TxCCxH代碼。思考練習:儲備知識10.使能PWM功能PWM使能流程圖觀看流程圖,重新整理記憶使能PWM輸出流程,PWM流程圖如右圖所示。11.照明燈調(diào)節(jié)系統(tǒng)本任務所需軟件已安裝至電腦可直接使用。本任務所需硬件:下載器、ZigBee開發(fā)板、光照傳感器模塊、5V電源適配器、USB下載線。環(huán)境準備任務實施任務實施在上一個任務中根據(jù)獲取到的光照強度數(shù)值,來控制LED的亮度。當光照數(shù)值越低,LED亮度越低。利用定時器控制輸出信號的高電平時間和低電平時間,調(diào)整占空比來控制LED燈的亮度。任務要求編寫代碼步驟1:新建工程->工程名稱為“照明燈調(diào)節(jié)系統(tǒng)”->保存->新建源程序.c文件名稱為“main.c”->設置Opion->編寫最簡單的代碼,代碼如右所示。(新建工程具體步驟,不再重復介紹)11.照明燈調(diào)節(jié)系統(tǒng)任務實施步驟2:編寫設置I/OP1.0、P1.1為外設使用,設置I/O為輸出,代碼如下所示。11.照明燈調(diào)節(jié)系統(tǒng)#include"iocc2530.h"voidmain(){P1SEL|=0x03;//設置P1.0、P1.1為外設使用P1DIR|=0x03;//設置P1.0、P1.1為輸出P1=0x00;//設置LED全滅
while(1){
}}任務實施步驟3:編寫定時器1模式,分頻1、自由運行模式,代碼如下所示。11.照明燈調(diào)節(jié)系統(tǒng)#include"iocc2530.h"
voidmain(){P1SEL|=0x03;//設置P1.0、P1.1為外設使用P1DIR|=0x1b;//設置P1.0、P1.1為輸出P1=0;//設置LED全滅
T1CTL|=0x01;//分頻1、自由運行模式
while(1){
}}任務實施步驟4:設置定時器1使用通道2,代碼如下所示。11.照明燈調(diào)節(jié)系統(tǒng)#include"iocc2530.h"
voidmain(){P1SEL|=0x03;//設置P1.0、P1.1為外設使用P1DIR|=0x1b;//設置P1.0、P1.1為輸出P1=0;//設置LED全滅
T1CTL|=0x01;//分頻1、自由運行模式
PERCFG|=0x40;//使用通道2
while(1){
}}任務實施步驟5:編寫設置定時器1通道代碼,設置通道輸出模式為,代碼如下所示。11.照明燈調(diào)節(jié)系統(tǒng)#include"iocc2530.h"voidmain(){P1SEL|=0x03;//設置P1.0、P1.1為外設使用P1DIR|=0x1b;//設置P1.0、P1.1為輸出P1=0;//設置LED全滅T1CTL|=0x01;//分頻1、自由運行模式PERCFG|=0x40;//使用通道2
//設置通道1(P1.0)為PWM模式為向下比較低電平模式
T1CCTL1|=0x24;
//設置通道2(P1.1)為PWM模式為向下比較低電平模式
T1CCTL2|=0x24;
while(1){}}任務實施步驟6:編寫設置比較值,分別將P1.0、P1.1比較值設置為50%,20%,代碼如下所示。11.照明燈調(diào)節(jié)系統(tǒng)#include"iocc2530.h"voidmain(){P1SEL|=0x03;//設置P1.0、P1.1為外設使用P1DIR|=0x1b;//設置P1.0、P1.1為輸出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年環(huán)保行業(yè)碳捕捉技術與社會責任報告
- 保安室崗位制度
- 中醫(yī)護理中的拔罐療法
- 企業(yè)出借資金制度
- 書面答疑制度
- 專項統(tǒng)計調(diào)查制度
- 浙江中考歷史三年(2023-2025)真題分類匯編專題02 中國近現(xiàn)代史選擇題(解析版)
- 2026年浙江大學紹興研究院招聘備考題庫及參考答案詳解一套
- 2025-2030中國渦流探傷儀市場風險評估與銷售投資運作模式探討研究報告
- 2026年浙江當代海洋法治研究院行政人員招聘備考題庫附答案詳解
- 餐廳控煙制度管理制度
- 設計公司部門領導發(fā)言稿
- 深圳科技館新館展教工程常設展區(qū)整體展教方案
- 《重慶市北碚區(qū)高標準農(nóng)田建設規(guī)劃2021-2030年》
- T-CI 451-2024 構網(wǎng)型光伏變換器并網(wǎng)技術規(guī)范
- 《公路工程預算定額》(JTGT3832-2018)
- 粵港車牌合同模板
- 中級(監(jiān)控類) 消防設施操作員理論考試題及答案
- 分體電動門培訓課件
- “課程思政”教學案例及教學設計評分標準
- NB-T 10073-2018 抽水蓄能電站工程地質(zhì)勘察規(guī)程 含2021年第1號修改單
評論
0/150
提交評論