Mikrokonverterrel vezérelt digitális jelgenerátor fejlesztése



Hasonló dokumentumok
DDS alapú szinusz jelgenerátor fejlesztése

Mikrovezérlık története (nagyon) röviden

1. Bevezetés. 2. A mikroszámítógépek felépítése

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

A mikroszámítógép felépítése.

1. Az utasítás beolvasása a processzorba

Mérési utasítás Mikrokontroller programozás 2.sz. mérés

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Közlekedés gépjárművek elektronikája, diagnosztikája. Mikroprocesszoros technika. Memóriák, címek, alapáramkörök. A programozás alapjai

Digitális technika II., 2009/2010 tavasz 1. vizsga A csoport

A Számítógépek felépítése, mőködési módjai

A számítógép alapfelépítése

Bevezetés az assembly nyelvbe

Máté: Számítógép architektúrák

1. ábra: Perifériára való írás idődiagramja

2. Digitális hálózatok...60

Jeltárolás. Monitorozás

VHR-23 Regisztráló műszer Felhasználói leírás

TÁMOP VIR alprojekt VIR felhasználói kézikönyv

1. mérés - LabView 1

Mielıtt használná termékünket Az eltérı környezeti körülmény elektromos áramütést, tüzet, hibás mőködést vagy. okozhat.

komplex védelem Letöltő szoftver ismertető V1.61 Azonosító: EP Budapest, február

Bevezetés az assembly nyelvbe

4. mérés Jelek és jelvezetékek vizsgálata

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

BME Villamos Energetika Tanszék Nagyfeszültségű Technika és Berendezések Csoport Nagyfeszültségű Laboratórium. Mérési útmutató

DGSZV-EP DIGITÁLIS GALVANIKUS SZAKASZVÉDELEM. Alkalmazási terület

Magyar. APC Smart-UPS SC. 1000/1500 VA 110/120/230 Vac. Toronykivitelű vagy 2U magas, RACK-be szerelhető szünetmentes tápegységhez

SL7000. Intelligens kereskedelmi és ipari fogyasztásmérő

A DDS áramkörök használata.

Egyszerű RISC CPU tervezése

5 Egyéb alkalmazások. 5.1 Akkumulátorok töltése és kivizsgálása Akkumulátor típusok

LPT illesztőkártya. Beüzemelési útmutató

Digitális kártyák vizsgálata TESTOMAT-C" mérőautomatán

11. Analóg/digitális (ADC) és Digital/analóg (DAC) átalakítók

Az MSP430 energiatakarékos használata

DIGITÁLIS KÖZPONT SZIMULÁCIÓJA

EUROFLEX-33 ESEMÉNY NYOMTATÓ. -felhasználói és telepítői leírás-

ERserver. iseries. Szolgáltatási minőség


Aronic Főkönyv kettős könyvviteli programrendszer

Jel- és adatfeldolgozás a sportinformatikában

Billenőkörök. Billenő körök

Új módszerek egyfázisú aszinkron motorok jelfeldolgozó kontrolleres vezérléséhez

Az vevő- és vezérlőáramkör programja

Kiegészítés a Párbeszédes Informatikai Rendszerek tantárgyhoz

Hangkártya programozása

Labor tápegység feszültségének és áramának mérése.

AX-DG105. FIGYELMEZTETÉS Balesetveszélyes v. akár halálos tevékenységek és körülmények meghatározása

Felhasználói kézikönyv. Magyar. APC Smart-UPS SC. 420/620 VA 110/120/230 Vac. Torony kivitelű szünetmentes tápegységhez

1 Rendszer alapok. 1.1 Alapfogalmak

Vezérlés és irányítástechnológia (Mikroprocesszoros irányítás)

Oszcilloszkópos mérések II. laboratóriumi gyakorlat

Mikrokontrollerek. Tihanyi Attila május 8

Jármû-elektronika ELEKTRONIKAI-INFORMATIKAI SZAKFOLYÓIRAT november. 890 Ft. XII. évfolyam 7. szám

0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.

EC Digitális csoportaggregát vezérlő

MCS-51-es MIKROKONTROLLER ÖSSZEFOGLALÓ KÉSZÍTETTE: DR. KÓNYA LÁSZLÓ Tartalomjegyzék

OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat

Következõ: Lineáris rendszerek jellemzõi és vizsgálatuk. Jelfeldolgozás. Lineáris rendszerek jellemzõi és vizsgálatuk

MDS30-50D Víz víz hőszivattyú

Vezeték hossza (m)

KETTŐS KÖNYVELÉS PROGRAM CIVIL SZERVEZETEK RÉSZÉRE

Felhasználói leírás v1.0

MÉRÉSTECHNIKA I. Laboratóriumi mérések

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

10193/12 KH/md DG E2

2 - ELEKTROMOS BEKÖTÉSEK

Az 5-2. ábra két folyamatos jel (A és B) azonos gyakoriságú mintavételezését mutatja ábra

ÓVINTÉZKEDÉSEK A LÉGKONDICIONÁLÓVAL KAPCSOLATBAN

ProCOM GPRS ADAPTER TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. v1.0 és újabb modul verziókhoz Rev

Dr. Göndöcs Balázs, BME Közlekedésmérnöki Kar. Tárgyszavak: szerelés; javíthatóság; cserélhetőség; karbantartás.

T A R T A L O M J E G Y Z É K

WRS-K felszerelési és kezelési útmutató

EverLinkBusSetup. Beléptető, munkaidő nyilvántartó és parkoló rendszer konfiguráló program felhasználói leírása rendszergazdák részére

3. Az univerzális szabályozó algoritmusai.

KFUV1 és a KFUV1A típusú

Paraméter csoport. Alapbeállítások

3. Konzultáció: Kondenzátorok, tekercsek, RC és RL tagok, bekapcsolási jelenségek (még nagyon Béta-verzió)

JME-52F. Oltásvezérlő modul. DSC Hungária Kft. JELLEMZŐK:

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Lemezkezelés, állományrendszerek

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

ÁLTALÁNOS SZERZŐDÉSI FELTÉTELEK

Számelméleti feladatok az általános iskolai versenyek tükrében dr. Pintér Ferenc, Nagykanizsa

MICROCHIP PIC DEMO PANEL

21. szám 124. évfolyam július 3. TARTALOM. Utasítások 48/2009. (VII. 3. MÁV Ért. 21.) VIG számú

A DAS1414 általános célú intelligens adatgyűjtő és vezérlő egység és alkalmazásai

A 2011/2012. tanévi FIZIKA Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai és megoldásai fizikából. I.

Fordulatszámmérő és szabályozó áramkör tervezése egyenáramú kefés motorhoz

