找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5609|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

應(yīng)用8051IP核設(shè)計(jì)頻率測(cè)量系統(tǒng)設(shè)計(jì)論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:199781 發(fā)表于 2017-5-11 23:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

摘  要

等精度頻率測(cè)量系統(tǒng)是在電子測(cè)量技術(shù)領(lǐng)域應(yīng)用得較多的電子測(cè)量設(shè)備。對(duì)于一個(gè)用戶界面和內(nèi)部運(yùn)算都較復(fù)雜的等精度頻率測(cè)量系統(tǒng),當(dāng)前國(guó)內(nèi)的一般的解決方案是單片機(jī)+FPGA方案,其中FPGA完成高速的脈沖計(jì)數(shù)功能,而單片機(jī)則進(jìn)行脈沖計(jì)數(shù)后的有關(guān)計(jì)算和LCD、鍵盤等用戶界面的控制。此方案中的FPGA內(nèi)部資源往往利用不足,造成比較大的浪費(fèi)。本設(shè)計(jì)應(yīng)用SOPC和8051單片機(jī)IP技術(shù),通過(guò)在FPGA中嵌入8051單片機(jī)IP來(lái)取代單片機(jī)+FPGA方案中的實(shí)際的單片機(jī),這樣既少用一個(gè)實(shí)際的單片機(jī)又充分利用FPGA內(nèi)部資源,大大節(jié)省了硬件成本,是一個(gè)更好的方案。

               
目    錄
引言 ................................................................ 1
1  設(shè)計(jì)內(nèi)容  ...............................................1
1.1 設(shè)計(jì)要求 ........................................................1
1.1.1 知識(shí)要求  ......................................................1
1.1.2 能力要求  ......................................................1
1.1.3 素質(zhì)要求 ......................................................1
1.2 研究等精度頻率計(jì)的背景與意義 ....................................2
1.3 杭州康芯公司KX_7C5H開發(fā)板介紹  ..................................2
1.4 VHDL語(yǔ)言環(huán)境簡(jiǎn)  ..................................................3
1.5 8051單片機(jī)IP簡(jiǎn)介   ..............................................3
1.5.1 基本結(jié)構(gòu)  ......................................................4
1.5.2 結(jié)構(gòu)框圖  ......................................................4
1.5.3 特點(diǎn) .......................................................... 5
1.6 LCD1602液晶顯示器電路的介紹    ...................................5
1.6.1在單片機(jī)系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件的優(yōu)點(diǎn)   ...............5
1.6.2 液晶顯示簡(jiǎn)介  ............................ ......................5
1.6.3 1602字符型LCD簡(jiǎn)介   ........................................... 7
1.7 試驗(yàn)、測(cè)試、試制加工所需主要儀器設(shè)備及條件  .......................7
2  設(shè)計(jì)系統(tǒng)方案 ................................................... 8
2.1 系統(tǒng)框架  .........................................................8
2.2 頻率測(cè)量模塊 .....................................................8
2.2.1 周期測(cè)量方法 ...................................................8
2.2.2 測(cè)頻原理  .......................................................9
2.2.3 用VHDL描述硬件電路  ...........................................10
2.3 標(biāo)準(zhǔn)頻率源晶振 ..................................................11
2.4 單片機(jī)控制模塊 ..................................................11
2.5 LCD 顯示模塊 ....................................................14
2.6 鍵盤模塊  ........................................................16
2.7 信號(hào)放大整形輸入模塊 ............................................16
3  外圍電路設(shè)計(jì) ...........................................16
4  系統(tǒng)測(cè)試  ...............................................17
4.1 單片機(jī)程序調(diào)試  ..................................................17
4.2信號(hào)放大整形調(diào)試 ................................................. 17
4.3 綜合調(diào)試  ........................................................18
4.4調(diào)試中出現(xiàn)的問(wèn)題  .................................................18
5  結(jié)論  ............................................................18
謝  辭  .............................................................19
參考文獻(xiàn)  ..........................................................20
附錄一:利用VHDL語(yǔ)言設(shè)計(jì)測(cè)頻模塊   ............................21
附錄二:顯示模塊  .................................................22
附錄三:VHDL語(yǔ)言設(shè)計(jì)代碼  .......................................23
附錄四:?jiǎn)纹瑱C(jī)匯編語(yǔ)言程序清單  .................................26


引言
隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的迅速發(fā)展,以單片機(jī)作為核心的測(cè)量控制系統(tǒng)層出不窮。其中,數(shù)字頻率計(jì)是為電子測(cè)試、資源勘探以及自動(dòng)化控制等設(shè)備中不可缺少的重要模塊。
對(duì)于以頻率為參數(shù)的被測(cè)信號(hào),通常多采用的是測(cè)頻法或測(cè)周法。對(duì)于頻率變化較小的被測(cè)信號(hào), 采用測(cè)頻或測(cè)周法的效果已經(jīng)足夠。但當(dāng)被測(cè)信號(hào)頻率變化范圍較大,如100Hz~100kHz時(shí),上述方法將很難滿足在整個(gè)頻率變化范圍內(nèi)所要求的測(cè)量精度。所以,如果要求有一種測(cè)量技術(shù)能對(duì)頻率變化范圍較大的信號(hào)的測(cè)量達(dá)到相當(dāng)高的精度時(shí), 就必須采用等精度頻率測(cè)量技術(shù)。
1 設(shè)計(jì)內(nèi)容
設(shè)計(jì)并通過(guò)測(cè)試基于8051單片機(jī)IP的頻率測(cè)量系統(tǒng)。
1.應(yīng)用8051單片機(jī)IP,用VHDL設(shè)計(jì)一等精度頻率測(cè)量?jī)x。
2.設(shè)計(jì)并制作測(cè)量?jī)x的輸入電路。
3.將設(shè)計(jì)下載到FPGA開發(fā)板,連接制作的輸入電路,通過(guò)測(cè)量?jī)x的測(cè)試和檢驗(yàn)。
1.1 設(shè)計(jì)要求
1.1.1 知識(shí)要求
(1)使用Quartus II軟件設(shè)計(jì)等精度頻率測(cè)量模塊。
(2)使用Quartus II軟件設(shè)計(jì)應(yīng)用8051單片機(jī)IP的系統(tǒng)頂層模塊。
(3)使用Keil 51軟件設(shè)計(jì)系統(tǒng)的匯編語(yǔ)言控制程序。
(4)使用Quartus II軟件對(duì)以上系統(tǒng)設(shè)計(jì)進(jìn)行仿真。
(5)設(shè)計(jì)、制作外圍電路板。
(6)使用Quartus II軟件把以上設(shè)計(jì)下載到實(shí)際FPGA開發(fā)板進(jìn)行實(shí)際測(cè)試。
1.1.2.能力要求
(1)通過(guò)對(duì)等精度頻率測(cè)量?jī)x的設(shè)計(jì)與制作,培養(yǎng)學(xué)生勤于思考,勇于實(shí)踐的良好作風(fēng)。
(2)通過(guò)實(shí)訓(xùn),培養(yǎng)學(xué)生科學(xué)、嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度,使學(xué)生具有發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力。
(3)通過(guò)實(shí)訓(xùn),培養(yǎng)學(xué)生對(duì)電子系統(tǒng)的設(shè)計(jì)制作能力。
1.1.3. 素質(zhì)要求
(1)結(jié)合教學(xué)內(nèi)容,注重培養(yǎng)學(xué)生的設(shè)計(jì)意識(shí)、工藝分析意識(shí)、質(zhì)量意識(shí)。
(2)使學(xué)生能鍛煉自己快速收集、整理與分析信息資料的能力。
(3)培養(yǎng)學(xué)生敬業(yè)和創(chuàng)新的精神,進(jìn)一步提高團(tuán)隊(duì)合作能力。

1.2 研究等精度頻率計(jì)的背景與意義
隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的迅速發(fā)展,以單片機(jī)作為核心的測(cè)量控制系統(tǒng)層出不窮。其中,數(shù)字頻率計(jì)是為電子測(cè)試、資源勘探以及自動(dòng)化控制等設(shè)備中不可缺少的重要模塊。
對(duì)于以頻率為參數(shù)的被測(cè)信號(hào),通常多采用的是測(cè)頻法或測(cè)周法。對(duì)于頻率變化較小的被測(cè)信號(hào), 采用測(cè)頻或測(cè)周法的效果已經(jīng)足夠。但當(dāng)被測(cè)信號(hào)頻率變化范圍較大,如100Hz~100kHz時(shí),上述方法將很難滿足在整個(gè)頻率變化范圍內(nèi)所要求的測(cè)量精度。所以,如果要求有一種測(cè)量技術(shù)能對(duì)頻率變化范圍較大的信號(hào)的測(cè)量達(dá)到相當(dāng)高的精度時(shí), 就必須采用等精度頻率測(cè)量技術(shù)。本設(shè)計(jì)利用VHDL語(yǔ)言和復(fù)雜系統(tǒng)可編程邏輯器件FPGA開發(fā)了一種等精度頻率測(cè)量系統(tǒng)。該系統(tǒng)采用VHDL語(yǔ)言編寫程序,選用EDA開發(fā)軟件QuartusII作為開發(fā)平臺(tái),在FPGA中嵌入8051單片機(jī)IP來(lái)取代單片機(jī),并具體給出了系統(tǒng)的軟硬件設(shè)計(jì)流程,完成調(diào)試。
1.3 杭州康芯公司KX_7C5H開發(fā)板介紹
本次設(shè)計(jì)采用的是杭州康芯公司KX_7C5H開發(fā)板,配置工業(yè)級(jí)全兼容8051核,實(shí)現(xiàn)SOC系統(tǒng)設(shè)計(jì),CPU主頻高達(dá)250MHz,速度是普通51單片機(jī)的20倍,可完成部分DSP處理,還配DDS函數(shù)信號(hào)發(fā)生器IP核,并附有3032CPLD、EPCS Flash、4X4鍵盤、蜂鳴器、20MHz有源晶振蕩、8鍵、8 LED、3數(shù)碼管。JTAG、USB電源口/線、混合電壓源、USB線,光盤資料等。含多種類型液晶驅(qū)動(dòng)口,可直接插入并驅(qū)動(dòng)多種類型字符型液晶、點(diǎn)陣型液晶、或/和數(shù)字彩色液晶顯示屏。KX_7C系列板貌似一塊普通的FPGA開發(fā)板,然而它配有符合工業(yè)標(biāo)準(zhǔn)的嵌入CPU-51單片機(jī)核,因此可以實(shí)現(xiàn)常規(guī)FPGA板無(wú)法企及的強(qiáng)大功能!
  

