background image

 
 
 
 
 
 
 
 
 
 
 
 
 
 

Projekt 

 

Data wykonania ćwiczenia: 2008-01-20

 

 

System mikroprocesorowy 

(INTEL 8052) 

 
 

 

  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    

 

 

 

 

 

 

 

 

 

   Autor: 

Jacek Jędruch 

 
 

Mikroprocesory 

Rok akademicki 

Termin 

Rodzaj 

studiów 

Kierunek 

Prowadzący 

Grupa 

Sekcja 

2007/2008 

Piątek 

17:15 – 20:15 

USM 

INF 

BSz 

background image

1. Wprowadzenie. 
 
Stanowisko pozwala na przebadanie wybranych układów współpracujących 
z 8-bitowym mikrokontrolerem INTEL 8052. W skład badanego systemu 
mikroprocesorowego, umieszczonego w stanowisku wchodzą  elementy 
przedstawione na rys.1.: 
- Mikrokontroler 80C32 wraz z pamięcią programu,  
- Klawiaturą z zespołem diod sygnalizacyjnych, 
- Wyświetlacz LED, 
- Pamięć trwała EEPROM, 
- Zegar czasu rzeczywistego RTC, 
- Przetworniki analogowo-cyfrowy i cyfrowo-analogowy(A/C i C/A). 
 

+

RTC

0
1
2  AC
3

CA

Ux
2V
0V

U

T

CZUJNIK

TEMP.

10 mV/K

-

U

ref

Wy

C/A

EEPROM

+ 5V

R

R

MIKROKONTROLER

P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
P1.7
P1.6
P1.5
P1.4

32 - BITOWY

REJESTR

PRZESUWOWY

OFF

LOAD

CLOCK

DATA

ENTER

DOWN

UP

ESCAPE

 ESCAPE     UP      DOWN

  ENTER

P1.3
P1.2
P1.1
P1.0

PAMIĘĆ

PROGRAMU

-       +

P0 P2

SDA

SCL

WYŚWIETLACZ

 

Rys. 1. System mikroprocesorowy. 

 
1.1. Klawiatura z zespołem diod sygnalizacyjnych. 
 
Klawiaturę stanowią cztery klawisze: 
 
UP (góra), 
DOWN (dół), 
ENTER (wprowadź), 
ESCAPE (wyjście), 
 
przyciśnięcie których powinno zapoczątkować wykonanie odpowiedniego 
podprogramu realizującego wymagane zadanie. 
 

 

background image

R8

10k

R6

10k

R5

10k

R7

10k

1

2

1

2

1

2

1

2

Vcc

P16

80C32

P1.7

P1.6

P1.5

P1.4

ESCAPE

UP

DOW
N

ENTER

5

6

U1C

74HC04

8

9

U1D

74HC04

10

11

U1E

74HC04

3

4

U1B

74HC04

1

2

U1A

74HC04

P3.4

P3.5

P3.6

P3.7

R2

510

R3

510

R4

510

R1

430

LED2

GREEN

LED3

GREEN

LED4

GREEN

LED1

GREEN

Vcc

R10

100

C3

100n

R9

100

C2

100n

R11

100

C4

100n

R12

100

C1

100n

P1.0

 

Rys. 2. Schemat układu klawiatury i diod sygnalizacyjnych. 

 
Zastosowane rozwiązanie układowe klawiatury powoduje utrzymywanie się 
stanu wysokiego (przy otwartych wyłącznikach) na odpowiednich 
wyprowadzeniach portu: P1.4 do P1.5 mikrokontrolera. Zamknięcie 
wyłącznika powoduje zwarcie do masy i podanie stanu niskiego. Wykrycie 
zatem naciśnięcia danego klawisza polega na odczytaniu wartości logicznej 
z odpowiedniego bitu rejestru (P1 

 90h w SFR) i sprawdzeniu czy jest to 

stan niski. Efektem naciśnięcia dowolnego klawisza moŜe być np. 
zapalenie diody LED w porcie P3 (P3.4 .. P3.7 - poprzez wpisanie stanu 
niskiego do odpowiednich bitów rejestru o adresie B0h w SFR). 
Przykładowy program obsługi klawisza ENTER, świecenia diody D4 i uŜycia 
sygnału dźwiękowego podano niŜej (źródło progr. napisane w t51.exe): 
 
org 

 
ENTER 

EQU  97h 

 

 

