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

正文內(nèi)容

基于凌陽單片機的錄音筆設計-閱讀頁

2024-11-13 18:26本頁面
  

【正文】 OLCOL8,行定義為 ROW。 用戶可自行選擇 ROW接至 DGND或 VDDIO。 設計所設置的按鍵功能如表 。在系統(tǒng)設計要求的基礎上我加入 LCD模組完成所要求的顯示實驗 ,使 得 在系統(tǒng)運行按鍵時 LCD會有相應的顯示 ,可以讀出相關的信息。在 LCD旁邊會有一個 HEADER162芯片 ,如果將其與 LCD短接,則為默認 I/O接法,我們還可以用排線自選 I/O進行連接,芯片的各個排針的具體含義請參見表 。 若端口復用 , 則 CS可 連 接至 IOB9, 若 無需端口復用 , CS可簡化連接至 DGND; RESET接到系統(tǒng)的 RESET, A0接到 IOB4, R/W接到 IOB5, EP接到IOB6, 這是默認連接方式 , 也可以通過排線根據(jù)需要進行連接 。 第 3 章 硬件設計 24 表 HEADER162 芯片針腳 含義 B 4B 6 S P C E 0 6 1 AB 5 B 9 A 8 A 1 5C S D 0 D 7A 0 L C D C 8 6E P S P G 1 2 0 6 3 Y S 2R / WG N DV 3G N DS W I T C HS W I T C H 圖 LCD與 SPCE061A的連接圖 硬件連接 硬件連接圖如圖 , 分別用跳線連接 IOB3與 AO, IOB4 與 RWP, IOB5 與 EP, IOB2 接 /CS, IOA0~IOA7 與 DB0~DB7,即用跳線把實驗儀 LCD 的所有引針全部短接; IOB0 連接 SPR4096A 的 SCK, IOB1 連接 SPR4096A的 SDA,即用跳線短接 4096PORT 的左右兩排引針; SPR4096A的 CF7連接 DGND,即用跳線把 CF7 引針和 DGND 引針短接; IOB8~IOB15 連接 18 鍵盤接口 KEYPAD 的COL1~COL8, KEYPAD的 ROW接 IOA8, 即用排線連接 IOBHIG和 KEYPAD, 注意IOB8接 COL1,用跳線短接 KEYPAD 的最下面一排引針。 圖 硬件連接圖 第 4 章 軟件設計 26 第 4 章 軟件設計 軟件設計流程圖 在軟件設計上,由于語音資源存放在外擴存儲器 SPR4096上,只能采用手動的方式播放語音。另外,需要對圖片的顯示,在播放語音的同時需要刷新圖片,這樣采用在中斷中填 充語音隊列的方法來實現(xiàn)。凌陽公司提供了豐富的庫函數(shù),只要了解庫函數(shù)的使用,就能輕松完成語音錄放。 本系統(tǒng) 底層驅(qū)動程序包括 IO 口初始化、 LCD 初始化、 SPR4096 的讀寫、擦除、按鍵處理等使用的是匯編語言編寫的。程序以函數(shù)的形式封裝對 SPR4096 芯片的操作,上層程序可以輕松調(diào)用這些函數(shù),實現(xiàn)對 SPR4096 讀寫、擦除操作。在此環(huán)境中,支持標準 C 語言,可以實現(xiàn) C 語言與凌陽匯編語言的互相調(diào)用。 [15] 語音信號的采集 在 軟件設計中,系統(tǒng)語音信號的采集是通過設置中斷來實現(xiàn)的。在中斷服務程序中定時的從 A/D 口獲取聲音數(shù)據(jù),根據(jù)語音模塊類型進行壓縮編碼并儲存;或者定時取出聲音數(shù)據(jù),進行編碼后向音頻輸出端播放。 FIQ 中斷服務程序程序可用于各種壓縮 /解壓算法模塊。 void FIQ(void) { if(*P_INT_Ctrlamp。 __asm(call F_FIQ_Service_SACM_DVR)。C_FIQ_TMB) //定時器 B 中斷 *P_INT_Clear=C_FIQ_TMB。 } //======================================================= // 函數(shù)名稱: IRQ5() // 功能描述 : 清看門狗 // 語法格式: void IRQ5(void); //======================================================= void IRQ5(void) __attribute__ ((ISR))。 // WatchDog 計數(shù)器 *P_INT_Clear = C_IRQ5_2Hz。下面是系統(tǒng)進行各步驟的具體流程。 // [R_DebounceReg] = r1。 //保存鍵值緩沖區(qū)清零 [R_KeyStrobe] = r1。 // [R_DebounceCnt] = r1。 圖 程序 : F_Key_Scan_ServiceLoop: //鍵盤掃描流程 r1 = [P_IOA_Data]。 // r2 = [R_DebounceReg]。 //取上一次保存的鍵值 cmp r2,[R_DebounceReg]。 // r1 = C_DebounceCnt。 // retf。 // jz L_KS_StableOverDebounce。 L_KS_StableOverDebounce: [R_DebounceCnt] = r1。 // r1 = [R_KeyBuf]。 // r1 = r1 xor 0x00ff。 // r1 = r1 and 0x00ff。 // [R_KeyStrobe] = r1。 語音信號的存儲 SPCE061A 對 SPR4096 進行操作。程序運行后,可以在 IDE 的 Watch 窗口查看 uiByteBuffer 和uiWordBuffer 的值。 第 4 章 軟件設計 32 開 始系 統(tǒng) 初 始 化擦 除 S P R 4 0 9 6 全 部 扇 區(qū)按 B y t e 寫 入 數(shù) 據(jù)按 B y t e 讀 出 數(shù) 據(jù) 存 放 到 u i B y t e B u f f e r 中擦 除 S P R 4 0 9 6 一 個 扇 區(qū)按 W o r d 寫 入 數(shù) 據(jù)按 W o r d 讀 出 數(shù) 據(jù) 存 放 到 u i W o r d B u f f e r 中死 循 環(huán) 圖 SPR4096 模塊流程圖 部分程序如下: //====================================================== // 函數(shù)名稱: _SP_SIOInitial // 實現(xiàn)功能: SIO 初始化 //====================================================== .PUBLIC _SP_SIOInitial。 //系統(tǒng)時鐘設定 ,Fosc = 49MHz [P_SystemClock] = r1。 //IOB0: SCK,IOB1: SDA,IOB11: CF7 [P_IOB_Dir] = r1。 [P_IOB_Buffer] = r1。當系統(tǒng)正常運行時,每隔一定的周期就必須清除 WatchDog 計數(shù)器。 SPCE061A 的 WatchDog 的清除時間周期為 秒。 SPCE061A 分成兩種版本:有 WatchDog 功能,以及無 WatchDog 功能的版本。因此 我在進行程序設計 時,注意 了 在 秒內(nèi),進行清除 WatchDog 的操作。 首先進行硬件連接:將下載的排線連接電腦的打印機并口和硬件的系統(tǒng)下載接口;用 排線將 IOA0IOA7 與 18 鍵盤連接; SPR4096 模塊中將 JP10 的三個短路線接好,注意 CF7 選擇 B11。硬件連接好后運行 IDE,將程序編譯后下載進 SPCE061A 芯片,然后點擊運行程序。 通過對系統(tǒng)的使用調(diào)試,我對設計做了如下的總結:充分利用了手中的資源,運用了凌陽 16 位單片機作為集成開發(fā)環(huán)境。這是我這次系統(tǒng)設計的特點和優(yōu)點。在設計中選用 SPR4096 內(nèi)置的 FLASH 存儲語音數(shù)據(jù),雖然有 4M 的存儲空間但是對于要存儲大量的語 音數(shù)據(jù)來說還是不夠的,因此在以后的設計中可以擴充外存儲器。從確定任務開始,我 認真學習了相關理論,學習了他人的經(jīng)驗。 畢業(yè)設計對 于 我們 這些 即將走向工作崗位 的畢業(yè) 生,可以說 是一次 極 好的鍛煉機會, 它能為我們今后走入社會 更好地工作打下 良好的 基礎?!?遇到困難毫不放棄, 團結、合作、堅持 不懈 是 成功之本”是我的深切體會 。從查閱文獻到課題分析,從設計仿真到論文 撰寫 ,老師都不厭其煩地解答我提出的各種問題,并給予我很多指導。 在此,我衷心 感謝老師對我的幫助。 unsigned int uiSegment。 enum uiStatus{Stop=0,Record,Play}。 unsigned long int ulAddr。 *P_IOA_Dir |= 0x0100。 *P_IOA_Buffer |= 0x0100。 Key_Init()。 LCD501_Init(0x00)。 LCD501_ClrScreen(0)。 SACM_DVR_Initial(Manual)。 uiSegment = 1。 uiKeyCode = 0xff。i21。 ShowLcd()。 uiRet=SP_SIOReadAWord(1)。 uiKeyCode = Key_Get()。 if(uiStatus == Record) { while(SACM_DVR_TestQueue() != Empty) { uiRet = SACM_DVR_FetchQueue()。 ulAddr += 2。 uiRet=ulBuffer[0]*2。 uiTemp=0。(i256)amp。((uiTempulAddr)||(uiTemp==ulAddr))。 ulBuffer[uiRet+1]=uiTemp。 SACM_DVR_InitQueue()。 uiStatus = Record。 LCD501_Rectangle(68,4,120,16,PAINT_HOLLOW)。 case 0x40: uiStatus = Stop。 東北電力大學自動化工程學院學士學位論 文 39 LCD501_Rectangle(68,32,120,44,PAINT_HOLLOW)。 case 0x20: ulAddr=ulBuffer[uiSegment*21]。 while(SACM_DVR_TestQueue() != Full) { uiRet=SP_SIOReadAWord(ulAddr)。 ulAddr += 2。 uiStatus = Play。 LCD501_Rectangle(68,18,120,30,PAINT_HOLLOW)。 case 0x10: if(uiSegmentulBuffer[0]) { uiSegment++。 } else { uiSegment=1。 } SACM_DVR_InitQueue()。 SACM_DVR_FillQueue(uiRet)。 } SACM_DVR_InitDecoder(DAC1+DAC2)。 ShowLcd()。 break。 LCD501_Rectangle(68,46,120,58,PAINT_HOLLOW)。 for(i=0。i++) ulBuffer[i]=0。 ulAddr = 0。 ShowLcd()。 break。 } } switch(uiStatus) { case Record: if(ulAddr C_SflashSize) { SACM_DVR_Encode()。 SP_SIOSendAWord(ulAddr,uiRet
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1