圖1-1  杭州康芯公司KX_7C5H開發(fā)板file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
1.4 VHDL語(yǔ)言環(huán)境簡(jiǎn)介
VHDL主要用于描述設(shè)計(jì)復(fù)雜數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,在電子工程設(shè)計(jì)方面有很多優(yōu)點(diǎn)。
1.與其他的硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了它成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語(yǔ)言。
2.VHDL技術(shù)完備,具有豐富的仿真語(yǔ)句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬;另外,它還支持同步電路、異步電路和其他電路的設(shè)計(jì)。
3.VHDL設(shè)計(jì)方法靈活,對(duì)設(shè)計(jì)的描述具有相對(duì)的獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),可不管最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是,而進(jìn)行獨(dú)立的設(shè)計(jì)。
4.VHDL語(yǔ)句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解設(shè)計(jì)功能和已有設(shè)計(jì)的再利用功能。符合市場(chǎng)要求的多人進(jìn)行并行研發(fā)的大規(guī)模系統(tǒng)的迅速完成。
5.VHDL支持廣泛,目前大多數(shù)DEA工具幾乎都在不同程度上支持VHDL。

1.5 8051單片機(jī)IP簡(jiǎn)介
51 單片機(jī)最初是由Intel 公司開發(fā)設(shè)計(jì)的,但后來(lái)Intel 公司把51 核的設(shè)計(jì)方案賣給了幾家大的電子設(shè)計(jì)生產(chǎn)商,譬如 SST、Philip、Atmel 等大公司。如是市面上出現(xiàn)了各式各樣的但均以51 為內(nèi)核的單片機(jī),倒是Intel 公司自己的單片機(jī)卻顯得遜色了。這些各大電子生產(chǎn)商推出的單片機(jī)都兼容51 指令、并在51 的基礎(chǔ)上擴(kuò)展一些功能而內(nèi)部結(jié)構(gòu)是與51 一致的。

1.5.1基本結(jié)構(gòu)
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpgfile:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
(a)                               (b)
圖1-2    8051引腳圖
1.5.2結(jié)構(gòu)框架
PC 機(jī)的CPU 是基于馮諾伊曼的體系結(jié)構(gòu),然而MCU(單片機(jī))、Dsp(數(shù)字信號(hào)處理器)都是基于哈佛結(jié)構(gòu)的體系結(jié)構(gòu)。哈佛結(jié)構(gòu)與馮諾伊曼結(jié)構(gòu)有很大的不同,在馮諾伊曼體系結(jié)構(gòu)下只有一個(gè)地址空間,ROM 和RAM 可以隨意安排在這一地址范圍內(nèi)的不同空間,即ROM 和RAM 地址統(tǒng)一分配。CPU 訪問(wèn)存儲(chǔ)器時(shí),一個(gè)地址對(duì)應(yīng)唯一的存儲(chǔ)單元,可能是ROM,也可能是RAM。而哈佛結(jié)構(gòu)下ROM 和RAM 是分開編址,即程序和數(shù)據(jù)分開保存,訪問(wèn)時(shí)用不同的指令加以區(qū)分,并可同時(shí)訪問(wèn),在這樣的體系結(jié)構(gòu)下有利于提高指令的執(zhí)行速度。接下來(lái)我們將詳細(xì)介紹單片機(jī)的存儲(chǔ)器配置。
(1)一個(gè)8 位的微處理器(CPU)。
(2)片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(128B/256B),用以存放可以讀/寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等,SST89 系列單片機(jī)最多提供1K 的RAM。
(3)片內(nèi)程序存儲(chǔ)器ROM/EPROM(4KB/8KB),用以存放程序、一些原始數(shù)據(jù)和表格。但也有一些單片機(jī)內(nèi)部不帶ROM/EPROM,如8031,8032,80C31 等。目前單片機(jī)的發(fā)展趨勢(shì)是將RAM 和ROM 都集成在單片機(jī)里面,這樣既方便了用戶進(jìn)行設(shè)計(jì)又提高了系統(tǒng)的抗干擾性。SST 公司推出的89 系列單片機(jī)分別集成了16K、32K、64K Flash 存儲(chǔ)器,可供用戶根據(jù)需要選用。
(4)四個(gè)8 位并行I/O 接口P0~P3,每個(gè)口既可以用作輸入,也可以用作輸出。
(5)兩個(gè)定時(shí)器/計(jì)數(shù)器,每個(gè)定時(shí)器/計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對(duì)外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制。為方便設(shè)計(jì)串行通信,目前的52 系列單片機(jī)都會(huì)提供3 個(gè)16 位定時(shí)器/計(jì)數(shù)器。
(6)五個(gè)中斷源的中斷控制系統(tǒng)。現(xiàn)在新推出的單片機(jī)都不只5 個(gè)中斷源,例如SST89E58RD 就有9 個(gè)中斷源。
(7)一個(gè)全雙工UART(通用異步接收發(fā)送器)的串行I/O 口,用于實(shí)現(xiàn)單片機(jī)之間或單機(jī)與微機(jī)之間的串行通信。
(8)片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率為12MHz。SST89V58RD 最高允許振蕩頻率達(dá)40MHz,因而大大的提高了指令的執(zhí)行速度。
1.5.3 特點(diǎn)
(1)指令系統(tǒng)與8051單片機(jī)完全兼容, 硬件部分也基本相同, 時(shí)鐘頻率可比傳統(tǒng)的8051單片機(jī)要高。
(2)8051單片機(jī)I P core一般無(wú)內(nèi)部ROM 和RAM,所有程序ROM和內(nèi)部RAM都必須外接。用FPGA實(shí)現(xiàn)時(shí), 可使用FPGA片內(nèi)ROM、RAM資 源 實(shí) 現(xiàn) 。
(3)輸出與輸入(I /O)口是分開的。如果需要使用雙向口功能, 必須外接一些電路才能實(shí)現(xiàn)。
(4)單片機(jī)程序可使用普通8051單片機(jī)程序編譯器生成單片機(jī)HEX程序代碼, 再在FPGA的EDA開發(fā)平臺(tái)下下載到充當(dāng)程序ROM的FPGA片內(nèi)ROM以供使用。
1.6 LCD1602液晶顯示器電路的介紹
1.6.1在單片機(jī)系統(tǒng)中應(yīng)用液晶顯示器作為輸出器件的優(yōu)點(diǎn)
(1)顯示質(zhì)量高
由于液晶顯示器每一個(gè)點(diǎn)在收到信號(hào)后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高且不會(huì)閃爍。
(2)數(shù)字式接口
液晶顯示器都是數(shù)字式的,和單片機(jī)系統(tǒng)的接口更加簡(jiǎn)單可靠,操作更加方便。
(3)體積小、重量輕
液晶顯示器通過(guò)顯示屏上的電極控制液晶分子狀態(tài)來(lái)達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。
(4)功耗低
相對(duì)而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動(dòng)IC上,因而耗電量比其它顯示器要少得多。
1.6.2液晶顯示簡(jiǎn)介
(1)液晶顯示原理
液晶顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動(dòng)、易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、PDA移動(dòng)通信工具等眾多領(lǐng) 域。
(2)液晶顯示器的分類
液晶顯示的分類方法有很多種,通?砂雌滹@示方式分為段式、字符式、點(diǎn)陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動(dòng)方式來(lái)分,可以分為靜態(tài)驅(qū)動(dòng)(Static)、單純矩陣驅(qū)動(dòng)(Simple Matrix)和主動(dòng)矩陣驅(qū)動(dòng)(Active Matrix)三種。
(3)液晶顯示器各種圖形的顯示原理:
①線段的顯示
點(diǎn)陣圖形式液晶由M×N個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對(duì)應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個(gè)點(diǎn)組成,屏上64×16個(gè)顯示單元與顯示RAM區(qū)1024字節(jié)相對(duì)應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對(duì)應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時(shí),則屏幕的左上角顯示一條短亮線,長(zhǎng)度為8個(gè)點(diǎn);當(dāng)(3FFH)=FFH時(shí),則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H時(shí),則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。
②字符的顯示
用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋(gè)字符由6×8或8×8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。
③漢字的顯示
漢字的顯示一般采用圖形的方式,事先從微機(jī)中提取要顯示的漢字的點(diǎn)陣碼(一般用字模提取軟件),每個(gè)漢字占32B,分左右兩半,各占16B,左邊為1、3、5……右邊為2、4、6……根據(jù)在LCD上開始顯示的行列號(hào)及每行的列數(shù)可找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加1,送第二個(gè)字節(jié),換行按列對(duì)齊,送第三個(gè)字節(jié)……直到32B顯示完就可以LCD上得到一個(gè)完整漢字。
1.6.3 1602字符型LCD簡(jiǎn)介  
字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。一般1602字符型液晶顯示器實(shí)物如下圖:
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
     file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg
                                           file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