;przypisz klaw. ’ENTER’ adres 97h tj. P1.7 

LED4   

EQU  0B4h   

 

;przypisz diodzie LED4    adres B4h tj. P3.4  

SYGNAL 

EQU  90h 

 

 

;przypisz sygn. dŸwiêk.     adres 90h tj. P1.0 

 
KLAWISZ: 

 

 

 

 

;etykieta KLAWISZ 

 

JNB 

ENTER, NEGUJ_LED4 

;jeśli w kom. ’ENTER’ (bit 97h) jest ’0’ to skocz

 

 

 

 

 

 

;do NEGUJ_LED4 (jeśli ’1’ następny rozkaz) 

 

SJMP  KLAWISZ 

 

 

;skocz do etykiety KLAWISZ 

 

 

NEGUJ_LED4: 

 

 

 

;etykieta NEGUJ_LED4 

 

CPL   

LED4   

 

;neguj zawartość komórki LED4 (bit B4h) 

 

CPL   

SYGNAL 

 

;neguj zawartość komórki SYGNAL (bit 90h) 

background image

 

LCALL 

MOMENT 

 

;skocz  do podprogramu MOMENT 

 

SJMP   

KLAWISZ 

 

;skocz do etykiety KLAWISZ 

 

 

MOMENT: 

 

 

 

 

;etykieta MOMENT (pętla opóźn. czasowego) 

 

MOV  R1, #4  

 

 

;wpisz do rej. R1 wartość 4 

M1: 

 

 

 

 

 

;etykieta M1 

 

MOV  R2, #255 

 

 

;wpisz do rej. R2 wartość 255 

M2: 

 

 

 

 

 

;etykieta M2 

 

MOV  R3, #255 

 

 

;wpisz do rej. R3 wartość 255 

M3: 

 

 

 

 

 

;etykieta M3 

 

DJNZ  R3, M3 

 

 

;zmniejsz zawartość R3 o 1, jeśli róŜne od 0 

skocz    

 

 

 

 

;do etykiety M3 (jeśli 0 przejdź do nast. rozkazu) 

 

DJNZ  R2, M2 

 

 

;zmniejsz zawartość R2 o 1, jeśli róŜne od 0 

skocz 
 

 

 

 

 

 

;do etykiety M2 (jeśli 0 przejdź do nast. rozkazu) 

 

DJNZ  R1, M1 

 

 

;zmniejsz zawartość R1 o 1, jeśli róŜne od 0 

skocz 
 

 

 

 

 

 

;do etykiety M1 (jeśli 0 przejdź do nast. rozkazu) 

 

RET   

 

 

 

;wróć z podprogramu  

 
PowyŜszy program realizuje prostą obsługę klawisza ENTER, którego 
kaŜde naciśnięcie powoduje zapalenie/zgaszenie diody LED4 z 
jednoczesnym wytworzeniem sygnału dźwiękowego. Warto zwrócić uwagę 
na podprogram MOMENT, który realizuje opóźnienie czasowego 
eliminujące zjawisko drgań styków przełączników klawiatury. Brak takiego 
opóźnienia moŜe spowodować wielokrotne zapalanie i zgaszenie diody 
LED4 podczas pojedynczego naciśnięcia klawisza ENTER. 
 
 
1.2. Wyświetlacz elektroluminescencyjny LED. 
 
Wyświetlacz składa się z  czterech wskaźników 7 - segmentowych 
współpracujących z 32 - bitowym rejestrem przesuwowym zgodnie ze 
schematem podanym na rys. 3. 
 

background image

SER

14

SRCLK

11

SRCLR

10

RCLK

12

E

13

O0

15

O1

1

O2

2

O3

3

O4

4

O5

5

O6

6

O7

7

Q7

9

U1

74HC595

SER

14

SRCLK

11

SRCLR

10

RCLK

12

E

13

O0

15

O1

1

O2

2

O3

3

O4

4

O5

5

O6

6

O7

7

Q7

9

U2

74HC595

SER

14

SRCLK

11

SRCLR

10

RCLK

12

E

13

O0

15

O1

1

O2

2

O3

3

O4

4

O5

5

O6

6

O7

7

Q7

9

U3

74HC595

SER

14

SRCLK

11

SRCLR

10

RCLK

12

E

13

O0

15

O1

1

O2

2

O3

3

O4

4

O5

5

O6

6

O7

7

Q7

9

U4

74HC595

DP

5

g

10

9

e

1

