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

正文內(nèi)容

基于cpld的多功能信號(hào)發(fā)生器設(shè)計(jì)(編輯修改稿)

2025-07-15 17:04 本頁(yè)面
 

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