圖1-3   LCD1620引腳圖
        
                           
圖1-4   1602字符型液晶顯示器實(shí)物
                           
1.7 試驗(yàn)、測(cè)試、試制加工所需主要儀器設(shè)備及條件
(1)主要儀器及設(shè)備:示波器、指針式萬(wàn)用表、數(shù)字式萬(wàn)用表、FPGA開發(fā)板等。
(2)仿真及編程軟件:Quartus II、Keil uvision4編程調(diào)試軟件。
(3)電路板制作焊接設(shè)備:Protell99SE、打印機(jī)、轉(zhuǎn)印機(jī)、腐蝕槽、手動(dòng)鉆臺(tái)、電烙鐵等。
2  設(shè)計(jì)系統(tǒng)方案
2.1 系統(tǒng)框架
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image011.png 本設(shè)計(jì)應(yīng)用SOPC 和 8051 單片機(jī)IP 技術(shù), 通過(guò)在FPGA 中嵌入8051單片機(jī)IP 來(lái)取代單片機(jī),其框圖如圖2-1。本系統(tǒng)主要包括信號(hào)放大整形輸入模塊 、標(biāo)準(zhǔn)頻率源晶振 、 測(cè)頻模塊、單片機(jī)控制模塊、LCD 顯示模塊和鍵盤模塊。其中,信號(hào)放大整形輸入模塊用來(lái)對(duì)待測(cè)信號(hào)的進(jìn)行前端處理,以便作為測(cè)頻模塊的輸入信號(hào)。測(cè)頻模塊用來(lái)測(cè)量被測(cè)信號(hào)的頻率,用 VHDL 語(yǔ)言設(shè)計(jì) , 由FPGA 實(shí)現(xiàn)計(jì)數(shù)。 單片機(jī)控制模塊使用 8051 單片機(jī) IP核在 FPGA中 實(shí)現(xiàn)。單片機(jī)控制模塊控制測(cè)頻模塊進(jìn)行測(cè)頻,讀取測(cè)頻數(shù)據(jù) , 并作相應(yīng)數(shù)據(jù)處理 , 通過(guò) LCD顯示模塊顯示測(cè)量結(jié)果。晶振為 FPGA 中的測(cè)頻模塊和單片機(jī)控制模塊提供標(biāo)準(zhǔn)頻率信號(hào)和時(shí)鐘信號(hào)。
            
  




圖2-1 系統(tǒng)框架圖

2.2頻率測(cè)量模塊
2.2.1周期測(cè)量方法
    (1) 直接周期測(cè)量法:用被測(cè)信號(hào)經(jīng)放大整形后形成的方波信號(hào)直接控制計(jì)數(shù)門控電路,使主門開放時(shí)間等于信號(hào)周期Tx,時(shí)標(biāo)為Ts的脈沖在主門開放時(shí)間進(jìn)入計(jì)數(shù)器。設(shè)在Tx期間計(jì)數(shù)值為N,可以根據(jù)以下公式來(lái)算得被測(cè)信號(hào)周期:
Tx=NTs                        (2.1)
經(jīng)誤差分析,可得結(jié)論:用該測(cè)量法測(cè)量時(shí),被測(cè)信號(hào)的頻率越高,測(cè)量誤差越大。
(2)等精度周期測(cè)量法:該方法在測(cè)量電路和測(cè)量精度上與等精度頻率測(cè)量完全相同,只是在進(jìn)行計(jì)算時(shí)公式不同,用周期1/T代換頻率f即可,其計(jì)算公式為
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg
Tx=                                (2.2)
2.2.2測(cè)頻原理   
      測(cè)頻模塊內(nèi)部結(jié)構(gòu)如圖2-2所示。主要通過(guò)一個(gè)預(yù)置門控制和兩個(gè)計(jì)數(shù)器A,B實(shí)現(xiàn)。給CLK一個(gè)標(biāo)準(zhǔn)時(shí)鐘頻率fc,當(dāng)測(cè)頻開始使,先將CLR置1,使兩個(gè)計(jì)數(shù)器清零。單片機(jī)給預(yù)置門CTRL置0,不讓計(jì)數(shù)器計(jì)時(shí),然后單片機(jī)在給預(yù)制門信號(hào)CTRL置1,當(dāng)被測(cè)信號(hào)Tsig上升沿到來(lái)時(shí)與預(yù)制門信號(hào)同步時(shí)使能端EN為1,開始計(jì)數(shù),經(jīng)過(guò)一個(gè)預(yù)置時(shí)間T時(shí),單片機(jī)將預(yù)置門信號(hào)CTRL置0時(shí),計(jì)數(shù)器仍然計(jì)數(shù),只有Tsig上升沿來(lái)臨時(shí)使能端EN為0,計(jì)數(shù)才停止。一個(gè)預(yù)置時(shí)間是被測(cè)信號(hào)周期的整數(shù)倍, 計(jì)數(shù)器B 沒(méi)有普通頻率計(jì)的計(jì)數(shù)器計(jì)數(shù)最大為一個(gè)周期的誤差, 實(shí)現(xiàn)等精度測(cè)量。計(jì)數(shù)器A 雖然還有最大為一個(gè)周期的誤差, 但由于此誤差與被測(cè)信號(hào)無(wú)關(guān), 并且標(biāo)準(zhǔn)時(shí)鐘信號(hào)的頻率 fc通常非常高, 故可忽略。在一個(gè)預(yù)制門時(shí)間內(nèi),計(jì)數(shù)器A的計(jì)數(shù)值為QA=fc*T,計(jì)數(shù)器B的計(jì)數(shù)時(shí)間為QB=fx*T,由于QA/fc=QB/fx=T,fx=(QA/QB)*fc。一個(gè)預(yù)制門時(shí)間之后,兩計(jì)數(shù)器的計(jì)數(shù)值A(chǔ)Q 和BQ 通過(guò)多路選擇器MUX64-8,在單片機(jī)發(fā)出的選通信號(hào)SEL 控制下分8 次通過(guò)DOUT讀入單片機(jī)控制模塊。在單片機(jī)控制模塊中由單片機(jī)軟件通過(guò)以上公式計(jì)算待測(cè)頻率 fx。

file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg

圖2-2 測(cè)頻模塊內(nèi)部結(jié)構(gòu)圖


2.2.3用VHDL描述硬件電路
(1)D觸發(fā)器
D觸發(fā)器是現(xiàn)代數(shù)字系統(tǒng)中最基本的時(shí)序單元和底層元件,本設(shè)計(jì)的D觸發(fā)器在復(fù)位信號(hào)為高電平CP脈沖的上升沿(或者下降沿)的作用下,把D端的數(shù)據(jù)打入D觸發(fā)器,在復(fù)位信號(hào)為低電平時(shí),D觸發(fā)器的輸出端Q和Qb分別輸出0和1,程序見附錄三。
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg




D觸發(fā)器邏輯符號(hào)
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png  

(2)32位計(jì)數(shù)器
    計(jì)數(shù)器能夠記憶時(shí)鐘信號(hào)脈沖個(gè)數(shù)的時(shí)序邏輯電路,不僅可以對(duì)脈沖進(jìn)行計(jì)數(shù),還可以分頻、定時(shí)等。本設(shè)計(jì)中的32為計(jì)數(shù)器分別用來(lái)計(jì)表針頻率信號(hào)和被測(cè)頻率信號(hào)的周期數(shù),計(jì)數(shù)器是以二進(jìn)制數(shù)據(jù)的形式計(jì)數(shù),為了提高測(cè)量精度所以講計(jì)數(shù)器設(shè)為32位。在計(jì)數(shù)器使能端EN高電平時(shí),當(dāng)CLR置1時(shí),計(jì)數(shù)器清零;當(dāng)CLR置0,上升沿到來(lái)時(shí)計(jì)數(shù)值加1,程序見附錄三。
32位邏輯符號(hào)
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png



file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg圖2-3  32位計(jì)數(shù)器仿真圖
3MUX64-8多路選擇器
因?yàn)閱纹瑱C(jī)的數(shù)據(jù)總線有限,一次只能讀取一個(gè)8位的二進(jìn)制數(shù)據(jù)。MUX64-8多路選擇器的作用就是將兩個(gè)計(jì)數(shù)器的64位數(shù)值暫存,通過(guò)單片機(jī)控制限號(hào)sel下分八次分八次將數(shù)值讀入,程序見附錄三。
MUX64-8多路選擇器邏輯符號(hào)
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png





file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg
圖2-4  MUX64-8多路選擇器仿真圖
2.3 標(biāo)準(zhǔn)頻率源晶振
  本設(shè)計(jì)使用的是杭州康芯公司KX_7C5H開發(fā)板24M本振頻率,進(jìn)行32次分頻當(dāng)做計(jì)數(shù)頻率,將24M頻率進(jìn)行二分頻用作單片機(jī)頻率。