d

2

c

4

b

6

a

7

A1

3

A2

8

L1

7SEGLED

DP

5

g

10

9

e

1

d

2

c

4

b

6

a

7

A1

3

A2

8

L2

7SEGLED

DP

5

g

10

9

e

1

d

2

c

4

b

6

a

7

A1

3

A2

8

L3

7SEGLED

DP

5

g

10

9

e

1

d

2

c

4

b

6

a

7

A1

3

A2

8

L4

7SEGLED

VCC

VCC

VCC

VCC

P30

P31

P32
P33

P31

P32

P33

P31

P32
P33

P31

P32
P33

1
2
3
4
5
6
7
8

16
15
14
13
12
11
10
9

RP1

8 x
RES

1
2
3
4

5
6

7
8

16
15
14
13

12
11

10
9

RP2

8 x
RES

1
2
3
4
5
6
7
8

16
15
14
13
12
11
10
9

RP3

8 x
RES

1
2

3
4
5

6
7
8

16
15

14
13
12

11
10
9

RP4

8 x
RES

Vcc

80C32

P3.3

P3.2

P3.1

P3.0

DATA

CLOCK

LOAD

OFF

 

Rys. 3. Schemat podłączenia wyświetlaczy 7 - segmentowych. 

 
Wyświetlenie czterech dowolnych znaków wymaga szeregowego przesłania 
32 bitów danych z wyprowadzenia portu P3.0 (DATA), przy czym kaŜdemu 
bitowi towarzyszy takt zegara z wyprowadzenia P3.1 (CLOCK). Po 
przesłaniu wszystkich bitów naleŜy zmienić stan sygnału LOAD (P3.2) z 
niskiego na wysoki aby przepisać wprowadzone dane na wyjścia Q0 .. Q7 
rejestrów U1 .. U4, co przy niskim stanie sygnału OFF (P3.3) spowoduje 
wyświetlenie odpowiednich znaków na wyświetlaczu. MoŜna równieŜ 
wysłać dowolną liczbę bitów danych i w dowolnym momencie uaktywnić 
sygnał LOAD wyświetlając tym samym dotąd przesłane dane. MoŜna 
równieŜ w dowolnym momencie zgasić wyświetlacz ustawiając sygnał OFF 
w stan wysoki. NaleŜy pamiętać, Ŝe przy tak połączonym wyświetlaczu 
stanem aktywnym powodującym świecenie danego segmentu jest stan 
niski (’0’). Bity danych naleŜy przesyłać w kolejności od najmłodszego do 
najstarszego, co odpowiada segmentom w kolejności a, b, .. , g, DP (DP - 
przecinek dziesiętny). PoniŜej przedstawiono opis poszczególnych 
segmentów i przykład zapisu wybranej cyfry. 
 

f

e

d

c

b

DP

g

a

zapis cyfry 5 (bez przecinka dziesiętnego)

        (MSB)                                   (LSB)
         DP    g     f     e     d     c     b    a
5  

     1     0     0    1     0     0     1    0    b   

   92h

 

background image

Przykładowy program wysłania cyfry ’5’ na wyświetlacz : 
 
org 

 
DATA  

EQU  0B0h 

CLOCK 

EQU  0B1h 

LOAD  

EQU  0B2h 

OFF   

EQU  0B3h 

 
POCZATEK: 
 

MOV  P3, #0   

 

 

;zerowanie portu P3 

 

MOV  R1, #4  

 

 

;określenie liczby przesłań danych (4 x 8 bitów) 

WYSLIJ_5:   

 

 

 

;etykieta powtarzana w kaŜdej pętli 

 

LCALL 

WPIS_CYFRY_5 

;wywołanie podprogr. wysłania 8 bitów danych 

 

DJNZ   

R1, WYSLIJ_5 

;zmniejsz. R1 o 1 i jeśli róŜne od 0 to skok do et.  

 

SETB   

LOAD  

 

;ustaw bit LOAD - wysłanie danych na wyśw. 

 

LCALL 

MOMENT 

 

;wywołanie zwłoki czasowej 

 

SETB   

OFF   

 

;ustaw bit OFF - wygaszenie wyświetlacza 

 

LCALL 

MOMENT 

 

;wywołanie zwłoki czasowej 

 

SJMP   

POCZATEK   

;skok do początku programu 

 

 

WPIS_CYFRY_5: 

 

 

 

;podprogram wysłania cyfry 5 

 

 

 

