




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、信號(hào)發(fā)生器系統(tǒng)設(shè)計(jì)摘要本系統(tǒng)是基于AT89S52 單片機(jī)的數(shù)字式低頻信號(hào)發(fā)生器。采用AT89S52 單片機(jī)作為控制核心,外圍采用數(shù)字/ 模擬轉(zhuǎn)換電路(DAC0832)、穩(wěn)壓電路(MC1403)、運(yùn)放電路(UA741)、按鍵和液晶顯示屏模塊等。通過(guò)按鍵控制可產(chǎn)生方波、鋸齒波、三角波、正弦波等,并能通過(guò)鍵盤(pán)的輸入快速改變波的形狀和頻率,達(dá)到人機(jī)交互的目的,同時(shí)用液晶顯示屏顯示對(duì)應(yīng)波形的名稱和頻率。其設(shè)計(jì)簡(jiǎn)單、性能優(yōu)良,可用于多種需要低頻信號(hào)源的場(chǎng)所,具有一定的實(shí)用性。 關(guān)鍵詞: 單片機(jī);信號(hào)發(fā)生器;D/A 轉(zhuǎn)換 一、信號(hào)發(fā)生器現(xiàn)狀 信號(hào)發(fā)生器又稱函數(shù)發(fā)生器,指用于產(chǎn)生被測(cè)電路所需特定參數(shù)的電測(cè)試信
2、號(hào)的儀器。作為當(dāng)前科研、教學(xué)、制造業(yè)中一種最常見(jiàn)的通用儀器,市場(chǎng)上常見(jiàn)的信號(hào)發(fā)生器波形種類(lèi)有限,輸出波形一般固定為正弦波、三角波、鋸齒波和方波,不能實(shí)現(xiàn)有時(shí)在實(shí)驗(yàn)或工程應(yīng)用中需要的特殊信號(hào),給用戶使用帶來(lái)不便。 傳統(tǒng)的信號(hào)發(fā)生器作為一種實(shí)驗(yàn)用信號(hào)源設(shè)備,可以不采用單片機(jī)芯片,而完全利用 555 振蕩電路由硬件搭接而成,但該結(jié)構(gòu)產(chǎn)生的正弦波信號(hào)、矩形波信號(hào)和三角波信號(hào)卻存在波形失真、操控難、頻率范圍小、結(jié)構(gòu)復(fù)雜和體積大等缺陷。在生產(chǎn)實(shí)踐和科技研究過(guò)程中,如工業(yè)、農(nóng)業(yè)、通信、生物醫(yī)學(xué)等領(lǐng)域常常要用到低頻信號(hào)發(fā)生器。而由硬件電路構(gòu)成的低頻信號(hào)源因其所需的電阻和電容制作上較難,所以參數(shù)的精度難以保證;
3、更因其存在體積大、損耗顯著、漏電等弱點(diǎn),在實(shí)際應(yīng)用過(guò)程中,電路復(fù)雜程度會(huì)大大增加,性能往往難以令人滿意。 二、單片機(jī)在低頻信號(hào)發(fā)生器中的應(yīng)用單片機(jī)是將中央處理器、存儲(chǔ)器、定時(shí)器/計(jì)數(shù)器、輸入輸出接口等主要計(jì)算機(jī)件集成在一塊芯片上,它是在大規(guī)模集成電路技術(shù)的基礎(chǔ)上發(fā)展起來(lái)的。因其獨(dú)特的結(jié)構(gòu)形式,單片機(jī)承擔(dān)了許多大中型計(jì)算機(jī)無(wú)法完成的工作,被廣泛的應(yīng)用于工農(nóng)業(yè)生產(chǎn)、科研、國(guó)防及日常生活的各個(gè)領(lǐng)域。單片機(jī)的制造商主要有荷蘭的 Philip 公司、日本的 NEC 公司以及美國(guó)的 Intel、Motorola 公司等。和通用微型機(jī)相比,單片機(jī)主要有以下幾個(gè)方面的優(yōu)勢(shì): (1)使用方便、可靠性高 (2)體
4、積小、低功耗 (3)功能強(qiáng)大、擴(kuò)展性強(qiáng) (4)性價(jià)比較高、易于產(chǎn)品化采用單片機(jī)和 DAC0832 數(shù)模轉(zhuǎn)換器生成波形,由于是軟件濾波,所以可以有效的濾除高次諧波分量,生成的波形不失真。DAC0832 主要由 8 位 D/A 轉(zhuǎn)換器、8 位DAC 寄存器、8 位輸入寄存器以及輸入控制電路四部分組成。它的特點(diǎn)是在低頻范圍內(nèi)穩(wěn)定性好、性能高,操作靈活、體積小、價(jià)格便宜。三、基本原理 系統(tǒng)框圖如圖 3-1 所示低頻信號(hào)發(fā)生器系統(tǒng)主要由 CPU、D/A 轉(zhuǎn)換電路、基準(zhǔn)電壓電路、電流/電壓轉(zhuǎn)換電路、按鍵和波形指示電路、電源等電路組成。其工作原理為當(dāng)分別按下鍵盤(pán)上的不同按鍵時(shí)就會(huì)分別出現(xiàn)方波、鋸齒波、三角波
5、、正弦波,并且有液晶顯示屏同步顯示波的類(lèi)型和頻率。3.1 單片機(jī)的介紹 1.AT89S52 的引腳圖如圖 3-2 所示 2.管腳說(shuō)明 低頻信號(hào)發(fā)生器采用 AT89S52 單片機(jī)作為控制核心,其內(nèi)部組成包括:一個(gè) 8 位的微處理器 CPU 及片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接;片內(nèi)數(shù)據(jù)存儲(chǔ)器 RAM 低 128 字節(jié),存放讀/寫(xiě)數(shù)據(jù);高 128 字節(jié)被特殊功能寄存器占用;片內(nèi)程序存儲(chǔ)器 4KB ROM;四個(gè) 8 位并行 I/O(輸入/輸出)接口 P3 -P0,每個(gè)口可以用作輸入,也可以用作輸出;兩個(gè)定時(shí)/計(jì)數(shù)器,每個(gè)定時(shí)/計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對(duì)外部事件進(jìn)行計(jì)數(shù),也
6、可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制;五個(gè)中斷源的中斷控制系統(tǒng);一個(gè)全雙工 UART(通用異步接收發(fā)送器)的串行 I/O 口。 VCC:供電電壓。 GND:接地。 RST:復(fù)位輸入端。當(dāng) RST 端持續(xù)出現(xiàn)兩個(gè)機(jī)器周期以上的高電平時(shí),實(shí)現(xiàn)振蕩器器件復(fù)位。ALE/PROG:當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí), ALE (地址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節(jié)。通常,ALE 仍以時(shí)鐘振蕩頻率的 1/6 輸出固定的脈沖信號(hào),因此它可用于定時(shí)或?qū)ν廨敵鰰r(shí)鐘目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè) ALE 脈沖。該引腳在 FLASH 存儲(chǔ)器編程期間,還用于
7、輸入編程脈沖(PROG)。應(yīng)用中還可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的 8EH 單元的 D0 位置位,可禁止 ALE 操作。該位置位后,只有一條 MOVX 和 MOVC 指令才能將 ALE 激活。此外,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置 ALE 禁止位無(wú)效。 /PSEN:程序儲(chǔ)存允許( PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng) AT89S52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次 PSEN 有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次 PSEN 信號(hào)。 /EA/VPP:外部訪問(wèn)允許,欲使 CPU 僅訪問(wèn)外部程序存儲(chǔ)器(地址為 0000H-FFFFH),EA
8、端必須保持低電平(接地)。需注意的是:如果加密位 LB1 被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存 EA 端狀態(tài)。如 EA 端為高電平(接 Vcc 端),CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V 的編程允許電源 Vpp。 XTAL1:內(nèi)部時(shí)鐘工作電路的輸入及反向振蕩放大器的輸入端。 XTAL2:振蕩器反相放大器的輸出端。89S52 單片機(jī)外部有32 個(gè)端口可供用戶使用,其功能如下:P0 口:P0 口是一個(gè) 8 位漏極開(kāi)路的雙向 I/O 口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏 輯電平。對(duì) P0 端口寫(xiě)“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也被作
9、為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0 不具有內(nèi)部上拉電阻。在 flash 編程時(shí),P0 口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí)需要外部上拉電阻。 P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL 邏輯電平。對(duì) P1 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 P2 口:P2 口為一個(gè)內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 口緩沖器可接收,輸出 4個(gè) TTL 門(mén)電流,當(dāng) P2 口被寫(xiě)“1”時(shí),其管
10、腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2 口的管腳被外部拉低,將輸出電流。P2 口當(dāng)用于外部程序存儲(chǔ)器或16 位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2 口輸出其特殊功能寄存器的內(nèi)容。 P3 口:P3 口管腳是 8 個(gè)帶內(nèi)部上拉電阻的雙向 I/O 口,可接收輸出 4 個(gè) TTL 門(mén)電流。當(dāng) P3 口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL),這是由于上拉的緣故。 3.AT89S52 的晶振及其連接方法CPU 工作時(shí)
11、都必須有一個(gè)時(shí)鐘脈沖。有兩種方式可以向 89S52 提供時(shí)鐘脈沖:一是外部時(shí)鐘方式,即使用外部電路向89S52 提供始終脈沖,見(jiàn)圖3-3-(a); 二是內(nèi)部時(shí)鐘方式,即使用晶振由 89S52 內(nèi)部電路產(chǎn)生時(shí)鐘脈沖。一般常用第二種方法,其電路見(jiàn)圖3-3-(b)。圖 33 中:J 一般為石英晶體,其頻率由系統(tǒng)需要和器件決定,在頻率穩(wěn)定度要求不高時(shí)也可以使用陶瓷濾波器。 C1、C2:使用石英晶體時(shí),C1=C2=30(±10)pF 使用陶瓷濾波器時(shí),C1=C2=40(±10)pF 4.AT89S52 的復(fù)位 使 CPU 開(kāi)始工作的方法就是給 CPU 一個(gè)復(fù)位信號(hào),CPU 收到復(fù)位信
12、號(hào)后將內(nèi)部特殊功能寄存器設(shè)置為規(guī)定值,并將程序計(jì)數(shù)器設(shè)置為“0000H”。復(fù)位信號(hào)結(jié)束后,CPU從程序存儲(chǔ)器“0000H”處開(kāi)始執(zhí)行程序。89S52 為高電平復(fù)位,一般有 3 種復(fù)位方法。 上電復(fù)位。接通電源時(shí) 手動(dòng)復(fù)位。設(shè)置一個(gè)復(fù)位按鈕,當(dāng)操作者按下按鈕時(shí)產(chǎn)生一個(gè)復(fù)位信號(hào)。 自動(dòng)復(fù)位。設(shè)計(jì)一個(gè)復(fù)位電路,當(dāng)系統(tǒng)滿足某一條件時(shí)自動(dòng)產(chǎn)生一個(gè)復(fù)位信號(hào)。 最簡(jiǎn)單的上電復(fù)位和手動(dòng)復(fù)位方法如圖 3-4 所示。圖 3-4 89S52 的復(fù)位電路關(guān)于 CPU 的復(fù)位電路應(yīng)當(dāng)注意,在調(diào)試單片機(jī)程序時(shí)有兩種工作方式。一是仿真器方式,主要用于調(diào)試程序。此時(shí)程序的執(zhí)行由仿真器控制,復(fù)位電路不起作用,系統(tǒng)時(shí)鐘也經(jīng)常設(shè)置
13、為仿真器產(chǎn)生,此時(shí)用戶的晶振也不起作用。二是用戶方式,即脫離仿真器的實(shí)際工作方式,用戶的時(shí)鐘振蕩電路和復(fù)位電路都必須正常工作。因此,如果系統(tǒng)復(fù)位電路或晶振電路有故障,就會(huì)出現(xiàn)仿真器方式工作正常,而用戶方式不工作的現(xiàn)象,這是許多初學(xué)者常遇到的問(wèn)題。 5.芯片擦除對(duì) EPROM 進(jìn)行程序固化時(shí),先要用紫外燈照射擦除片內(nèi)的信息,然后用萬(wàn)能編程器編程。EPROM 在芯片封裝時(shí)頂部有一個(gè)石英玻璃窗口,要擦除片內(nèi)信息時(shí),將芯片放在專(zhuān)門(mén)的紫外燈下通過(guò)窗口照射 15-20 分鐘,全部存儲(chǔ)單元的 0 變?yōu)?1,此時(shí)表示信息擦除正常,可以重新寫(xiě)入程序。 3.2 資源分配 軟、硬件設(shè)計(jì)是設(shè)計(jì)中不可缺少的,為了滿足功
14、能和指標(biāo)的要求,資源分配如下: 1.晶振采用 12MHZ 2.內(nèi)存分配 P1 口的 P1.0-P1.3 分別與四個(gè)按鍵連接,分別控制鋸齒波、三角波、正弦波和方波,P1.4-P1.7 與四個(gè)發(fā)光二極管相連,按鍵一對(duì)應(yīng)發(fā)光二極管一,依次類(lèi)推,發(fā)光二極管四對(duì)應(yīng)按鍵四,實(shí)現(xiàn)輸出一個(gè)波形對(duì)應(yīng)亮一個(gè)燈。 P0 口與 DAC0832 的 DI0-DI7 數(shù)據(jù)輸入端相連。 P2 口用來(lái)控制 DAC0832 的輸入寄存器選擇信號(hào) CS、輸入寄存器寫(xiě)選通信號(hào) WR1 及DAC 寄存器寫(xiě)選通信號(hào) WR2 和數(shù)據(jù)傳送信號(hào) XFER。 3.3 各部分電路原理1.DAC0832 芯片原理 (1) 管腳功能如圖 3-5 所
15、示圖 3-5 DAC0832 管腳圖c DI7DI0:8 位的數(shù)據(jù)輸入端,DI7 為最高位。 d IOUT1: 模擬電流輸出端 1,當(dāng) DAC 寄存器中數(shù)據(jù)全為 1 時(shí),輸出電流最大,當(dāng) DAC寄存器中數(shù)據(jù)全為0時(shí),輸出電流為0。 e IOUT2:模擬電流輸出端 2, IOUT2 與 IOUT1 的和為一個(gè)常數(shù),即 IOUT1IOUT2常數(shù)。 f RFB:反饋電阻引出端,DAC0832 內(nèi)部已經(jīng)有反饋電阻,所以 RFB 端可以直接接到外部運(yùn)算放大器的輸出端,這樣相當(dāng)于將一個(gè)反饋電阻接在運(yùn)算放大器的輸出端和輸入端之間。g VREF:參考電壓輸入端,此端可接一 個(gè)正電壓,也可接一個(gè)負(fù)電壓,它決定
16、0至 255 的數(shù)字量轉(zhuǎn)化出來(lái)的模擬量電壓值的幅度,VREF 范圍為(+10-10)V。VREF 端與D/A內(nèi)部 T 形電阻網(wǎng)絡(luò)相連。 h Vcc:芯片供電電壓,范圍為(+5 15)V。 i AGND:模擬量地,即模擬電路接地端。 j DGND:數(shù)字量地。當(dāng) WR2 和 XFER 同時(shí)有效時(shí),8 位 DAC 寄存器端為高電平“1”,此時(shí) DAC 寄存器的輸出端 Q 跟隨輸入端 D 也就是輸入寄存器 Q 端的電平變化;反之,當(dāng)端為低電平“0”時(shí),第一級(jí) 8 位輸入寄存器 Q 端的狀態(tài)則鎖存到第二級(jí) 8 位 DAC 寄存器中,以便第三8位 DAC 轉(zhuǎn)換器進(jìn)行 D/A 轉(zhuǎn)換。 一般情況下為了簡(jiǎn)化接口
17、電路,可以把 WR2 和 XFER 直接接地,使第二級(jí) 8 位 DAC寄存器的輸入端到輸出端直通,只有第一級(jí) 8 位輸入寄存器置成可選通、可鎖存的單緩沖輸入方式。特殊情況下可采用雙緩沖輸入方式,即把兩個(gè)寄存器都分別接成受控方式 制作低頻信號(hào)發(fā)生器有許多方案:主要有單緩沖方式,雙緩沖方式和直通方式。 單緩沖方式具有適用于只有一路模擬信號(hào)輸出或幾路模擬信號(hào)非同步輸出的情形的優(yōu)點(diǎn),但是電路線路連接比較簡(jiǎn)單。而雙緩沖方式適用于在需要同時(shí)輸出幾路模擬信號(hào)的場(chǎng)合,每一路模擬量輸出需一片 DAC0832 芯片,構(gòu)成多個(gè) DAC0832 同步輸出電路,程序簡(jiǎn)單化,但是電路線路連接比較復(fù)雜。 (2) 工作原理
18、DAC0832 主要由 8 位輸入寄存器、8 位 DAC 寄存器、8 位 D/A 轉(zhuǎn)換器以及輸入控制路四部分組成。8 位輸入寄存器用于存放主機(jī)送來(lái)的數(shù)字量,使輸入數(shù)字量得到緩沖鎖存,由加以控制;8 位 DAC 寄存器用于存放待轉(zhuǎn)換的數(shù)字量,由加以控制;8 位轉(zhuǎn)換器輸出與數(shù)字量成正比的模擬電流;由與門(mén)、非與門(mén)組成的輸入控制電路來(lái)控個(gè)寄存器的選通或鎖存狀態(tài)。 DAC0832 與反相比例放大器相連,實(shí)現(xiàn)電流到電壓的轉(zhuǎn)換,因此輸出模擬信號(hào)的性與參考電壓的極性相反,數(shù)字量與模擬量的轉(zhuǎn)換關(guān)系為 Vout1=-Vref×(數(shù)字碼/256) 若 D/A 轉(zhuǎn)換器輸出為雙極性,如圖 3-6 所示 3-6
19、 D/A 轉(zhuǎn)換器雙極性輸出電路運(yùn)算放大器 A2 的作用是把運(yùn)算放大器 A1 的單向輸出電壓轉(zhuǎn)換成雙向輸出電壓。其原理是將 A2 的輸入端通過(guò)電阻 R1 與參考電壓 VREF 相連,VREF 經(jīng) R1 向 A2 提供一個(gè)偏流 I1,其電流方向與 I2 相反,因此運(yùn)算放大器 A2 的輸入電流為 I1、I2 之代數(shù)和。則 D/A 轉(zhuǎn)換器的總輸出電壓為: VOUT2= -(R3/R2) VOUT1+(R3/R1) VREF設(shè) R1=R3=2R R2=R,則 VOUT2= -(2VOUT1+VREF)DAC0832 主要是用于波形的數(shù)據(jù)的傳送,是本題目電路中的主要芯片。 (3) DAC0832 電路原理
20、如圖 3-7 所示2.UA741 管腳圖如圖 3-8 所示 圖 3-8 UA741 管腳圖3.MC1403 管腳功能如圖 3-9 所示MC1403 是低壓基準(zhǔn)芯片。一般用作 8 到 12bit 的 D/A 芯片的基準(zhǔn)電壓等一些需要本精準(zhǔn)的基準(zhǔn)電壓的場(chǎng)合。 輸出電壓:2.5V+/-25Mv 輸入電壓范圍:4.5Vto40V 輸出電流:10Ma 因?yàn)檩敵鍪枪潭ǖ模噪娐泛芎?jiǎn)單。就是 Vin 接電源輸入,GND 接地,Vout 加個(gè) 0.1uf 到 1uf 的電容就可以了。Vout 一般用于 8 到 12bit 的 D/A 芯片的基準(zhǔn)電壓在此項(xiàng)目里 MC1403 起到了穩(wěn)壓的作用,它基準(zhǔn)了 DAC
21、0832 的 8 腳需要的 2.5V。其 DAC0832 能夠正常工作。 四、 軟件設(shè)計(jì) 單片機(jī)技術(shù)比較成熟,開(kāi)發(fā)過(guò)程可利用的資源和工具豐富,最大的優(yōu)點(diǎn)是價(jià)格便宜,成本低。調(diào)試軟件采用Keil51.keiluVison是眾多單片機(jī)應(yīng)用開(kāi)發(fā)軟件中優(yōu)秀軟件之一,界面友好,易寫(xiě)易操作。在調(diào)試程序中,軟件仿真 protues 功能也很強(qiáng),軟件調(diào)通,再通過(guò)編程器下載到 AT89S52 中,然后插到系統(tǒng)中即可獨(dú)立完成所有的控制。根據(jù)功能不同,軟件設(shè)計(jì)上分了主程序模塊、延時(shí)子程序模塊、正弦波模塊、齒波模塊、三角波模塊、方波模塊等幾個(gè)模塊編程。顯示波形模塊是利用 DAC0832 的 8 位特點(diǎn),把波形的數(shù)據(jù)以
22、 8 位數(shù)據(jù)的形勢(shì)送進(jìn) CPU中,只要一按鍵就能顯示波形。4.1主程序流程圖如圖 4-1 所示圖 4-1 主程序流程圖本軟件設(shè)計(jì)過(guò)程中主要實(shí)現(xiàn)利用按鍵來(lái)控制不同波形的輸出,當(dāng)按鍵 1 按下時(shí),函數(shù)發(fā)生器就輸出鋸齒波;當(dāng)按鍵 2 按下時(shí),函數(shù)發(fā)生器就輸出三角波;當(dāng)按鍵 3 按下時(shí),函數(shù)發(fā)生器就輸出正弦波;當(dāng)按鍵 4 按下時(shí),函數(shù)發(fā)生器就輸出方波。通過(guò)按鍵可以以任意循環(huán)方式輸出不同波形。 4.2 子程序流程圖 1. 鋸齒波流程圖 如圖 4-2 所示 圖 4-2 鋸齒波流程圖鋸齒波產(chǎn)生首先將 DAC0832 口地址至為 4000H,然后將 00H 送入寄存器 A輸出 A 中的內(nèi)容,當(dāng) A
23、 中的內(nèi)容等于 F0H 返回開(kāi)始,當(dāng) A 中的內(nèi)容不為 0FH內(nèi)容累加,從而輸出波形。 2. 三角波程序流程圖 如圖 4-3 所示三角波產(chǎn)生首先將 DAC0832 口地址至為 4000H,通過(guò) A 中數(shù)值的加一遞升,當(dāng) A 中的內(nèi)容為 0 時(shí),與 0FFH 相比,相等時(shí) A 中的內(nèi)容減一遞減,從而循環(huán)產(chǎn)生三角波。 3. 正弦波程序流程圖 如圖 4-4 所示圖 4-4 正弦波流程圖4. 方波程序流程圖 如圖 4-5 所示圖 4-5 方波流程圖方波產(chǎn)生首先將 DAC0832 口地址至為 4000H,當(dāng) A 中的內(nèi)容為 0 時(shí),輸出對(duì)應(yīng)模擬量,然后延時(shí),當(dāng) A 中的內(nèi)容為 0FFH 時(shí),同樣輸出對(duì)應(yīng)
24、模擬量,再延時(shí),從而得到方波。 5. 延時(shí)子程序流程圖 如圖 4-6 所示延時(shí)程序如下: DELY: MOV R7,#10H DLY0: MOV R6,#0EDH NOP DLY1: DJNZ R6,DLY1 DJNZ R7,DLY0 RET 方波的上限和下限的延時(shí)時(shí)間為:7ms S=1+(1+1+2×237+2)×16+1=7648S 參考文獻(xiàn) 1 蔡美琴.MCS-51 系列 單片機(jī)系統(tǒng)及其應(yīng)用M.北京:高等教育出版社,2000:5-7. 2 潘新民,王燕芳.微型計(jì)算機(jī)控制技術(shù).北京:高等教育出版社,2004:10. 3 孫育才,孫華芳,王榮興.單片機(jī)原理及應(yīng)用
25、M.北京:電子工業(yè)出版社,2003: 4 李鴻.單片機(jī)原理及應(yīng)用M.湖南:湖南大學(xué)出版社,2004: 5 胡漢才.單片機(jī)原理及接口技術(shù)M. 北京:清華大學(xué)出版社,1996:66-78. 6 劉守義.單片機(jī)應(yīng)用技術(shù).西安:西安電子科技大學(xué)出版社,2002: 7 范立南.單片微機(jī)接口與控制技術(shù)M.沈陽(yáng):遼寧大學(xué)出版社,1996: 8 李朝青.單片機(jī)原理及接口技術(shù)北京:北京航空航天大學(xué)出版社,1994: 9 孫俊逸,盛秋林,張錚.單片機(jī)原理及應(yīng)用M.北京:清華大學(xué)出版社,2001: 10 陸子明,徐長(zhǎng)根.單片機(jī)設(shè)計(jì)與應(yīng)用基礎(chǔ)教程.北京:國(guó)防工業(yè)出版社,2005: 11 杜華.任意波形發(fā)生器及應(yīng)用J.
26、國(guó)外電子測(cè)量技術(shù),2005,12(1):38-40. 12 張永瑞.電子測(cè)量技術(shù)基礎(chǔ)M.西安:西安電子科技大學(xué)出版社,2006: 13 童詩(shī)白.模擬電路技術(shù)基礎(chǔ)M. 北京:高等教育出版社,2000:171-202.14 王新賢.通用集成電路速查手冊(cè).濟(jì)南:山東科學(xué)技術(shù)出版社,2002: 15 馬忠梅.單片機(jī)的 C 語(yǔ)言應(yīng)用程序設(shè)計(jì)M.北京:北京北航出版社,2003: 16 張毅剛,彭喜元,姜守達(dá).新編 MCS-51 單片機(jī)應(yīng)用設(shè)計(jì)M.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2003:153-168. 17 朱清慧.proteus 電子線路設(shè)計(jì)與仿真.北京:清華大學(xué)出版社,2008: 18 江世明.基于
27、proteus 的單片機(jī)應(yīng)用技術(shù).北京:電子工業(yè)出版社,2009: 19 劉紅兵.電子 EDA.北京:中國(guó)勞動(dòng)社會(huì)保障出版社,2009: 20 高建國(guó).電子技術(shù)應(yīng)用專(zhuān)業(yè) proteus 仿真軟件應(yīng)用.上海:華中科技大學(xué)出版社,2010: 附 錄 附錄 1 電路原理圖 附錄 2 程序清單 #include <reg52.h> #include <intrins.h> #include<absacc.h> #define uint unsigned int
28、#define uchar unsigned char sbit lcden=P36; sbit lcdrs=P37; sbit dula=P26; sbit wela=P27; uchar code table1="0123456789HZPinLv:" uchar code table2="Zheng Xian Bo " uchar code table3= " Fang Bo " uchar code table4= " Jv Chi Bo " uchar code table5= "S
29、an Jiao Bo " uchar tab2; uchar val, sec, t_50ms; uint a; uchar code table=0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5 ,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,
30、0xf1,0xf2,0xf4,0xf5 ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd ,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0x
31、c7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,
32、0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0 x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,
33、0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0 x76,0x79,0x7c,0x80 ; void delay(uint z) uint i,j; for(i=z;i>0;i-)for(j=110;j>0;j-); void write_com(uchar com) lcdrs=0; P0=com;delay(5); lcde
34、n=1; delay(5); lcden=0; void write_data(uchar date) lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; void init() lcden=0;dula=0; wela=0; write_com(0x38);write_com(0x08);write_com(0x01); write_com(0x06); write_com(0x0c); void Display(uchar k) /tab0=sec/1000; / tab1=sec%1000/100; / uchar code t
35、able= /0xc0,0xf9,0xa4,0xb0, / 0x99,0x92,0x82,0xf8, /0x80,0x90,0x88,0x83, /0xc6,0xa1,0x86,0x8e; / P0 = 0; dula=1; /消隱 / P0 =tablek / 10; /dula=0;wela=1; / /P0 = 0xfe; wela=0;delay(5); /顯示 5ms 十位 / P0 = 0; dula=1; /消隱 / P3 =tablek % 10;/;dula=0;wela=1; / P0 = 0xfd; wela=0; delay(5); /顯示 5ms 個(gè)位 tab0=se
36、c%100/10; write_com(0x80+0x40); for(a=12;a<18;a+)write_data(table1a); delay(1); for(a=0;a<2;a+) write_data(table1taba); delay(1); write_data(table110); write_data(table111);delay(100); tab1=sec%10; write_com(0x80+0x40); for(a=12;a<18;a+) write_data(table1a); delay(1); for(a=0;a<2;a+) wri
37、te_data(table1taba); delay(1); write_data(table110); write_data(table111); /* 名稱: Keyscan() * 功能: P1 外接 4×4 按鍵, 按照掃描法讀出鍵值 * 輸出: 按鍵值 015/如無(wú)鍵按下, 返回 16 */ uchar Keyscan(void) uchar i, j, temp, Buffer4 = 0xef, 0xdf, 0xbf, 0x7f; for(j = 0; j < 4; j+) /循環(huán)四次 P1 = Bufferj; /在 P1 高四位分別輸出一個(gè)低電平 temp =
38、0x01; /計(jì)劃先判斷 P1.0 位 for(i = 0; i < 4; i+) /循環(huán)四次 if(!(P1 & temp) /從 P1 低四位,截取 1 位 return (i + j * 4); /返回取得的按鍵值 temp <<= 1; /判斷的位,左移一位 return 16; /判斷結(jié)束,沒(méi)有鍵按下,返回 16 /* * 名稱: GetKey() * 功能: 讀出按鍵、消抖、等待按鍵釋放 * 輸出: 按鍵值 015/如無(wú)鍵按下, 返回 16 */ uchar GetKey(void) uchar Key_Temp1, Key_Temp2; /兩
39、次讀出的鍵值 P1 = 0xff; Key_Temp1 = Keyscan(); /先讀入按鍵 if(Key_Temp1 = 16) return 16; /沒(méi)有鍵按下,返回 16 / Display(sec); /用顯示代替延時(shí) Key_Temp2 = Keyscan(); /再讀一次按鍵 if(Key_Temp1 != Key_Temp2) return 16; /不同,返回 16 while(Keyscan() < 16) /等待按鍵釋放 / Display(sec); /等待期間顯示 return Key_Temp1; void fang() P2=0X00;delay(500/
40、sec); P2=0xff;delay(500/sec); void jvchi() uchar k; for(k=0;k<255;k+) P2=k;delay(1000/(256*sec); void sanjiao() uchar k; for(k=0;k<128;k+) P2=k;delay(500/(256*sec); for(k=128;k>0;k-) P2=k;delay(500/(256*sec); void zhengxian() uchar k; for(k=0;k<255;k+)P2=tablek;delay(1000/(256*sec); /* *
41、 名稱 : Main() * 功能 : 主函數(shù) */ void Main(void) uchar num, Key_Value; /讀出的鍵值 /int temp; ; sec = 20; init(); / tab0=sec/1000; / tab1=sec%1000/100; tab0=sec%100/10; tab1=sec%10; write_com(0x80+0x40); for(a=12;a<18;a+) write_data(table1a); delay(1); for(a=0;a<2;a+) write_data(table1taba); delay(1); wr
42、ite_data(table110); write_data(table111); while(1) /主循環(huán) = / Display(sec); /不停的顯示 / if(GetKey=11) / m=500/sec; / temp=(int)m; / P2=0x00;delay(temp); / P2=0xff;delay(temp ); / P2=0x00;delay(500/sec); / Display(sec); / P2=0xff;delay(500/sec ); if (GetKey() = 10) /如果按下了'A'鍵 num = 0; /停止計(jì)時(shí) while (num= 0) Key_Value = GetKey();/再次輸入鍵值 if (Key_Value < 10) /如果按下了 09 sec %= 10; sec = sec * 10 + Key_Value;/修改秒數(shù) Display(sec); if (Key_Value = 11) num = 2; if (Key_Value = 12) num = 3; if (Key_Value = 13) num = 4; if (
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寧波幼兒師范高等專(zhuān)科學(xué)校《汽車(chē)車(chē)身電控與技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西能源學(xué)院《當(dāng)代建筑史》2023-2024學(xué)年第二學(xué)期期末試卷
- 西北農(nóng)林科技大學(xué)《基礎(chǔ)法語(yǔ)聽(tīng)力(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- 合肥科技職業(yè)學(xué)院《地質(zhì)與地球科學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 曲靖師范學(xué)院《游戲創(chuàng)作基礎(chǔ)與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇城鄉(xiāng)建設(shè)職業(yè)學(xué)院《教師語(yǔ)言訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 昆明工業(yè)職業(yè)技術(shù)學(xué)院《自動(dòng)控制系統(tǒng)課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東旅游職業(yè)學(xué)院《檢測(cè)技術(shù)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安工程大學(xué)《數(shù)據(jù)分析與應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 許昌學(xué)院《工業(yè)機(jī)器人基礎(chǔ)操作與編程實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 《塑料材質(zhì)食品相關(guān)產(chǎn)品質(zhì)量安全風(fēng)險(xiǎn)管控清單》
- 陌生拜訪情景演練
- 【經(jīng)典文獻(xiàn)】《矛盾論》全文
- 存款保險(xiǎn)條例培訓(xùn)
- 八年級(jí)數(shù)學(xué)家長(zhǎng)會(huì)課件
- 惠州市2025屆高三第二次調(diào)研考試(二調(diào))試題 政治試卷(含答案解析)
- 光伏發(fā)電項(xiàng)目試驗(yàn)檢測(cè)計(jì)劃
- 幼兒園營(yíng)養(yǎng)膳食蔬菜水果認(rèn)知主題課件
- 國(guó)開(kāi)(陜西)2024年秋《社會(huì)調(diào)查》形考作業(yè)1-4答案
- 河北省五個(gè)一名校2025屆高考物理押題試卷含解析
- 開(kāi)具保函委托協(xié)議書(shū)范本
評(píng)論
0/150
提交評(píng)論