2.4 單片機(jī)控制模塊
(1)單片機(jī)總流程
首先將操作界面初始化,判斷是否有按鍵按下,確認(rèn)按鍵按下時(shí),測(cè)頻模塊開始測(cè)頻,測(cè)好的數(shù)據(jù)讀取單片機(jī),單片機(jī)按公式計(jì)算:
fx=(QA/QB)*fc                  (2.3)
主程序不斷掃描鍵盤子程序,當(dāng)某鍵按下時(shí),程序跳轉(zhuǎn)到相應(yīng)的子程序執(zhí)行其功能,然后返回繼續(xù)執(zhí)行鍵盤掃描主程序。當(dāng)鍵盤子程序掃描到測(cè)頻鍵按下時(shí),讀入鍵值后跳轉(zhuǎn)到測(cè)頻子程序,測(cè)頻子程序先置測(cè)頻控制位CLR(P1.6)、AS(P1.4)將FPGA內(nèi)的計(jì)數(shù)器清零,選擇測(cè)量被測(cè)信號(hào)。并將CS(P1.3)置零,即為選擇測(cè)頻,然后通過(guò)鍵盤將預(yù)置門的時(shí)間讀入單片機(jī),打開預(yù)置門進(jìn)行測(cè)頻計(jì)數(shù),等預(yù)置門時(shí)間到后,關(guān)斷預(yù)置門,F(xiàn)PGA關(guān)斷預(yù)置門后將給單片機(jī)一個(gè)結(jié)束信號(hào),單片機(jī)讀入結(jié)束信號(hào)后,分四次將測(cè)頻結(jié)果的32位數(shù)據(jù)讀入單片機(jī),計(jì)算后將結(jié)果換為BCD碼送LCD1620顯示輸出。

file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg
圖2-5 單片機(jī)總流程圖



(2)測(cè)頻子程序流程
測(cè)頻開始時(shí),STR口置1讀準(zhǔn)備,CTRL置1預(yù)制閘門關(guān)閉,CLR置1,是兩個(gè)計(jì)數(shù)器同步清零,CTLR置0預(yù)制閘門打開,,當(dāng)STR信號(hào)為0,一個(gè)時(shí)間周期完成,計(jì)數(shù)完畢,P2數(shù)據(jù)口準(zhǔn)備讀數(shù),分別讀取計(jì)數(shù)器的數(shù)值,測(cè)頻結(jié)束。該模塊主要完成單片機(jī)對(duì)FPGA的控制。單片機(jī)P0口連接上的8根線路為控制信號(hào)線,具體控制功能如下:
P0.0(CLR):脈寬計(jì)數(shù)復(fù)位端,CLR=1時(shí)計(jì)數(shù)器清零,D觸發(fā)器觸發(fā)狀態(tài)。
P0.1(CTRL):?jiǎn)纹瑱C(jī)給預(yù)置門預(yù)置時(shí)間信號(hào),當(dāng)CTRL=1,預(yù)制門打開,當(dāng)CTRL=0時(shí),預(yù)制門關(guān)閉。
P0.7(STR):測(cè)頻塊給單片機(jī)的信號(hào)端,單片機(jī)接受到STR=0時(shí),測(cè)頻沒(méi)有計(jì)數(shù)完畢,當(dāng)STR=1,計(jì)數(shù)接受,將測(cè)得的數(shù)據(jù)傳入單片機(jī)。
P0.6  P0.5  P0.4 (sel):計(jì)數(shù)值讀出選通控制。sel=000,001,010.011,100,101,110,111時(shí)可從P2口由低8位至高8位分別讀出兩組4個(gè)8位計(jì)數(shù)值。程序見附錄四。


file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image028.jpg
圖2-6  測(cè)頻子程序流程
2.5 LCD顯示模塊
使用杭州康芯公司KX_7C5H開發(fā)板自帶的LCD1620液晶顯示器和相應(yīng)的電路,根據(jù)相應(yīng)的字符代碼將數(shù)據(jù)轉(zhuǎn)移為可是別的字母和數(shù)字,達(dá)到顯示的效果。
表2-1 字符型 LCD 的引腳
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg









DDRAM 就是顯示數(shù)據(jù) RAM, 用來(lái)寄存待顯示的字符代碼。共80個(gè)字節(jié), 其地址和屏幕的對(duì)應(yīng)關(guān)系 如下表2-2:
表2-2 DDRAM地址和屏幕的對(duì)應(yīng)關(guān)系
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image031.png

    HD44780的指令集及其設(shè)置說(shuō)明,通過(guò)瀏覽該指令集,并找出對(duì)DDRAM 的內(nèi)容和地址進(jìn)行操作的指令。操作指令共 11 條指令:
(1)清屏指令功能:<1> 清除液晶顯示器,即將 DDRAM 的內(nèi)容全部填入"空白 "的 ASCII 碼20H; <2> 光標(biāo)歸位,即將光標(biāo)撤回液晶顯示屏的左上方; <3> 將地址計(jì)數(shù)器(AC) 的值設(shè)為0。
(2)光標(biāo)歸位指令功能:<1> 把光標(biāo)撤回到顯示器的左上方; <2> 把地址計(jì)數(shù)器(AC) 的值設(shè)置為 0; <3> 保持 DDRAM 的內(nèi)容不變。
(3)進(jìn)入模式設(shè)置指令功能:設(shè)定每次定入1位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫入的一個(gè)字符是否移動(dòng)。參數(shù)設(shè)定的情況如下所示:位名設(shè)置 I/D 0=寫入新數(shù)據(jù)后光標(biāo)左移1=寫入新數(shù)據(jù)后光標(biāo)右移S0=寫入新數(shù)據(jù)后顯示屏不移動(dòng) 1=寫入新數(shù)據(jù)后顯示屏整體右移1個(gè)字符
(4)顯示開關(guān)控制指令功能:控制顯示器開/關(guān)、光標(biāo)顯示/關(guān)閉以及光標(biāo)是否閃爍。 參數(shù)設(shè)定的情 況如下:位名 設(shè)置D 0=顯示功能關(guān) 1=顯示功能開C 0=無(wú)光標(biāo) 1=有光標(biāo) B0=光標(biāo)閃爍1=光標(biāo)不閃爍 。
(5)設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令功能:使光標(biāo)移位或使整個(gè)顯示屏幕移位。 參數(shù)設(shè)定的情況如下: S/C R/L 設(shè)定情況00光標(biāo)左移1格,且 AC 值減101光標(biāo)右移1格,且 AC值加 110 顯示器上字符全部左移一格,但光標(biāo)不動(dòng)11顯示器上字符全部右移一格,但光標(biāo)不動(dòng) 。
(6)功能設(shè)定指令功能:設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。參數(shù)設(shè)定的情況如下:位名 設(shè)置 DL 0=數(shù)據(jù)總線為4位 1=數(shù)據(jù)總線為8位 N0=顯示1行1=顯示2行 F 0=5× 7 點(diǎn)陣/每字符 1=5× 10 點(diǎn)陣/每字符
(7)設(shè)定CGRAM 地址指令功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的CGRAM的地址。 DB5DB4DB3為字符號(hào),也就是你將來(lái)要顯示該字符時(shí)要用到的字符地址。(000~111)( 能定義八個(gè)字符) DB2DB1DB0 為行號(hào)。( 000~111 )(八行)
(8)設(shè)定 DDRAM 地址指令功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的 DDRAM 的地址。
(9)讀取忙信號(hào)或 AC 地址指令功能: <1> 讀取忙碌信號(hào)BF的內(nèi)容,BF=1 表示液晶顯示器忙,暫時(shí)無(wú)法接收單 片 機(jī)送來(lái)的數(shù)據(jù)或指令;當(dāng) BF=0 時(shí),液晶顯示器可以接收單片 機(jī)送來(lái)的數(shù)據(jù)或指令; <2> 讀取地址計(jì)數(shù)器(AC) 的內(nèi)容。
(10)數(shù)據(jù)寫入 DDRAM 或 CGRAM 指令一覽 功能: <1> 將字符碼寫入 DDRAM,以使液晶顯示屏顯示出相對(duì)應(yīng)的字符; <2> 將使用者自己設(shè)計(jì)的圖形存入 CGRAM。 DB7DB6DB5 可為任何數(shù)據(jù),一般取“000” 。DB4DB3DB2DB1DB0 對(duì)應(yīng)于每行5點(diǎn)的字模數(shù)據(jù)。
(11)從 CGRAM 或 DDRAM 讀出數(shù)據(jù)的指令一覽 功能:<1> 將字符碼寫入DDRAM,以使液晶顯示屏顯示出相對(duì)應(yīng)的字符; <2> 將使用者自己設(shè)計(jì)的圖形存入CGRAM。 DB7DB6DB5 可為任何數(shù)據(jù),一般取“000”。DB4DB3DB2DB1DB0對(duì)應(yīng)于每行 5點(diǎn)的字模數(shù)據(jù)。功能:讀取DDRAM或CGRAM中的內(nèi)容。基本操作時(shí)序:讀狀態(tài)輸入:RS=L,RW=H, E=H 輸出: DB0~ DB7=狀態(tài)字 寫指令 輸入:RS=L,RW=L,E=下降沿脈沖,DB0~ DB7=指令碼 輸出:無(wú)讀數(shù)據(jù) 輸入:RS=H,RW=H,E=H 輸出:DB0~ DB7=數(shù)據(jù) 寫數(shù)據(jù)輸入:RS=H, RW=L,E=下降沿脈沖,DB0~ DB7=數(shù)據(jù) 輸出:無(wú)
在程序設(shè)計(jì)中先將液晶初始化,顯示初始操作界面,當(dāng)測(cè)頻開始,按鍵按下,液晶第一行顯示 DIANXIN   1201,第二行顯示待測(cè)頻率的大小多少KHz ,可保留兩位小數(shù)點(diǎn)。
2.6 鍵盤模塊
本設(shè)計(jì)因?yàn)槭褂冒存I不多,因此鍵盤使用的是獨(dú)立按鍵,主要作用是當(dāng)按鍵按下時(shí),給單片機(jī)信號(hào),開始測(cè)頻。鍵盤設(shè)計(jì)主要是對(duì)按鍵進(jìn)行消抖,分別有軟件消抖和硬件消抖兩種方法。本設(shè)計(jì)用KX_7C5H開發(fā)板上第八個(gè)獨(dú)立按鍵用做測(cè)頻按鍵。使用的是軟件消抖,當(dāng)按鍵按下時(shí),延時(shí)10ms,然后再判斷按鍵是否閉合,若閉合按鍵有效,從而達(dá)到消抖的作用。讀取按鍵是否按下,用一個(gè)外部中斷0實(shí)現(xiàn) 。
2.7 信號(hào)放大整形輸入模塊
因?yàn)橥鈦?lái)信號(hào)一般是模擬信號(hào),而單片機(jī)的輸入是邏輯電平,也就是高電平的電壓一般在2.4V以上,低電平在0.7V以下,無(wú)法直接讀取信號(hào),因此需要對(duì)輸入信號(hào)進(jìn)行放大整形,首先是放大幅度,使幅度滿足邏輯電平的需要,其次對(duì)于整形我的理解是,單片機(jī)采集信號(hào)需要使用內(nèi)部的時(shí)鐘進(jìn)行采集,如果脈沖寬度小于單片機(jī)工作的機(jī)器周期則單片機(jī)是不能采集到的,因此必須用整形電路將信號(hào)的幅度進(jìn)行規(guī)范同時(shí)將信號(hào)的寬度進(jìn)行規(guī)范,以便單片機(jī)可以正確識(shí)別,因此必須進(jìn)行整形放大。
3  外圍電路設(shè)計(jì)
信號(hào)放大整形的輸入,利用了UA741CD可以實(shí)現(xiàn)把微弱的信號(hào)進(jìn)行放大,uA741通用高增益運(yùn)算通用放大器,早些年最常用的運(yùn)放之一.應(yīng)用非常廣泛,雙列直插8腳或圓筒8腳封裝。工作電壓±22V,差分電壓±30V,輸入電壓±18V,允許功耗500mW.。U2A707相當(dāng)一個(gè)非門,對(duì)波形進(jìn)行整形濾波,得到數(shù)字信號(hào),使FPGA能接收信號(hào)。電路圖如圖3-1。