CLR   

DATA  

 

;zeruj bit DATA - LSB cyfry 5 - zapal segm. ’a’ 

 

LCALL 

CLK   

 

;wywołanie podpr. wytwarzającego takt zegara 

 

 

 

SETB   

DATA  

 

;ustaw bit DATA - 2 bit cyfry 5 - zgaœ segm.’ b’ 

 

LCALL 

CLK   

 

;takt zegara 

 

 

 

CLR   

DATA  

 

;zeruj bit DATA - 3 bit cyfry 5 - zapal segm. ’c’ 

 

LCALL 

CLK   

 

;takt zegara 

 

LCALL 

CLK   

 

;takt zegara dla 4-go bitu  

 

 

 

SETB   

DATA  

 

;ustaw bit DATA - 5 bit cyfry 5 - zgaœ segm.’ e’ 

 

LCALL 

CLK    

 

;takt zegara 

 
 

CLR   

DATA  

 

;zeruj bit DATA - 6 bit cyfry 5 - zapal segm. ’f’ 

 

LCALL 

CLK    

 

;takt zegara 

 

LCALL 

CLK    

 

;takt zegara dla 7-go bitu 

 

 

 

SETB   

DATA  

 

;ustaw bit DATA - 5 bit cyfry 5 - zgaœ segm.’ e’ 

 

LCALL 

CLK   

 

;takt zegara 

 

 

 

RET   

 

 

 

;powrót z podprogramu 

 
CLK:   

 

 

 

 

;podprogram  sygnału zegarowego 

 

SETB   

CLOCK 

 

;ustaw bit CLOCK - zbocze narastające 

 

CLR   

CLOCK 

 

;zeruj bit CLOCK - zbocze opadające 

 

RET   

 

 

 

;powrót z podprogramu 

background image

 
MOMENT: 

 

 

 

 

;podpr. zwłoki czasowej - działanie jak wcześniej 

 

MOV   

R5, #8 

M1: 
 

MOV   

R6, #255 

M2: 
 

MOV   

R7, #255 

M3: 
 

DJNZ   

R7, M3 

 

DJNZ   

R6, M2 

 

DJNZ   

R5, M1 

 

RET 

 
PowyŜszy, najprostszy program obsługi wyświetlacza, działający w 
nieskończonej pętli powoduje cykliczne, chwilowe wyświetlenie liczby:  
5 5 5 5 i następnie wygaszenie wyświetlacza. 
 
 
1.3. Pamięć trwała EEPROM szeregowa z magistralą I2C. 
 
Pamięci EEPROM są pamięciami trwałymi (dane są zachowywane po 
wyłączeniu napięcia zasilania), które mogą być wielokrotnie 
programowane i kasowane elektrycznie przez uŜytkownika. Pamięci 
szeregowe, w odróŜnieniu od pamięci równoległych, charakteryzuje 
szeregowy odczyt i wpis danych oraz adresów. Dostęp szeregowy oznacza, 
Ŝe w jednej chwili, określonej taktem zegara (CLK), uŜytkownik moŜe 
odczytać lub zapisać do pamięci tylko 1 bit danych. Interfejs szeregowy 
pozwala na znaczne zmniejszenie obudowy pamięci (DIP08) oraz znaczne 
zmniejszenie liczby wyprowadzeń, przy jednoczesnym wydłuŜeniu cykli 
odczytu i zapisu, co nie zawsze jest wadą. W projektowanych i 
produkowanych obecnie urządzeniach elektronicznych (magnetowidach, 
telewizorach, kamerach itp.) stosowane są szeroko mikrokontrolery oraz 
specjalizowane i programowane układy scalone. W związku z tym w 
urządzeniach takich zachodzi konieczność przekazywania informacji 
między poszczególnymi układami. Do tego celu przeznaczona jest 
magistrala I2C (Inter Integrated Circuits) składająca się z dwóch 
przewodów (linii): SDA (serial data) - linii danych (w ćwiczeniu przyjęto 
oznaczenie Dane) i  SCL - (serial clock) - linii zegara (w ćwiczeniu przyjęto 
oznaczenie CLK). Sposób podłączenia pamięci w badanym układzie 
przedstawia rys. 4. 
 

background image

80C32

P1.3

P1.2

P1.1

SCL

6

SDA

5

A0

1

A1

2

A2

3

U1

24C02 I2C_EEPROM

R1

2K4

R2

2K4

