上電時,MCU的電源電壓達到有效工作電壓的最小值和達到正常工作狀態都需要一個短暫的時間間隔。如果在MCU沒有正常工作時就開始運行程序,那么系統將會很不穩定。
上傳時間: 2013-12-30
上傳用戶:liu999666
單片機指令系統原理 51單片機的尋址方式 學習匯編程序設計,要先了解CPU的各種尋址法,才能有效的掌握各個命令的用途,尋址法是命令運算碼找操作數的方法。在我們學習的8051單片機中,有6種尋址方法,下面我們將逐一進行分析。 立即尋址 在這種尋址方式中,指令多是雙字節的,一般第一個字節是操作碼,第二個字節是操作數。該操作數直接參與操作,所以又稱立即數,有“#”號表示。立即數就是存放在程序存儲器中的常數,換句話說就是操作數(立即數)是包含在指令字節中的。 例如:MOV A,#3AH這條指令的指令代碼為74H、3AH,是雙字節指令,這條指令的功能是把立即數3AH送入累加器A中。MOV DPTR,#8200H在前面學單片機的專用寄存器時,我們已學過,DPTR是一個16位的寄存器,它由DPH及DPL兩個8位的寄存器組成。這條指令的意思就是把立即數的高8位(即82H)送入DPH寄存器,把立即數的低8位(即00H)送入DPL寄存器。這里也特別說明一下:在80C51單片機的指令系統中,僅有一條指令的操作數是16位的立即數,其功能是向地址指針DPTR傳送16位的地址,即把立即數的高8位送入DPH,低8位送入DPL。 直接尋址 直接尋址方式是指在指令中操作數直接以單元地址的形式給出,也就是在這種尋址方式中,操作數項給出的是參加運算的操作數的地址,而不是操作數。例如:MOV A,30H 這條指令中操作數就在30H單元中,也就是30H是操作數的地址,并非操作數。 在80C51單片機中,直接地址只能用來表示特殊功能寄存器、內部數據存儲器以及位地址空間,具體的說就是:1、內部數據存儲器RAM低128單元。在指令中是以直接單元地址形式給出。我們知道低128單元的地址是00H-7FH。在指令中直接以單元地址形式給出這句話的意思就是這0-127共128位的任何一位,例如0位是以00H這個單元地址形式給出、1位就是以01H單元地址給出、127位就是以7FH形式給出。2、位尋址區。20H-2FH地址單元。3、特殊功能寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號形式給出。例如下面我們分析的一條指令 MOV IE,#85H 前面的學習我們已知道,中斷允許寄存器IE的地址是80H,那么也就是這條指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。 關于數據存儲器RAM的內部情況,請查看我們課程的第十二課。 直接尋址是唯一能訪問特殊功能寄存器的尋址方式! 大家來分析下面幾條指令:MOV 65H,A ;將A的內容送入內部RAM的65H單元地址中MOV A,direct ;將直接地址單元的內容送入A中MOV direct,direct;將直接地址單元的內容送直接地址單元MOV IE,#85H ;將立即數85H送入中斷允許寄存器IE 前面我們已學過,數據前面加了“#”的,表示后面的數是立即數(如#85H,就表示85H就是一個立即數),數據前面沒有加“#”號的,就表示后面的是一個地址地址(如,MOV 65H,A這條指令的65H就是一個單元地址)。 寄存器尋址 寄存器尋址的尋址范圍是:1、4個工作寄存器組共有32個通用寄存器,但在指令中只能使用當前寄存器組(工作寄存器組的選擇在前面專用寄存器的學習中,我們已知道,是由程序狀態字PSW中的RS1和RS0來確定的),因此在使用前常需要通過對PSW中的RS1、RS0位的狀態設置,來進行對當前工作寄存器組的選擇。2、部份專用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和進位位CY。 寄存器尋址方式是指操作數在寄存器中,因此指定了寄存器名稱就能得到操作數。例如:MOV A,R0這條指令的意思是把寄存器R0的內容傳送到累加器A中,操作數就在R0中。INC R3這條指令的意思是把寄存器R3中的內容加1 從前面的學習中我產應可以理解到,其實寄存器尋址方式就是對由PSW程序狀態字確定的工作寄存器組的R0-R7進行讀/寫操作。 寄存器間接尋址 寄存間接尋址方式是指寄存器中存放的是操作數的地址,即操作數是通過寄存器間接得到的,因此稱為寄存器間接尋址。 MCS-51單片機規定工作寄存器的R0、R1做為間接尋址寄存器。用于尋址內部或外部數據存儲器的256個單元。為什么會是256個單元呢?我們知道,R0或者R1都是一個8位的寄存器,所以它的尋址空間就是2的八次方=256。例:MOV R0,#30H ;將值30H加載到R0中 MOV A,@R0 ;把內部RAM地址30H內的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H內的值放到累加器A中 大家想想,如果用DPTR做為間址寄存器,那么它的尋址范圍是多少呢?DPTR是一個16位的寄存器,所以它的尋址范圍就是2的十六次方=65536=64K。因用DPTR做為間址寄存器的尋址空間是64K,所以訪問片外數據存儲器時,我們通常就用DPTR做為間址寄存器。例:MOV DPTR,#1234H ;將DPTR值設為1234H(16位) MOVX A,@DPTR ;將外部RAM或I/O地址1234H內的值放到累加器A中 在執行PUSH(壓棧)和POP(出棧)指令時,采用堆棧指針SP作寄存器間接尋址。例:PUSH 30H ;把內部RAM地址30H內的值放到堆棧區中堆棧區是由SP寄存器指定的,如果執行上面這條命令前,SP為60H,命令執行后會把內部RAM地址30H內的值放到RAM的61H內。 那么做為寄存器間接尋址用的寄存器主要有哪些呢?我們前面提到的有四個,R0、R1、DPTR、SP 寄存器間接尋址范圍總結:1、內部RAM低128單元。對內部RAM低128單元的間接尋址,應使用R0或R1作間址寄存器,其通用形式為@Ri(i=0或1)。 2、外部RAM 64KB。對外部RAM64KB的間接尋址,應使用@DPTR作間址尋址寄存器,其形式為:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的單元的內容送入累加器A中。外部RAM的低256單元是一個特殊的尋址區,除可以用DPTR作間址寄存器尋址外,還可以用R0或R1作間址寄存器尋址。例如MOVX A,@R0;這條指令的意思是,把R0指定的外部RAM單元的內容送入累加器A。 堆棧操作指令(PUSH和POP)也應算作是寄存器間接尋址,即以堆棧指針SP作間址寄存器的間接尋址方式。 寄存器間接尋址方式不可以訪問特殊功能寄存器!! 寄存器間接尋址也須以寄存器符號的形式表示,為了區別寄存器尋址我寄存器間接尋址的區別,在寄存器間接尋址方式式中,寄存器的名稱前面加前綴標志“@”。 基址寄存器加變址寄存器的變址尋址 這種尋址方式以程序計數器PC或DPTR為基址寄存器,累加器A為變址寄存器,變址尋址時,把兩者的內容相加,所得到的結果作為操作數的地址。這種方式常用于訪問程序存儲器ROM中的數據表格,即查表操作。變址尋址只能讀出程序內存入的值,而不能寫入,也就是說變址尋址這種方式只能對程序存儲器進行尋址,或者說它是專門針對程序存儲器的尋址方式。例:MOVC A,@A+DPTR這條指令的功能是把DPTR和A的內容相加,再把所得到的程序存儲器地址單元的內容送A假若指令執行前A=54H,DPTR=3F21H,則這條指令變址尋址形成的操作數地址就是54H+3F21H=3F75H。如果3F75H單元中的內容是7FH,則執行這條指令后,累加器A中的內容就是7FH。 變址尋址的指令只有三條,分別如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC 第一條指令JMP @A+DPTR這是一條無條件轉移指令,這條指令的意思就是DPTR加上累加器A的內容做為一個16位的地址,執行JMP這條指令是,程序就轉移到A+DPTR指定的地址去執行。 第二、三條指令MOVC A,@A+DPTR和MOVC A,@A+PC指令這兩條指令的通常用于查表操作,功能完全一樣,但使用起來卻有一定的差別,現詳細說明如下。我們知道,PC是程序指針,是十六位的。DPTR是一個16位的數據指針寄存器,按理,它們的尋址范圍都應是64K。我們在學習特殊功能寄存器時已知道,程序計數器PC是始終跟蹤著程序的執行的。也就是說,PC的值是隨程序的執行情況自動改變的,我們不可以隨便的給PC賦值。而DPTR是一個數據指針,我們就可以給空上數據指針DPTR進行賦值。我們再看指令MOVC A,@A+PC這條指令的意思是將PC的值與累加器A的值相加作為一個地址,而PC是固定的,累加器A是一個8位的寄存器,它的尋址范圍是256個地址單元。講到這里,大家應可明白,MOVC A,@A+PC這條指令的尋址范圍其實就是只能在當前指令下256個地址單元。所在,這在我們實際應用中,可能就會有一個問題,如果我們需要查詢的數據表在256個地址單元之內,則可以用MOVC A,@A+PC這條指令進行查表操作,如果超過了256個單元,則不能用這條指令進行查表操作。剛才我們已說到,DPTR是一個數據指針,這個數據指針我們可以給它賦值操作的。通過賦值操作。我們可以使MOVC A,@A+DPTR這條指令的尋址范圍達到64K。這就是這兩條指令在實際應用當中要注意的問題。 變址尋址方式是MCS-51單片機所獨有的一種尋址方式。 位尋址 80C51單片機有位處理功能,可以對數據位進行操作,因此就有相應的位尋址方式。所謂位尋址,就是對內部RAM或可位尋址的特殊功能寄存器SFR內的某個位,直接加以置位為1或復位為0。 位尋址的范圍,也就是哪些部份可以進行位尋址: 1、我們在第十二課學習51單片機的存儲器結構時,我們已知道在單片機的內部數據存儲器RAM的低128單元中有一個區域叫位尋址區。它的單元地址是20H-2FH。共有16個單元,一個單元是8位,所以位尋址區共有128位。這128位都單獨有一個位地址,其位地址的名字就是00H-7FH。這里就有一個比較麻煩的問題需要大家理解清楚了。我們在前面的學習中00H、01H。。。。7FH等等,所表示的都是一個字節(或者叫單元地址),而在這里,這些數據都變成了位地址。我們在指令中,或者在程序中如何來區分它是一個單元地址還是一個位地址呢?這個問題,也就是我們現在正在研究的位尋址的一個重要問題。其實,區分這些數據是位地址還是單元地址,我們都有相應的指令形式的。這個問題我們在后面的指令系統學習中再加以論述。 2、對專用寄存器位尋址。這里要說明一下,不是所有的專用寄存器都可以位尋址的。具體哪些專用寄存器可以哪些專用寄存器不可以,請大家回頭去看看我們前面關于專用寄存器的相關文章。一般來說,地址單元可以被8整除的專用寄存器,通常都可以進行位尋址,當然并不是全部,大家在應用當中應引起注意。 專用寄存器的位尋址表示方法: 下面我們以程序狀態字PSW來進行說明 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P 1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示為D5H MOV C,D5H 2、位名稱表示:表示該位的名稱,例如PSW的位5是F0,所以可以用F0表示 MOV C,F0 3、單元(字節)地址加位表示:D0H單元位5,表示為DOH.5 MOV C,D0H.5 4、專用寄存器符號加位表示:例如PSW.5 MOV C,PSW.5 這四種方法實現的功能都是相同的,只是表述的方式不同而已。 例題: 1. 說明下列指令中源操作數采用的尋址方式。 MOV R5,R7 答案:寄存器尋址方式 MOV A,55H 直接尋址方式 MOV A,#55H 立即尋址方式 JMP @A+DPTR 變址尋址方式 MOV 30H,C 位尋址方式 MOV A,@R0 間接尋址方式 MOVX A,@R0 間接尋址方式 改錯題 請判斷下列的MCS-51單片機指令的書寫格式是否有錯,若有,請說明錯誤原因。 MOV R0,@R3 答案:間址寄存器不能使用R2~R7。 MOVC A,@R0+DPTR 變址尋址方式中的間址寄存器不可使用R0,只可使用A。 ADD R0,R1 運算指令中目的操作數必須為累加器A,不可為R0。 MUL AR0 乘法指令中的乘數應在B寄存器中,即乘法指令只可使用AB寄存器組合。
上傳時間: 2013-11-11
上傳用戶:caozhizhi
arm指令集(1) ARM跳轉指令可以從當前指令向前或向后的32MB地址空間跳轉。這類跳轉指令有以下4種。 (1)B 跳4專指令 B〔條件) (地址) B指令屬于ARM指令集,是最簡單的分支指令。一旦遇到一個B指令,ARM處理器將立即跳轉到給定的地址,從那里繼續執行。注意:存儲在分支指令中的實際值是相對當前R15的值的一個偏移量,而不是一個絕對地址。它的值由匯編器來計算,是24位有符號數,左移兩位后有符號擴展為32位,表示的有效偏移位為26位(+/- 32 MB)。 (2)BL 帶返回的跳轉指令 BI,〔條件) (地址) BL指令也屬于ARM指令集,是另一個分支指令。就在分支之前,在寄存器R14中裝載上R15的內容,因此可以重新裝載R14到R15中來返回到這個分支之后的那個指令處執行,它是子例程的一個基本但強力的實現。 (3)BLX 帶返回和狀態切換的跳轉指令 BLX <地址> BLX指令有兩種格式,第1種格式的BLX指令記作BLX(1)。BLX(1)從ARM指令集跳轉到指令中指定的目標地址,并將程序狀態切換到Thumb狀態,該指令同時將PC寄存器的內容復制到LR寄存器中。 BLX(1)指令屬于無條件執行的指令。 第2種格式的BLX指令記作BLX(2)。BLX(2)指令從ARM指令集跳轉到指令中指定的目標地址,目標地址的指令可以是ARM指令,也可以是Thumb指令。目標地址放在指令中的寄存器<dest>中,該地址的bit[0]值為0,目標地址處的指令類型由CPSR中的T位決定。該指令同時將PC寄存器的內容復制到LR寄存器中。 (4)BX 帶狀態切換的跳轉指令 BX(條件) (dest) BX指令跳轉到指令中指定的目標地址,目標地址處的指令可以是ARM指令,也可以是Thumb指令。目標地址值為指令的值和0xFl·FFFFFF做“與”操作的結果,目標地址處的指令類型由寄存器決定。
上傳時間: 2014-12-27
上傳用戶:laomv123
RSM-6505可同時對5路的熱電偶進行測量,且通道具有周期自校準功能;模塊還具有5路數字量輸出通道,可以設置為用戶控制輸出或對測量溫度值進行超限狀態指示——“超限報警”輸出。RSM-6505對輸入輸出端口采用電氣隔離,并采用帶隔離的RS-485總線接口及看門狗技術,有效保障設備安全可靠運行
上傳時間: 2014-12-28
上傳用戶:han_zh
單片機鍵盤掃描之狀態機實現:在編寫單片機程序的過程中,鍵盤作為一種人機接口的實現方式,是很常用的。而一般的實現方法大概有:1、外接鍵盤掃描芯片(例如8279,7279 等等),然后由該芯片來完成去抖、鍵值讀取、中斷請求等功能。然后單片機響應中斷并讀取鍵值,有的時候也可以采用輪訓的方式。2、如果按鍵數比較少,那么可以直接將按鍵接到單片機的IO 口,然后各按鍵取邏輯或再送到單片機的中斷管腳(對于51 體系),單片機響應中斷后再去讀取IO 口的數據。如果單片機的中斷向量比較多(例如AVR 系列的單片機,每個IO都可以作為中斷),那么也可以直接把各個按鍵接到各個具有中斷功能的IO 上面。在中斷處理程序中往往需要執行這樣一個操作序列:延時一定時間來去抖,如果按鍵有效那么等待按鍵釋放。
上傳時間: 2014-12-28
上傳用戶:zhang97080564
該文介紹89C51 單片機在直流電機轉速控制系統中的應用、實現方法、硬件結構等。本系統采用霍爾元器件測量電動機的轉速,用89C51 單片機對直流電機的轉速進行控制,用DAC0832 芯片實現輸出模擬電壓值來控制直流電動機的轉速。直流電動機具有良好的起動、制動性能,宜于在大范圍內平滑調速,在許多需要調速或快速正反向的電力拖動領域中得到了廣泛的應用。從控制的角度來看,直流調速還是交流拖動系統的基礎[4]。早期直流電動機的控制均以模擬電路為基礎,采用運算放大器、非線性集成電路以及少量的數字電路組成,控制系統的硬件部分非常復雜,功能單一,而且系統非常不靈活、調試困難,阻礙了直流電動機控制技術的發展和應用范圍的推廣。隨著單片機技術的日新月異,使得許多控制功能及算法可以采用軟件技術來完成,為直流電動機的控制提供了更大的靈活性,并使系統能達到更高的性能。采用單片機構成控制系統,可以節約人力資源和降低系統成本,從而有效的提高工作效率[1]。
上傳時間: 2013-12-29
上傳用戶:rishian
離散傅里葉變換,(DFT)Direct Fouriet Transformer(PPT課件) 一、序列分類對一個序列長度未加以任何限制,則一個序列可分為: 無限長序列:n=-∞~∞或n=0~∞或n=-∞~ 0 有限長序列:0≤n≤N-1有限長序列在數字信號處理是很重要的一種序列。由于計算機容量的限制,只能對過程進行逐段分析。二、DFT引入由于有限長序列,引入DFT(離散付里葉變換)。DFT它是反映了“有限長”這一特點的一種有用工具。DFT變換除了作為有限長序列的一種付里葉表示,在理論上重要之外,而且由于存在著計算機DFT的有效快速算法--FFT,因而使離散付里葉變換(DFT)得以實現,它使DFT在各種數字信號處理的算法中起著核心的作用。三、本章主要討論離散付里葉變換的推導離散付里葉變換的有關性質離散付里葉變換逼近連續時間信號的問題第二節付里葉變換的幾種形式傅 里 葉 變 換 : 建 立 以 時 間 t 為 自 變 量 的 “ 信 號 ” 與 以 頻 率 f為 自 變 量 的 “ 頻 率 函 數 ”(頻譜) 之 間 的 某 種 變 換 關 系 . 所 以 “ 時 間 ” 或 “ 頻 率 ” 取 連 續 還 是 離 散 值 , 就 形 成 各 種 不 同 形 式 的 傅 里 葉 變 換 對 。, 在 深 入 討 論 離 散 傅 里 葉 變 換 D F T 之 前 , 先 概 述 四種 不 同 形式 的 傅 里 葉 變 換 對 . 一、四種不同傅里葉變換對傅 里 葉 級 數(FS):連 續 時 間 , 離 散 頻 率 的 傅 里 葉 變 換 。連 續 傅 里 葉 變 換(FT):連 續 時 間 , 連 續 頻 率 的 傅 里 葉 變 換 。序 列 的 傅 里 葉 變 換(DTFT):離 散 時 間 , 連 續 頻 率 的 傅 里 葉 變 換.離 散 傅 里 葉 變 換(DFT):離 散 時 間 , 離 散 頻 率 的 傅 里 葉 變 換1.傅 里 葉 級 數(FS)周期連續時間信號 非周期離散頻譜密度函數。 周期為Tp的周期性連續時間函數 x(t) 可展成傅里葉級數X(jkΩ0) ,是離散非周期性頻譜 , 表 示為:例子通過以下 變 換 對 可 以 看 出 時 域 的 連 續 函 數 造 成 頻 域 是 非 周 期 的 頻 譜 函 數 , 而 頻 域 的 離 散 頻 譜 就 與 時 域 的 周 期 時 間 函 數 對 應 . (頻域采樣,時域周期延 拓)2.連 續 傅 里 葉 變 換(FT)非周期連續時間信號通過連續付里葉變換(FT)得到非周期連續頻譜密度函數。
上傳時間: 2013-11-19
上傳用戶:fujiura
含原理圖+電路圖+程序的波形發生器:在工作中,我們常常會用到波形發生器,它是使用頻度很高的電子儀器。現在的波形發生器都采用單片機來構成。單片機波形發生器是以單片機核心,配相應的外圍電路和功能軟件,能實現各種波形發生的應用系統,它由硬件部分和軟件部分組成,硬件是系統的基礎,軟件則是在硬件的基礎上,對其合理的調配和使用,從而完成波形發生的任務。 波形發生器的技術指標:(1) 波形類型:方型、正弦波、三角波、鋸齒波;(2) 幅值電壓:1V、2V、3V、4V、5V;(3) 頻率值:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ;(4) 輸出極性:雙極性操作設計1、 機器通電后,系統進行初始化,LED在面板上顯示6個0,表示系統處于初始狀態,等待用戶輸入設置命令,此時,無任何波形信號輸出。2、 用戶按下“F”、“V”、“W”,可以分別進入頻率,幅值波形設置,使系統進入設置狀態,相應的數碼管顯示“一”,此時,按其它鍵,無效;3、 在進入某一設置狀態后,輸入0~9等數字鍵,(數字鍵僅在設置狀態時,有效)為欲輸出的波形設置相應參數,LED將參數顯示在面板上;4、 如果在設置中,要改變已設定的參數,可按下“CL”鍵,清除所有已設定參數,系統恢復初始狀態,LED顯示6個0,等待重新輸入命令;5、 當必要的參數設定完畢后,所有參數顯示于LED上,用戶按下“EN”鍵,系統會將各波形參數傳遞到波形產生模塊中,以便控制波形發生,實現不同頻率,不同電壓幅值,不同類型波形的輸出;6、 用戶按下“EN”鍵后,波形發生器開始輸出滿足參數的波形信號,面板上相應類型的運行指示燈閃爍,表示波形正在輸出,LED顯示波形類型編號,頻率值、電壓幅值等波形參數;7、 波形發生器在輸出信號時,按下任意一個鍵,就停止波形信號輸出,等待重新設置參數,設置過程如上所述,如果不改變參數,可按下“EN”鍵,繼續輸出原波形信號;8、 要停止波形發生器的使用,可按下復位按鈕,將系統復位,然后關閉電源。硬件組成部分通過綜合比較,決定選用獲得廣泛應用,性能價格高的常用芯片來構成硬件電路。單片機采用MCS-51系列的89C51(一塊),74LS244和74LS373(各一塊),反相驅動器 ULN2803A(一塊),運算放大器 LM324(一塊) 波形發生器的硬件電路由單片機、鍵盤顯示器接口電路、波形轉換(D/ A)電路和電源線路等四部分構成。1.單片機電路功能:形成掃描碼,鍵值識別,鍵功能處理,完成參數設置;形成顯示段碼,向LED顯示接口電路輸出;產生定時中斷;形成波形的數字編碼,并輸出到D/A接口電路;如電路原理圖所示: 89C51的P0口和P2口作為擴展I/O口,與8255、0832、74LS373相連接,可尋址片外的寄存器。單片機尋址外設,采用存儲器映像方式,外部接口芯片與內部存儲器統一編址,89C51提供16根地址線P0(分時復用)和P2,P2口提供高8位地址線,P0口提供低8位地址線。P0口同時還要負責與8255,0832的數據傳遞。P2.7是8255的片選信號,P2.6是0832(1)的片選,P2.5是0832(2)的片選,低電平有效,P0.0、P0.1經過74LS373鎖存后,送到8255的A1、A2作,片內A口,B口,C口,控制口等寄存器的字選。89C51的P1口的低4位連接4只發光三極管,作為波形類型指示燈,表示正在輸出的波形是什么類型。單片機89C51內部有兩個定時器/計數器,在波形發生器中使用T0作為中斷源。不同的頻率值對應不同的定時初值,定時器的溢出信號作為中斷請求。控制定時器中斷的特殊功能寄存器設置如下:定時控制寄存器TCON=(00010000)工作方式選擇寄存器(TMOD)=(00000000)中斷允許控制寄存器(IE)=(10000010)2、鍵盤顯示器接口電路功能:驅動6位數碼管動態顯示; 提供響應界面; 掃面鍵盤; 提供輸入按鍵。由并口芯片8255,鎖存器74LS273,74LS244,反向驅動器ULN2803A,6位共陰極數碼管(LED)和4×4行列式鍵盤組成。8255的C口作為鍵盤的I/O接口,C口的低4位輸出到掃描碼,高4位作為輸入行狀態,按鍵的分布如圖所示。8255的A口作為LED段碼輸出口,與74LS244相連接,B口作為LED的位選信號輸出口,與ULN2803A相連接。8255內部的4個寄存器地址分配如下:控制口:7FFFH , A口:7FFFCH , B口:7FFDH , C口:7FFEH 3、D/A電路功能:將波形樣值的數字編碼轉換成模擬值;完成單極性向雙極性的波形輸出;構成由兩片0832和一塊LM324運放組成。0832(1)是參考電壓提供者,單片機向0832(1)內的鎖存器送數字編碼,不同的編碼會產生不同的輸出值,在本發生器中,可輸出1V、2V、3V、4V、5V等五個模擬值,這些值作為0832(2)的參考電壓,使0832(2)輸出波形信號時,其幅度是可調的。0832(2)用于產生各種波形信號,單片機在波形產生程序的控制下,生成波形樣值編碼,并送到0832(2)中的鎖存器,經過D/A轉換,得到波形的模擬樣值點,假如N個點就構成波形的一個周期,那么0832(2)輸出N個樣值點后,樣值點形成運動軌跡,就是波形信號的一個周期。重復輸出N個點后,由此成第二個周期,第三個周期……。這樣0832(2)就能連續的輸出周期變化的波形信號。運放A1是直流放大器,運放A2是單極性電壓放大器,運放A3是雙極性驅動放大器,使波形信號能帶得起負載。地址分配:0832(1):DFFFH ,0832(2):BFFFH4、電源電路:功能:為波形發生器提供直流能量;構成由變壓器、整流硅堆,穩壓塊7805組成。220V的交流電,經過開關,保險管(1.5A/250V),到變壓器降壓,由220V降為10V,通過硅堆將交流電變成直流電,對于諧波,用4700μF的電解電容給予濾除。為保證直流電壓穩定,使用7805進行穩壓。最后,+5V電源配送到各用電負載。
上傳時間: 2013-11-08
上傳用戶:685
介紹用PIC16F84單片機制作的電子密碼鎖。PIC16F84單片機共18個引腳,13個可用I/O接口。芯片內有1K×14的FLASHROM程序存儲器,36×8的靜態RAM的通用寄存器,64×8的EEPROM的數據存儲器,8級深度的硬堆棧。 用PIC單片機設計的電子密碼鎖微芯公司生產的PIC8位COMS單片機,采用類RISC指令集和哈弗總線結構,以及先進的流水線時序,與傳統51單片機相比其在速度和性能方面更具優越性和先進性。PIC單片機的另一個優點是片上硬件資源豐富,集成常見的EPROM、DAC、PWM以及看門狗電路。這使得硬件電路的設計更加簡單,節約設計成本,提高整機性能。因此PIC單片機已成為產品開發,尤其是產品設計和研制階段的首選控制器。本文介紹用PIC16F84單片機制作的電子密碼鎖。PIC16F84單片機共18個引腳,13個可用I/O接口。芯片內有1K×14的FLASHROM程序存儲器,36×8的靜態RAM的通用寄存器,64×8的EEPROM的數據存儲器,8級深度的硬堆棧。硬件設計 電路原理見圖1。Xx8位數據線接4x4鍵盤矩陣電路,面板布局見表1,A、B、C、D為備用功能鍵。RA0、RA7輸出4組編碼二進制數據,經74LS139譯碼后輸出逐行掃描信號,送RB4-RB7列信號輸入端。余下半個139譯碼器動揚聲器。RB2接中功率三極管基極,驅動繼電器動作。有效密碼長度為4位,根據實際情況,可通過修改源程序增加密碼位數。產品初始密碼為3345,這是一隨機數,無特殊意義,目的是為防止被套解。用戶可按*號鍵修改密碼,按#號鍵結束。輸入密碼并按#號確認之后,腳輸出RB2腳輸出高電平,繼電器閉合,執行一次開鎖動作。 若用戶輸入的密碼正確,揚聲器發出一聲稍長的“滴”提示聲,若輸入的密碼與上次修改的不符,則發出短促的“滴”聲。連續3次輸入密碼錯誤之后,程序鎖死,揚聲器報警。直到CPU被復位或從新上電。軟件設計 軟件流程圖見圖3。CPU上電或復位之后將最近一次修改并保存到EEPROM的密碼讀出,最為參照密匙。然后等待用戶輸入開鎖密碼。若5分鐘以內沒有接受到用戶的任何輸入,CPU自動轉入掉電模式,用戶輸入任意值可喚醒CPU。每次修改密碼之后,CPU將新的密碼存入內部4個連續的EEPROM單元,掉電后該數據任有效。每執行一次開鎖指令,CPU將當前輸入密碼與該值比較,看是否真確,并給出相應的提示和控制。布 局 所有元件均使用SMD表貼封裝,縮小體積,便于產品安裝,60X60雙面PCB板,頂層是一體化輸入鍵盤,底層是元件層。成型后的產品體積小巧,能很方便的嵌入防盜鐵門、保險箱柜。
上傳時間: 2013-10-31
上傳用戶:uuuuuuu
PC機之間串口通信的實現一、實驗目的 1.熟悉微機接口實驗裝置的結構和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.學會串行通信程序的編制方法。 二、實驗內容與要求 1.基本要求主機接收開關量輸入的數據(二進制或十六進制),從鍵盤上按“傳輸”鍵(可自行定義),就將該數據通過8251A傳輸出去。終端接收后在顯示器上顯示數據。具體操作說明如下:(1)出現提示信息“start with R in the board!”,通過調整乒乓開關的狀態,設置8位數據;(2)在小鍵盤上按“R”鍵,系統將此時乒乓開關的狀態讀入計算機I中,并顯示出來,同時顯示經串行通訊后,計算機II接收到的數據;(3)完成后,系統提示“do you want to send another data? Y/N”,根據用戶需要,在鍵盤按下“Y”鍵,則重復步驟(1),進行另一數據的通訊;在鍵盤按除“Y”鍵外的任意鍵,將退出本程序。2.提高要求 能夠進行出錯處理,例如采用奇偶校驗,出錯重傳或者采用接收方回傳和發送方確認來保證發送和接收正確。 三、設計報告要求 1.設計目的和內容 2.總體設計 3.硬件設計:原理圖(接線圖)及簡要說明 4.軟件設計框圖及程序清單5.設計結果和體會(包括遇到的問題及解決的方法) 四、8251A通用串行輸入/輸出接口芯片由于CPU與接口之間按并行方式傳輸,接口與外設之間按串行方式傳輸,因此,在串行接口中,必須要有“接收移位寄存器”(串→并)和“發送移位寄存器”(并→串)。能夠完成上述“串←→并”轉換功能的電路,通常稱為“通用異步收發器”(UART:Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251。8251A異步工作方式:如果8251A編程為異步方式,在需要發送字符時,必須首先設置TXEN和CTS#為有效狀態,TXEN(Transmitter Enable)是允許發送信號,是命令寄存器中的一位;CTS#(Clear To Send)是由外設發來的對CPU請求發送信號的響應信號。然后就開始發送過程。在發送時,每當CPU送往發送緩沖器一個字符,發送器自動為這個字符加上1個起始位,并且按照編程要求加上奇/偶校驗位以及1個、1.5個或者2個停止位。串行數據以起始位開始,接著是最低有效數據位,最高有效位的后面是奇/偶校驗位,然后是停止位。按位發送的數據是以發送時鐘TXC的下降沿同步的,也就是說這些數據總是在發送時鐘TXC的下降沿從8251A發出。數據傳輸的波特率取決于編程時指定的波特率因子,為發送器時鐘頻率的1、1/16或1/64。當波特率指定為16時,數據傳輸的波特率就是發送器時鐘頻率的1/16。CPU通過數據總線將數據送到8251A的數據輸出緩沖寄存器以后,再傳輸到發送緩沖器,經移位寄存器移位,將并行數據變為串行數據,從TxD端送往外部設備。在8251A接收字符時,命令寄存器的接收允許位RxE(Receiver Enable)必須為1。8251A通過檢測RxD引腳上的低電平來準備接收字符,在沒有字符傳送時RxD端為高電平。8251A不斷地檢測RxD引腳,從RxD端上檢測到低電平以后,便認為是串行數據的起始位,并且啟動接收控制電路中的一個計數器來進行計數,計數器的頻率等于接收器時鐘頻率。計數器是作為接收器采樣定時,當計數到相當于半個數位的傳輸時間時再次對RxD端進行采樣,如果仍為低電平,則確認該數位是一個有效的起始位。若傳輸一個字符需要16個時鐘,那么就是要在計數8個時鐘后采樣到低電平。之后,8251A每隔一個數位的傳輸時間對RxD端采樣一次,依次確定串行數據位的值。串行數據位順序進入接收移位寄存器,通過校驗并除去停止位,變成并行數據以后通過內部數據總線送入接收緩沖器,此時發出有效狀態的RxRDY信號通知CPU,通知CPU8251A已經收到一個有效的數據。一個字符對應的數據可以是5~8位。如果一個字符對應的數據不到8位,8251A會在移位轉換成并行數據的時候,自動把他們的高位補成0。 五、系統總體設計方案根據系統設計的要求,對系統設計的總體方案進行論證分析如下:1.獲取8位開關量可使用實驗臺上的8255A可編程并行接口芯片,因為只要獲取8位數據量,只需使用基本輸入和8位數據線,所以將8255A工作在方式0,PA0-PA7接實驗臺上的8位開關量。2.當使用串口進行數據傳送時,雖然同步通信速度遠遠高于異步通信,可達500kbit/s,但由于其需要有一個時鐘來實現發送端和接收端之間的同步,硬件電路復雜,通常計算機之間的通信只采用異步通信。3.由于8251A本身沒有時鐘,需要外部提供,所以本設計中使用實驗臺上的8253芯片的計數器2來實現。4:顯示和鍵盤輸入均使用DOS功能調用來實現。設計思路框圖,如下圖所示: 六、硬件設計硬件電路主要分為8位開關量數據獲取電路,串行通信數據發送電路,串行通信數據接收電路三個部分。1.8位開關量數據獲取電路該電路主要是利用8255并行接口讀取8位乒乓開關的數據。此次設計在獲取8位開關數據量時采用8255令其工作在方式0,A口輸入8位數據,CS#接實驗臺上CS1口,對應端口為280H-283H,PA0-PA7接8個開關。2.串行通信電路串行通信電路本設計中8253主要為8251充當頻率發生器,接線如下圖所示。
上傳時間: 2013-12-19
上傳用戶:小火車啦啦啦