CT107D編程手冊(cè)(DOC)_第1頁(yè)
CT107D編程手冊(cè)(DOC)_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余15頁(yè)可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、10口編程IO 編程,該開發(fā)板使用了573 鎖存器,通過 P2 口的 5,6,7 位連接 3-8 譯碼器,擴(kuò)展出了 8個(gè)口,其中4個(gè)口分別連接 4 個(gè)573鎖存器,這里以 LED的鎖存器來舉例:原理圖 5 7 3:分析代碼:P2=(P2 & 0 xlf)|0 x80);其中 Oxlf = OOOl llll, P2與 Oxl f 進(jìn)行與運(yùn)算,高三位清零,其余位保持原來狀態(tài),不改變,即把控制 3-8譯碼器的高三位留出來:接著再或上 0 x80; 容易發(fā)現(xiàn) 0X80=1000OOOO;或運(yùn)算,與 l 或結(jié)果為 l,與 0 或結(jié)果不變,所以或上 0 x8 0只需看 P2的高三位,則高三位為

2、10 0, 對(duì)應(yīng) 3-8譯碼器的話,P2人 7=l;P2 人 6 = 0;P2人 5 = 0;所以輸出 Y4 = 0;Y4 再經(jīng)過與非運(yùn)算,看下圖示:則輸出 Y4C=l;即 LED 對(duì)應(yīng)的鎖存器的片選信號(hào)被選中,鎖存器打通,接下來就可以對(duì) P0口進(jìn)行操作,操作完之后,P2=P2 & 0 xlf;P2高三位直接清零,此時(shí)Y4C=0,則把鎖存器鎖上了。類似的方法,數(shù)碼管、蜂鳴器等都是如此操作,選中鎖存器代碼:P2= ( P2&Oxlf) | (這里填對(duì)應(yīng)鎖存器的位移號(hào))。二、數(shù)碼管動(dòng)態(tài)掃描和定時(shí)器數(shù)碼管顯示分為段選和位選,數(shù)碼管定義和顯示函數(shù):Codeun sig nedchart

3、ab=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;un sig ned chardspbuf=10,10,10,10,10,10,10,10;un sig ned chardspcom=0;void display。/段選,消隱P2=(P2&0 x1f)|0 xe0);P0=0 xff;P2=P2&0 x1f;/位選P2=(P2&0 x1f)|0 xc0);P0=(117:5 8:5 0Ds130 2_Single_Byte_Write(0 x8e,0 x00); 寫操作Ds1302_Si ng

4、le_Byte_Write(0 x85, (17/10)v4 |(17);寫時(shí)Ds1302_Si ngle_Byte_Write(0 x83, (58/10)4 |(58);/寫分Ds1302_Si ngle_Byte_Write(0 x81, (50/10)4 |(50);寫秒Ds1302_Single_Byte_Write(0 x8e,0 x80); 寫保護(hù)即轉(zhuǎn)換的公式是:(Value/10)v4)*10 +(ReadValue&OxOF);八進(jìn)制轉(zhuǎn)十進(jìn)制-ReadValue=Ds1302_Si ngle_Byte_Read(0 x85); hour=(ReadValue&

5、0 x70)4)*10+(ReadValue&OxOF);!(這句一定不要省)Ds1302_Si ngle_Byte_Write(OxOO, OxOO);/ 寫操作ReadValue=Ds1302_Si ngle_Byte_Read(0 x83);minu te=(ReadValue&0 x70)4)*10 +(ReadValue&0 x0F);Ds1302_Si ngle_Byte_Write(0 x00, 0 x00);/ 寫操作ReadValue=Ds1302_Si ngle_Byte_Read(0 x81); sec=(ReadValue&0 x70)4

6、)*10+(ReadValue&0 x0F);Ds1302_Si ngle_Byte_Write(0 x00, 0 x00);/ 寫操作顯示:dspbuf0=hour/10;dspbuf1=hour;dspbuf2=mi nu te/10;dspbuf3=minu te;dspbuf4=sec/10; dspbuf5=sec;七、PCF8591 與 IIC 總線的使用(1) IIC 總線的使用:比賽提供了 IIC 的兩個(gè)庫(kù)文件,IIC.h;IIC.c ,其中需要注意的函數(shù)是:其中,該函數(shù)是初始化的,當(dāng)使用 AD 轉(zhuǎn)換的時(shí)候需要在 main 函數(shù)開始時(shí)調(diào)用,該函數(shù)內(nèi) 部只需看這句代碼即可

