freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于arm的電子點菜系統(tǒng)的設計-資料下載頁

2025-06-28 00:56本頁面
  

【正文】 SⅡ具有以下的主要特性[24](1) 源代碼公開,嵌入式實時操作系統(tǒng)μC/OSII公開全部的程序清單。絕大部分μC/OSII的源代碼是用移植性很強的ANSI C編寫的,和微處理器硬件相關的那部分是用匯編語言編寫的。匯編語言編寫的部分已經(jīng)壓縮到最低限度,使得μC/OSII便于移植到其他微處理器上。由于代碼的開放性,使用者可以清楚地了解該操作系統(tǒng)各個方面的設計細節(jié),通過自己修改源代碼,來構造符合應用需求的操作系統(tǒng)環(huán)境。 (2) 具有很好的可移植性,μC/OSⅡ絕大部分源碼都是用高可移植性的ANSIC編寫的,可移植性較強,并且與微處理器硬件相關的那部分是用匯編語言寫的,便于μC/OSⅡ移植到其它各種微處理器上,能夠運行在8位、16位、32位、甚至64位和DSP上。(3) 可固化,μC/OSⅡ是為嵌入式應用而設計的,只要開發(fā)者有編譯、連接、下載等固化手段,此/05一H就可以嵌入到開發(fā)者的產(chǎn)品中。(4) 可裁剪,根據(jù)需要,可以只使用μC/OSⅡ中應用程序需要的那些系統(tǒng)服務,這樣就減少了產(chǎn)品中此/05一H所需的存儲器空間。(5) 占先式和多任務也是μC/OSⅡ的特色,μC/OSⅡ總是運行就緒條件下優(yōu)先級最高的任務,但不支持輪轉法任務調度,是一個完全占先式的實時內核。(6) μC/OSⅡ可以管理64個任務,目前版本保留8個給系統(tǒng),應用程序最多可以有56個任務,并且賦予每個任務的優(yōu)先級是不同的。(7) 可確定性,全部μC/OSII的函數(shù)調用與服務的執(zhí)行時間具有可確定性。也就是說,全部μC/OSII的函數(shù)調用與服務執(zhí)行時間是可知的。進而言之,μC/OSII服務的執(zhí)行時間不依賴于應用程序任務的多少。(8) 中斷管理,在μC/OSII中執(zhí)行中斷時可以使正在執(zhí)行的任務暫時掛起,如果優(yōu)先級更高的任務被該中斷喚醒,則高優(yōu)先級的任務在中斷嵌套全部退出后立即執(zhí)行,中斷嵌套層數(shù)可達255層。(9) 系統(tǒng)服務,μC /OSII提供很多系統(tǒng)服務,例如郵箱、消息隊列、信號量、塊大小固定的內存的申請與釋放以及時間相關函數(shù)等(10) 穩(wěn)定性與可靠性,μC/OSII是基于μC/OS的,μC/OSII與μC/OS的內核是一樣的,只不過提供了更多的功能。綜上所述,μC/OSⅡ的這些特性非常適合于開發(fā)無線電子點菜系統(tǒng),因此本設計選用μC/OSⅡ操作系統(tǒng)。Ⅱ在微處理器上的移植條件 為了方便移植,大部分的μC/OSⅡ代碼是用C語言寫的,但仍需要用匯編語言寫一些與處理器相關的代碼,這是因為μC/OSⅡ在讀寫處理器寄存器時只能通過匯編語言來實現(xiàn)。由于μC/OSⅡ僅是一個內核式操作系統(tǒng),并且在設計時就己經(jīng)充分考慮了可移植性,所以μC/OSⅡ的移植相對來說是比較容易的。要使μC/OSⅡ正常運行,處理器必須滿足以下要求[25]: ①處理器的C編譯器能產(chǎn)生可重入代碼。 ②用C語言就可以打開和關閉中斷。 ③處理器支持中斷,并且能產(chǎn)生定時中斷(通常在10~100Hz之間): ④處理器支持能夠容納一定量數(shù)據(jù)的硬件堆棧。 ⑤處理器有將堆棧指針和其他CPU寄存器讀出和存儲到堆?;騼却娴闹噶睿害藽/OSⅡ進行任務調度的時候,會把當前任務的CPU寄存器存放到此任務的堆棧中,然后再從另一個任務的堆棧中恢復原來的工作寄存器,繼續(xù)運行另一個任務。所以,寄存器的入棧和出棧是μC/OSⅡ多任務調度的基礎。 LPC2294處理器能夠滿足以上的要求。,通常在編寫多任務系統(tǒng)上運行的程序時,也要注意代碼重入性問題。 顯示屏軟件設計流程圖本設計顯示屏選用LCD12864,顯示4行8列個漢字。:LCD初始化功能設置 清顯示RAM區(qū)置顯示初值,顯示指針指向第一行待顯示數(shù)據(jù)送入緩沖區(qū)預設數(shù)據(jù)顯示在指定區(qū)域中調整指針,指向LCD的下一行顯示結束 否 結束開始 顯示屏軟件流程圖 顯示屏程序(1) LCD初始化程序void LCD_init(void){ DelayNmS(40)。 //Delay 40ms //alt_busy_sleep(40000)。 *LCD_WRITE_COMMAND = 0x30。 DelayNmS(10)。 //Delay 10ms *LCD_WRITE_COMMAND = 0x30。 DelayNmS(5)。 //Delay 5ms *LCD_WRITE_COMMAND = 0x30。 ST7920_SendCMD(LCD_CMD_8BIT)。 ST7920_SendCMD(LCD_CMD_DISP_ON)。 ST7920_SendCMD(LCD_CMD_CLEAR)。 ST7920_SendCMD(LCD_CMD_AC_INC)。 }(2)清屏函數(shù)void LCD_init(void){ DelayNmS(40)。 //Delay 40ms //alt_busy_sleep(40000)。 *LCD_WRITE_COMMAND = 0x30。 DelayNmS(10)。 //Delay 10ms *LCD_WRITE_COMMAND = 0x30。 DelayNmS(5)。 //Delay 5ms *LCD_WRITE_COMMAND = 0x30。 ST7920_SendCMD(LCD_CMD_8BIT)。 ST7920_SendCMD(LCD_CMD_DISP_ON)。 ST7920_SendCMD(LCD_CMD_CLEAR)。 ST7920_SendCMD(LCD_CMD_AC_INC)。 }(3) 漢字顯示*名稱: LCD_printf*功能: 在指定位置顯示指定長度的字符*入口參數(shù): row :列位置07 col :行位置03 *pdata: 顯示數(shù)據(jù)緩沖區(qū) len :顯示字符長度 064 一個漢字為2個字符*說明: 支持中英文混合顯示,支持自動換行,地址為雙字節(jié)長度自增 int LCD_printf(alt_u8 row,alt_u8 col,alt_u8 *pdata,alt_u8 len){ int ret_code。 if(len64) //最多顯示64個字符,超出部分忽略 len = 64。 row = rowamp。0x03。 col = colamp。0x07。 while(len!=0) { ST7920_DdramAddress(DDRAMaddr[row][col])。//進行行調換 for(。col16amp。amp。len!=0。col++) { ret_code = ST7920_SendDATA(*pdata++)。 if(ret_code == LCD_ERR_TIMEOUT) return ret_code。 len。 } row++。 row = rowamp。0x03。 col = 0。 } return LCD_ERR_OK。}void Task0 (void *pdata){ uint8 ret_code。 uint8 *Rcv_Data。 uint8 Err。 uint8 picture = 0。 // 顯示畫面的編號0 ~ 4 pdata = pdata。 TargetInit ()。 P1_GPIOInit(LCD_LIGHT,1)。 // LCD背光控制引腳設置為GPIO輸出模式 P0_GPIOInit(KEY1 | KEY5,0)。 // KEY1和KEY5控制引腳設置為GPIO輸入模式 OSTaskCreate (Task1,(void *)0, amp。Task1Stk[TaskStkLengh 1], 3)。 LCD_init()。 LCD_BacklightCon(LCD_BACKLIGHT_ON)。 // 打開背光 ST7920_ClearScreen()。 LCD_PlotPic(PowerOnPicture)。 // 顯示第一屏畫面 while(1) { Rcv_Data = OSMboxPend(OS_Mbox,0,amp。Err)。 if(*Rcv_Data == Next) // 按下KEY5,顯示下一屏畫面 picture = (picture + 1) % 10。 if(*Rcv_Data == Pre) // 按下KEY1,顯示上一屏畫面 { if(picture == 0) picture = 9。 else picture。 } switch(picture) { case 0: // 顯示 0 ST7920_ClearScreen()。 LCD_printf(0,0,(uint8 *)0, strlen(0))。 break。 case 1: // 顯示 1 ST7920_ClearScreen()。 LCD_printf(0,1,(uint8 *)1, strlen(1))。 break。 case 2: // 顯示2 ST7920_ClearScreen()。 LCD_printf(0,2,(uint8 *)2, strlen(2))。 break。 case 3: // 顯示3 ST7920_ClearScreen()。 LCD_printf(0,3,(uint8 *)3, strlen(3))。 break。 case 4: // 顯示4 ST7920_ClearScreen()。 LCD_printf(0,4,(uint8 *)4, strlen(4))。 break。 case 5: // 顯示5 ST7920_ClearScreen()。 LCD_printf(0,5,(uint8 *)5, strlen(5))。 break。 case 6: // 顯示6 ST7920_ClearScreen()。 LCD_printf(0,6,(uint8 *)6, strlen(6))。 break。 case 7: // 顯示7 ST7920_ClearScreen()。 LCD_printf(0,7,(uint8 *)7, strlen(7))。 break。 case 8: // 顯示8 ST7920_ClearScreen()。 LCD_printf(0,8,(uint8 *)8, strlen(8))。 break。 case 9: // 顯示9 ST7920_ClearScreen()。 LCD_printf(0,9,(uint8 *)9, strlen(9))。 break。 /* case 4: // 顯示第5幅圖片 ST7920_ClearScreen()。 LCD_printf(0,0,(uint8 *)歡迎使用EDA/SOPC/DSP/MCU/ARM/SOC教學實驗開發(fā)平臺廣州致遠電子公司, strlen(歡迎使用EDA/SOPC/DSP/MCU/ARM/SOC教學實驗開發(fā)平臺廣州致遠電子公司))。 break。 */ default: break。 } } } 5 調試本設計中主要工具為protel,在畫原理圖、繪制PCB板的過程中,會遇到很多問題,以下是對protel的介紹及調試。 protel介紹 Protel是PROTEL公司在20世紀80年代末推出的CAD工具,是PCB設計者的首選軟件。它較早在國內使用,普及率最高,有些高校的電路專業(yè)還專門開設Protel課程,幾乎所在的電路公司都要用到它。早期的Protel主要作為印刷板自動布線工具使用,現(xiàn)在普遍使用的是Prote
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1