file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image033.jpg                             圖3-1  外圍電路設(shè)計(jì)圖
4  系統(tǒng)測(cè)試
調(diào)試是系統(tǒng)開始總體運(yùn)行以前必須要做的工作,為的是檢驗(yàn)各子程序及功能模塊的性能。調(diào)試時(shí)要使用測(cè)試程序和專門的測(cè)試儀器。因此我們?cè)诰帉懻匠绦虻耐瑫r(shí),還要編寫簡(jiǎn)潔有效的測(cè)試程序,以便查錯(cuò)和糾錯(cuò)。對(duì)于本題目我們可以進(jìn)行以下方面的調(diào)試。對(duì)于部分FPGA程序(例如計(jì)數(shù)器程序等),我們可以采用仿真的形式調(diào)試。
4.1 單片機(jī)程序調(diào)試
(1)顯示程序調(diào)試:檢驗(yàn)LCD1620是否有顯示;
(2)鍵盤輸入程序調(diào)試:檢驗(yàn)鍵盤輸入鍵值是否正確;
(3)計(jì)算程序調(diào)試:觀察運(yùn)算結(jié)果是否正確,是否出現(xiàn)溢出情況;
(4)單片機(jī)與FPGA通信調(diào)試:測(cè)試FPGA能否將數(shù)據(jù)準(zhǔn)確地傳給單片機(jī);
(5)FPGA內(nèi)部程序調(diào)試;
4.2信號(hào)放大整形調(diào)試
(1)閘門信號(hào)調(diào)試:用示波器觀察閘門信號(hào)波形,以及高電平寬度。
(2)中斷信號(hào)調(diào)試:首先用示波器觀察波形,然后編寫測(cè)試程序,觀察單片機(jī)是否能夠接收到中斷信號(hào),并執(zhí)行中斷程序。
(3)標(biāo)準(zhǔn)頻率測(cè)試:用示波器觀察波形以及頻率值。


4.3 綜合調(diào)試
完成以上各模塊調(diào)試工作之后,可以進(jìn)行系統(tǒng)整體調(diào)試。在調(diào)試過(guò)程中,認(rèn)真觀察FPGA與單片機(jī)的配合情況,在FPGA端口上設(shè)置若干測(cè)點(diǎn),比如中斷測(cè)點(diǎn),閘門信號(hào)測(cè)點(diǎn)等,便于在系統(tǒng)出現(xiàn)故障時(shí),檢查測(cè)試。
4.4 調(diào)試中出現(xiàn)的問(wèn)題
編程VHDL語(yǔ)言時(shí),出現(xiàn)一下編程上的語(yǔ)法錯(cuò)誤,一開始無(wú)從下手,后面經(jīng)過(guò)查找資料,明白了Quartus II軟件報(bào)錯(cuò)的處理方式,Quartus II軟件會(huì)把報(bào)錯(cuò)的行數(shù)顯示出來(lái)便于程序員查找,可以很快的解決問(wèn)題。VHDL語(yǔ)言對(duì)編程上的格式比較嚴(yán)格,在編程過(guò)程中經(jīng)常遇到由于語(yǔ)言格式上的出錯(cuò)而報(bào)錯(cuò),例如符號(hào)上標(biāo)示的錯(cuò)誤等,一旦報(bào)錯(cuò)根據(jù)報(bào)錯(cuò)的信息一一解決即可。雖然調(diào)試過(guò)程問(wèn)題眾多,但經(jīng)過(guò)多次的調(diào)試和修改,在最后也能實(shí)現(xiàn)最終的功能。

5  結(jié)論
本次設(shè)計(jì)結(jié)合了軟硬件的設(shè)計(jì),各項(xiàng)功能達(dá)基本能達(dá)到預(yù)定的設(shè)計(jì)指標(biāo)。測(cè)頻系統(tǒng)克服了傳統(tǒng)的測(cè)頻法或測(cè)周期法的不足,能在頻率范圍變化較大時(shí),仍然有比較高的測(cè)量精度。而且本系統(tǒng)將單片機(jī)靈活的控制性能和FPGA模塊具有定時(shí)精確及時(shí)和速度快的特點(diǎn)結(jié)合起來(lái),使整個(gè)系統(tǒng)體積較小,價(jià)格也不高。由于數(shù)碼管采用靜態(tài)顯示,因此,操作可靠,顯示比較清晰。該設(shè)計(jì)具有測(cè)試精度高,制作簡(jiǎn)單,測(cè)量的精度不會(huì)隨著被測(cè)信號(hào)頻率的大幅度變化而變化等優(yōu)點(diǎn),由于該電路對(duì)頻率的測(cè)試范圍為100Hz~100kHz測(cè)量范圍比較寬,在頻率測(cè)試中有一定的應(yīng)用前景。由于時(shí)間和實(shí)驗(yàn)條件所限,本設(shè)計(jì)在測(cè)頻精度和硬件電路方面還存在著一些不足,需要進(jìn)一步的完善和提高。
通過(guò)本次的畢業(yè)設(shè)計(jì),我更加了解單片機(jī)的結(jié)構(gòu)與功能與FPGA模塊的原理;對(duì)Quartus II軟、Keil 51軟件的運(yùn)用更加熟練,以前在學(xué)習(xí)這兩個(gè)軟件時(shí),總覺(jué)得難度挺大的,每次老師布置任務(wù)時(shí),總是得看課本來(lái)進(jìn)行操作,但經(jīng)過(guò)這一次的了解,相信如果在今后的工作中遇到,這一次的認(rèn)識(shí)是個(gè)很好的參考對(duì)象;以及更加了解軟硬件相結(jié)合的道理。雖然在設(shè)計(jì)過(guò)程中遇到的困難也不少,由一開始的迷茫,到后來(lái)的漸入佳境,我的導(dǎo)師給了我很大的幫助,教會(huì)我如何看待設(shè)計(jì)中遇到的每一個(gè)問(wèn)題,找到問(wèn)題的關(guān)鍵,然后一一破解,很感激導(dǎo)師對(duì)我的指導(dǎo),讓我懂得了在今后的生活中即使困難重重也要迎難而上。
謝  辭
隨著畢業(yè)設(shè)計(jì)的完成,想著自己在未來(lái)的不久手上會(huì)多了一本本科的畢業(yè)證書,我心中無(wú)比激動(dòng),常言道:“多一份選擇,就多一份希望”,我相信我這一份多的選擇會(huì)讓我未來(lái)的人生有更多的選擇,在這里我想感謝當(dāng)初支持我的所有人。
首先,我要感謝我的父母,感謝他們二十多年來(lái)對(duì)我的培育和支持,感謝他們當(dāng)初明智的決定,不但讓我完成了應(yīng)有的學(xué)業(yè),還讓我的未來(lái)多了一份選擇。
接下來(lái),我要感謝所有上專本銜接的老師們,謝謝他們本應(yīng)該在休息的周末,卻來(lái)陪著是我們一起上課學(xué)習(xí),教給我們更多的知識(shí),再次感謝他們的付出。
最后,我要感謝我的母校對(duì)我的再造之恩,在這里我學(xué)會(huì)了很多從出生到現(xiàn)在自己從來(lái)不具備的東西,不單單指那些書本知識(shí),更多的是在精神上熏陶、心靈上灌溉。還讓我們有再一次選擇的機(jī)會(huì),繼續(xù)學(xué)習(xí)更多的知識(shí),謝謝母校給我們的再次選擇,相信在未來(lái)的不久我們會(huì)因這一次多的選擇而有更精彩的人生。
在這里我還要衷心感謝,我的導(dǎo)師(廖超平老師),不但在周末陪著我們一起上課學(xué)習(xí),還在我出去實(shí)習(xí)中經(jīng)常督促我的畢業(yè)設(shè)計(jì)進(jìn)度狀況。在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中,只要我有任何疑惑都會(huì)耐下心來(lái)指導(dǎo)我一一解決,很感謝他的引導(dǎo)。
   同時(shí)我也很感謝我自己,在本設(shè)計(jì)中即使困難重重,也沒(méi)有想過(guò)放棄的精神;在學(xué)習(xí)的空余中,繼續(xù)學(xué)習(xí)了更多的知識(shí)。通過(guò)這次的畢業(yè)設(shè)計(jì),使我對(duì)單片機(jī)的認(rèn)識(shí)更加的清晰,同時(shí)也提高了我對(duì)系統(tǒng)設(shè)計(jì)及軟件設(shè)計(jì)的能力。