7、: i2c_sendbyte(0 x03);/ADC 通道 3, 板上有 4 個(gè)模擬輸入口, 分別 為 0,1,2,3 ;設(shè)置哪一個(gè)模擬輸入口就是根據(jù)這句代碼,0 x03 表示通道 3,這是根據(jù)芯片手 冊(cè)配置的,如圖:8 位前 6 位不用管,都為 0,最后兩位就是配置選擇哪一個(gè)通道的。 第二個(gè)函數(shù):讀取AD轉(zhuǎn)換后的數(shù)值,這個(gè)函數(shù)直接調(diào)用就可以了,函數(shù)內(nèi)部如何實(shí)現(xiàn)不用管,但是需要 注意的是:該函數(shù)掃描調(diào)用最好是 100ms。第三個(gè)函數(shù),上面的都是 AD 轉(zhuǎn)換,即模擬信號(hào)轉(zhuǎn)數(shù)字信號(hào),下面這個(gè)函數(shù)是 DA 轉(zhuǎn)換,數(shù) 字信號(hào)轉(zhuǎn)換成模擬信號(hào),就是單片機(jī)輸出數(shù)字信號(hào),用萬能表去量單片機(jī)引出的引腳,量一 下

8、電壓大小,這個(gè)估計(jì)比賽不會(huì)考,不過預(yù)防萬一:該函數(shù)和上面兩個(gè)函數(shù)分離開來的,一、二函數(shù)是要在一起使用,初始化后之后才能調(diào)用, 第三個(gè)加入頭文件,直接調(diào)用即可,比較簡(jiǎn)單!上面說法有誤,A/D 轉(zhuǎn)換的初始化函數(shù)和讀取轉(zhuǎn)換后的數(shù)值都需要自己寫。這里了解一下 PCF8591 只需根據(jù)時(shí)序格式發(fā)送地址字節(jié)和控制字節(jié):,這是地址字節(jié),其 中A2,A1, AO 硬件已經(jīng)接地,故都為 0,最低位表示的是你要從 IIC 總線上讀數(shù)還是寫數(shù) 據(jù),表示讀,0表示寫,即讀數(shù)據(jù)發(fā)的地址是:0 x91;寫數(shù)據(jù)發(fā)的地址是0 x90; 控制字節(jié):由芯片資料知,控制字節(jié)有 8 位,有兩位固定是 0,除了第 0、1 位需要自己設(shè)

9、置,其他的 我們都設(shè)為 0,那些位都是一些具體的功能,我們暫時(shí)用不著,不用管先,第 0、1 位是模 擬通道選擇,PCF8591 上提供了 4 路模擬通道,根據(jù)需求進(jìn)行選擇,如選擇通道 3 即發(fā)送 控制字節(jié):0 x03;地址字節(jié)和控制字節(jié)都明白了,接下來根據(jù)時(shí)序要求進(jìn)行配置,A/D 轉(zhuǎn)換需要一個(gè)初始化函 數(shù):Init_ADpcf8591();和一個(gè)獲得 AD 轉(zhuǎn)換后的數(shù)值的函數(shù):adc_pcf8591();其中初始化函 數(shù)的作用是發(fā)送 AD 轉(zhuǎn)換的控制字節(jié);adc_pcf8591()發(fā)送讀取得地址并讀回?cái)?shù)據(jù),先寫指 令才能讀;格式如下:一這個(gè)是初始化的協(xié)議:分別是 staHIIC、(地址寫)發(fā)送

10、 0 x90、等待應(yīng)答、發(fā)送控制字節(jié)(AD 這里是選擇通道的指令,如選擇通道 3,0 x03)0 x03、等待應(yīng)答、(達(dá)到目的,沒有后續(xù) 的操作,直接停止總線)StopIIC.初始化的函數(shù)就是如此寫;adc_pcf8591 的協(xié)議:依次是: stabile、 發(fā)送讀地址0 x91、 等待應(yīng)答、 讀回AD轉(zhuǎn)換后的數(shù)值、 讀回后發(fā)送應(yīng)答 給PCF8591,表示收到,并且不需要再返回應(yīng)答,要傳參數(shù) 1,如圖紅圈示,即函數(shù) Ack(1);、 最后 stopIIC 總線。D/A 轉(zhuǎn)換(其實(shí)挺麻煩,先前太自信了,哈):所謂 D/A 轉(zhuǎn)換其實(shí)就是把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)輸出,用 單片機(jī)發(fā)數(shù)字通過 D/A 轉(zhuǎn)

