




已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
一、IO口編程IO編程,該開發(fā)板使用了573鎖存器,通過P2口的5,6,7位連接3-8譯碼器,擴展出了8個口,其中4個口分別連接4個573鎖存器,這里以的鎖存器來舉例:原理圖:分析代碼:();其中,與進行與運算,高三位清零,其余位保持原來狀態(tài),不改變,即把控制譯碼器的高三位留出來:接著再或上;容易發(fā)現(xiàn);或運算,與或結果為,與或結果不變,所以或上只需看的高三位,則高三位為,對應譯碼器的話,;所以輸出;再經(jīng)過與非運算,看下圖示:則輸出;即對應的鎖存器的片選信號被選中,鎖存器打通,接下來就可以對口進行操作,操作完之后,;高三位直接清零,此時Y4C=0,則把鎖存器鎖上了。類似的方法,數(shù)碼管、蜂鳴器等都是如此操作,選中鎖存器代碼:P2=(P2&0x1f)|(這里填對應鎖存器的位移號)。二、 數(shù)碼管動態(tài)掃描和定時器數(shù)碼管顯示分為段選和位選,數(shù)碼管定義和顯示函數(shù):Code unsigned char tab = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;unsigned chardspbuf=10,10,10,10,10,10,10,10;unsigned chardspcom=0;void display()/段選,消隱P2=(P2&0x1f)|0xe0);P0=0xff;P2=P2&0x1f;/位選P2=(P2&0x1f)|0xc0);P0=(1因為秒的范圍是0-59,所以6,5,4位表示秒的十位,3,2,1,0表示個位,十位最大是5,所以三位即可。第二行:跟上面一樣;第三行:7位:1為12小時制,0為24小時制;5位:12小時制時為0表示上午,1表示下午,24小時制時,和4位一起表示小時的十位;其余的時間一樣的表示。倒數(shù)第二行:只看7位:為1時禁止寫數(shù)據(jù),所以開始寫數(shù)據(jù)時必須置0;讀數(shù)時:!需要加“寫操作這一行代碼”。讀的話直接按照命令讀即可。DS1302進階(BCD碼轉換):解決之前60秒不能進位的問題。1)寫入初始值時,要把10十進制數(shù)轉換為碼,例:寫入時間:Ds1302_Single_Byte_Write(0x8e,0x00);/寫操作Ds1302_Single_Byte_Write(0x85, (17/10)4 |(17);/寫時 Ds1302_Single_Byte_Write(0x83, (58/10)4 |(58);/寫分Ds1302_Single_Byte_Write(0x81, (50/10)4 |(50);/寫秒Ds1302_Single_Byte_Write(0x8e,0x80);/寫保護即轉換的公式是:(Value/10)4)*10 +(ReadValue&0x0F);八進制轉十進制-ReadValue=Ds1302_Single_Byte_Read(0x85); hour=(ReadValue&0x70)4)*10 +(ReadValue&0x0F); ?。ㄟ@句一定不要?。?Ds1302_Single_Byte_Write(0x00, 0x00);/寫操作 ReadValue=Ds1302_Single_Byte_Read(0x83); minute=(ReadValue&0x70)4)*10 +(ReadValue&0x0F); Ds1302_Single_Byte_Write(0x00, 0x00);/寫操作 ReadValue=Ds1302_Single_Byte_Read(0x81); sec=(ReadValue&0x70)4)*10 +(ReadValue&0x0F); Ds1302_Single_Byte_Write(0x00, 0x00);/寫操作顯示: dspbuf0=hour/10; dspbuf1=hour; dspbuf2=minute/10; dspbuf3=minute; dspbuf4=sec/10; dspbuf5=sec;七、 PCF8591與IIC總線的使用(1) IIC總線的使用:比賽提供了IIC的兩個庫文件,IIC.h;IIC.c,其中需要注意的函數(shù)是:其中,該函數(shù)是初始化的,當使用AD轉換的時候需要在main函數(shù)開始時調用,該函數(shù)內部只需看這句代碼即可:i2c_sendbyte(0x03);/ADC通道3,板上有4個模擬輸入口,分別為0,1,2,3;設置哪一個模擬輸入口就是根據(jù)這句代碼,0x03表示通道3,這是根據(jù)芯片手冊配置的,如圖:8位前6位不用管,都為0,最后兩位就是配置選擇哪一個通道的。第二個函數(shù):讀取AD轉換后的數(shù)值,這個函數(shù)直接調用就可以了,函數(shù)內部如何實現(xiàn)不用管,但是需要注意的是:該函數(shù)掃描調用最好是100ms。第三個函數(shù),上面的都是轉換,即模擬信號轉數(shù)字信號,下面這個函數(shù)是DA轉換,數(shù)字信號轉換成模擬信號,就是單片機輸出數(shù)字信號,用萬能表去量單片機引出的引腳,量一下電壓大小,這個估計比賽不會考,不過預防萬一:該函數(shù)和上面兩個函數(shù)分離開來的,一、二函數(shù)是要在一起使用,初始化后之后才能調用,第三個加入頭文件,直接調用即可,比較簡單!上面說法有誤,A/D轉換的初始化函數(shù)和讀取轉換后的數(shù)值都需要自己寫。這里了解一下PCF8591只需根據(jù)時序格式發(fā)送地址字節(jié)和控制字節(jié):,這是地址字節(jié),其中A2,A1,A0硬件已經(jīng)接地,故都為0,最低位表示的是你要從IIC總線上讀數(shù)還是寫數(shù)據(jù),1表示讀,0表示寫,即讀數(shù)據(jù)發(fā)的地址是:0x91;寫數(shù)據(jù)發(fā)的地址是0x90;控制字節(jié):由芯片資料知,控制字節(jié)有8位,有兩位固定是0,除了第0、1位需要自己設置,其他的我們都設為0,那些位都是一些具體的功能,我們暫時用不著,不用管先,第0、1位是模擬通道選擇,PCF8591上提供了4路模擬通道,根據(jù)需求進行選擇,如選擇通道3即發(fā)送控制字節(jié):0x03;地址字節(jié)和控制字節(jié)都明白了,接下來根據(jù)時序要求進行配置,A/D轉換需要一個初始化函數(shù):Init_ADpcf8591();和一個獲得AD轉換后的數(shù)值的函數(shù):adc_pcf8591(); 其中初始化函數(shù)的作用是發(fā)送AD轉換的控制字節(jié);adc_pcf8591()發(fā)送讀取得地址并讀回數(shù)據(jù),先寫指令才能讀;格式如下:這個是初始化的協(xié)議:分別是startIIC、(地址寫)發(fā)送0x90、等待應答、發(fā)送控制字節(jié)(AD這里是選擇通道的指令,如選擇通道3,0x03)0x03、等待應答、(達到目的,沒有后續(xù)的操作,直接停止總線)StopIIC.初始化的函數(shù)就是如此寫;adc_pcf8591的協(xié)議:依次是:startIIc、發(fā)送讀地址0x91、等待應答、讀回AD轉換后的數(shù)值、讀回后發(fā)送應答給PCF8591,表示收到,并且不需要再返回應答,要傳參數(shù)1,如圖紅圈示,即函數(shù)Ack(1);、最后stopIIC總線。D/A轉換(其實挺麻煩,先前太自信了,哈):所謂D/A轉換其實就是把數(shù)字信號轉換成模擬信號輸出,用單片機發(fā)數(shù)字通過D/A轉換成電壓輸出,檢測的方法可以用電壓表測量。配置的方法跟A/D類似,先發(fā)地址字節(jié),再發(fā)控制字節(jié),然后把數(shù)字發(fā)出去(AD這里是接收模擬信號,是相反的機制)??刂谱止?jié):如圖示,控制字節(jié)的第6位是1的話是模擬輸出模式,其余位全為0,發(fā)送格式跟AD一樣:代碼如一開始圖示。(2) EEPROM的使用,AT24C02,可以掉電依舊保存上一次操作的數(shù)據(jù),下次上電后接著運行。需要注意兩個函數(shù),一個是寫進EEPROM里面保存,再次上電再從里面讀回來:其中寫函數(shù)需要指定AT24C02的地址以及需要寫入的數(shù)據(jù),讀函數(shù)要想取回寫進的數(shù)據(jù),需要從相同的地址里面讀:其中AT24C02的存儲地址是0x00,可以是其他地址,如0x02,但是讀和寫的地址必須一致。寫與讀的協(xié)議與AD或相同,由芯片資料及原理圖知()的寫地址為;讀地址為;注意:讀數(shù)的時候讀出一個數(shù)之后發(fā)送一個應答信號,若()表示還想繼續(xù)讀下一個字節(jié),若();則不想再讀數(shù),讓停止發(fā)送。八、 DS18B20時鐘芯片的使用比賽有提供代碼,只需記住這個函數(shù):讀取溫度值,整數(shù)(其中,提示EA總中斷要打開、關閉,也可以不用)。浮點數(shù)的表示。注意,只有提供函數(shù),沒有提供讀取溫度的函數(shù),即上面的那個,只有下面:這幾個函數(shù)。編寫讀取溫度的函數(shù)需要記住DS13B20的三條指令,0xCC,跳過ROM檢測;然后啟動溫度轉換:0x44;轉換需要時間,這里精確延時Delay_OneWire(200);然后再次初始化,再次執(zhí)行跳過,然后讀取溫度指令:0xBE.;注意讀出的溫度是低字節(jié)先,然后才是高字節(jié),分別用兩個變量保存還要通過公式轉換成我們需要的整數(shù)或浮點數(shù)。完整代碼如上圖示。九、 超聲波傳感器的使用#includereg52.h/定義51單片機特殊功能寄存器#include intrins.h#include absacc.h/12M用這個/11.0592用這個#define somenop_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();sbit TX =P10;/發(fā)射引腳sbit RX =P11;/接收引腳code unsigned char tab = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff;unsigned char dspbuf8 =10,10,10,10,10,10,10,10;/顯示緩沖區(qū)unsigned char dspcom =0;unsigned int intr =0;bit s_flag;unsigned int t = 0;voidsend_wave(void);void display(void);void main(void) unsigned int distance; TMOD|= 0x11;/配置定時器工作模式 TH0= (65536-2000)/256; TL0= (65536-2000)%6; TH1= 0; TL1= 0; EA =1; ET0= 1;/打開定時器0中斷 TR0= 1;/啟動定時器 while(1) if(s_flag) s_flag = 0; t = TH1; t = 8; t |= TL1; distance = (unsigned int)(t*0.017); /計算距離 TH1 = 0; TL1 = 0; dspbuf5 = distance/100; dspbuf6 = distance0/10; dspbuf7 =distance; /定時器0中斷服務函數(shù)voidisr_timer_0(void)interrupt 1 /默認中斷優(yōu)先級 1 TH0= (65536-2000)/256; TL0= (65536-2000)%6;/定時器重載 display(); /2ms執(zhí)行一次if(+intr = 200) s_flag = 1; intr = 0; /顯示函數(shù) void display(void) XBYTE0xE000 = 0xff;/去除鬼影 XBYTE0xC000 = (1165)set=0; /電機占空比十一、 擴展:宏定義編程方法(推薦)常用的可以宏定義,省時,下面以數(shù)碼管為例:#define rst573P2&=0x1f#define Y6CP2=(P2&0x1f)|0xc0)#define Y7CP2=(P2&0x1f)|0xe0)code unsigned char tab =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《寫字樓租賃合同》簽訂流程
- 甘肅省天水市2024~2025學年 高一下冊第三階段測試(5月月考)數(shù)學試卷附解析
- 福建省龍巖市2024-2025學年高二下冊第二次月考(3月)數(shù)學試卷附解析
- 安徽省六安市2024~2025學年 高二下冊4月月考B班數(shù)學試卷附解析
- 2025屆廣東省中考二模數(shù)學試卷
- 虛實界限-青年亞文化在數(shù)字時代的抵抗性邊界-洞察闡釋
- 上海交通大學醫(yī)學院附屬瑞金醫(yī)院招聘筆試真題2024
- 陜西延安“優(yōu)師計劃地方專項”師范畢業(yè)生招聘筆試真題2024
- 2025年古文字基礎試題
- 智能編程輔助工具-第1篇-洞察闡釋
- 設備電氣接線規(guī)范
- 胃管非計劃拔管的原因分析及預防措施課件
- 2024-2025學年七年級下學期數(shù)學期中測試(浙江杭州市專用)(含答案)
- 射頻基礎知識
- 超星爾雅學習通《法律基礎(西南政法大學)》2025章節(jié)測試答案
- T-CALC 006-2024 住院糖尿病足患者人文關懷護理規(guī)范
- 2025年高考作文備考之一個人物寫遍所有作文:人物素材王興興
- Mission-Planner地面站操作手冊
- 2025年大學生信息素養(yǎng)大賽(校賽)培訓考試題庫(附答案)
- DBJ50T-325-2019 山林步道技術標準
- 四川巴中歷年中考語文文言文閱讀試題18篇(含答案與翻譯)(截至2024年)
評論
0/150
提交評論