參考文獻(xiàn)
[1]  楊剛,龍海燕.現(xiàn)代電子技術(shù)——VHDL與數(shù)字系統(tǒng)設(shè)計(jì).北京:電子工業(yè)出版社,2004,39-59.
[2]  倪云峰等,單片機(jī)原理與應(yīng)用,西安電子科技大學(xué)出版社,2009.
[3]  曾繁泰,李冰,李曉林.EDA工程概論.北京:清華大學(xué)出版社,2002,98-138.
[4]  陳海宴,51單片機(jī)原理及應(yīng)用,北京航空航天大學(xué)出版社,2010.
[5]  潘松 黃繼業(yè),EDA技術(shù)實(shí)用教程,科學(xué)出版社,2009.
[6]  陳權(quán)昌,李興富.單片機(jī)與應(yīng)用.廣州:華南理工大學(xué)出版社,2007.8.
[7] 任曉東、文博.CPLD/FPGA高級(jí)應(yīng)用開發(fā)指南.北京:電子工業(yè)出版社,2003,22-29.
[8]  數(shù)字系統(tǒng)設(shè)計(jì)VerilogHDL(第四版),電子工業(yè)出版社,2011年.
[9]  譚浩強(qiáng),C程序設(shè)計(jì),清華大學(xué)出版社,2007.



















file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg附  錄一  利用VHDL語(yǔ)言設(shè)計(jì)測(cè)頻模塊








附 錄二  顯示模塊
file:///C:/Users/Wynn/AppData/Local/Temp/msohtmlclip1/01/clip_image037.png

附 錄三  VHDL語(yǔ)言設(shè)計(jì)代碼
(1)計(jì)數(shù)閘門信號(hào)產(chǎn)生模塊VHDL 設(shè)計(jì)
libraryieee;
use ieee.std_logic_1164.all;
entity dff1is
    port( CTRL: in std_logic;
          Tsig: in std_logic;
          CLR: in std_logic;
           en: out std_logic);