11、換成 電壓輸出,檢測(cè)的方法可以用 電壓表測(cè)量。配置的方法跟 A/D 類似,先發(fā)地址字節(jié),再發(fā)控制字節(jié),然后把數(shù)字發(fā)出去(AD 這里是接 收模擬信號(hào),是相反的機(jī)制)。控制字節(jié):如圖示,控制字節(jié)的第 6 位是 1 的話是模擬輸出模式,其余位全為 0,發(fā)送格式跟 AD 一樣: 代碼如一開始圖示。(2)EEPROM 的使用,AT24C02,可以掉電依舊保存上一次操作的數(shù)據(jù),下次上電后接著運(yùn)行。需要注意兩個(gè)函數(shù),一個(gè)是寫進(jìn) EEPROM 里面保存,再次上電再?gòu)睦锩孀x回來: 其中寫函數(shù)需要指定 AT24C02 的地址以及需要寫入的數(shù)據(jù),讀函數(shù)要想取回寫進(jìn)的數(shù)據(jù), 需要從相同的地址里面讀:其中 AT24C0

12、2 的存儲(chǔ)地址是 0 x00,可以是其他地址,如 0 x02,但是讀和寫的地址必須一 致。寫與讀的協(xié)議與AD或 DA 相同,由芯片資料及原理圖知 EEPROM (AT24C02)的寫地址為 OxaO;讀地址為 0 xal ;注意:讀數(shù)的時(shí)候讀出一個(gè)數(shù)之后發(fā)送一個(gè)應(yīng)答信號(hào),若 ACK( 0)表示還想繼 續(xù)讀下一個(gè)字節(jié),若 ACK(l );則不想再讀數(shù),讓 EEPROM 停止發(fā)送。八、DS18B20 時(shí)鐘芯片的使用比賽有提供代碼,只需記住這個(gè)函數(shù):讀取溫度值,整數(shù)(其中,提示 EA 總中斷要打開、關(guān)閉,也可以不用)。浮點(diǎn)數(shù)的表示。注意,只有提供函數(shù),沒有提供讀取溫度的函數(shù),即上面的那個(gè),只有下面:

13、這幾個(gè)函數(shù)。編寫讀取溫度的函數(shù)需要記住 DS13B20 的三條指令,OxCC,跳過 ROM 檢測(cè);然后啟動(dòng)溫度 轉(zhuǎn)換:0 x44;轉(zhuǎn)換需要時(shí)間,這里精確延時(shí)Delay_OneWire(200);然后再次初始化,再次執(zhí)行跳過,然后讀取溫度指令:0 xBE.;注意讀出的溫度是低字節(jié)先,然后才是高字節(jié),分別用 兩個(gè)變量保存還要通過公式轉(zhuǎn)換成我們需要的整數(shù)或浮點(diǎn)數(shù)。完整代碼如上圖示。九、超聲波傳感器的使用#includereg52.h /定義 51 單片機(jī)特殊功能寄存器#in clude in tri ns.h#in clude absacc.h12M 用這個(gè)/11.0592 用這個(gè)#defi ne

14、some nop_ no p_();_ no p_() ;_n op_();_ no p_() ;_n op_();_n op_();_ nop_();sbit TX =P1A0; / 發(fā)射引腳sbit RX =P1A1;/ 接收引腳code un sig ned char tab = 0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;un sig ned char dspbuf8 =10,10,10,10,10,10,10,10; /顯示緩沖區(qū)un sig ned char dspcom =0;un sig n

15、ed int intr =0;bit s_flag;un sig ned int t = 0;voidse nd_wave(void);void display(void);void main (void)un sig ned int dista nee;TMOD|= 0 x11; /配置定時(shí)器工作模式TH0= (65536-2000)/256;TL0= (65536-2000)%6;TH1= 0;TL1= 0;EA =1;ET0= 1; /打開定時(shí)器 0 中斷TR0= 1; /啟動(dòng)定時(shí)器while(1)if(s_flag)s_flag = 0;t = TH1;t = 8;t |= TL1;d

16、ista nee = (un sig ned in t)(t*0.017); / 計(jì)算距離TH1 = 0;TL1 = 0;dspbuf5 = dista nce/100;dspbuf6 = dista nceO/1O;dspbuf7 =dista nee;/定時(shí)器 o 中斷服務(wù)函數(shù)voidisr_timer_0(void) in terrupt 1 /默認(rèn)中斷優(yōu)先級(jí) 1TH0= (65536-2000)/256;TL0= (65536-2000)%6; / 定時(shí)器重載display(); /2ms 執(zhí)行一次if(+i ntr = 200)s_flag = 1; intr = 0;/顯示函數(shù)void display(void)XBYTE0 xE000 = 0 xff; / 去除鬼影XBYTE0 xC000 = (1165)set=0;/ 電機(jī)占空比十一、擴(kuò)展:宏定義編程方法(推薦)常用的可以宏定義,省時(shí),下面以 數(shù)碼管為例:#defi ne rst573P2&=0 x1f#defi ne Y6CP2= (P2&0 x1f)|0 xc0)#defi ne Y7CP2= (P2&0 x1f)|0 xe0)code un sig ned char tab = 0 xc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論