版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
西昌學院畢業(yè)論文(設計)①將GPIO調(diào)成輸出模式;②讓定時器TIM3輸出化6ms低電平向傳感器請求數(shù)據(jù)包;③將GPIO調(diào)成模擬輸入模式;④采用定時器捕獲模式及中斷響應,在傳感器返回了數(shù)據(jù)之后,將之存入HUMI中。⑤調(diào)用數(shù)據(jù)處理函數(shù)計算有效數(shù)據(jù)并將之存入指定變量以及計算串口發(fā)送數(shù)據(jù)包并存入指定數(shù)組;⑥等待主程序調(diào)用HUMI輸出函數(shù)。溫濕度采集模塊在本設計中至關重要,在DHT11程序編寫及調(diào)試時應注意其時序,端口,電平的跳變等。主機控制DHT11完成溫濕度轉(zhuǎn)換時,在每一次讀寫之前,都要對DHT11進行復位。DHT11主機發(fā)送開始信號,即:拉低數(shù)據(jù)線,保持t1(至少18ms)時間,然后拉高數(shù)據(jù)線t2(20~40us)時間,然后讀取DHT11的響應,正常的話,DHT11會拉低數(shù)據(jù)線,保持t3(40~50us)時間,作為響應信號,然后DHT11拉高數(shù)據(jù)線,保持t4(40~50us)時間后,開始輸出數(shù)據(jù)。由于DHT11與STM32間采用串行數(shù)據(jù)傳送方式,因此,在對DHT11進行讀寫編程時,必須嚴格地保證讀寫時序,否則,將無法正確讀取結(jié)果。DHT11數(shù)據(jù)發(fā)送時序圖
如圖24-26所示。圖24DHT11數(shù)據(jù)發(fā)送流程圖25DHT11輸出數(shù)字“0”的時序圖圖26DHT11輸出數(shù)字“1”的時序圖根據(jù)電路的硬件設計,在單片機控制下,傳感器DHT11檢測溫濕度數(shù)據(jù),然后送入單片機進行數(shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)被轉(zhuǎn)換成能夠在OLCD液晶顯示屏上顯示的格式,然后單片機控制溫濕度在顯示屏上實時顯示;再通過程序,將溫濕度數(shù)值與預設值進行比較,若溫度超過30℃,則發(fā)出高溫報警信號,通過程序啟動蜂鳴器,蜂鳴報警。根據(jù)硬件電路連接,DHT11的2號管腳與單片機連接,用于單片機與DHT11之間的通訊和同步。DHT11采用單總線數(shù)據(jù)格式,一次通訊時間為4ms左右,一次完整的數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式為:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)數(shù)據(jù)+8bit校驗和,如果數(shù)據(jù)正確傳送,校驗和數(shù)據(jù)就等于前4部分所得結(jié)果的末8位。主機發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機開始信號結(jié)束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù).從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集.采集數(shù)據(jù)后轉(zhuǎn)換到低速模式??偩€空閑狀態(tài)為高電平,主機把總線拉低,等待DHT11響應,主機把總線拉低時間必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號后,等待主機開始信號結(jié)束,然后發(fā)送80us低電平響應信號。主機發(fā)送開始信號結(jié)束后,延時等待20~40us后,讀DHT11的響應信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可,總線由上拉電阻拉高??偩€為低電平,說明DHT11發(fā)送了響應信號,DHT11發(fā)送響應信號后,再把總線拉高80us,準備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1。當最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進入空閑狀態(tài)。根據(jù)以上對電路與通信時序的分析,DHT11程序設計流程圖如圖27所示。圖27溫濕度監(jiān)測模塊程序流程圖參考文獻[1]王友貞.節(jié)水灌溉與農(nóng)業(yè)可持續(xù)發(fā)展[M].
中國機械出版社,2005:15—23[2]劉建輝.單片機智能控制技術[M].國防工業(yè)出版社,2007[3]吳普特,牛文全,郝宏科.現(xiàn)代化高效節(jié)水灌溉設施[M].化學工業(yè)出版社,2002:12—37[4]涂安富,金誠謙,吳崇友,盧宴,鐘偉民.幾種節(jié)水灌溉新技術分析[M].中國農(nóng)機化出版社,2005[5]劉明真,陳鴻.基于單片機智能節(jié)水灌溉系統(tǒng)的設計[J].學術問題研究,2010-06-15:08—15[6]宮建華,徐志祥,袁虎成,張家桂.基于單片機技術的灌溉控制系統(tǒng)的設計與實現(xiàn)[J].機械研究與應用,2004-04-30[7]劉瑞新.單片機原理及應用教程[M].機械工業(yè)出版社,2003-07[8]鄭毛祥.單片機應用基礎[M].人民郵電出版社,2009-02[9]鄭鋒.51單片機典型應用開發(fā)范例大全[M].中國鐵道出版社,2011[10]張連華.單片機應用系統(tǒng)設計方法[J].科學之友,2010-04[11]范風強,蘭嬋麗.單片機語言C51應用實戰(zhàn)集錦[M].電子工業(yè)出版社,2003-03-01[12]譚浩強.C程序設計[M].清華大學出版社,2006[13]趙負圖.傳感器集成電路手冊[M].化學工業(yè)出版社,2004[14]趙燕.傳感器原理及應用[M].北京大學出版,2010-02-01[15]蔡自興.智能控制[M].電子工業(yè)出版社,2004[16]吳景社,李久生.21世紀節(jié)水農(nóng)業(yè)中的高新技術重點研究領域[M].
農(nóng)業(yè)工程出版社,2003[17]李泉溪.單片機原理與應用實例仿真[M].北京:北京航空航天大學出版社,2009:38—45.致謝經(jīng)過了兩個多月的努力,我最后完成了論文的寫作。從開始接到論文題目到系統(tǒng)的實現(xiàn),再到論文文章的完成,每走一步對我來說都是新的嘗試與挑戰(zhàn),這也是我在大學期間獨立完成的最大的項目。在這段時間里,我學到了很多知識也有很多感受,從一無所知,我開始了獨立的學習和試驗,查看相關的資料和書籍,讓自己頭腦中模糊的概念逐漸清晰,使自己十分稚嫩作品一步步完善起來,每一次改善都是我學習的收獲,每一次設計的成功都會讓我興奮好一段時間。我的論文作品不是很成熟,還有很多不足之處。但是這次做論文的經(jīng)歷使我終身受益。我感受到做論文是要真真正正用心去做的一件事情,是真正的自己學習的過程和研究的過程,沒有學習就不可能有研究的潛力,沒有自己的研究,就不會有所突破,那也就不叫論文了。期望這次的經(jīng)歷能讓我在以后學習中激勵我繼續(xù)進步。在這里,我有許多想要感謝的人。首先,我要衷心感謝我的導師老師,感謝導師對我的關心與照顧。能夠在百忙中為我們細心講解論文的內(nèi)容與格式;還為我們提供實驗室供我們使用,給我們帶來方便;精心制作時間安排表,督促我們學習。老師認真的工作態(tài)度影響了我,讓我懂得問題的解決需要時間的積累;讓我明白努力總是會有收獲的;讓我體會到了生活的艱辛,現(xiàn)實的殘酷,想要綻放自己的光彩,就需要花費更多的時間,比別人更加勤奮。然后,我要感謝我的同學和舍友對我的鼓勵和幫助,在我松懈時提醒我,讓我能夠及時調(diào)整自己的狀態(tài),最終完成畢業(yè)論文。其次,我還要感謝我的家人,他們的鼓勵和支持成為了我最強的依靠,每次遇到困難時,都能及時認清自己,及時改正,以全新的姿態(tài)面對困難,解決困難。最后,由衷地感謝各位評審老師在百忙之中審閱我的本科論文和給予指導。再次感謝所有幫助過我的老師、同學、朋友以及家人。謝謝各位!代碼#ifndef__DHT11_H#define__DHT11_H#include"stm32f10x.h" #defineDHT11_GPIO_TYPEGPIOA#defineDHT11_GPIO_PINGPIO_Pin_4#defineDHT11_RCCRCC_APB2Periph_GPIOA//IO方向設置#defineDHT11_IO_IN(){DHT11_GPIO_TYPE->CRL&=0XFFF0FFFF;DHT11_GPIO_TYPE->CRL|=8<<16;}#defineDHT11_IO_OUT(){DHT11_GPIO_TYPE->CRL&=0XFFF0FFFF;DHT11_GPIO_TYPE->CRL|=3<<16;}////IO操作函數(shù) #define DHT11_DQ_OUTPAout(4)//數(shù)據(jù)端口 PA4#define DHT11_DQ_INPAin(4)//數(shù)據(jù)端口 PA4#defineu8uint8_tu8DHT11_Init(void);//初始化DHT11u8DHT11_Read_Data(u16*temp,u16*humi);//讀取溫濕度值u8DHT11_Read_Byte(void);//讀出一個字節(jié)u8DHT11_Read_Bit(void);//讀出一個位u8DHT11_Check(void);//檢測是否存在DHT11voidDHT11_Rst(void);//復位DHT11#endif#include"dht11.h"#include"sys.h"http://復位DHT11voidDHT11_Rst(void) { DHT11_IO_OUT(); //SETOUTPUTDHT11_DQ_OUT=0; //拉低DQdelay_ms(20); //拉低至少18msDHT11_DQ_OUT=1; //DQ=1 delay_us(30); //主機拉高20~40us}//等待DHT11的回應//返回1:未檢測到DHT11的存在//返回0:存在u8DHT11_Check(void) { u8retry=0; DHT11_IO_IN();//SETINPUT while(DHT11_DQ_IN&&retry<100)//DHT11會拉低40~80us { retry++; delay_us(1); }; if(retry>=100)return1; elseretry=0;while(!DHT11_DQ_IN&&retry<100)//DHT11拉低后會再次拉高40~80us { retry++; delay_us(1); }; if(retry>=100)return1; return0;}//從DHT11讀取一個位//返回值:1/0u8DHT11_Read_Bit(void) { u8retry=0; while(DHT11_DQ_IN&&retry<100)//等待變?yōu)榈碗娖?{ retry++; delay_us(1); } retry=0; while(!DHT11_DQ_IN&&retry<100)//等待變高電平 { retry++; delay_us(1); } delay_us(40);//等待40us if(DHT11_DQ_IN)return1; elsereturn0; }//從DHT11讀取一個字節(jié)//返回值:讀到的數(shù)據(jù)u8DHT11_Read_Byte(void){u8i,dat;dat=0; for(i=0;i<8;i++) { dat<<=1; dat|=DHT11_Read_Bit();} returndat;}//從DHT11讀取一次數(shù)據(jù)//temp:溫度值(范圍:0~50°)//humi:濕度值(范圍:20%~90%)//返回值:0,正常;1,讀取失敗u8DHT11_Read_Data(u16*temp,u16*humi){ floatbuf[5]; u8i; DHT11_Rst(); if(DHT11_Check()==0) { for(i=0;i<5;i++)//讀取40位數(shù)據(jù) { buf[i]=DHT11_Read_Byte(); } if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]) { *humi=buf[0]; *temp=buf[2]; } }elsereturn1; //return0; }//初始化DHT11的IO口DQ同時檢測DHT11的存在//返回1:不存在//返回0:存在 u8DHT11_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(DHT11_RCC,ENABLE); //使能PB端口時鐘 GPIO_InitStructure.GPIO_Pin=DHT11_GPIO_PIN; //PG11端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(DHT11_GPIO_TYPE,&GPIO_InitStructure); //初始化IO口 GPIO_SetBits(DHT11_GPIO_TYPE,DHT11_GPIO_PIN); //PG11輸出高 DHT11_Rst();//復位DHT11 returnDHT11_Check();//等待DHT11的回應}#ifndef__DELAY_H#define__DELAY_H #include"sys.h"voiddelay_init(void);voiddelay_ms(u16nms);voiddelay_us(u32nus);#endif#include"delay.h"staticu8fac_us=0; //us延時倍乘數(shù) staticu16fac_ms=0; //ms延時倍乘數(shù),在ucos下,代表每個節(jié)拍的ms數(shù) #ifSYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS定義了,說明要支持OS了(不限于UCOS).//當delay_us/delay_ms需要支持OS的時候需要三個與OS相關的宏定義和函數(shù)來支持//然后是3個函數(shù)://delay_osschedlock:用于鎖定OS任務調(diào)度,禁止調(diào)度//delay_osschedunlock:用于解鎖OS任務調(diào)度,重新開啟調(diào)度//delay_ostimedly:用于OS延時,可以引起任務調(diào)度.#ifdef OS_CRITICAL_METHOD //OS_CRITICAL_METHOD定義了,說明要支持UCOSII #definedelay_osrunning OSRunning //OS是否運行標記,0,不運行;1,在運行#definedelay_ostickspersec OS_TICKS_PER_SEC //OS時鐘節(jié)拍,即每秒調(diào)度次數(shù)#definedelay_osintnesting OSIntNesting //中斷嵌套級別,即中斷嵌套次數(shù)#endif//支持UCOSIII#ifdef CPU_CFG_CRITICAL_METHOD //CPU_CFG_CRITICAL_METHOD定義了,說明要支持UCOSIII #definedelay_osrunning OSRunning //OS是否運行標記,0,不運行;1,在運行#definedelay_ostickspersec OSCfg_TickRate_Hz //OS時鐘節(jié)拍,即每秒調(diào)度次數(shù)#definedelay_osintnesting OSIntNestingCtr //中斷嵌套級別,即中斷嵌套次數(shù)#endif//us級延時時,關閉任務調(diào)度(防止打斷us級延遲)voiddelay_osschedlock(void){#ifdefCPU_CFG_CRITICAL_METHOD //使用UCOSIII OS_ERRerr; OSSchedLock(&err); //UCOSIII的方式,禁止調(diào)度,防止打斷us延時#else //否則UCOSII OSSchedLock(); //UCOSII的方式,禁止調(diào)度,防止打斷us延時#endif}//us級延時時,恢復任務調(diào)度voiddelay_osschedunlock(void){ #ifdefCPU_CFG_CRITICAL_METHOD //使用UCOSIII OS_ERRerr; OSSchedUnlock(&err); //UCOSIII的方式,恢復調(diào)度#else //否則UCOSII OSSchedUnlock(); //UCOSII的方式,恢復調(diào)度#endif}//調(diào)用OS自帶的延時函數(shù)延時//ticks:延時的節(jié)拍數(shù)voiddelay_ostimedly(u32ticks){#ifdefCPU_CFG_CRITICAL_METHOD OS_ERRerr; OSTimeDly(ticks,OS_OPT_TIME_PERIODIC,&err); //UCOSIII延時采用周期模式#else OSTimeDly(ticks); //UCOSII延時#endif}//systick中斷服務函數(shù),使用ucos時用到voidSysTick_Handler(void){ if(delay_osrunning==1) //OS開始跑了,才執(zhí)行正常的調(diào)度處理 { OSIntEnter(); //進入中斷 OSTimeTick(); //調(diào)用ucos的時鐘服務程序 OSIntExit(); //觸發(fā)任務切換軟中斷 }}#endif //初始化延遲函數(shù)//當使用OS的時候,此函數(shù)會初始化OS的時鐘節(jié)拍//SYSTICK的時鐘固定為HCLK時鐘的1/8//SYSCLK:系統(tǒng)時鐘voiddelay_init(){#ifSYSTEM_SUPPORT_OS //如果需要支持OS. u32reload;#endif SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //選擇外部時鐘HCLK/8 fac_us=SystemCoreClock/8000000; //為系統(tǒng)時鐘的1/8#ifSYSTEM_SUPPORT_OS //如果需要支持OS. reload=SystemCoreClock/8000000; //每秒鐘的計數(shù)次數(shù)單位為K reload*=1000000/delay_ostickspersec; //根據(jù)delay_ostickspersec設定溢出時間 //reload為24位寄存器,最大值:16777216,在72M下,約合1.86s左右 fac_ms=1000/delay_ostickspersec; //代表OS可以延時的最少單位 SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk; //開啟SYSTICK中斷 SysTick->LOAD=reload; //每1/delay_ostickspersec秒中斷一次 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開啟SYSTICK#else fac_ms=(u16)fac_us*1000; //非OS下,代表每個ms需要的systick時鐘數(shù)#endif} #ifSYSTEM_SUPPORT_OS //如果需要支持OS.//延時nus//nus為要延時的us數(shù). voiddelay_us(u32nus){ u32ticks; u32told,tnow,tcnt=0; u32reload=SysTick->LOAD; //LOAD的值 ticks=nus*fac_us; //需要的節(jié)拍數(shù) tcnt=0; delay_osschedlock(); //阻止OS調(diào)度,防止打斷us延時 told=SysTick->VAL; //剛進入時的計數(shù)器值 while(1) { tnow=SysTick->VAL; if(tnow!=told) { if(tnow<told)tcnt+=told-tnow; //這里注意一下SYSTICK是一個遞減的計數(shù)器就可以了. elsetcnt+=reload-tnow+told; told=tnow; if(tcnt>=ticks)break; //時間超過/等于要延遲的時間,則退出. } }; delay_osschedunlock(); //恢復OS調(diào)度 }//延時nms//nms:要延時的ms數(shù)voiddelay_ms(u16nms){ if(delay_osrunning&&delay_osintnesting==0) //如果OS已經(jīng)在跑了,并且不是在中斷里面(中斷里面不能任務調(diào)度) { if(nms>=fac_ms) //延時的時間大于OS的最少時間周期 { delay_ostimedly(nms/fac_ms); //OS延時 } nms%=fac_ms; //OS已經(jīng)無法提供這么小的延時了,采用普通方式延時 } delay_us((u32)(nms*1000)); //普通方式延時}#else//不用OS時//延時nus//nus為要延時的us數(shù). voiddelay_us(u32nus){ u32temp; SysTick->LOAD=nus*fac_us; //時間加載 SysTick->VAL=0x00; //清空計數(shù)器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開始倒數(shù) do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待時間到達 SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關閉計數(shù)器 SysTick->VAL=0X00; //清空計數(shù)器 }//延時nms//注意nms的范圍//SysTick->LOAD為24位寄存器,所以,最大延時為://nms<=0xffffff*8*1000/SYSCLK//SYSCLK單位為Hz,nms單位為ms//對72M條件下,nms<=1864voiddelay_ms(u16nms){ u32temp; SysTick->LOAD=(u32)nms*fac_ms; //時間加載(SysTick->LOAD為24bit) SysTick->VAL=0x00; //清空計數(shù)器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開始倒數(shù) do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待時間到達 SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關閉計數(shù)器 SysTick->VAL=0X00; //清空計數(shù)器 }#endif#ifndef__SYS_H#define__SYS_H #include"stm32f10x.h"http://0,不支持ucos//1,支持ucos#defineSYSTEM_SUPPORT_OS 0 //定義系統(tǒng)文件夾是否支持UCOS //IO口操作宏定義#defineBITBAND(addr,bitnum)((addr&0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bitnum<<2))#defineMEM_ADDR(addr)*((volatileunsignedlong*)(addr))#defineBIT_ADDR(addr,bitnum)MEM_ADDR(BITBAND(addr,bitnum))//IO口地址映射#defineGPIOA_ODR_Addr(GPIOA_BASE+12)//0x4001080C#defineGPIOB_ODR_Addr(GPIOB_BASE+12)//0x40010C0C#defineGPIOC_ODR_Addr(GPIOC_BASE+12)//0x4001100C#defineGPIOD_ODR_Addr(GPIOD_BASE+12)//0x4001140C#defineGPIOE_ODR_Addr(GPIOE_BASE+12)//0x4001180C#defineGPIOF_ODR_Addr(GPIOF_BASE+12)//0x40011A0C#defineGPIOG_ODR_Addr(GPIOG_BASE+12)//0x40011E0C#defineGPIOA_IDR_Addr(GPIOA_BASE+8)//0x40010808#defineGPIOB_IDR_Addr(GPIOB_BASE+8)//0x40010C08#defineGPIOC_IDR_Addr(GPIOC_BASE+8)//0x40011008#defineGPIOD_IDR_Addr(GPIOD_BASE+8)//0x40011408#defineGPIOE_IDR_Addr(GPIOE_BASE+8)//0x40011808#defineGPIOF_IDR_Addr(GPIOF_BASE+8)//0x40011A08#defineGPIOG_IDR_Addr(GPIOG_BASE+8)//0x40011E08//IO口操作,只對單一的IO口!//確保n的值小于16!#definePAout(n)BIT_ADDR(GPIOA_ODR_Addr,n)//輸出#definePAin(n)BIT_ADDR(GPIOA_IDR_Addr,n)//輸入#definePBout(n)BIT_ADDR(GPIOB_ODR_Addr,n)//輸出#definePBin(n)BIT_ADDR(GPIOB_IDR_Addr,n)//輸入#definePCout(n)BIT_ADDR(GPIOC_ODR_Addr,n)//輸出#definePCin(n)BIT_ADDR(GPIOC_IDR_Addr,n)//輸入#definePDout(n)BIT_ADDR(GPIOD_ODR_Addr,n)//輸出#definePDin(n)BIT_ADDR(GPIOD_IDR_Addr,n)//輸入#definePEout(n)BIT_ADDR(GPIOE_ODR_Addr,n)//輸出#definePEin(n)BIT_ADDR(GPIOE_IDR_Addr,n)//輸入#definePFout(n)BIT_ADDR(GPIOF_ODR_Addr,n)//輸出#definePFin(n)BIT_ADDR(GPIOF_IDR_Addr,n)//輸入#definePGout(n)BIT_ADDR(GPIOG_ODR_Addr,n)//輸出#definePGin(n)BIT_ADDR(GPIOG_IDR_Addr,n)//輸入//以下為匯編函數(shù)voidWFI_SET(void); //執(zhí)行WFI指令voidINTX_DISABLE(void);//關閉所有中斷voidINTX_ENABLE(void); //開啟所有中斷voidMSR_MSP(u32addr); //設置堆棧地址#endif#include"sys.h"http://THUMB指令不支持匯編內(nèi)聯(lián)//采用如下方法實現(xiàn)執(zhí)行匯編指令WFIvoidWFI_SET(void){ __ASMvolatile("wfi"); }//關閉所有中斷voidINTX_DISABLE(void){ __ASMvolatile("cpsidi");}//開啟所有中斷voidINTX_ENABLE(void){ __ASMvolatile("cpsiei"); }//設置棧頂?shù)刂?/addr:棧頂?shù)刂穇_asmvoidMSR_MSP(u32addr){MSRMSP,r0 //setMainStackvalueBXr14}#ifndef__LCD_H#define__LCD_H #include"sys.h"#defineRSPCout(14) //RS???#defineENPCout(15)//ENvoidLCD1602_Init(void); //3????voidLCD1602_Write_Dat(u8dat);voidLCD1602_Write_Cmd(u8cmd);voidLCD1602_Show_Str(u8x,u8y,u8*str);voidLCD1602_Set_Cursor(u8x,u8y);voidLCD1602_Show_dat(u8x,u8y,u8dat); #endif#include"lcd.h"#include"delay.h"#include"stdio.h"#include"sys.h"voidGPIO_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);//GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;//GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 氣體壓縮機械的綠色制造與環(huán)保標準考核試卷
- 電子智能健康監(jiān)測設備市場考核試卷
- 電阻器溫度系數(shù)與精度等級考核試卷
- 生物質(zhì)成型燃料的安全生產(chǎn)與管理考核試卷
- 2024年水泥路面施工合同履行保障與激勵機制合同范本3篇
- 曲棍球場地燈光照明設計考核試卷
- 畜牧養(yǎng)殖機械制造考核試卷
- 掛毯藝術的視覺傳達效果研究考核試卷
- 水果品嘗課程設計
- 2024年度地材環(huán)保認證及采購支持服務合同3篇
- 2024年度油漆涂料生產(chǎn)線租賃合同3篇
- 2024-2024年上海市高考英語試題及答案
- 2024-2025學年上學期天津初中地理八年級期末模擬卷2
- 2024統(tǒng)編版七年級語文上冊第四單元知識清單
- 電競行業(yè)電競酒店運營管理解決方案
- 2024年電梯修理(T)特種作業(yè)取證(江蘇)考試復習題庫(含答案)
- 慶祝澳門回歸25周年主題班會 課件 (共22張)
- 《藥事管理與法規(guī)》期末考試復習題及答案
- 山東省濟南市2023-2024學年高二上學期期末考試化學試題 附答案
- 血液病染色體
- 幼兒園膳食管理委員會組織結(jié)構概述
評論
0/150
提交評論