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

正文內(nèi)容

基于cpld的多功能信號發(fā)生器設計(編輯修改稿)

2025-07-15 17:04 本頁面
 

【文章內(nèi)容簡介】 二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中要先設置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,無需人工干預。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如圖37所示,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。圖37 液晶內(nèi)帶字符庫 (5)液晶初始化液晶初始化就是設置液晶的個各個工作模式。(1)延時15ms;(2)寫指令38H(不檢測忙信號);(設置16*2顯示,5*7點陣,8位數(shù)據(jù)接口)(3)延時5ms;(4)寫指令38H(不檢測忙信號);(5)延時5ms;(6)寫指令38H(不檢測忙信號);(以后每次寫指令、讀/寫操作前都得檢測忙信號);(7)寫指令08H:顯示關閉;(8)寫指令01H:清屏;(9)寫指令06H:光標移動設置;(10)寫指令0CH:顯示開及光標設置。 鍵盤模塊傳統(tǒng)的4*4鍵盤,是用單片機邊界掃描,分橫線和豎線,如圖38。圖38 4*4鍵盤鍵盤的作用是設定信號源的頻率值和信號類型的,是人機交互的重要組成部分。如果鍵盤做的性能不夠穩(wěn)定,那么用戶的使用和整機給人帶來的感覺都會嚴重受挫,而且對后續(xù)程序的編寫和調(diào)試都會帶來很大的不便。按鍵一端接在橫線上,另一端接在豎線上,橫線經(jīng)過電阻接到了電源,當沒有按鍵按下,橫線腳總是高電平。將橫線接到單片機,單片機不斷的讀4位橫線的電平。然后單片機在豎線上輸出高電平或低電平。具體做法是讓4位豎線輸出1110,然后讓0左移,依次輸出1101010111。就這樣不斷掃描,始終保持有且只有一根豎線輸出低電平。當有按鍵按下時,某一橫線和某一豎線就會連通,在橫線上就會讀到低電平,然后根據(jù)這一時刻豎線輸出的狀態(tài)就可以完全確定是哪個按鍵按下。比如圖21中圈中的那個按鍵按下時,如果此時row2輸出低電平,讀line2的電平就會是低電平,因此就知道有按鍵按下,然后根據(jù)這時刻的row值和line值就可以確定是該鍵按下,就得到了按鍵信息。因為人的按鍵動作(一般大于幾十ms)遠比單片機掃描速度(us級別)慢,所以不用擔心按鍵按下時豎線掃描還沒掃到那一列按鍵就松開了的情況。因為按鍵都是機械按鍵,在按下和松開的時候都存在較嚴重的機械振動,這種機械抖動的速度比單片機的掃描速度快,這樣就會引起重復按鍵的后果。外界的干擾也會使出現(xiàn)假按下的現(xiàn)象,所以按鍵一般都需要防抖動。這種按鍵還有另外兩個嚴重的缺點,一是消耗的內(nèi)部CPU的資源很多。因為要不斷的掃描,不斷的輸出和讀入,就為了個鍵盤消耗那么多的資源很是浪費,影響其他任務的執(zhí)行。二是要占用的引腳很多,4*4鍵盤就要8個IO口,如果鍵盤數(shù)再增加,那就要更多的引腳,這顯然不佳。為了改變上述缺點,這次對鍵盤做了改進?;驹聿蛔?,但是單獨用個差點性能的單片機來管理它,將按鍵值處理后通過串行通信將數(shù)據(jù)傳給主單片機,這樣只占用了主單片機的2個IO口,而且只有當有按鍵動作時才將數(shù)據(jù)傳給主控單片機,極大的節(jié)省了主單片機的資源。而且這種小模塊做好了就可以長期使用,后面的人用起來也很方便,不需要重新開始。和傳統(tǒng)的鍵盤相比,此鍵盤做了改進。此次的鍵盤是用ATmega8單獨管理的,然后將數(shù)據(jù)經(jīng)過USART的通信方式跟主控單片機ATmega8515傳輸按鍵信息,ATmega8管理鍵盤產(chǎn)用了比較完善的防抖動措施,使鍵盤性能得到較大的改善,ATmega8單片機的軟件流程圖如圖39。圖39 鍵盤軟件流程圖圖39中的初始化是對單片機工作狀態(tài)和跟ATmega8515通信做所必要的設置。通過“讀延時后再讀、比較兩次數(shù)據(jù)”這種方式,分別對按下和彈起時刻做處理來消除機械抖動,而且最后是在按鍵松開后才最終得到確定的數(shù)據(jù)的,也就是說ATmega8單片機是在按鍵松開后將數(shù)據(jù)傳輸給ATmega8515單片機的。這樣有個好處就是,如果只是在按下時防抖動來確定數(shù)據(jù),然后將數(shù)據(jù)傳輸給主控單片機,那么當按著不動時,將不斷的傳輸同一數(shù)據(jù),造成重復按鍵的效果,顯然不好。所以在彈起時再進行一次防抖動,彈起后再確定數(shù)據(jù)和傳輸數(shù)據(jù),這樣就更加穩(wěn)定可靠,也避免了上述問題。對于按鍵值的確定,因為是豎線輸出,橫線讀入,所以按鍵值key是由兩個共同決定的,所以只要用兩個switchcase語句分別對橫線和豎線的各種情況作出處理,就可以將得到的key值轉換為自定的按鍵代號。而且switchcase語句可以在沒有按鍵按下時保持當前值,便于鍵盤模塊的單獨調(diào)試。本系統(tǒng)使用的是5*4鍵盤,使用的是019的按鍵代號,所以ATmega8傳輸給ATmega8515的是019中的數(shù)字。各個單獨的功能模塊將在其他地方介紹,這里先介紹下人機交互,介紹人機交互可以從總體上來了解整個系統(tǒng)的工作流程,實現(xiàn)什么樣的功能,而具體怎樣實現(xiàn)功能則不是此處的討論重點。根據(jù)人機交互的要求,它更多的考慮用戶的體驗。鍵盤上總共20個按鍵,編號為019,其中09是數(shù)字鍵,輸入就是數(shù)字。其他的按鍵對應如下表:10111214151619其他正弦波三角波方波FSKASKBPSKHz空表33 鍵值對應的功能其中按下19時在液晶上顯示的是Hz,其實還有其他的功能,因為它是最后一個按鍵信息,所以等到19就知道數(shù)據(jù)輸入結束,液晶上給出單位,單片機將數(shù)據(jù)傳給CPLD,傳完后將單片機內(nèi)暫存的數(shù)據(jù)釋放,等待下一次輸入新數(shù)據(jù)。所以它將相當于“運行”按鈕,開始進行數(shù)據(jù)的處理和傳輸。當按鍵輸入的是功能鍵時,也就是上表中的鍵值時,液晶就應該輸出對應信號類型。然后按鍵輸入頻率值,也就是09間的逐個逐個的數(shù)字,液晶就應當逐個逐個的輸出數(shù)字。也就是說按鍵每按一次(09之間的數(shù)字),液晶就要將該數(shù)字顯示出來。最后按下19,液晶就給出單位Hz。然后表面上看就沒什么動作了,具體數(shù)據(jù)的處理和傳輸在人機界面上是看不到的。按鍵完后就可以用示波器看輸出波形了。除了FSK外,其他的波形只需要輸入一個頻率字即可,所以在顯示信號類型的同時顯示提示符“F1”,例如ASK,在按15鍵時顯示:ASK F1然后后面跟按鍵輸入的頻率數(shù)字。但是FSK有兩個頻率字,它的顯示如下:FSK F1F2 只有在F1輸入完成,輸完第一個“Hz”后才會出現(xiàn)F2。也就是說FSK模式要輸入兩次“Hz”。還有幾個按鍵沒有使用,就是13/17/18,當按下這三個鍵時,系統(tǒng)不做任何動作,當然鍵值還是會傳給主控單片機ATmega8515的,由ATmega8515來處理,管理鍵盤的ATmega8不將他們撇開,這樣做的好處是讓鍵盤模塊化,以便于其他系統(tǒng)使用。 單片機和CPLD通信的實現(xiàn) 單片機的一個重要任務就是跟CPLD通信,這個因為不像單片機間的USART通信,沒有固定的接口或者協(xié)議來進行通信,所以得自己定義一種通信的協(xié)議。 由于是自己設定通信協(xié)議,所以具有很大的靈活性。根據(jù)產(chǎn)生波形的需要,CPLD所需要的控制信號和數(shù)據(jù)信號都不同,所以單片機和CPLD的通信是在最后完成的。 CPLD需要產(chǎn)生正弦波,三角波,方波,F(xiàn)SK,ASK,BPSK六種波形。其中前三種基本波形只需要一個頻率字即可。調(diào)制波形的調(diào)制信號是使用的固定的500Hz,不需要按鍵控制。BPSK和ASK需要輸入載波頻率,F(xiàn)SK需要輸入兩個頻率字。具體接口如表34:正弦波三角波方波FSKASKBPSK調(diào)制信號空空空內(nèi)部1KHz內(nèi)部1KHz內(nèi)部1KHz頻率字F1輸入輸入輸入輸入輸入輸入頻率字F2空空空輸入空空表34 單片機和CPLD傳輸數(shù)據(jù)表圖310 單片機和CPLD接口連接圖單片機和CPLD的接口連接圖如圖311所示,其中D0D7是并行的8位數(shù)據(jù)口。reset是復位引腳,單片機給CPLD復位用的,在軟件里將它在最開始執(zhí)行,而且只執(zhí)行一次,達到的效果就是跟單片機的按鍵復位一樣。當reset腳為高電平時就復位。給CPLD的f_slect信號是頻率字選擇信號,因為FSK模式時要輸入兩個頻率字,所以當f_slect為0時,數(shù)據(jù)給F1;當f_slect為1時,數(shù)據(jù)給F2。因為其他的都是用的F1,所以在其他模式時f_slect一直為0,只有在FSK模式傳F2時才將f_slect置1。時鐘信號clk就相當于數(shù)據(jù)交接的指令,當clk的上升沿到來時,CPLD讀取8位并行數(shù)據(jù)接口上的數(shù)據(jù)。EN是使能信號,只有當EN為高電平時才能進行8位并行數(shù)據(jù)的傳輸。低電平將禁止CPLD讀取數(shù)據(jù)。波形輸出方式由manner的狀態(tài)決定,manner和輸出波形對應如下表:manner01234567輸出波形正弦波三角波方波FSKASKBPSK空空表35 manner狀態(tài)表 控制狀態(tài)manner對CPLD的控制是獨立的,不受時鐘信號clk和EN的控制,但是受reset的控制。當reset為高時,manner被置為零。f_slect和manner是有聯(lián)系的,只有當manner為3時,即輸出FSK時,f_slect才可能有高電平,因為此時要傳輸兩個頻率字。 在CPLD內(nèi)部使用的頻率字是32位的,也就是說每個頻率字包括4個8位數(shù)據(jù),要傳4次,因此每次傳數(shù)據(jù)時,單片機的clk要給出4次上升沿,每次上升沿時給一次8位并行數(shù)據(jù)data。CPLD就按這種協(xié)議接收數(shù)據(jù),然后把4個8位數(shù)據(jù)連接成32位。在單片機方也是先將頻率字分成32位2進制數(shù),保存在一個包含4個元素的一維數(shù)組中,單片機從高位到低位分4此傳輸,CPLD按順序接收然后組合成32位。按照從高位到低位的順序是有好處的,那樣CPLD恢復32位數(shù)據(jù)就簡單得多了,只要3次“左移、相加”就可以了。 單片機和CPLD的通信時序控制圖如下圖:圖311 單片機和CPLD的通信時序控制圖該圖是為了說明控制時序的,先要讓EN置1。在clk的上升沿到來之前要將data數(shù)據(jù)準備好,傳輸數(shù)據(jù)是4個串行的傳,每個是并行的8為數(shù)據(jù)。4 多功能信號發(fā)生器的軟件設計 USART串行通信 USART介紹通用同步和異步串行接收器和轉發(fā)器 (USART) 是一個高度靈活的串行通訊設備。主要特點為:? 全雙工操作( 獨立的串行接收和發(fā)送寄存器);? 異步或同步操作;? 主機或從機提供時鐘的同步操作;? 高精度的波特率發(fā)生器;? 支持5, 6, 7, 8, 或9 個數(shù)據(jù)位和1 個或 2 個停止位;? 硬件支持的奇偶校驗操作;? 數(shù)據(jù)過速檢測;? 幀錯誤檢測;? 噪聲濾波,包括錯誤的起始位檢測,以及數(shù)字低通濾波器;? 三個獨立的中斷:發(fā)送結束中斷, 發(fā)送數(shù)據(jù)寄存器空中斷,以及接收結束中斷;? 多處理器通訊模式;? 倍速異步通訊模式。 USART設置本系統(tǒng)使用異步操作,5個數(shù)據(jù)位和2個停止位,奇偶校驗,然后通過中斷來接收數(shù)據(jù)。ATmega8515單片機和管理鍵盤的ATmega8單片機就是通過USART串行通信方式來傳輸數(shù)據(jù)的。因為總共用的20個按鍵,按鍵值時0~19,所以使用5個數(shù)據(jù)位就恰好合適。將ATmega8設置為傳輸數(shù)據(jù),將ATmega8515設置為接收數(shù)據(jù)。(1)IO數(shù)據(jù)寄存器UDR圖41 USART IO 數(shù)據(jù)寄存器UDRUSART 發(fā)送數(shù)據(jù)緩沖寄存器和 USART 接收數(shù)據(jù)緩沖寄存器共享相同的 I/O 地址,稱為USART 數(shù)據(jù)寄存器或 UDR。將數(shù)據(jù)寫入 UDR 時實際操作的是發(fā)送數(shù)據(jù)緩沖器存器(TXB),讀 UDR時實際返回的是接收數(shù)據(jù)緩沖寄存器 (RXB) 的內(nèi)容。在 7 比特字長模式下,未使用的高位被發(fā)送器忽略,而接收器則將它們設置為 0。只有當UCSRA寄存器的UDRE標志置位后才可以對發(fā)送緩沖器進行寫操作。如果UDRE沒有置位,那么寫入 UDR 的數(shù)據(jù)會被 USART 發(fā)送器忽略。當數(shù)據(jù)寫入發(fā)送緩沖器后,若移位寄存器為空,發(fā)送器將把數(shù)據(jù)加載到發(fā)送移位寄存器。然后數(shù)據(jù)串行地從 TxD 引腳輸出。(2)控制和狀態(tài)寄存器AUCSRA圖42控制和狀態(tài)寄存器AUCSRA 全部設置為0就可以了。(3)控制和狀態(tài)寄存器BUCSRB圖43控制和狀態(tài)寄存器BUCSRB? Bit 7 – RXCIE: 接收結束中斷使能置位后使能 RXC 中斷。當 RXCIE 為 1,全局中斷標志位 SREG 置位, UCSRA 寄存器的 RXC 亦為 1 時可以產(chǎn)生 USART 接收結束中斷。 (ATmega8515中SREG置位,所以SREG|=0X80,其中的0X代表16進制數(shù);在mega8515單片機中此為置1,mega8中置0)? Bit 6 – TXCIE: 發(fā)送結束中斷使能置位后使能 TXC 中斷。當 TXCIE為 1,全局中斷標志位 SREG 置位,UCSRA 寄存器的TXC 亦為 1 時可以產(chǎn)生 USART 發(fā)送結束中斷。 (mega8515和mega8都設置為0)? Bit 5 – UDRIE: USART 數(shù)據(jù)寄存器空中斷使能置位后使能 UDRE 中斷。當 UDRIE 為 1,全局中斷標志位 SREG 置位,UCSRA 寄存器的 UDRE 亦為 1 時可以產(chǎn)生 USART 數(shù)據(jù)寄存器空中斷。 (不需要此中斷,都設置為0)? Bit 4 – RXEN: 接收使能置位后將啟動 USART 接收器。 RxD 引腳的通用端口
點擊復制文檔內(nèi)容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1