版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、嵌入式實(shí)時(shí)操作系統(tǒng),第七章 在51單片機(jī)上移植c/os-II,R,R,7.3 應(yīng)用舉例,7.3.1 LED數(shù)碼顯示器的驅(qū)動程序 LED顯示以其簡單、使用、價(jià)格低廉等優(yōu)點(diǎn),使它是單片機(jī)應(yīng)用中經(jīng)常使用的一種顯示方式。其中一種方案的硬件電路如圖7-3所示。,PB.0,PB.1,PB.2,PB.3,PB.4,PB.5,PB.6,PB.7,PA.7,PA.6,PA.5,PA.4,PA.3,PA.2,PA.1,PA.0,AD7,AD0,ALE,IO/M,CE,WR,RD,P0端口,ALE,P2.0,P2.7,WR,RD,8031,EA,5V,段選信號,a,b,c,d,e,f,g,dp,位選信號,7407,
2、圖7-3 LED顯示硬件原理圖,在圖7-3中,8位8段LED顯示器為共陰極接法,采用并行接口8155通過驅(qū)動器7407來進(jìn)行驅(qū)動。該方案中使用8155的PA端口進(jìn)行顯示器的位選擇(低電平有效);使用PB端口進(jìn)行顯示器的字段選擇(高電平有效)。 已知8155命令字端口地址為7F00H,PA端口地址為7F01H,PB端口地址為7F02H,顯示器的段選碼存放在單片機(jī)內(nèi)部RAM中從標(biāo)號地址TABLE開始的連續(xù)16個(gè)單元中。 #include INT8U xdata * DspBuffer; /定義顯示緩沖區(qū)指針 INT8U code * Tbl; /定義段碼表指針 INT8U xdata * Cmd;
3、 /定義8155命令字寄存器指針 INT8U xdata * Pa; /定義8155的PA端口指針 INT8U xdata * Pb; /定義8155的PB端口指針 INT8U bitCtl; /定義位控信號字 INT8U I; void TaskLEDDsp(void *ppdata) reentrant; OS_STK TaskLEDDspStk64; /任務(wù)堆棧,void main(void) OSInit( ); InitTimer0( ); OSTaskCreate(TaskLEDDsp,(void *)0, /段碼表首地址,for( ; ; ) bitCtl=0 x7F; /位控信
4、號賦初值 for(i=0;i1; /位控字左移1位 bitCtl=bitCtl|0 x80; /位控字高位補(bǔ)1 ,7.3.2 51單片機(jī)串行接口的應(yīng)用,1、51單片機(jī)的串行接口 51系列單片機(jī)的內(nèi)部有一個(gè)可編程的全雙工異步串行通信接口,它主要由2個(gè)共用端口(SBUF)的串行數(shù)據(jù)緩沖器和1個(gè)波特率發(fā)生器構(gòu)成,片外有一根串行數(shù)據(jù)接收線RXD(P3.0)和一根串行數(shù)據(jù)發(fā)送線TXD(P3.1)。51系列單片機(jī)串行數(shù)據(jù)接口的結(jié)構(gòu)如圖7-4所示。,51單片機(jī),ACC,SBUF,發(fā)送緩沖器,接收緩沖器,波特率發(fā)生器,發(fā)送引腳TXD,接收引腳TXD,P3.1,P3.0,圖7-4 51單片機(jī)串行接口的構(gòu)成,串行
5、數(shù)據(jù)接口有如表7-1所列的4種工作方式可供選擇。,表7-1 51單片機(jī)串行數(shù)據(jù)接口的工作方式,工作方式,SM0,SM1,說 明,波特率,工作方式0,工作方式1,工作方式2,工作方式3,0,0,1,1,1,1,0,0,移位寄存器(用于I/O擴(kuò)展),10位異步收發(fā),11位異步收發(fā),11位異步收發(fā),fosc/12,波特率可變,由T1控制,fosc/64或fosc/32,波特率可變,由T1控制,可以使用SCON和PCON這兩個(gè)控制字來設(shè)置51單片機(jī)的串行數(shù)據(jù)接口的工作方式。這兩個(gè)控制字的格式分別如圖7-5和圖7-6所示。,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,D7,D6,D5,D
6、4,D3,D2,D1,D0,SCON(98H),接收中斷標(biāo)志,發(fā)送中斷標(biāo)志,接收數(shù)據(jù)第9位,發(fā)送數(shù)據(jù)第9位,接收控制:1允許;0禁止,多機(jī)通信:1允許;0禁止,工作方式選擇,圖7-5 串行接口SCON控制字格式,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,D7,D6,D5,D4,D3,D2,D1,D0,PCON(87H),波特率選擇位,圖7-6 PCON控制字格式,當(dāng)采用工作方式0時(shí): 當(dāng)采用工作方式2時(shí): 當(dāng)采用工作方式1和方式3時(shí): 式中:X定時(shí)器T1定時(shí)預(yù)置初值; K定時(shí)器的位數(shù)(8、13或16)。,2、應(yīng)用程序 下面的應(yīng)用程序中設(shè)置了3個(gè)任務(wù),每個(gè)任務(wù)通過串行接口滾動輸
7、出一個(gè)字符串 /* / 串口應(yīng)用程序清單 /* #include void Task1(void *ppdata) reentrant; /定義任務(wù)1 void Task2(void *ppdata) reentrant; /定義任務(wù)2 void Task3(void *ppdata) reentrant; /定義任務(wù)3 OS_STK Task1Stk64; /定義任務(wù)1堆棧 OS_STK Task1Stk64; /定義任務(wù)1堆棧,/主函數(shù)- void main(void) OSInit( ); InitTimer( ); /初始化系統(tǒng)時(shí)鐘 InitSerial( ); /串口初始化 Init
8、SerialBuffer( ); OSTaskCreate(Task1,(void *)0, ,/任務(wù)1- void Task1(void *ppdata) reentrant ppdata=ppdata; ET0=1; clrscr( ); PrintStr(“ntt*n”); PrintStr(“tt* Hello!The world. *n”); PrintStr(“tt*nnn”); for( ; ; ) PrintStr(“ttt This is Task1.n”); OSTimeDly(OS_TICKS_PER_SEC); ,/任務(wù)2- void Task2(void *ppdat
9、a) reentrant ppdata=ppdata; for( ; ; ) PrintStr(“tttt This is Task2.n”); OSTimeDly(3*OS_TICKS_PER_SEC); /任務(wù)3- void Task3(void *ppdata) reentrant ppdata=ppdata; for( ; ; ) PrintStr(“tttt This is Task3.n”); OSTimeDly(6*OS_TICKS_PER_SEC); ,/* / serial.h文件 /* void InitSerial( ) reentrant; /串口初始化 void In
10、itSerialBuffer(void) reentrant; /串口緩沖區(qū)初始化 void PrintChar(unsigned char ch) reentrant; /顯示字符 void PrintStr(unsigned char *str) reentrant; /顯示字符串 void clrscr( ) reentrant; /清屏 void serial(void) reentrant; /串口中斷服務(wù)子程序 /收發(fā)數(shù)據(jù)緩沖區(qū)長度 #define LenTxBuf 2000 #define LenRxBuf 50 #define MaxLenStr 100,/* / serial
11、.c文件 /* INT8U xdata TxBufLenTxBuf,RxBufLenRxBuf; /收發(fā)緩沖區(qū)實(shí)體 INT8U xdata *inTxBuf, *outTxBuf, *inRxBuf, *outRxBuf; /收發(fā)緩沖區(qū)讀/寫指針 /串口初始化程序- void InitSerial( ) reentrant TMOD=TMOD /啟動定時(shí)器T1 ,/中斷時(shí)調(diào)用的串口任務(wù)函數(shù) void serial(void) reentrant INT8U *t; if(TI) TI=0; if(inTxBuf=outTxBuf) TIflag=1; return; /TxBuf空 SBUF=
12、*outTxBuf; outTxBuf+; if(outTxBuf=TxBuf+LenTxBuf) outTxBuf=TxBuf; if(RI) RI=0; t=inRxBuf; t+; if(t=RxBuf+LenRxBuf) t=RxBuf; if(t=outRxBuf) return; /RxBuf滿 *inRxBuf=SBUF; ,/顯示字符串函數(shù)- void PrintStr(unsigned char *str) reentrant INT8U i; INT8U j; INT8U ch; OS_ENTER_CRITICAL( ); /入臨界區(qū) for(i=0;iMaxLenStr;
13、i+) ch=*(str+i); if(ch=0) break; else if(ch=0) PrintChar(10); PrintChar(13); else if(ch=t) for(j=0;jTABNum;j+) PrintChar( ); else PrintChar(ch); OS_EXIT_CRITICAL( ); /出臨界區(qū) ,/顯示字符函數(shù)- void PrintChar(unsigned char ch) reentrant INT8U *t; OS_ENTER_CRITICAL( ); /入臨界區(qū) t=inTxBuf; t+; if(t=TxBuf+LenTxBuf) t
14、=TxBuf; if(t=outTxBuf) OS_EXIT_CRITICAL( ); /出臨界區(qū) return; /TxBuf滿 *inTxBuf=ch; inTxBuf=t; OS_EXIT_CRITICAL( ); /出臨界區(qū) if(TIflag) TIflag=0; TI=1; ,/清屏函數(shù)- void clrscr( ) reentrant /使用25個(gè)回車換行來清屏幕 PrintStr(“nnnnnnnnnnnnnnnnnnnnnnnnn”); /* ;* ; 在文件OS_CPU_A.ASM中用匯編語言編寫的中斷服務(wù)程序 ;* SerialISR: ;串口中斷服務(wù)程序 USING 0 CLR EA ;先關(guān)中斷,以防中斷嵌套 PUSHALL LCALL_?seria
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年安徽醫(yī)科大學(xué)第一附屬醫(yī)院臨床研究醫(yī)院勞務(wù)派遣招聘10人備考題庫及參考答案詳解1套
- 2026年廣東省云浮市郁南縣“百萬英才匯南粵”引進(jìn)教育人才備考題庫參考答案詳解
- 質(zhì)量與安全委員會課件
- 放射安全事件培訓(xùn)課件
- 2026年巴中市中西醫(yī)結(jié)合醫(yī)院公開招聘員額管理專業(yè)技術(shù)人員15人備考題庫及參考答案詳解1套
- 2026年國投健康產(chǎn)業(yè)發(fā)展(成都)有限公司招聘備考題庫及答案詳解參考
- 2026年東京城林區(qū)人民醫(yī)院急診科醫(yī)生招聘備考題庫及參考答案詳解1套
- 2026年中煤陜西能源化工集團(tuán)有限公司面向社會公開招聘備考題庫附答案詳解
- 2026年上塘中學(xué)非在編和產(chǎn)假頂崗教師招聘備考題庫及1套參考答案詳解
- 放假安全培訓(xùn)課件
- 富順縣職教中心教學(xué)樓BC棟二職中遷建工程施工組織
- GB/T 24139-2009PVC涂覆織物防水布規(guī)范
- 2023年醫(yī)務(wù)科工作計(jì)劃-1
- 西湖龍井茶的等級標(biāo)準(zhǔn)
- 地基與基礎(chǔ)分項(xiàng)工程質(zhì)量驗(yàn)收記錄
- 一文多用作文課公開課課件
- CNC機(jī)加工作業(yè)指導(dǎo)書
- 水運(yùn)工程施工課程設(shè)計(jì)指導(dǎo)書
- 驚恐障礙診治課件
- 中國藥典無菌、微生物限度和細(xì)菌內(nèi)毒素檢查方法學(xué)驗(yàn)證內(nèi)容詳解
- 古詩之解讀與吟誦
評論
0/150
提交評論