D1

BAT43

Vcc

SCL

SDA

SDA'

 

Rys. 4. Schemat połączenia pamięci z systemem mikroprocesorowym. 

 
Przekazywanie informacji magistralą I2C odbywa się binarnie, szeregowo i 
dwukierunkowo. Następujące nazwy uŜywane w opisie magistrali: 
- nadajnik danych - układ wysyłający dane na magistralę, 
- odbiornik danych - układ odbierający dane z magistrali, 
- układ zarządzający (Master) - układ inicjujący transmisję danych, 
generujący przebieg taktujący (zegarowy) i kończący transmisję danych, 
- układ podporządkowany (Slave) - układ adresowany i sterowany przez 
układ zarządzający, 
- arbitraŜ - procedura powodująca, w przypadku próby wysterowania 
magistrali przez więcej niŜ jeden układ zarządzający, ustalenie kolejności 
dostępu bez utraty informacji, 
- synchronizacja - procedura synchronizacji przebiegu taktującego w 
przypadku próby dostępu do magistrali dwóch lub więcej układów. 
 

 

Magistrala I2C charakteryzuje się następującymi właściwościami: 
- dwuprzewodowe (trzecie) połączenie -masa- nie jest brane pod uwagę, 
- dwukierunkowy przepływ sygnałów przewodem magistrali, 
- brak ograniczeń co do liczby układów zarządzających lub 
podporządkowanych dołączonych do magistrali pod warunkiem nie 
przekroczenia dopuszczalnej sumarycznej pojemności obciąŜenia (400 pF) 
kaŜdej z linii sygnałowych oraz 4 metrowej długości przewodów łączących, 
- 7 - bitowy adres kaŜdego z urządzeń, 
- moŜliwość nadania kaŜdemu z urządzeń statusu układu zarządzającego 
lub podporządkowanego w czasie transmisji danych, 
- procedura arbitraŜu uniemoŜliwiająca utratę informacji w czasie próby 
dostępu do magistrali jednocześnie przez więcej niŜ jeden układ 
zarządzający, 
- 8-bitowa transmisja danych, przy czym pierwszy bajt zawiera 7 - bitowy 
adres układu podporządkowanego (nie moŜe być dwóch lub więcej ukł. o 
tym samym adresie) i 1- bitową informację o kierunku transmisji, 
- potwierdzenie odbioru kaŜdego bajtu danych przez odbiornik, 
- maksymalna prędkość transmisji - 100 kbitów/s. 
 
 
 

background image

Przykładowe przebiegi odczytu i zapisu bajtu danych: 

Dane

CLK

Dane

CLK

Dane

CLK

 1         0          1         0       A2       A1       A0     R/W

  A7       A6       A5       A4      A3       A2       A1       A0

  D7       D6       D5       D4      D3       D2      D1       D0

1

2

3

ACK

ACK

ACK

bit startu

bit stopu

1

+

  + 

    - wpis bajtu danych do pamięci (R/W = 0),

+

  - odczyt bajtu danych spod bieŜącego adresu (R/W = 1),

+

  +

     +           - odczyt bajtu danych spod wybranego adresu.

2

3

1

3

1

1

2

2

2

3

 

 
Zastosowano pamięć typu NM 24C02 o 8-bitowym słowie danych i  
pojemności 2k bitów, która umoŜliwia zapis i odczyt pojedynczego bajtu 
danych o dowolnym adresie lub całej strony danych (16 bajtów), dzięki 
zastosowaniu wewnętrznego licznika automatycznie zwiększającego adres. 
Wejścia A2, A1, A0 oznaczające adres (numer) urządzenia (pamięci) 
zgodnie z rys. 4. są ustawione w stan niski (’0’). Dane naleŜy przesyłać 
pinem P1.3, natomiast odbierać P1.2 (w trakcie wysyłania naleŜy 
utrzymywać P1.2 w stanie wysokim). 
 
1.4. Zegar czasu rzeczywistego RTC. 
W modelu zastosowano układ RTC typu MK 41T56 z wewnętrznym 
oscylatorem o częstotliwości 32,768 kHz i dodatkową pamięć statyczną o 
pojemności 56 bajtów (56 x 8 bitów). Pierwsze 8 bajtów jest przeznaczone 
do wpisu funkcji zegara i kalendarza w formacie BCD. Adres i dane 
przesyłane są szeregowo magistralą I2C (analogicznie jak w przypadku 
wcześniej opisanej pamięci EEPROM). Wewnętrzny rejestr adresowy jest 
automatycznie zwiększany po wpisaniu bajtu danych. Zegar posiada układ 
podtrzymania w przypadku wyłączenia napięcia zasilania lecz nie został on 
wykorzystany w stanowisku. Schemat podłączenia układu do systemu 
mikroprocesorowego przedstawia rys. 5. 