(1. és 2. kérdéshez van vet-en egy 20 oldalas pdf a Transzformátorokról, ide azt írtam le, amit én kiválasztanék belőle a zh-kérdéshez.

Point of View Mobii 945 IPS Android 4.1 Tablet PC. Tartalomjegyzék Általános tudnivalók használathoz Jogi nyilatkozat...

SITRANS FUS380 ultrahangos áramlásmér. SITRANS FUE380 ultrahangos áramlásmér


I. A légfékrendszer időszakos vizsgálatához alkalmazható mérő-adatgyűjtő berendezés műszaki

B-TEL99 Kétcsatornás telefonhívó

Megszakítások és kivételek

Vényírás. 1. ábra. 1. oldal

Rendszerfelügyelet Logikai partíciók

Átírás:

SZEGEDI TUDOMÁNYEGYETEM Természettudományi Kar Kísérleti Fizika Tanszék Informatikus Fizikus szak Mikrokonverterrel vezérelt digitális jelgenerátor fejlesztése Diplomamunka Készítette: Kopasz Péter Gábor Informatikus Fizikus hallgató Témavezetı: Dr. Gingl Zoltán egy. adjunktus SZTE, Kísérleti Fizika Tanszék SZEGED 2006.

1. Tartalmi összefoglaló Napjainkban a digitális technika alkalmazása, használata a mindennapok részévé vált. Digitális technikát használunk például, ha telefonálunk, ha használjuk a számítógépet, ha CD lemezt hallgatunk vagy ha DVD filmet nézünk. Gyakran észre sem veszzük, hogy mekkora segítség ez a mindennapokban. Dolgozatom célja, hogy egy igen egyszerő felépítéső, de, nagyon hatékony digitális jelgenerátort építsünk, illetve fejlesszünk. Az eszköz felhasználási területe igen széles lehet, pl.: átviteli függvény vizsgálat; a munka során én a leggyakrabban használt jeltípusokra írtam algoritmusokat, de a késıbbiekben ez bıvíthetı, fejleszthetı. A programot assembly nyelven írtam. Kulcsszavak: digitális jelgenerátor, mikrokonverter, A/D és D/A átalakító, assembly 2.

Tartalomjegyzék 1. Tartalmi összefoglaló 2 2. Bevezetés [1,2] 4 3. Elméleti áttekintés [3,4] 6 3.1 A jelgenerátorokról 6 3.2 A D/A konverterekrıl [4] 8 3.3 A 8051-es mikrovezérlı [5,6] 9 3.3.1 Felépítése 9 3.3.2 Belsı és külsı tárolók 11 3.3.3 Speciális funkció regiszterek (SFR) 12 3.3.4 Megszakítások 13 3.4 Az Analog Devices 842-es mikrokonvertere (ADuC 842) [7] 15 4. Mikrokonverter alapú jelgenerátor fejlesztés 21 4.1 A jelgenerálás elve 21 4.2 A jelgenerátor felépítése 22 4.3 Tulajdonságok 23 4.4 A jelek elıállítása 24 4.4.1 Főrész jel 25 4.4.2 Háromszög jel 26 4.4.3 Négyszög jel 27 4.4.4 Szinusz jel 28 4.4.5 Grafikonok 29 4.5. Felhasználói felület 31 4.6. Teszt 35 5. Összefoglalás 37 6. Köszönetnyilvánítás 38 7. Nyilatkozat 39 8. Irodalomjegyzék 40 9. Függelék/melléklet 41 3.

2. Bevezetés [1,2] A függvénygenerátor olyan elektromos berendezés, amely az elektronikában használatos jelalakok generálására alkalmas. Ezek a jelalakok lehetnek ismétlıdık vagy impulzus formájúak. Az utóbbi esetben valamilyen belsı vagy külsı trigger forrást igényelnek. A kimeneti jelalakot a mérendı készülék bemenetére csatlakoztathatjuk és az átvitt jelbıl következtethetünk a rácsatlakoztatott eszköz helyes vagy helytelen mőködésére. Használhatóak továbbá átviteli függvények mérésére, meghatározására. A továbbiakban ismertetendı eszköz alapja egy mikrokonverter, mert ezzel az egy chippel megvalósítható a digitális jelgenerátor, ugyanis minden szükséges eszközt integráltak rá (A/D, D/A konverter, memória). Régebben lassabbak voltak a mikrovezérlık, de ma már nem korlát a digitális technika, mert nagyon jó a pontossága és nagy elınye még, hogy viszonylag olcsó. A hétköznapokban is fontos szerepet játszik a digitális jelgenerálás. Néhány példával is szeretném ezt alátámasztani: a CD illetve DVD lejátszóban is használnak digitális jelgenerátorokat, a monitorban is a képet három darab jelgenerátor állítja elı. Ez a technika annyira gyakori, hogy mára már minden mobiltelefonban a hangot például digitális jelgenerátor állítja elı. Analóg vagy digitális? A függvénygenerátorok tipikusan két kategóriába sorolhatóak: analóg vagy digitális. Az analóg függvénygenerátorok alapkimeneti jele a háromszögjel. A jel generálása egy kondenzátor feltöltésével és kisütésével történik. Ezáltal lineárisan növekvı illetve csökkenı feszültség keletkezik, ami egy lineáris háromszög jelet állít elı a kimeneten. Az 50%-os kitöltési tényezıvel rendelkezı négyszögjel viszonylag könnyen megkapható, ugyanis a kondenzátor kisülése elıtti értéket illetve a kisülés utáni érték kerül ki a kimenetre. A digitális jelgenerátorok ami a diplomamunkám tárgyát képezi egy digital-analóg konvertert (DAC) használnak, hogy elıállítsák a kívánt jelet a memóriában tárolt adathalmazból, értékekbıl. A digitális generátorok a jel frekvenciáját egy belsı órajel-generátorból (általában kvarc-kristály) származtatják. Következésképpen a frekvencia 4.

pontosság és stabilitás magasabb, mint ami egy analóg függvénygenerátortól elvárható. Elınyükhöz tartozik az is, hogy képesek elıállítani tetszıleges alakú jeleket is, természetesen bizonyos határok között. Ez sok alkalmazás számára kedvezı. A dolgozatom célja, a fentiekben ismertetett digitális eszköz megvalósítása, amit a késıbbiekben viszonylag egyszerően némi programmódosítással, vagy új programrészek írásával lehet fejleszteni, új funkciókat hozzávenni, úgy hogy nem kell változtatni hozzá a külsı megjelenést. 5.

3. Elméleti áttekintés [3,4] 3.1 A jelgenerátorokról A legtöbb függvénygenerátor kimeneti csatlakozó típusa a generátor frekvencia tartományától függıen más és más lehet. Általában a függvénygenerátorok képesek több mint 20 MHz-es jelek elıállítására és 50 vagy 75 ohmos lezárású BNC csatlakozó aljzatot igényelnek. A speciális rádiófrekvenciás generátorok képesek gigaherzes jelek elıállítására és általában N-dugós kimeneti csatlakozójuk van. Ezek az eszközök, mint általában a jelgenerátorok képesek a kimeneti jelek modulálására és csillapítására és gyakran képesek arra, hogy két határfrekvencia közt frekvenciasöprést végezzenek. Ezzel a tulajdonsággal könnyen meghatározható egy elektronikus készülék átviteli karakterisztikája. Némely generátorok képesek fehér vagy rózsaszín zaj elıállítására is. A legkorszerőbb jelgenerátorok DDS-t (Direct Digital Synthesis) használnak a hullámformák generálásához. A tetszıleges hullámforma generátorok is hasonló elven mőködnek, hogy elıállítsanak bármilyen hullámformát, amit amplitúdó értékek sorozatával le tudunk írni. A Direct Digital Synthesis elvén mőködõ jelforrás egy idõrekordot (mintasorozatot) rekonstruálva generál analóg jelet. A numerikus minták könnyen szerkeszthetõek szoftverrel, így - a mintavételezés és kvantálás korlátain belül - valósághő (tetszõleges) vizsgáló jelek elõállítására nyílik mód. (1. ábra) 1. ábra: A DDS mőködési elve [3] 6.

meg. [3] Mivel M értéke általában 32-bites, ezért 2 32 10 9 az átfogási tartomány. A DDS blokkvázlata a 2. ábrán látszik. Minden egyes órajel-ciklusban a léptetıregiszter (M) tartalmát hozzáadjuk a fázisregiszter tartalmához. A keletkezett fázishoz tartozó amplitúdóértéket a jelalakot tartalmazó memóriából (RAM vagy ROM), olvassuk ki és egy D/A konverterrel feszültséggé konvertáljuk. 2. ábra: A DDS blokkvázlata [3] A digitális generálás által keletkezı lépcsık miatt létrejövı felharmonikusok kiszőrésére egy analóg szőrı szolgál (egy passzív ötödfokú elliptikus szőrı). A szőrı jelentıségét a 3. ábra szemlélteti. 3. ábra: A szőrıvel ill. a szőrı nélkül keletkezı jel A keletkezı jel frekvenciájának változtatását az M regiszter tartalmának változtatásával lehet elérni (a frekvencia igen gyorsan megváltoztatható, és nem jelentkeznek tranziensek). A kimenet frekvenciája a következı képlettel számolható: F OUT M * FDDS = (1) N 2 ahol F DDS a generátor referencia órajele, N pedig a fázisregiszter bitjeinek a száma. A frekvenciafelbontás nagyságát a fázisregiszter hossza határozza A függvény generátorok kimeneti fokozata végerısítıbıl és kimeneti osztóból áll. A végerısítı hasonlóan a szinuszos generátorokhoz - szélessávú. 7.

A digitális jelgenerátor megvalósítására nagyon sokféle mód létezik. Mi ebbıl a mikrokonverterrel történı megvalósítást választottuk, ugyanis ott egy helyen megvan minden ami kell a jelalakok elıállításához: memória, A/D és D/A konverterek. A következı fejezetben a 8051-es mikrovezérlı tulajdonságait fogom ismertetni, mert amit használunk mikrokonvertert annak a belsı magja ugyan 8052-es, de teljes mértékben kompatibilis a 8051-es mikrovezérlıvel. 3.2 A D/A konverterekrıl [4] A D/A konverter feladata, hogy egész számmal arányos feszültséget szolgáltasson, jelen esetben a 0V -2,5V-ig tartó tartományt 256 részre osztja, s ennek megfelelı feszültség értékeket állít elı. A konverzió a következı képlet alapján megy végbe: U REF b U = Z * (2) 2 ahol U REF a konverter referenciafeszültsége 2 b pedig a konverter pontosságára jellemzı egész szám, b a bitek száma, a mi esetünkben b=8. A Z szám értéke 0 és 2 b -1 között lehet. D/A konvertert nagyon sok mindenre lehet használni, például: különbözı alakú feszültségjelek elıállítására, feszültséggel vezérelhetı eszközök számítógéppel való vezérlésére, stb. A D/A konvertert kétféleképpen használhatjuk, az egyik, hogy a fix referenciafeszültség mellett változtatjuk a digitális bemenetet, a másik, hogy a referenciafeszültséget változtatjuk. Utóbbi esetben szorzó típusú átalakításról beszélünk, mert a kimenet a referencia és a digitális szám szorzatával arányos. Ezt az utóbbi lehetıséget nem minden D/A konverter biztosítja. A D/A konverterek felbontását az határozza meg, hogy hány bitesek, mert ez a szám adja meg, hogy a feszültség tartomány hány részre oszlik. 8.

3.3 A 8051-es mikrovezérlı [5,6] 3.3.1 Felépítése A mikroprocesszor nem más, mint egy chipben egy számítógép-egység és annak vezérlése. Ahhoz, hogy ebbıl aztán mőködıképes számítógép legyen, sok kiegészítı áramkörre van szükség: órajel-generátorra (kvarckristály), tárolókra (RAM-ok), fix tárolókra (ROM, PROM, EPROM) amelyekbe a beolvasó program kerül. Ezeken kívül különféle periféria vezérlık is szükségesek, az analóg jelek átalakításához pedig A/D konverterek is kellenek. A mikrokontroller és a mikroprocesszor között az a különbség, hogy a mikrovezérlı tartalmazza a mikroprocesszort és további periféria áramköröket egyetlen egységbe integrálva. 4. ábra: A 8051-es mikrovezérlı blokkvázlata 9.

A 8051-es mikrokontrollernek belsı órajel-egysége van. Az áramkör egy invertáló erısítı, amelynek a be-, és a kimenete az XTAL1 és az XTAL2 lábakhoz csatlakozik (19 és 18-as lábak ). A felhasználáshoz szükséges órajel frekvenciát a csatlakoztatott külsı áramköri elemek határozzák meg. Rendszerint erre a célra kvarcot, vagy kerámia-rezonátort használhatunk. Az 5. ábra egy kvarccal stabilizált órajel-generátort mutat. 5. ábra A belsı oszcillátor kimenete, illetve a bevezetett órajel egy belsı ütemgenerátort hajt meg. Ez állítja elı a szükséges belsı ütemezı jelet, amelynek frekvenciája mindenkori órajel frekvencia fele. A belsı jel ütemezi a mőveleteket. A 8051/8031 típusoknál minden gépi-ciklus hat ütemő, melyeket S1-tıl S6-ig jelölünk. Mindegyik ütem két oszcillátor periódusból - P1 és P2 - áll. Minden gépi-ciklus P tehát 12 órajel-periódusból áll, vagyis az S1P1-el kezdıdik és az S6P2-vel fejezıdik be. A gépi ciklus periódusideje (P) a következı összefüggés alapján számolható ki: P = 12 (3) f Az f-et 1/s - ban ( Hz-ben ) helyettesítve a P periódusidıt sec-ban, illetve mikrosecundumban kapjuk. Például ha egy kontrollert 8 MHz-es órajellel mőködtetünk, akkor: P = 12 1,5µs 6 8*10 = (4) 10.

hosszú lesz egy gépi ciklus. A ciklusidı ismeretében egy adott program futási ideje is kiszámolható. A 8051/8031 kontrollerek utasításai 1-3 bájt hosszúak és végrehajtásuk egy vagy két ciklus alatt történik. Kivétel a szorzás (MUL), illetve az osztás (DIV), melyeket a mikrokontroller 4 ciklus alatt hajt végre. 3.3.2 Belsı és külsı tárolók A 8051 mikrokontroller 64 Kbájt külsı adatmemóriát és 64 Kbájt külsı programmemóriát tud kezelni. A család minden tagjában van belsı adatmemória (RAM ), illetve egyes típusokban belsı programmemória (ROM / EPROM) is található. A 8051 típusú mikrokontroller belsı RAM-ja két 128 bájtos területet tartalmaz: operatív memória (00h 7Fh) illetve a speciális funkció regiszter memóriát (SFR) (80h FFh). Az operatív memória további három részre tagolódik: 1. Négy 8 bájtos Regiszter Bank ( BANK0, BANK1, BANK2, BANK3) - A BANK-ok közül mindig csak egy lehet aktív, s ezekhez rendelıdnek az R0,R1,...,R7 regiszterek 2. Bit-címezhetı memória - A bit címezhetı memória 16 bájtja elérhetı bájtos címzéssel is, de a memóriaterület 128 bitje ( 16*8 ) bites változóként külön-külön írható/olvasható, illetve használható bitmőveletek változóiként. 3. általános felhasználású memória - Az általános felhasználású memóriaterület csak bájtos szervezéső. Az operatív memória teljes területe direkt vagy indirekt címzéssel érhetı el. Az alkalmazások széles körében nem elég a belsı tárolók memóriakapacitása. Ilyenkor kell a 8051-et külsı adat- és/vagy programtárolóval kiegészíteni. Használatuknál figyelni kell arra, hogy a 8051 nem használ várakozó állapotot ( Wait-States ), ezért csak megfelelı sebességő tárolók alkalmazhatók. 11.

3.3.3 Speciális funkció regiszterek (SFR) A belsı adatmemória 80H - FFH címterületén találhatók az ún. Speciális Funkció Regiszterek ( SFR ). A 8051-es család minden belsı funkciója ezek segítségével vezérelhetı. Itt találhatók a CPU regiszterek (ACC, B, PSW, SP), a címzı regiszterek (PC, DPTR), a portok regiszterei (P0, P1, P2, P3), a belsı perifériák: idızítı/számláló (TMOD, TCON, TH0, TL0, TH1, TL1), soros vonal (SCON, SBUF), megszakítások (IP, IE). Az SFR regiszterek csak direkt címzéssel írhatók/olvashatók. Ezen regiszterek között vannak olyanok, amelyek bitjei is külön-külön kezelhetık. Az SFR-ek elnevezései, funkciói és címei láthatóak az 1. Táblázatban: Szimbólum Jelentés Cím (Hex) SP Stack-Pointer 81 DPL Data-Pointer: LOW bájt 82 DPH Data-Pointer: HIGH bájt 83 *TCON Idızítı/Számláló vezérlı regiszter 88 TMOD Idızítı/Számláló mód-regiszter 89 TL0 0-ás Idızítı/Számláló: LOW bájt 8A TL1 1-es Idızítı/Számláló: LOW bájt 8B TH0 0-ás Idızítı/Számláló: HIGH bájt 8C TH1 1-es Idızítı/Számláló: HIGH bájt 8D *P1 Port 1 90 PCON Power vezérlı regiszter 97 *SCON Soros Port vezérlı regiszter 98 SBUF Soros port buffer 99 *P2 Port 2 0A0 IE Megszakítás engedélyezı regiszter 0A8 *P3 Port 3 0B0 *IP Megszakítás prioritás regiszter 0B8 +*T2CON 2-es Idızítı/Számláló vezérlı regiszter 0C8 +*RCAP2L 2-es Idızítı/Számláló Capture regiszter LOW bájt 0CA +*RCAP2H 2-es Idızítı/Számláló Capture regiszter HIGH bájt 0CB +*TL2 2-es Idızítı/Számláló: LOW bájt 0CC +*TH2 2-es Idızítı/Számláló: HIGH bájt 0CD *PSW Programstátusz regiszter 0D0 *ACC Akkumulátor 0E0 12.

3.3.4 Megszakítások A 8051 típusnál öt megszakítás forrás és két prioritási szint van. A 8052 típusú mikrokontrollerbe még egy további megszakításforrást (T2) integráltak. Megkülönböztetünk külsı és belsı megszakítás-forrásokat. A külsı megszakításokat (INT0,INT1) a megfelelı bemenetre (12-es ill. 13-as lábak) adott feszültségszint, vagy negatív él indítja. Az egyes bemenetek szint-, vagy él-érzékenységét a TCON (Timer-Control) regiszter IT0, illetve IT1 bitjeivel lehet megválasztani. Az egyes megszakítások végre-hajtását a TCON.1 (IE0) illetve a TCON.3 (IE1) bitek 1-be írásával engedélyezhetjük. A belsı megszakításokat - az elızıekkel ellentétben - nem külsı, hanem a tokon belüli esemény kezdeményezi. A felhasználó ezért csak közvetetten kezdeményezheti. A belsı megszakításra példa az ES, amelyet a soros vonal indít az RI vagy a TI beíráséval. További belsı megszakítási források még a TF0 és a TF1. Ezeket a megfelelı idızítı/számláló (T0, illetve T1) túlcsordulása indítja. A táblázat foglalja össze a megszakításforrásokat és kezdıcímeiket. 2. Táblázat: Megszakítás-forrás Kérı-flag Kezdı-cím 0-ás külsı megsz. IE0 0003 H Timer 0 megsz. TF0 000B H 1-es külsı megsz. IE1 0013 H Timer 1 megsz. TF1 001B H Soros vonal megsz. RI vagy TI 0023 H A 8052-es mikrokontroller kibıvített megszakítása: Timer 2 megsz. vagy külsı töltés TF2 vagy EXF2 002B H 13.

A külsı megszakítás-forrás megszakítást kérı jelének LOW, vagy HIGH szintje minden esetben legalább egy teljes gépi ciklus idıtartamáig kell fennálljon. Csak ezzel biztosítható a megszakítás-kérés biztonságos felismerése. A 8051 megszakítás-vezérlı logikája bármelyik megszakítási kérelem felismerése után egy LCALL utasítást generál. A megszakítás lekezelése tehát a következı lépésekbıl áll: Ellenırzés, hogy kiadható-e az LCALL utasítás. Ha a kérés pillanatában azonos, vagy magasabb prioritású megszakítás kiszolgálása folyik, akkor a kontroller nem ad ki LCALL utasítást. Az alacsonyabb szintő megszakításvégrehajtást egy magasabb prioritású megszakítja. Ha a megszakítás-kérés utasítás végrehajtása közben érkezik, akkor elıször befejezıdik az, és csak utána történik a megszakítás-rutin hívása. - A programszámláló pillanatnyi értékét leteszi a VEREM-be. - A programszámlálót feltölti az aktuális megszakítást kiszolgáló rutin kezdıcímével. - A megszakítás-rutint egy RETI utasítással kell lezárni. Ennek hatására folytatódik a megszakított program végrehajtása. A megszakítás-kiszolgáló rutinokat minden esetben a RETI ( Return from Interrupt ) utasítással kell befejezni. Ez jelzi a megszakítás-vezérlı rendszernek, hogy egy kiszolgálás befejezıdött. 14.

3.4 Az Analog Devices 842-es mikrokonvertere (ADuC 842) [7] Az alábbiakban az ADuC 842-es mikrokonvertert fogom ismertetni. Azért ezt a konvertert használjuk, mert minden olyan dolog, amire szükségünk van megtalálható ebben a chip-ben (memória, A/D, D/A). Ez a chip rendelkezik egy többcsatornás, önkalibráló analóg-digital (A/D) konverterrel, kettı darab digitalanalóg (D/A) átalakítóval, és egy 8052-es maggal, ami teljes 8051-es kompatíbilis utasításkészlettel rendelkezik. Blokk Diagram 6. ábra: Az ADuC 842-es mikrokonverter blokk vázlata Mint, ahogy a 6. ábrán is látható a 842-es mikrokonverterre három típusú memóriát integráltak: 62 kb FLASH/EE program memória, 4 kb FLASH/EE adat memória és 256 byte RAM és 2 kb külsı RAM. 15.

Flash/EE Program memória: 62 kb program memória áll rendelkezésre a program kód futtatásához, amit csak és kizárólag innen lehet futtatni. A programot soros porton keresztül lehet feltölteni a memóriába. Flash/EE adat memória: Ennek a típusú memóriának 4 kb a mérete, és indirekt módon érhetı el control regiszterek használatávall. Általános célú RAM: Két 128 byte-os memória részre van osztva: alsó és felsı rész. Az alsó részt direkt és indirekt címzéssel is el lehet érni, a felsı részhez viszont csak indirekt címzéssel férhetünk hozzá, mert ugyanazt a címzési területet használja, mint a speciális funkció regiszterek (SFR), ami pedig csak direkt módon címezhetı. Az alsó memóriaterület címtartományait a 7. ábra szemlélteti. A memória legalsó 32 byte-ja 4 részre van osztva, 8 darab regiszter számára (R0- tól R7-ig). A verem a belsı memória bármelyik részén lefoglalódhat, és a legnagyobb mérete 2048 byte lehet. Az inicializálás (Reset) során a verem mutató (stack pointer) felveszi a 07h értéket és használat elıtt megnöveli az értékét 08h-ra, ami épp az elsı regiszter címe lesz (R0, BANK1). 7. ábra: A belsı adat memória alsó 128 byte-ja 16.

Külsı adat memória (External XRAM): Ez a memória terület a MOVX utasítással érhetı el, és mérete pedig meghaladja a 16 Mbyte-ot. Ezt a memóriaterületet használtam a különféle jeleket elıállító algoritmusok által generált pontok tárolására és kiolvasására. Az ADuC 842-es speciális funkció regiszterei (SFR): Az ACCUMULATOR (ACC) regisztert matematikai mőveletekhez összeadás, kivonás, egész számmal való szorzás és osztás használhatjuk, és az A regiszterrel hivatkozunk rá A B funkció regisztert az Accumulatorral együtt használjuk a szorzás illetve az osztás mővelet megvalósításához. Verem mutató (Stack Pointer, SP): A Verem mutató mindig a verem tetejére mutat, és az értéke akkor nı, ha a PUSH utasítással adatot töltünk a verembe, illetve a CALL utasítás hatására. Data Pointer (DPTR): A Data Pointer három 8-bites regiszterbıl áll: DPP (page byte), DPH (magas byte), DPL (alacsony byte). Ezek memória címeket adnak vissza, és ezáltal tudja a program címezni a külsı és belsı memória területeket, illetve a DPTR-t használjuk még a külsı adat memória címzéséhez is. 16-bites regiszterként bánhatunk vele (DPTR = DPH, DPL). 17.

Az utasítások legtöbbje egy vagy két órajel ciklus alatt lefut. A programban használt utasításokat illetve, hogy mennyi órajel ciklus alatt fut le, a 3. táblázat tartalmazza. Mnemonic Leírás Bytes Cklus Aritmetikai ADD A,Rn Az A-hoz hozzáadja a regisztert 1 1 ADD A, #data Azonnali hozzáadás 2 2 SUBB A,Rn A regisztert kivonja A-ból 1 1 INC Rn A regisztert növeli 1-gyel 1 1 INC DPTR A data pointer értékét növeli 1-gyel 1 3 DEC Rn A regiszter értékét csökkenti 1-gyel 1 1 Logikai RLC A Bitenkénti forgatás a Carry flag-en keresztül 1 1 Adat mozgatás MOV A,Rn A regiszter értékét beleteszi az A-ba 1 1 MOV Rn, A Az A értékét beleteszi a regiszterbe 1 1 MOV A,dir Dir helyett álló byte-ot teszi bele az A-ba 2 2 MOV A,#data Az adatot az A-ba teszi 2 2 MOV Rn,#data Az adatot a regiszterbe teszi 2 2 MOV dir,a Direkt byte-ba teszi az A-t 2 2 MOV Rn, dir Direkt byte-ot tesz a regiszterbe 2 2 MOV DPTR,#data A data pointer értékét írja felül 3 3 MOVC A,@A+DPTR code mem-bıl A+PDTR helyen lévı értéket teszi A-ba 1 4 MOVX @DPTR,A Az A értékét a külsı RAM-ba írja a DPTR címen 1 4 MOVX A,@DPTR A DPTR címen lévı adatot írja az A-ba 1 4 PUSH dir A verembe tesz 2 2 POP dir A verembıl olvas 2 2 Boolean CLR bit Törli a konkrét bitet 2 2 SETB bit Beállítja a konkrét bitet 2 2 CPL bit Komplementjét veszi a direkt bitnek 2 2 Elágazások LJMP Hosszú ugrás 3 4 JMP rel Feltétel nélküli ugrás 1 3 RET Szubrutinból való visszatérés 1 4 RETI Megszakításból való visszatérés 1 4 JNZ rel Ha az A nem egyenlı 0-val, ugrik a rel-re 2 3 DJNZ Rn, rel Rn-t csökkenti, és amíg Rn nem egyenlı 0, ugrik 2 3 JB bit, rel Ha a konkrét bit = 1, akkor ugrik a rel-re 3 4 CJNE A, #data, rel Amíg A nem egyenlı #data-val ugrik 3 4 Egyéb NOP Nem csinál semmit (No operation) 1 1 18.

A TIMER 2 mőködése: A Timer 2 egy 16-bites idızítı-számláló, ami lehet esemény idızítı illetve esemény számláló, és a T2CON speciális funkcióregiszterrel lehet beállítani. A Timer 2 három különbözı - Capture, Auto-Reload és Baudrate- Generátor - üzemmódban használható. Az üzemmód kiválasztását a T2CON.0, a T2CON.2, valamint a T2CON.4 és T2CON.5 bitek végzik. Capture üzemmód: Ebben az üzemmódban a TH2 és a TL2 regiszterek tartalma az RCAP2H, ill. az RCAP2L regiszterekbe átírható. Az átírást a T2EX bemenetre ( 2 láb ) adott lefutó él vezérli. A vezérlést az EXEN2 bittel engedélyezhetı vagy tiltható ( a logikai 1 engedélyez ). Az adatátvitellel egyidejőleg a Timer 2 megszakítása is beíródik. Az RCAP2H és RCAP2L regiszterek tartalma szoftverbıl állítható. Mivel a megszakítási folyamat hardvervezérelt, ezért ebben az üzemmódban a külsı esemény idejét vagy frekvenciáját mérhetjük. A Timer 2 megszakítás rutin le tudja kérdezni a TF2 és EXF2 állapotát, és ezáltal megállapítható, hogy mi okozta a megszakítást. Baud Rate üzemmód: A Timer 2 idızítı használható ütemezıjel-adónak is. A Timer 2 túlcsordulását választva a soros átvitel vezérlésére, megoldható az adás és a vétel független ütemezése. Ha a Timer 2-ıt Baudrate opcióba akarjuk állítani, akkor Auto-Reload üzemmódba kell kapcsolni. A számláló túlcsordulása vezérli az RCAP2H és RCAP2L regiszterek tartalmának ismételt betöltését. Ebben az üzemmódban a számláló túlcsordulása nem írja be a TF2 bitet, ezért nem indít megszakítást sem. Ha EXEN2 bitet 1-re állítjuk, akkor a T2EX bemenetre érkezı negatív él megszakítást fog kezdeményezni, de nem tölti fel újból a T2 regiszterit. Így itt a T2EX bemenet különálló megszakításként alkalmazható. 19.

Auto-Reload üzemmód Ebben az üzemmódban további választási lehetıség van. Itt a Timer 2-ıt lehet számlálóként illetve idızítıként is konfigurálni. A számlálás iránya lehet növekvı vagy csökkenı ami a DCEN (Down Counter Enable) bittel vezérelhetı. Ezt a bitet a T2MOD regiszterrel lehet módosítani. Az üzemmód counter bitje, DCEN alapértelmezésben 0, ami azt jelenti, hogy a Timer 2 növekvı számlálást végez. Az üzemmódban növekvı számlálás van beállítva és amikor az EXEN2 bit értéke 0, akkor a Timer 2 minden túlcsordulásakor az R2CAPx regiszterek tartalma átíródik. A programozott számtartalom 0-tól eltérı, tetszıleges 16-bites érték lehet. Az EXEN2 bit 1 értékénél az átírást a T2EX bemenetre érkezı negatív él is vezérli. A Timer 2 akkor generál megszakítást, ha a TF2 vagy az EXF2 bit értéke 1. A Timer2 FFFFh-nél csordul túl és beállítja a TF2, hogy a következı körbe is megszakítás keletkezzen. Ha bekövetkezett a túlcsordulás akkor a 16-bites értéket rendre visszaírja az RCAP2l, RCAP2H-ból a TL2 és TH2 regiszterekbe. Tulajdonképpen a csökkenı üzemmód is hasonlóan mőködik, ezért az alapértelmezést használtuk. 8. ábra: Timer 2, Auto Reload üzemmód 20.

4. Mikrokonverter alapú jelgenerátor fejlesztése Az eszköz 4 típusú jel generálására képes: szinusz-, háromszög-, főrészés négyszögjel, de ez bármikor továbbfejleszthetı szoftveresen. Mindegyik jel 256 darab pontból áll. A memóriából a pontokat egyetlen megszakítás rutin olvassa ki és küldi ki a digital-analog konverterre (D/A), amit 8-bites üzemmódban használunk. Azért volt szükség a Timer 2 megszakításra, mert azzal valósítható meg a periodikus megszakításhívás, s ehhez használtuk a Timer 2-nek az Auto-Reload üzemmódját, s így az RCAP2x regiszter értékétıl függı változtatható frekvenciájú jel állítható elı. 4.1 A jelgenerálás elve Mindegyik jelhez a szükséges pontokat külön algoritmus generálja, és tölti fel a külsı memóriába (XRAM). Adott t idıközönként (ezt a Timer 2 beállítása szabja meg) egy új adat kerül ki a memóriából, s megy a D/A konverterre, az index eggyel vagy M-mel nı. M azt a számot jelenti, hogy mekkora lépéssel olvasunk a memóriából (mindegyik, minden második, stb.). Feladatok: - jelek elıállítása a memóriába - t beállítása f osc 4 * RCAP L ( 65536 ( 2H, RCAP2 )) - M beállítása - jelgenerálás - felhasználói felület kezelése 21.

4.2 A jelgenerátor felépítése A jelgenerátor egy mikrovezérlıbıl, egy LCD kijelzıbıl és egy végerısítıbıl áll. Blokkvázlatát a 9. ábra tartalmazza. Rendelkezik még három darab potenciométerrel és 4 darab nyomógombbal. Egy BNC csatlakozóaljzat is megtalálható a külsı panelen, ide küldjük ki az outputot. A potméterek beolvasása analog digital átalakítóval történik, úgy, hogy mivel az A/D csak 12-bites üzemmódot tud, ezért az eredmény felsı byte-jának alsó négy bitjét illetve az alsó byte felsı négy bitjét nézem, s így lesz majd 8-bites a felbontás. A gombok beolvasását úgy végzem el, hogy a 2-es port P2.0 P2.3-ig tartó bitjeit lekérdezem a JB utasítással (jump if bit set). A/D D/A ADuC 842 9. ábra: a jelgenerátor blokkvázlata 22.

4.3 Tulajdonságok A 842-es mikrokonverter két 12-bites D/A konverterrel rendelkezik (onchip), mindkettı két feszültségtartományban használható: 0V - V REF (2,5V) illetve 0V - AV DD (analog positive supply voltage, 3V vagy 5V). Mindkét feszültség tartományban lehet 8-bites illetve 12-bites üzemmódban használni. A 8-bites üzemmódot használtuk és a 0V - V REF ig tartó terjedı kimenetet. Ezáltal az amplitúdó pontossága 8-bites, vagyis a 0V - V REF ig terjedı tartományt 256 részre bontja és a digitális értéknek megfelelı feszültséget küld a kimenetre, tehát az amplítúdópontosság ~0,4%. A frekvenciatartománya körülbelül 0,25 Hz-tıl 16 khz-ig terjed, a pontossága rendkívül jó a tesztek alapján. A harmonikus torzítás, a felharmónikusok teljesítményének az aránya az alapjel (más meghatározás szerint az összegjel) teljesítményéhez képest. A mi esetünkben ez az arány igen jónak mondható ~01,%. 23.

4.4 A jelek elıállítása A leggyakrabban használt jelek megvalósítására írtam programot, de a késıbbiekben bármilyen típusú jel elıállítható ezzel a digitális technikával. Például lehet impulzus alapú is egy trigger jel segítségével. Az algoritmusoknál törekedtem arra, hogy mindegyik külön szubrutinban legyen, illetve az objektum orientáltságra, hogy a késıbbiekben egyszerően lehessen például az új jelalakot generáló algoritmust beilleszteni a programba. Ezek miatt az R7 regiszter lett globálisan a pontok száma, az R4 regiszterben tudjuk beállítani az offszet feszültségnek megfelelı értéket. A jeleket egyetlen szubrutin küldi ki a DAC0-ra a külsı memóriából (XRAM) a Timer 2 megszakítás periódusának megfelelıen. ================================ jelkiküldés ================================ megszak: push acc push psw push dph push dpl mov dac0h,#00h mov dph,#0 mov dpl,dac_i movx a,@dptr ; csak az alsó 8 bitet használjuk ; memo címzés ; kiveszi a felso byte-ot a table-bol ; beleteszi a dac regiszterbe mov dac0l,a mov a,dac_i add a,r0 ; leptetes alapeset r0=1 mov dac_i,a clr tf2 clr exf2 pop dpl pop dph pop psw pop acc reti 24.

4.4.1 Főrész jel A főrész jelet az alábbi algoritmus generálja, ami az analóg jel elıállításához hasonlóan mőködik, azzal a különbséggel, hogy a kondenzátort itt egy regiszter valósítja meg. Az R7 regiszter kezdıértékének nullát választottunk, mivel az R7 maximális értéke 255 lehet, s csak így érhetı el, hogy a jel 256 pontból álljon. A regisztert a DJNZ utasítással módosítjuk, ami eggyel csökkenti az értékét és figyeli, hogy nullára lecsökkent-e már Az A regiszterbe töltjük bele a pontokat, és a MOVX utasítással helyezzük el a külsı RAM-ban (XRAM). Az A-hoz mindig hozzáadjuk az R6 értékét, ami jelen esetben 1, de ez állítható, ami a háromszög jel miatt szükségeltetik. A két címkét az indokolja, hogy a háromszög jelet a főrészjel felhasználásával állítjuk elı. Ebbıl következik, hogy a furesz címke csupán inicializáló részként szerepel. ================================ furesz (10. ábra) ================================ furesz: mov a,r4 ; offset mov r7,#000h ; 256 pont legyen a jel mov r6,#001h ; ezzel lépkedünk frsz: movx @dptr,a inc dptr ; memoléptetés add a,r6 ; r6-val lépkedünk djnz r7,frsz ret 25.

4.4.2 Háromszög jel A háromszög jelet a főrész jelbıl állítjuk elı, úgy hogy az R6 regiszter értékét kettıre állítjuk, azért, hogy gyorsabban emelkedjen, s így minden összeadásnál kettıt ad az elızı értékhez. A felmenı ág 128 pontból áll, a lemenı ág pedig 127-bıl. Beállítjuk az R7 regisztert (pontok száma) és az R6- ot, s ezekre hívjuk meg a Főrész jelet generáló algoritmust. A memóriába itt is MOVX utasítással kerülnek bele a pontok. A lemenı ág pedig úgy jön létre, hogy a csúcstól indulva kivonogatunk kettıt minden iterációban, mindaddig amig az R7 regiszter értéke nulla nem lesz. ================================ haromszog (11. ábra) ================================ haromszog: ;inic mov r7,#080h ;128 pont mov r6,#002h mov a,r4 ;offszet call frsz mov r7,#081h ;127 add a, #001h movx @dptr,a hszog: subb a,r6 movx @dptr,a inc dptr djnz r7,hszog ret 26.

4.4.3 Négyszög jel A négyszög jelnél változtatható az amplitúdó és megadható a kitöltési tényezı is. A kitöltési tényezıt az R6 regiszterben kell megadni, a 256 pontból ennyi pont lesz magas feszültségi szinten. Az R7-ben pedig az össze pontok számát tároljuk, és azt is csökkentjük minden magas iterációban, s így megmarad, hogy a további pontok alacsony értéket vesznek fel (0V). A B regiszterben állítható az amplitúdó, úgy hogy a 0V - V REF (2,5V) ig terjedı tartományt 256 részre osztjuk és annak megfelelıen, hogy milyen értéket adtunk B-nek, jön ki a feszültség a kimeneten. ================================ negyszog (12. ábra) ================================ negyszog: ;inic mov r7,#000h ; mely mov r6,#0f0h ; magas mov a,#001h mov b,#0ffh ; csak egy érték, magas = b mul ab ; amplitudo add a,r4 ; r4 = offset, hozzáadjuk magas: movx @dptr,a ; ez megy ki inc dptr ; memoléptetés dec r7 ; r7 = pontokszáma djnz r6,magas ; 128-ig magas mely: mov a,r4 movx @dptr,a inc dptr djnz r7,mely ret 27.

4.4.4 Szinusz jel A szinusz jel az egyetlen, amit nem egy konkrét algoritmus generál, hanem egy a kód memóriában elıre definiált táblázatból olvassa be és tölti fel a külsı memóriába a pontokat. A szinusz pontjait az 2π x = 127 *sin + 128 (5) N egyenlettel számoltam ki. Az N=256, a pontok száma, 128-at pedig azért kell hozzáadni, hogy ne legyen negatív érték a pontok között. ================================ szinusz (13. ábra) ================================ sinus: ;inic mov r0,#00h ;futó index sin: mov dptr,#table ; tábla kezdıcím mov a,r0 ; belerakja r0-t a-ba movc a,@a+dptr ; kiveszi a felso byte-ot a table-bol mov dph,#0 ; mov dpl,r0 ; memo léptetés movx @dptr,a ; adat kitolás inc r0 ; tovabb az also bytehoz mov a,r0 cjne a,#000h,sin ; elérte a 256 pontot ret 28.

4.4.5 Grafikonok 2.6 Fûrész jel 2.4 2.2 2 1.8 1.6 feszültség (V) 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 1 10 4 2 10 4 3 10 4 4 10 4 5 10 4 6 10 4 7 10 4 8 10 4 9 10 4 1 10 5 1.1 10 5 1.2 10 5 1.3 10 5 1.4 10 5 1.5 10 5 1.6 10 5 1.7 10 5 1.8 10 5 1.9 10 5 2 10 5 idõ (us) 10. ábra: Főrész jel 2.6 Háromszög jel 2.4 2.2 2 1.8 1.6 feszültség (V) 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 1 10 4 2 10 4 3 10 4 4 10 4 5 10 4 6 10 4 7 10 4 8 10 4 9 10 4 1 10 5 1.1 10 5 1.2 10 5 1.3 10 5 1.4 10 5 1.5 10 5 1.6 10 5 1.7 10 5 1.8 10 5 idõ (us) 11. ábra: Háromszög jel 29.

2.6 Négyszög jel 2.4 2.2 2 1.8 1.6 feszültség (V) 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 2 10 4 4 10 4 6 10 4 8 10 4 1 10 5 1.2 10 5 1.4 10 5 1.6 10 5 1.8 10 5 2 10 5 2.2 10 5 2.4 10 5 2.6 10 5 2.8 10 5 3 10 5 idõ (us) 12. ábra: 50%-os kitöltési tényezıjő négyszög jel 2.6 Szinusz jel 2.4 2.2 2 1.8 1.6 feszültség (V) 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 2 10 4 4 10 4 6 10 4 8 10 4 1 10 5 1.2 10 5 1.4 10 5 1.6 10 5 1.8 10 5 2 10 5 2.2 10 5 2.4 10 5 2.6 10 5 2.8 10 5 3 10 5 3.2 10 5 3.4 10 5 idõ (us) 13. ábra: Szinusz jel 30.

4.5. Felhasználói felület Az eszköz jelenleg funkcionálisan teljes tesztverzió, tehát a kinézet és a felhasználói felület is változhat még a késıbbiekben. A menürendszert négyszintesre és közel hasonlóra terveztem mindegyik jelalaknál. Ezeket a 14., 15., 16. és 17. ábrán lehet látni. A fımenüben lehet kiválasztani a 4-féle jelalak egyikét, de ez késıbb változtatható például olyanra, hogy két gombbal pörgı menüként lehessen válogatni az egyes funkciók vagy jeltípusok között. A második szinten lévı menü az mindegyik jelnél megegyezik, itt lehet beállítani a frekvenciát, illetve miután ez megtörtént kiküldeni a jelet a kimenetre az OK gombbal, valamint vissza lehet térni mindegyik menübıl a fımenübe a Vissza gombbal. A harmadik szint a frekvencia állítási szint, itt lehet kiválasztani az állítás funkciót, s ha megnyomtuk a gombot, akkor bekerülünk a negyedik szintre, ahol is ténylegesen a potenciométerekkel beállítható a kívánt frekvencia. A négyszögjelnél van egy plusz opció is a második szintő menüben, a kitöltési tényezınek a beállítása. Ha mindent beállítottunk, akkor az Indit gombbal tudjuk kitenni a kívánt paraméterekkel a jelalakot. A 4.6-os fejezetben a teszt elrendezésrıl láthatunk képeket, a jelgenerátort egy Tektronix TDS 1002-es digitális oszcilloszkópra kötöttem, s néztem a kijövı jelalakot. 31.

14. ábra: A Fımenü 15. ábra: Második szintő menü 32.

16. ábra: Harmadik szintő menü 17. ábra: Negyedik szintő menü 33.

A menüket úgy valósítottam meg, hogy a kódmemóriában definiáltam az egyes felületeket, amiket ki kellett írni a kijelzıre, soronként, ezáltal egyszerőbb és áttekinthetıbb lett a programkód, mert nem betőnként kellett megcímezni az LCD kijelzıt. Minden menünek van egy külön címkéje, ott állítottam be, hogy a kódmemóriában mettıl meddig található meg a keresett menürész. 18. ábra: Külsı megjelenés 34.

4.6. Teszt 19. ábra: Oszcilloszkópon kimért háromszögjel 20. ábra: Oszcilloszkópon kimért szinuszjel 35.

21. ábra: Közeli oszcilloszkóp kép a szinuszjelrıl 36.

5. Összefoglalás A dolgozat célja, a diplomamunka során kifejlesztett digitális jelgenerátor bemutatása volt. Az eszköz nagy elınye az egyszerő felépítése, könnyen kezelhetısége, a stabilitása, a gyorsasága, a szoftveresen megvalósítható bıvíthetısége, és nem utolsó sorban a relatív olcsósága. A jelgenerátor elkészítése során az Analog Devices 842-es mikrokonverterét használtam, mert ez a chip rendelkezik minden olyan integrált eszközzel, amire szükségem volt (memória, A/D, D/A konverter). A kijövı jelet különbözı végerısítıkkel tovább lehet majd erısíteni, eltolni a kívánt mértékben. A harmonikus torzítás a mi esetünkben igen jó, 0,1% körüli. Frekvenciatartománya körülbelül 0,25 Hz-tıl 16 khz-ig terjed, a pontosság a tesztek alapján rendkívül jónak mondható, még kevesebb számú pontból történı generálás esetén is. Célunk volt továbbá, hogy a késıbbiekben az eszköz egyszerően szoftveres úton továbbfejleszthetı legyen, ennek tudatában írtam az algoritmusokat, illetve építettem fel a program szerkezetét. Ezáltal sem a külsı megjelenésen, sem a felépítésen nem kell változtatni új funkciók hozzáadásakor. Az eszköz továbbfejleszthetısége rendkívül rugalmas: új funkciók hozzáadása, kevés módosítással több területen történı alkalmazhatósága, bármilyen hullámforma generálható vele, impulzus alapú felhasználás, stb. 37.

6. Köszönetnyilvánítás Ezúton szeretném megköszönni Dr. Gingl Zoltánnak a diplomamunkám elkészüléséhez nyújtott segítségét. Szeretnék még köszönetet mondani Mingesz Róbertnek, hogy kérdéseimmel fordulhattam hozzá is. 38.

7. Nyilatkozat Alulírott Kopasz Péter Gábor, informatikus-fizikus szakos hallgató, kijelentem, hogy a diplomadolgozatban foglaltak saját munkám eredményei, és csak a hivatkozott forrásokat (szakirodalom, eszközök, stb.) használtam fel. Tudomásul veszem azt, hogy szakdolgozatomat/diplomamunkámat a Szegedi Tudományegyetem könyvtárában, a kölcsönözhetı könyvek között helyezik el. Szeged, 2006. május 12. Kopasz Péter 39.

8. Irodalomjegyzék [1]: Thurlby Thandar Instruments- http://www.tti-arb.com/function-generator.html [2]: http://staff.kzs.hu/ml/fuggvenygeneratorok.htm [3]: Mingesz Róbert: Digitális mőszer fejlesztése az atomi erı mikroszkóp dinamikus üzemmódjai számára (TDK dolgozat) [4]: Dr. Gingl Zoltán: A/D és D/A konverterek (jegyzet) [5]: Roland Dilsch: a 8051 mikrokontroller-család, Bp. : Mőszaki K., 1993 [6]: http://www.aut.bmf.hu/konya/mikro/mcs51_www/index.htm [7]: Analog Devices - http://www.analog.com/en/prod/0,2877,aduc842,00.html 40.

9. Függelék/melléklet A melléklet egy darab floppy (3,5 ös lemez), rakta az assembly forráskód, a szükséges fordító és a fordítási direktívákat tartalmazó mod842 -es fájl. Szintén a melléklethez tartozik a forráskód kinyomtatva is. 41.