end dff1;
architecturea of dff1 is
begin
     en <='0' when(CLR ='1')
     else CTRL when(Tsig = '1' andTsig'event)   
     else unaffected;
end  a;

(2) 三十二位計(jì)數(shù)器模塊VHDL 設(shè)計(jì)
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt32 is
    port( en: in std_logic;
          CLK: in std_logic;
          CLR: in std_logic;
           QA: out std_logic_vector(31 downto 0));
end cnt32;
architecturev1 of cnt32 is
signal f:std_logic_vector(31 downto 0);
begin
    process(en,clk,clr)
       begin
       if CLR ='1' then
         f<= (others=>'0');
        elsif  clk'event and clk = '1'and en='1' then
          f<=f+1;
        else
          null;
       end if;
    end process;
       QA<=f;
end  v1;

(3) 多路選擇器MUX64-8模塊VHDL 設(shè)計(jì)
libraryieee;
useieee.std_logic_1164.all;
entitymux64_8 is
    port( sel: in std_logic_vector(2 downto 0);
          QA: in std_logic_vector(31 downto 0);
           QB: in std_logic_vector(31 downto 0);
          Dout: out std_logic_vector(7 downto 0));
endmux64_8;
architecturebehv of mux64_8 is
begin
  process(sel,QA,QB)
    begin
       case sel is
        when "000"=>
           Dout<=QA(7 downto 0);
        when "001"=>
           Dout<=QA(15 downto 8);
        when "010"=>
           Dout<=QA(23 downto 16);
        when "011"=>
           Dout<=QA(31 downto 24);
         when "100"=>
           Dout<=QB(7 downto 0);
        when "101"=>
           Dout<=QB(15 downto 8);
        when "110"=>
           Dout<=QB(23 downto 16);
        when others=>
           Dout<=QB(31 downto 24);
    end case;
end process;
end behv;















附  錄四  單片機(jī)匯編語(yǔ)言程序清單

RS EQU P3.0
         RW   EQU P3.1
         E    EQU P3.2
         DAT  EQU 30H
         DAT1 EQU 31H

          ORG   0000H
          MOV   0FFH,#0FFH
          MOV   SP,#60H
          MOV DAT,#01H   ; CLEAR 液晶顯示初始化
      LCALL  ENABLE     ; 如果使用LCD液晶顯示,在程序開頭必須加       上這句
          LCALL DISP3
          MOV DAT,#01H      ; CLEAR
     LCALL     ENABLE
          MOV  R5,#80H
          MOV  DPTR,#KONX
          LCALL FB6
          MOV   DPTR,#TC1
          MOV   R5,#0C0H
          LCALL FB1

          MOV DAT,#0CH   ; 關(guān)閉光標(biāo)
      LCALL   ENABLE
          MOV   7AH,#00H
          MOV   7BH,#00H
          MOV   7CH,#00H
          MOV   7DH,#00H

KKE1:     LCALL KKEYI       ;鍵盤信號(hào)搜索
KCACOM: LCALL KCOM1    ;  A > 9 執(zhí)行鍵盤命令
          LJMP KKE1
;lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
     ;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
KCOM1:  CJNE  A,#01H,KN88 ;     鍵1 (04):---------------------------(1)
          RET

;UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU  鍵2(K05) LLLLLLLLLLLLLLLLLLLLLLLLUUUUUUUUUUUUUUUUUUUUUUUKKKKKKKKKKKKKKKK
KNJ99:    LJMP  MMKL
KN88:   CJNE  A,#02H,KNJ99 ; ----------------(2)
        MOV   DAT,#01H      ; CLEAR 液晶顯示初始化
        LCALL ENABLE
        MOV   A,#4BH
        MOV   B,#80H
        LCALL DISP2        ;
        MOV   A,#32H
        MOV   B,#81H
        LCALL DISP2
          RET

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 鍵3(K06) JJJJJJJJJJJJJJJJJJJLLLLLLLLLLLLLLLLLLL
KAAN7: LJMP  KAAN   ;
MMKL  : CJNE A,#03H,KAAN7
        MOV   DAT,#01H      ; CLEAR 液晶顯示初始化
        LCALL ENABLE
        MOV   A,#4BH
        MOV   B,#80H
        LCALL DISP2        ;
        MOV   A,#33H
        MOV   B,#81H
        LCALL DISP2
          RET
          ;--------------------------------------------------------------------------------------------------------------

;PPPPPPPPPPPPPPPPPPPPPPPPPPPPPLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 鍵4(K07)SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
KBBN: LJMP   KBBN3
KAAN: CJNE   A,#04H,KBBN     ;
        MOV   DAT,#01H      ; CLEAR 液晶顯示初始化
        LCALL ENABLE
        MOV   A,#4BH
        MOV   B,#80H
        LCALL DISP2        ;
        MOV   A,#34H
        MOV   B,#81H
        LCALL DISP2
          RET

  ;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ  鍵5(K14) KKKKKKKKKKKKKKKKKKKKKKKKKKKKJJJJJJJJJJJJJJJ
KDDN :  LJMP  KDDN7
KBBN3:  CJNE  A,#05H,KDDN   ;   鍵5僅
         MOV  DAT,#01H      ; CLEAR 液晶顯示初始化
        LCALL ENABLE
        MOV   A,#4BH
        MOV   B,#80H
       LCALL  DISP2        ;
        MOV   A,#35H
        MOV   B,#81H
        LCALL DISP2
          RET

  ;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL  鍵6(K15) LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
KEEN:     LJMP KEEN8
KDDN7:    CJNE A,#06H,KEEN    ; 鍵6
         MOV  DAT,#01H      ; CLEAR
     LCALL    ENABLE
        MOV   A,#4BH
        MOV   B,#80H
        LCALL DISP2        ;
        MOV   A,#36H
        MOV   B,#81H
        LCALL DISP2
          RET

   ; JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ  鍵7(K16) KKKKKKKKKKKKKKKKKKKKKKKKKKKKJJJJJJJJJJJJJJJJJJJJJJJJ
KDDN8:    LJMP  KFFN
KEEN8:  CJNE  A,#07H,KDDN8
         MOV  DAT,#01H      ; CLEAR
     LCALL    ENABLE
        MOV   A,#4BH
        MOV   B,#80H
        LCALL DISP2        ;
        MOV   A,#38H
        MOV   B,#81H
        LCALL DISP2
          RET

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL鍵8(K17)LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

KFFN:     CJNE A,#08H,KF8                    ; 鍵8控制
     MOV  DAT,#01H      ; CLEAR
     LCALL     ENABLE
                            ; -----------------------------------------------測(cè)頻主程序-------------------------------------
          MOV   DPTR,#FN_A             ;以上程序顯示液晶設(shè)置
          MOV   R5,#80H
          LCALL FCN9

   RRRV: LCALL  TESTF          ; 測(cè)頻率子程序
          LCALL TESTFF         ; 數(shù)據(jù)顯示調(diào)整子程序

          SJMP  RRRV

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
   KF8:
          RET
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

KKEYI:   LCALLKKS1    ; KEY SCANNING PROG
          JNZ  KLK1       ;  有鍵盤, 轉(zhuǎn)跳 KLK1
  KN1:   LCALL DELAY
          LCALL DELAY
          SJMP KKEYI      ;  無(wú)鍵,轉(zhuǎn)跳 KKEYI 繼續(xù)測(cè)鍵

KLK1:    LCALLDELAY
          LCALL DELAY
          LCALL KKS1
          JNZ  KLK2       ;  確實(shí)有鍵,轉(zhuǎn)跳至 KLK2
          LCALL DELAY
          SJMP KKEYI
                          ;--------------------------------------------
KLK2:   ;MOV   P1,#0FEH         ; THERE IS KEYI
          NOP
          JB   P1.1,NOK1
          MOV  A,#02H
          LJMP GOHM
NOK1:     NOP
          JB   P1.2,NOK2
          MOV  A,#03H
          LJMP GOHM
NOK2:     NOP
          JB   P1.3,NOK3
          MOV  A,#04H
          LJMP GOHM
NOK3:     NOP
          JB   P1.4,NOK4
          MOV  A,#05H
          LJMP GOHM
NOK4:     NOP
                         ;---------------------------------------------

;   MOV   P1,#0FDH          ; THERE IS KEYI
          NOP
          JB   P1.5,NOK5
          MOV  A,#06H
          LJMP GOHM
NOK5:     NOP
          JB   P1.6,NOK6
          MOV  A,#07H
          LJMP GOHM
NOK6:     NOP
          JB   P1.7,NOKR
          MOV  A,#08H
          LJMP GOHM
NOKR:     RET
                         ;---------------------------------------------

GOHM:     PUSH  ACC
KLK3:    LCALLDELAY
          LCALL KKS1
          JNZ  KLK3
          LCALL DELAY
          LCALL KKS1
          JNZ  KLK3
          POP  ACC
          RET

KKS1:  
          NOP
          NOP
          NOP
          NOP
          NOP
          MOV  A,P1
          CPL  A
          RET       ; IF THERE IS KEYING THEN A =/= 0;如果A=0表示沒(méi)有任何鍵
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

ENABLE:   CLR RS
   CLR RW
   MOV P1,DAT
   CLR E
        nop
   SETB   E
        LCALL  DDT9
   RET

;KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK顯示子程序
ASC:    MOV    DPTR,#TA6
          MOVC  A,@A+DPTR
          RET
TA6:    DB    30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,20H,48H,7AH,4DH
          DB    0E4H,73H,2EH  ;   0EH- u ; 0FH- s  ;10H ->.


DISP3: MOV DAT,#38H;8bit 2 Rol 5*7
   LCALL  ENABLE
   MOV DAT,#0FH   ;OPEN LCD : 00001DCB
   LCALL  ENABLE
   MOV DAT,#06H   ;LEFT TO RIGHT:
   LCALL  ENABLE
   RET

       ;
;
   FB1:  MOV    R4,#14H
          MOV   R6,#00H
    RC5: MOV    A,R6
          INC   R6
          MOVC  A,@A+DPTR
          MOV   B,R5
          INC   R5
          LCALL DISP2
          DJNZ  R4,RC5
          RET

TC1:       DB    44H,69H,61H,6EH,20H,58H,69H,6EH,20H,31H,32H,4FH ,31H ,20H,20H,20H
          ;               DIANXIN     1201

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
   FB6:  MOV    R4,#0AH  ; SQUARE: ,SAWTOOTH , TRIANGLE, LADDER
          MOV   R6,#00H
   RCV:  MOV    A,R6
          INC   R6
          MOVC  A,@A+DPTR
          MOV   B,R5
          INC   R5
          LCALL DISP2
          DJNZ  R4,RCV
          RET

  KONX:   DB    20H,20H,47H,75H,61H,6EH,67H,20H,58H,69H,20H,20H,20H ;   GUANGXI
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
FCN9:  MOV    R4,#05H ;
          MOV   R6,#00H
   RCT9: MOV    A,R6
          INC   R6
          MOVC  A,@A+DPTR
          MOV   B,R5
          INC   R5
         LCALL  DISP2
          DJNZ  R4,RCT9
          RET
  ;
  FN_A : DB     46H,52H,45H,51H,3AH   ; FREQ:

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL


DISP2:    MOV   DAT,B  ; B是地址;A是顯示數(shù)據(jù)
          LCALL  ENABLE
     MOV   P1,A
          SETB   RS
     CLR   RW
          nop
     CLR   E
          nop
    SETB   E
          LCALL DDT9
          RET

;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
DELAY:   MOV  R1,#0FH  ;    9H
  WWW:  MOV   R0,#0FFH
  NMN:  DJNZ  R0,NMN
         DJNZ R1,WWW
    RET

DDT9:   MOV  R3,#1FH
DDT8:   MOV  R2,#0FFH
DDT7:   DJNZ R2,DDT7
        DJNZ R3,DDT8
        RET



;KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
                                                        ; 測(cè)頻子程序
        ;MOV    10H,#07H
        ; MOV   11H,#06H
        ; MOV   12H,#05H
        ; MOV   13H,#04H
        ;MOV   14H,#03H
        ;MOV   15H,#02H
        ; MOV   16H,#01H

                ;RET
TESTF:
       SETB P0.7  
      CLR  P0.1
      CLR  P0.0
      SETB P0.0  
    CLR   P0.0
    SETB  P0.1
    ;LL: JNB P0.7, LL
     LCALLTIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
     LCALL TIS
     LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
     LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      LCALL TIS
      CLR  P0.1

  FLO:
      JB P0.7,FLO         ;等待計(jì)數(shù),中斷延時(shí)結(jié)束.即計(jì)數(shù)完

     CLRP0.6
     CLRP0.5
    CLR  P0.4
    MOV  A,P2
    MOV  20H,A

      CLR P0.5
     SETBP0.4
    MOV  A,P2
    MOV  21H,A

     SETB P0.5
    CLR   P0.4
    MOV   A,P2
    MOV  22H,A

    SETB  P0.5
    SETB  P0.4
    MOV   A,P2
     MOV  23H,A

    SETB   P0.6
    CLR    P0.5
    CLR    P0.4
    MOV    A,P2
    MOV   24H,A

    CLR    P0.5
    SETB   P0.4
    MOV    A,P2
    MOV    25H,A

    SETB   P0.5
    CLR    P0.4
    MOV    A,P2
    MOV   26H,A

    SETB   P0.5
    SETB   P0.4
    MOV    A,P2
     MOV  27H,A

      MOV 4AH, #24H                     
         MOV 4BH, #61H         ;40MHz的數(shù)值
    MOV  4CH, #39H
    MOV  4DH, #0CAH
    MOV  4EH, #80H
    MOV  4FH, #00H

    MOV  5AH,  #00H
    MOV  5BH,  #00H
    MOV  5CH, 27H   ;QB的數(shù)值
    MOV  5DH,    26H
    MOV  5EH,    25H
    MOV  5FH,  24H
    ACALL  MULNM
    ACALL  SEND8

    MOV 5AH, #00H
    MOV 5BH,  #00H

    MOV 5CH,  23H   ;QA的數(shù)值
    MOV 5DH,  22H
    MOV 5EH, 21H
    MOV 5FH,  20H

    ACALL  DIVD1
    MOV  36H,#00H
    MOV  35H, 4AH                    
         MOV 34H, 4BH
    MOV  33H, 4CH
    MOV  32H, 4DH
    MOV  31H, 4EH
    MOV  30H, 4FH

    ACALL  HEXBCD
    ACALL  PP
     RET

;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
  SEND8: MOV    R2,#0CH
  SEND7: MOV    R0,#44H
          MOV   R1,#54H
  RRQ9:  MOV    A,@R1
          INC   R1
          MOV   @R0,A
          INC   R0
          DJNZ  R2,RRQ9
          RET
  RRQ10: MOV    R2,#07H
   WWE4: MOV    A,@R1
          DEC   R1
          MOV   @R0,A
          INC   R0
          DJNZ  R2,WWE4
          RET
TIS:
      MOV 2AH,#0FFH     ;256*256uS延時(shí)
   TSM3:
      MOV 2BH,#0FFH
   TSM4:
      DJNZ 2BH,TSM4
      DJNZ 2AH,TSM3
      RET
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ;KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
  DIVD1: NOP             ; 2N BYTE / N BYTE= N BYTE ,HERE N=6 IN 31H
     MOV  30H,#0CH ; (44,45,46,47,48,49,4A,4B,4C,4D,4E,4FH)/(5A,5B,5C,5D,5E,5FH)=(4A,4B,4C,4D,4E,4FH)
     MOV  31H,#06H ; 除法程序,30H放置被除數(shù)字節(jié)數(shù),31H放置除數(shù)字節(jié)數(shù)
  DIVPP: MOV A,AD1
     MOV  R2,A
     RL   A
     RL   A
     RL   A
     MOV  R3,A
     CLR  0F0H
     CLR  C
     MOV  A,#ADA
     SUBB A,R2
     MOV  AD3,A
     MOV  R1,#ADB
DIVMB2B: MOV A,@R1
     JNZ  DIVM2B
     DEC  R1
     DJNZ R2,DIVMB2B
     SETB 0F0H
     RET
DIVM2B: MOV R2,AD1
     MOV  R1,#ADB
     MOV  R0,AD3
DIVM2L: MOV A,@R0
     SUBB A,@R1
     DEC  R0
     DEC  R1
     DJNZ R2,DIVM2L
     JNC  DIVM20
DIVM2D: LCALL SHIL1
     JC   DIVM2S
DIVM2C: MOV R0,AD3
     MOV  R1,#ADB
     MOV  R2,AD1
DIVM2CL: MOV A,@R0
     SUBB A,@R1
     DEC  R0
     DEC  R1
     DJNZ R2,DIVM2CL
     JC   DIVM2E
DIVM2S: INC ADA
     MOV  R2,AD1
     MOV  R0,AD3
     MOV  R1,#ADB
     LCALLSUBMBB
DIVM2E: DJNZ   R3,DIVM2D
     RET
DIVM20: SETB   0F0H
     RET
     DB     02H,12H

  SHIL1: MOV R2,AD0
     MOV  R0,#ADA
SHIL1B: CLR C
SHILL:  MOV A,@R0
     RLC  A
     MOV  @R0,A
     DEC  R0
     DJNZ R2,SHILL
     RET


SUBMBB: CLR C
SUBMB1: MOV A,@R0
     SUBB A,@R1
     MOV  @R0,A
     DEC  R0
     DEC  R1
     DJNZ R2,SUBMB1
     RET

   AD0   EQU  30H
   AD1   EQU  31H
   AD2   EQU  32H
   AD3   EQU  33H
   AD4   EQU  34H
   AD5   EQU  35H
   AD6   EQU  36H
   ADA   EQU  4FH
   ADB   EQU  5FH
   ADC   EQU  4DH
   ADDV     EQU  5DH


  MULNM: NOP             ; N BYTES X MBYTES = N+M BYTES HERE N=6;M=6
     MOV  30H,#06H ; (4A,4B,4C,4D,4E,4FH)*(5A,5B,5C,5D,5E,5FH)=(54--5FH)
     MOV  31H,#06H ; 乘法程序,30H放置被乘數(shù)字節(jié)數(shù),31H放置乘數(shù)字節(jié)數(shù)
MULTT:   MOV  A,AD0
     MOV  R3,AD1
     MOV  R2,A
     ADD  A,R3
     INC  A
     MOV  AD2,A
     MOV  A,#ADB
     CLR  C
     SUBB A,R3
     MOV  AD6,A
     MOV  R1,A
     SUBB A,R2
     MOV  AD5,A
     INC  R2
MULNMZ: MOV @R1,#00H
     DEC  R1
     DJNZ R2,MULNMZ
MULNMB: MOV R2,AD0
     MOV  R1,AD6
     MOV  R0,#ADA
     CLR  00H
MULNML: MOV A,ADB
     JZ   MULNMD
     MOV  B,@R0
     MUL  AB
     ADD  A,@R1
     MOV  @R1,A
     JNB  00H,MULNM1
     INC  B
MULNM1: MOV A,B
     DEC  R1
     ADDC A,@R1
     MOV  @R1,A
     MOV  00H,C
     DEC  R0
     DJNZ R2,MULNML
MULNMD: MOV R0,AD5
     CLR  A
     MOV  R2,AD2
MULNMS: XCH A,@R0
     INC  R0
     DJNZ R2,MULNMS
     DJNZ R3,MULNMB
     RET
; LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

;llllllllllllllllllllllllllllllllllllllllllll
HEXBCD :  NOP        ; 7 BYTE HEX TO 8 BYTE BCD : HEX(36H-30H)-->BCD(47H-40H)
  MUBTD: MOV      R0,#40H
     MOV      R7,#08H
     CLR       A
  LOPP1: MOV      @R0,A
     INC       R0
     DJNZ     R7,LOPP1

     MOV      R7,#38H
LOOP4:  MOV      R1,#30H
     MOV      R6,#07H
     CLR       C

  LOPP2: MOV      A,@R1
     RLC       A
     MOV      @R1,A
     INC       R1
     DJNZ     R6,LOPP2

     MOV      R5,#08H
     MOV      R0,#40H

  LOOP3: MOV      A,@R0
     ADDC     A,@R0
     DA        A
     MOV      @R0,A
     INC       R0
     DJNZ     R5,LOOP3
     DJNZ     R7,LOOP4
     RET


;*************************************************************************************
    PP:  MOV    16H,#0FH
          MOV   A,47H
          ANL   A,#0FH
          JNZ   JB47
          MOV   A,46H
          ANL   A,#0F0H
          JNZ   H46N
          MOV   A,46H
          ANL   A,#0FH
          JNZ   L46N   
          MOV   A,45H
          ANL   A,#0F0H
          JNZ   H45N
          MOV   A,45H
          ANL   A,#0FH
          JNZ   L45N
          MOV   A,44H
          ANL   A,#0F0H
          JNZ   H44N
          MOV   A,44H
          ANL   A,#0FH
          JNZ   L44N
          MOV   A,43H
          ANL   A,#0F0H
          JNZ   H43N
          MOV   A,43H
          ANL   A,#0FH
          JNZ   L43N
          SJMP  L43Y
  JB47:  SJMP   JM47

  L43Y:  MOV    R0,#40H     ; 0.5HZ
          LCALL DIS_A
          MOV   16H,#00H
          MOV   0AH,#40H
          RET

  L43N:  MOV    R0,#40H     ; 1HZ,4HZ
          LCALL DIS_A
          MOV   0AH,#40H
          RET

   H43N: MOV    R0,#40H     ; 16H
          LCALL DIS_B
          MOV   0AH,#20H
          RET

  L44N:  MOV    R0,#41H
          LCALL DIS_A
          MOV   0AH,#10H
          RET

  H44N:  MOV    R0,#41H
          LCALL DIS_B
          MOV   0AH,#08H
          RET

  L45N:  MOV    R0,#42H
          LCALL DIS_A
          MOV   0AH,#04H
          RET

  H45N:  MOV    R0,#42H
          LCALL DIS_B
          MOV   0AH,#02H
          RET

  L46N:  MOV    R0,#43H
          LCALL DIS_A
          MOV   0AH,#01H
          RET

  H46N:  MOV    R0,#43H
          LCALL DIS_B
          MOV   0AH,#60H
          RET

JM47:     MOV   R0,#44H
          LCALL DIS_A
          MOV   0AH,#70H
          RET
;llllllllllllllllllllllllllllllllllllll

DIS_A:    MOV   A,@R0     ; 40H     ; 顯示
          ANL   A,#0FH
          MOV   10H,A
          MOV   A,@R0
          ANL   A,#0F0H
          SWAP  A
          MOV   11H,A
          INC   R0

          MOV   A,@R0
          ANL   A,#0FH
          MOV   12H,A
          MOV   A,@R0
          ANL   A,#0F0H
          SWAP  A
          MOV   13H,A
          INC   R0

          MOV   A,@R0
         ANL    A,#0FH
          MOV   14H,A
          MOV   A,@R0
          ANL   A,#0F0H
          SWAP  A
          MOV   15H,A
          INC   R0

          MOV   A,@R0
          ANL   A,#0FH
          MOV   16H,A
          RET

  DIS_B: MOV    A,@R0  ;  43H
          ANL   A,#0F0H
          SWAP  A
          MOV   10H,A

          INC   R0
          MOV   A,@R0    ; 44H                             ; 顯示
          ANL   A,#0FH
          MOV   11H,A
          MOV   A,@R0
          ANL   A,#0F0H
          SWAP  A
          MOV   12H,A

          INC   R0
          MOV   A,@R0     ;    45H
          ANL   A,#0FH
          MOV   13H,A
          MOV   A,@R0
          ANL   A,#0F0H
          SWAP  A
          MOV   14H,A

          INC   R0
          MOV   A,@R0  ;  46H
          ANL   A,#0FH
          MOV   15H,A
          MOV   A,@R0
          ANL   A,#0F0H
          SWAP  A
          MOV   16H,A
          RET
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
TESTFF:
          MOV  1BH,#0C4H
          MOV  1CH,#17H
          MOV  0DH,#0CH ; z
          MOV  0EH,#0BH ; H
          MOV  0FH,#0AH ;
          MOV  0CH,#0AH
          MOV  A,0AH
          CJNE A,#01H,POIN1
BASE:   MOV    B,#0CCH
          SJMP  POI8 ;          LCALL  DISP2
POIN1:  CJNE  A,#02H,POIN2
          MOV   B,#0CBH
          SJMP  POI8 ;
POIN2:  CJNE  A,#04H,POIN3
          MOV   B,#0CAH
          SJMP  POI8 ;
POIN3:  CJNE  A,#08H,POIN4
          MOV   B,#0C9H
          SJMP  POI8 ;
POIN4:  CJNE  A,#10H,POIN5
          MOV   B,#0C8H
          SJMP  POI8 ;
POIN5:  CJNE  A,#20H,POIN6
          MOV   B,#0C7H
          SJMP  POI8 ;
POIN6:  CJNE  A,#40H,POIN7
          MOV   B,#0C6H
          SJMP  POI8 ;
POIN7:   CJNE A,#60H,POIN8
          MOV  B,#0C7H
          SJMP  POI8 ;
POIN8:  CJNE  A,#70H,POIN9
          MOV   B,#0C8H
          SJMP  POI8 ;
POIN9:    RET

POI8:     MOV  A,#2EH ; . 數(shù)據(jù)
          MOV  1AH,B  ;顯示 . 的地址
          LCALL DISP2  ; 顯示 .
          MOV  R7,#0BH
RRD1:    MOV  A,1BH  ; 1BH中裝地址
          INC  A
          CJNE A,1AH,NOEQ
          INC  A
NOEQ:   MOV   1BH,A
          MOV  R1,1CH  ; 1CH裝數(shù)據(jù)
          DEC  R1
          MOV  1CH,R1
          MOV  A,R1
          CJNE A,#0FH,NOTX6
          MOV  A,0AH
          ANL  A,#60H
          CJNE A,#60H,NOTX6            
          MOV  0FH,#0DH
NOTX6:  MOV   A,@R1
          LCALL ASC
          MOV  B,1BH
          LCALL DISP2
          DJNZ R7,RRD1
          RET

         END
;----------------------------------------------------------------------------------------

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1083996 發(fā)表于 2023-10-19 11:03 | 只看該作者
膩害,論文
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表