background image

80C32

P1.3

P1.2

P1.1

SDA'

Vcc

SCL

SDA

R1

2k4

R2

2k4

osc1

1

osc0

2

VCC

8

BAT

3

FT/OUT

7

VSS

4

SCL

6

SDA

5

U1

MK41T56 I2C_RTC

32,768 kHz

R3

4k3

R4

10k

D2

1N4148

+

CE1

470u

Vcc

D1

BAT43

 

Rys. 5. Schemat podłączenia układu RTC. 

  
Kolejność wprowadzania poszczególnych bajtów danych podaje 
następująca mapa struktury wewnętrznej układu MK 41T56: 
 

Dane 

Funkcja/zakres 

Adres  D7 

D6 

D5 

D4 

D3 

D2 

D1 

D0 

format BCD 

ST 

10 sekund 

Sekundy 

Sekundy 

00 - 59 

10 minut 

Minuty 

Minuty 

00 - 59 

10 godzin  Godziny 

Godziny 

00 - 23 

Dzień tyg. 

Dni tyg. 

01 - 07 

10 dni 

Dzień 

Dni 

01 - 31 

10 

Miesiąc 

Miesiące 

01 - 12 

10 lat 

Lata 

Rok 

00 - 99 

OUT  FT 

Kalibracja 

Kontrola 

8 - 
63 

D7 

D6 

D5 

D4 

D3 

D2 

D1 

D0 

Dane 

Oznaczenia: S - bit znaku, FT - test częstotliwości, ST - bit stopu, OUT - 
poziom wyjścia, X - nie istotne. 
 
Podstawowe parametry pracy magistrali I2C są takie jak podano 
wcześniej, w związku z tym naleŜy pamiętać, Ŝe obowiązują następujące 
zasady: 
- transmisja danych moŜe nastąpić dopiero po zwolnieniu magistrali przez 
inne urządzenie np. pamięć EEPROM, 
- podczas transmisji dane muszą być ustalone przed taktem zegarowym, 
- zmiany stanu na linii danych (SDA) podczas wysokiego stanu sygnału 
zegarowego (SCL) są traktowane jako sygnały sterujące, 
- magistrala jest wolna, gdy linie danych i zegara są w stanie wysokim, 
- bit startu polega na wykonaniu następującej sekwencji zmian linii danych 
i zegara (rys. 6.): zmiana danych (SDA) ze stanu wysokiego na niski 
podczas wysokiego stanu sygnału zegara (SCL), 

background image

- bit stopu: zmiana danych (SDA) ze stanu niskiego na wysoki (rys. 6.) 
podczas wysokiego stanu sygnału zegarowego (SCL), 
- zmiana danych moŜe następować tylko podczas stanu niskiego sygnału 
zegarowego, 
- kaŜdemu bitowi danych towarzyszy jeden takt zegara, 
- kaŜda transmisja rozpoczyna się bitem startu i kończy bitem stopu, 
liczba bajtów danych jest w zasadzie nie ograniczona, 
- po kaŜdym ósmym bicie danych następuje bit potwierdzenia (rys. 6.), 
który polega na wystawieniu przez urządzenie stanu niskiego na linii 
danych podczas dziewiątego taktu zegara, 
 
Bity startu, stopu oraz potwierdzenie przedstawiają poniŜsze przebiegi 
czasowe: 

bit

startu

dane

stabilne

zmiana
danych

SDA

SCL

bit

stopu

start

9

8

1

2

SCL

Master

SDA

dane wyjściowe

nadajnika

SDA

dane wyjściowe

odbiornika

bit danych  1

bit danych  2

bit danych  8

takt zegara

dla

potwierdzenia

 

 

Rys. 6. Przebiegi czasowe bitu startu, bitu stopu oraz potwierdzenia. 

 
1.5. Przetworniki A/C i C/A. 
 
W stanowisku zastosowano 8-bitowy przetwornik A/C i 8-bitowy 
przetwornik C/A umieszczone we wspólnej obudowie układu PCF 8591 
współpracującego z magistralą I2C. Układ PCF 8591 posiada 4 
programowane wejścia analogowe oraz jedno wyjście analogowe. Schemat 
włączenia układu w system mikroprocesorowy przedstawia rys. 7. 
 

background image

80C32

P1.3

P1.2

P1.1

SDA'

Vcc

SCL

SDA

R3

2k4

R4

2k4

D1

BAT43

R5

820

R6

499

R7

2K

C1

100n

Uw
y

3

2

D2

LM336 2,5

AIN

0

1

AIN1

2

AIN2

3

AIN3

4

VDD

16

VREF

14

AGND

13

VSS

8

VOUT

15

A0

5

A1

6

A2

7

SCL

10

SDA

9

EXT

12

OSC

11

U2

PCF8591 I2C_AC/CA

R2

10

WE
0WE 1

WE 2

STER

2

1

3

T1

BC557C

2

1

3

T2

LM35

WE 3

Vcc

Vcc

- 7
V

1

2

U1A

74HC04

3

4

U1B

74HC04

P3.7

R1

430

LED 1

GREEN

Vcc

Vcc

WE 2

 

Rys. 7. Schemat podłączenia przetwornika A/C C/A. 

 
Podobnie jak w przypadku układu RTC lub pamięci EEPROM układ wymaga 
odpowiedniego zaadresowania, które odbywa się w pierwszym 
przesyłanym bajcie o następującej strukturze: 

1

R/W

A

0

A

1

A

2

1

0

0

Kod urządzenia

Adres

urządzenia

Odczyt/

zapis

1 - odczyt
0 - zapis

MSB

LSB

 

Drugi przesyłany bajt ustawia rejestr kontrolny decydujący o trybie pracy 
układu. Struktura tego rejestru jest następująca: 
 

0

X

X

X

0

X

X

X

Wybór wejścia (kanału) A/C:
0 0

WE 0

0 1

WE 1

1 0

WE 2

1 1

WE 3

Automatycznie zwiększana
flaga (ustawiana na ’1’)

MSB

LSB

Sposób programowania wejść analogowych:
0 0

cztery pojedyncze wejścia:
WE 0 - kanał 0
WE 1 - kanał 1
WE 2 - kanał 2
WE 3 - kanał 3

0 1

trzy wejścia róŜnicowe:

1 0

wejścia pojedyncze oraz róŜnicowe:

1 1

dwa wejścia róŜnicowe:

Flaga uaktywniająca wyjście analogowe (jeśli
ustawiona w stan ’1’).

WE 0

WE 1

WE 2

WE3

+

+

+

kanał  0

kanał 1

kanał  2

WE 0

WE 1
WE 2

WE3

+

kanał  0

kanał 1

kanał  2

WE 0

WE 1
WE 2

WE3

+

kanał  0

kanał 1

+

 

background image

Starszy półbajt słuŜy do uaktywnienia wyjścia analogowego oraz do 
programowania sposobu pracy wejść analogowych. Młodszy półbajt słuŜy 
natomiast do wyboru jednego z czterech wejść analogowych. Jeśli 
automatycznie zwiększana flaga jest ustawiona (’1’) - numer kanału 
(wejścia) jest automatycznie zwiększany po kaŜdej konwersji A/C. Po 
załączeniu zasilania rejestr kontrolny jest zawsze wyzerowany. 
 
Sposób przesłania poszczególnych bajtów oraz zachowanie się wyjścia 
układu przedstawia rys. 8. 
 

ADRES

0

ACK

S

BAJT KONTROLI ACK

  1       2

  8       9        1

  8       9        1

BAJT DANYCH 1 ACK BAJT DANYCH 2 ACK

  8       9        1

Stan wysokiej impedancji lub poprzednia

wartość utzrymywana w rejestrze

Poprzednia wartość

utrzymywana w rejestrze

Poziom napięcia

wynikający z bajtu 1

U

wy

czas

SCL

SDA

 

Rys. 8. Sposób transmisji do przetwornika C/A. 

 
 
 
1.6. Literatura. 
 
- A. Rydzewski: „Mikrokomputery jednoukładowe rodziny MCS - 51”, WNT 
W-wa 1995, 
- P. Gałka, P. Gałka: „Podstawy programowania mikrokontrolera 8051”, 
Mikom W-wa 1995, 
- Philips Semiconductor: „8 - bit A/D and D/A converter” - karta 
katalogowa.