Tải bản đầy đủ (.pdf) (55 trang)

Nhiệt kế điện tử điều khiển tự động 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.29 MB, 55 trang )
















































m
m
«
«
n
n


:
:


v
v
i

i


x
x
ö
ö


l
l
ý
ý










































































































Linhdt1

1


Lời nói đầu

Trong công nghệ điện tử ,Vi Xử Lý là một thành phần quan trọng không thể thiếu,nó
mang nhiều tính u việt : có thể thay thế một mạch điện phức tạp bằng một vi mạch nhỏ gọn
với chi phí thấp hơn , nhng ứng dụng lại đa dạng và linh hoạt hơn.Khả năng điều khiển thông
minh hơn ,tiết kiệm năng lợng hơn ,tốc độ xử lý nhanh hơn,ứng dụng nhiều trong hệ thống
nhúng...

Để học tập tốt môn học Vi Xử Lý ngoài những kiến thức trên sách vở cần có sự thực hành
ứng dụng vào thực tế. Trên cơ sở đó chúng em đã áp dụng những kiến thức có đợc trong quá
trình học tập để chế tạo sản phẩm
NHIệT Kế ĐIệN Tử Điều khiển tự động
dùng vi điều
khiển AVR của ATMEL ,có khả năng đo và tự động điều khiển nhiệt độ. áp dụng Vi Xử Lý
trong lĩnh vực này đã đơc nghiên cứu và phát triển nhiều với những loại vi điều khiển ,cảm
biến và ngôn ngữ lập trình khác nhau ví dụ:dùng cảm biến nhiệt độ LM35 kết hợp với
AT89S52và IC biến đổi A/D và hiển thị bằng LED7 thanh đo đợc nhiệt độ từ -55 đến
+150C,dùng LM34C và 16F88 thuộc vi điều khiển PIC dùng ngôn ngữ lập trình BASIC
hiển thị nhiệt độ bằng LCD, chỉ đo đợc nhiệt độ từ -55 đến +125C. Nói chung những loại
cảm biến nhiệt độ họ LM so với họ DS thì độ chính xác không cao và tốc độ truyền tín hiệu
chậm 2C - 150C với tần số (20 -1500Hz) nhng giá thành chế tạo rẻ. Còn ở loại cảm biến họ
DS độ chính xác rất cao do tín hiệu đợc truyền có độ phân dải lên đến 12bit trong 750ms ở
loại cảm biến này có tích hợp ROM 64bit,bộ nhớ Logic, mạch ổn định tín hiệu đầu ra ,chính
vì vậy mà nó khắc phục đợc những nhợc điểm của cảm biến họ LM .So với những loại
nhiệt kế dùng họ vi điều khiển 8051 và PIC nhiệt kế dùng vi điều khiển ATMEGA16L thuộc
họ vi điều khiển AVR có nhiều u điểm hơn,so với vi điều khiển PIC lập trình bằng ngôn
ngữ lập trình BASIC thì dùng AVR lập trình bằng C thì phần mềm sẽ ngắn gọn hơn, còn so
với 8051 thì tốc độ xử lý tín hiệu nhanh hơn không cần lắp thêm bộ biến đổi A/D do
ATMEGA16 đã tích hợp sẵn bộ biến đổi A/D và việc lập trình sẽ đơn giản hơn.


Sản phẩm này có thể phát triển đợc một số ứng dụng vào đời sống . Có thể lắp đợc
nhiều cảm biến DS18B20 vào Bus-1wire với độ dài lên tới 300m và điều kiểm soát đợc giá trị
nhiệt độ của từng cảm biến .Một ứng dụng đơn giản là tự động điều khiển nhiệt độ phòng bảo
quản hoá chất bằng cách kết hợp với Transistor để đóng mở Role điều khiển máy điều hoà
,nh vậy sẽ tiết kiệm đợc lợng điện năng tiêu hao vô ích trong lúc nhiệt độ đã đạt mức yêu
cầu .
Do hạn chế về trình độ và thời gian nên đề tài còn rất nhiều những khuyết điểm , chúng
em rất mong đợc sự dạy bảo của các thầy, cô và những ý kiến đóng góp của các bạn,để có
những hiểu biết rõ hơn về đề tài này.

Hà Nội , ngày 5 tháng 12 năm 2007

Nhóm thực hiện đề tài

Linhdt1

2
Nội dung : Trang

Chơng I : Sơ Đồ Nguyên Lý 3

+ I.1 : Phần Cứng
4


+ I.2 : Phần Mềm
7


Chơng II

: Nguyên Lý Hoạt Động



+ II.1 : Tổng Quan Họ Vi Điều Khiển AVR
9


+ II.2 : Vi Điều Khiển ATMEGA16L
20


+ II.3 : Cảm Biến Nhiệt Độ DS18B20
43


+ II.4 : Hoạt Động Của Mạch Điện
47



Chơng III
: Mạch Nạp 48



Chơng IV
: Phần Mềm Thiết Kế Và Lập Trình



+ IV.1 : Proteus7.1SP2
49



+ IV.2 : CodeVisionAVR
53



Linhdt1

3
CH¦¥NG I : S¥ §å NGUY£N Lý











































Linhdt1

4


Sơ đồ nguyên lý trên nguồn cấp cho mạch điện là nguồn AC từ 7 đến 24V

+ 3 chân cấp nguồn cho Chip ATMEGA16L là những chân 10,11,31 không vẽ trên
sơ đồ (chân 10 đợc nối với chân 30, chân 11đợc nôí với chân 31).

+ điện trở PULLUP có giá trị 4,7K

+ Tụ C3 có thể thay bằng tụ hoá 10uf

+ Có thể dùng thạch anh 4MHz thay cho loại 8MHz

I.1 : phần cứng

Phần cứng đợc sử dụng để lắp mạch gồm :

1. Chip ATMEGA16L






















+ Điện áp hoạt động : từ 2.7 đến 5.5VDC

+ Sơ đồ chân :
- VCC : Cấp nguồn +
- GND : Nối đất
- AVCC : Là chân cấp điện cho cổng A(Port A ) và bộ biến đổi A/D,PC3,PC0,ADC7,ADC6
Nó đợc nối nội bộ đến VCC ngay cả trong trờng hợp ADC không đợc sử dụng. Nếu ADC

Linhdt1

5
Không đợc sử dụng , nó phải đợc nối với VCC qua bộ lọc thông thấp.Cả PC6 và PC4 cũng
sử dụng đợc điện áp AVCC.

- AREF : Là chân tín hiệu tham chiếu Analog ( tơng tự ) nối vào bộ biến đổi A/D.
- PORT B : Từ PB7 đến PB0 là cổng I/O 8-bit hai chiều với các điện trở Pull-up bên trong
(đợc lựa chọn cho mỗi bit ) . Bộ đệm đầu ra của Port B có đặc tính điều khiển cân đối với cả
tín hiệu Source( nguồn ) và Sink (bên trong).Khi là tín hiệu đầu vào , các chân của cổng B sẽ
Tiêu thụ dòng nếu các điện trở Pull-Up bên trong đợc kích hoạt. Các chân của Port B là 3
trạng thái khi có tín hiệu Reset đợc kích hoạt, thậm chí đồng hồ không chạy.Tuỳ thuộc việc
đặt các cầu chì lựa chọn xung nhịp, chân PB6 có thể đợc sử dụng nh là bộ khuếch đại dao
dộng đảo.


Tuỳ thuộc việc đặt cầu chì lựa chọn xung nhịp ,chân PB7 có thể đợc sử dụng nh là đầu ra
từ bộ khuếch đại dao động đảo. Nếu nh bộ dao động RC định cỡ bên trong đợc sử dụng nh
là nguồn xung nhịp của chip bên trong thì PB7-PB6 đợc sử dụng nh là đầu vào TOSC2 và
TOSC1 cho Timer/Counter2 nếu nh Bit AS2 trong thanh ghi ASSR đợc đặt.

- PORT C : Port C là cổng I/O 7-bit hai chiều với các điện trở Pull-up bên trong (dợc lựa chọn
cho mỗi bit) . Bộ nhớ đệm đầu ra của Port C có tính điều khiển cân đối với cả tín hiệu Source
và sink .Khi là các tín hiệu đầu vào , các chân của Port C là 3 trạng thái khi có tín hiệu reset
đợc kích hoạt ,thậm chí đồng hồ không chạy.

Đối voi chân PC6 Nếu cầu chì RSTDISBL đợc lập trình , PC6 đợc sử dụng nh là một
chân đầu vào Reset . Khi tín hiệu ở mức thấp dài hơn độ dáI của xung nhỏ nhất sẽ gây ra
Reset ngay cả khi các xung nhịp không còn.

- PORT D : Port D là cổng I/O 8-bit hai chiềuvới các điện trở Pull-Up bên trong (đợc lựa
chọn cho mỗi bit). Bộ đệm đầu ra của Port D có đặc tính giống Port C.
- PORT A : Đầu ra của bộ biến đổi A/D
- XTAL1 & XTAL2 : Chân vào ra của thạch anh tạo dao động

2. LCD 2 dòng 16 ký tự



+Điện áp hoạt động từ 2.7 5VDC


+Tần số hiển thị 2MHZ ở mức điện áp 5V





3. Cảm Biến Nhiệt Độ DS18B20

Linhdt1

6

+ Điện áp hoạt động từ 3.0 5VDC
- Chân 1 : GND
- Chân 2 : DQ (truyền tín hiệu)
- Chân 3 : Nguồn Vcc

+ Có thể đo nhiệt độ từ -55 đến +125C
(-67F đến +257F) GND DQ VCC


- Khi lắp vào mạch phải nối chân 2 và chân 3
với một điện trở 4K7

4. Những linh kiện khác


2 tụ 2200uf 16V
7805

- Để lọc nguồn

1 IC ổn áp 5V



- Tạo điện áp 5V cấp cho mạch 33

1 tụ 47uf 16V
104

- Làm mạch reset

2 tụ gốm 33pf


- ổn định làm việc cho thạch anh 20V 0.5A

1 tụ gốm 104pf

- bảo vệ mạch tránh những thành phần tần số cao

1 điện trở 4,7K và 1 điện trở 10K


- Nối chân 2 va chân 3 của DS18B20 va nối với mạch 8.000
Rese

Biến áp 20V- 0.5A


Thach anh 8.000MHz

Cầu Diod



Linhdt1

7
I.2 : PHầN MềM Phần mềm viết bằng ngôn ngữ C

/* Nhiet ke dien tu v1.0 by Linh
*/
#asm
.equ __w1_port=0x1b //Đặt cổng nhiệt độ
.equ __w1_bit=6 //Đặt bit nối cảm biến
#endasm
#asm
.equ __lcd_port=0x15 //Đặt cổng LCD
#endasm

#include <lcd.h> // Khởi tạo LCD
#include <ds18b20.h>
#include <delay.h>
#include <stdio.h>
#include <mega16.h>
char lcd_buffer[33];

/* Số lợng tối đa chip DS18B20 nối vào hệ thống */
#define MAX_DEVICES 8

/* Vùng mã DS18B20 ROM */
unsigned char rom_code[MAX_DEVICES][9];
main()
{
unsigned char i,j,t1,devices;

PORTD=0x00;
lcd_init(16);
lcd_putsf("Truong CDCN \n Thanh Do");
delay_ms(1000);thời gian hiện chữ trên LCD
lcd_clear();
lcd_putsf("Lop DTVT1-K3");
delay_ms(1000);
lcd_clear();
lcd_putsf("Desined by \n LINH");
delay_ms(1000);
lcd_clear();
lcd_putsf("GVHD:NGUYEN DINH\nTHUAN");
delay_ms(1000);
lcd_clear();
/* Kiểm tra số lợng DS18B20 nối vào hệ thống */
devices=w1_search(0xf0,rom_code);
Linhdt1

8
sprintf(lcd_buffer,"So luong: \n %u DS18B20",devices);
lcd_puts(lcd_buffer);
delay_ms(2000);

/* Hiển thị mã ROM */
if (devices)
{
for (i=0;i<devices;i++)
{
sprintf(lcd_buffer,"Ma ROM\nchip #%u la:",i+1);Hiển thị mã ROM chip
lcd_clear(); Xoá ký tự

lcd_puts(lcd_buffer);
delay_ms(1000);
lcd_clear();
for (j=0;j<8;j++)
{
sprintf(lcd_buffer,"%02X ",rom_code[i][j]);
lcd_puts(lcd_buffer);
if (j==3) lcd_gotoxy(0,1);
};
delay_ms(1000);
};
}
else
while (1); /* Dừng lại khi có lỗi */

/* Đặt chế độ làm việc ở độ chính xác 12 bit */
for (i=0;i<devices;)
if (!ds18b20_init(&rom_code[i++][0],20,30,DS18B20_12BIT_RES))
{
sprintf(lcd_buffer,"Thiet bi\nloi #%u",i);
lcd_clear();
lcd_puts(lcd_buffer);
while (1); /* Dừng lại khi có lỗi */
};

/* Đọc nhiệt độ và kiểm tra điều kiện */
while (1)
{
j=1;
for (i=0;i<devices;i++)

{

Linhdt1

9
sprintf(lcd_buffer,"t%u=%+.0f\xdfC",j++,ds18b20_temperature(&rom_code[i][0]));
lcd_clear();
lcd_puts(lcd_buffer);
t1 = ds18b20_temperature(0);
if (t1<35||t1>13)
{
PORTD=0x00; // Tắt thiết bị làm nóng và làm lạnh trong điều kiện khác
}
if (t1 >= 35) ; Đặt điều kiện làm lạnh
{
PORTD=0x01; //Bật thiết bị làm lạnh
}
if (t1 <= 13) ; Đặt điều kiện làm nóng
{
PORTD=0x02; //Bật thiết bị làm nóng
}
delay_ms(500); Thời gian khởi động
};
};
}
CHƯƠNG II : NGUYÊN Lý HOạT ĐộNG


II.1 : Tổng Quan Họ Vi Điều Khiển AVR



Vi iu khin AVR (Atmel Norway design) thuc h vi iu khin Atmel, nú l h Vi
iu khin mi trờn th trng cng nh i vi ngi s dng. õy l h Vi iu Khin
c ch to theo kin trỳc RISC (Reduced Intruction Set Computer) cú cu trỳc khỏ phc
tp. Ngoi cỏc tớnh nng nh cỏc h VK khỏc, nú cũn tớch hp nhiu tớnh nng mi rt tin
li cho ngi thit k v l
p trỡnh.S ra i ca AVR bt ngun t yờu cu thc t l hu ht
khi cn lp trỡnh cho vi iu khin, chỳng ta thng dựng nhng ngụn ng bc cao HLL
(Hight Level Language) lp trỡnh ngay c vi loi chip x lớ 8 bit trong ú ngụn ng C l
ngụn ng ph bin nht. Tuy nhiờn khi biờn dch thỡ kớch thc on mó s tng nhiu so vi
dựng ngụn ng Assembly. Hóng Atmel nhn thy rng cn phi phỏt trin mt c
u trỳc c
bit cho ngụn ng C gim thiu s chờnh lch kớch thc mó ó núi trờn. V kt qu l h
vi iu khin AVR ra i vi vic lm gim kớch thc on mó khi biờn dch v thờm vo ú
l thc hin lnh ỳng n chu k mỏy vi 32 thanh ghi tớch ly v t tc nhanh hn cỏc
h vi iu khin khỏc t 4 n 12 ln. Vỡ th nghiờn cu AVR l mt
ti khỏ lý thỳ v giỳp
cho học sinh, sinh viờn bit thờm mt h vi iu khin vo loi mnh hin nay.






Linhdt1

10

PHN LOI AVR


+ AT90S8535: Khụng cú lnh nhõn hoc chia trờn thanh ghi.
+ ATMEGA 8, 16, 32 (AVR loi 8 bit, 16 bit, 32 bit): L loi AVR tc cao, tớch hp sn
ADC 10 bit.
+ AVR tớch hp sn LCD driver : Atmega169,329
+ AVR cú tớch hp SC (power stage controller): AT90PWM thng dựng trong cỏc ng
dng iu khin ng c hay chiu sỏng nờn cũn gi l lighting AVR.
+ Attiny11, 12, 15: AVR loi nh.
Các đặc điểm chính
1-Kin trỳc RISC(Có nghĩa là máy tính dùng tập lệnh rút gọn,bộ vi xử lý kiểu này thực
hiện ít lệnh hơn những bộ vi xử lý khác) vi hu ht cỏc lnh cú chiu di c nh, truy
nhp b nh np lu tr v 32 thanh ghi a nng.
2- Cú nhiu b phn ngoi vi ngay trờn chip, bao gm: Cng vo/ra s, b bin i ADC,
b nh EEFROM, b nh thi, b iu ch rng xung (PWM),
3- Hu ht cỏc lnh u thc hin trong mt chu k xung nhp.
4- Hot ng vi chu k xung nhp cao, cú th lờn n 20 MHz tu thuc tng loi chip c
th.
5- B nh chng trỡnh và b nh d liu c tớch hp ngay trờn chip.
6- Kh nng lp trỡnh c trong h thng, cú th lp trỡnh c ngay khi ang c cp
ngun trờn bn mch khụng cn phi nhc chip ra khi bn mch.
7- H tr cho vic l
p trỡnh bng ngụn ng bc cao ngụn ng C.
Ct lừi ca AVR l s kt hp tp lnh y vi cỏc thanh ghi a nng 32 bit. Tt c cỏc
thanh ghi 32 bit ny liờn kt trc tip vi khi x lý s hc v logic (ALU) cho phộp 2 thanh
ghi c lp c truy cp trong mt lnh n trong 1 chu k ng h. Kt qu l tc nhanh
gp 10 ln cỏc b vi iu khin CISC(Complex Instruction Set Computer : mỏy tớnh vi t
p
lnh phc tp . Mt loi kin trỳc ca b x lớ c c trng bi tớnh cht l cỏc lnh cú
di khỏc nhau (khụng c nh) , thng l mt s nh cỏc ch a a ch v thanh ghi
)
.

Vi cỏc tớnh nng ó nờu, ch ngh (Idle) CPU trong khi cho phộp b truyn tin ni tip
ng b USART, giao tip 2 dõy, chuyn i A/D, SRAM, b m, b nh thi, cng SPI v
h thng cỏc ngt vn hot ng. Ch Power-down lu gi ni dung ca cỏc thanh ghi
nhng lm ụng lnh b to dao ng, thoỏt khi cỏc chc nng ca chip cho n khi cú ngt
ngoi hoc l reset phn cng. Ch
Power-save ng h ng b tip tc chy cho phộp
chng trỡnh s dng gi c ng b thi gian nhng cỏc thit b cũn li l ng. Ch
Linhdt1

11
ADC Noise Reduction dừng CPU và tất cả các thiết bị còn lại ngoại trừ đồng hồ đồng bộ và
ADC, tối thiểu hoá switching noise trong khi ADC đang hoạt động. Trong chế độ standby, bộ
tạo dao động (thuỷ tinh thể/bộ cộng hưởng) chạy trong khi các thiết bị còn lại ngủ. Các điều
này cho phép bộ vi điều khiển khởi động rất nhanh trong chế độ tiêu thụ công suất thấp. Thiết
bị
được sản xuất sử dụng công nghệ bộ nhớ cố định mật độ cao của Atmel. Bộ nhớ On-chip
ISP Flash cho phép lập trình lại vào hệ thống qua giao diện SPI bởi bộ lập trình bộ nhớ cố
đinh truyền thống hoặc bởi chương trình On-chip Boot chạy trên lõi AVR. Chương trình boot
có thể sử dụng bất cứ giao điện nào để download chương trình ứng dụng trong bộ nhớ Flash
ứng dụng. Phầ
n mềm trong vùng Boot Flash sẽ tiếp tục chạy trong khi vùng Application Flash
được cập nhật, cung cấp thao tác Read-While-Write thực sự.
Để tối đa hoá hiệu năng tính năng và song song, AVR sử dụng kiến trúc Harvard với bộ
nhớ riêng biệt và các BUS cho chương trình và dữ liệu. Các câu lệnh trong bộ nhớ chương
trình được hoạt với một đường ống lệnh mức đơn. Trong khi một lênh đang thực hiện, lệnh
tiếp theo sẽ được n
ạp trước vào từ bộ nhớ chương trình. Điều này làm cho các lệnh được thực
hiện trong mọi chu kỳ đồng hồ. Bộ nhớ chương trình là bộ nhớ In-System Reprogrammable
Flash. Tập thanh ghi truy cập nhanh bao gồm 32 thanh ghi đa năng 8 bit với thời gian truy cập
là 1 chu kỳ đơn. Điều này cho phép ALU hoạt động trong một chu kỳ đơn. Một thao tác điển

hình với 2 toán hạng được của ALU, 2 toán hạng được lấy ra t
ừ tệp thanh ghi để thực hiện, và
và kết quả được lưu trữ lại trong tệp thanh ghi trong một chu kỳ đồng hồ. 6 trong số 32 thanh
ghi có thể sử dụng như là 3 thanh ghi con trỏ địa chỉ gián tiếp 16 bit để chỉ vào vùng dữ liệu
phục vụ cho tính toán địa chỉ hiệu dụng. Một trong các con trỏ địa chỉ này cũng có thể được
sử dụng làm con trỏ địa chỉ trỏ vào bả
ng dữ liệu trong bộ nhớ chương trình Flash. Các thanh
ghi này là X, Y và Z.ALU thực hiện các phép toán logíc và số học giữa các thanh ghi hoặc
giữa thanh ghi với một hằng số. Cũng có thể thao tác với các thanh thanh ghi đơn trong ALU.
Sau khi thực hiện phép toán số học, các thanh ghi trạng thái được cập nhật các thông tin về kết
quả thực hiện. Dòng chương trình được điều khiển bởi các phép nhảy có điều kiện hoặc không
điều kiện đến các l
ệnh được gọi, và chỉ đến các địa chỉ trực tiếp trong không gian địa chỉ. Hầu
hết các lệnh AVR đều thực hiện với dữ liệu 16 bit. Mỗi địa chỉ bộ nhớ chương trình đều chứa
1 lệnh 32 bit hoặc 16 bit. Không gian bộ nhớ chương trình Flash được chia thành 2 vùng, vùng
chương trình boot và vùng chương trình ứng dụng, cả hai vùng này đều có bit khoá chuyên
dụng để bảo vệ cho việc ghi và đọc/ghi. Lệnh SPM dùng để ghi vào vùng bộ
nhớ ứng dụng
phải có trong vùng chương trình boot. Trong khi thực hiện các ngắt và các thường trình, địa
Linhdt1

12
chỉ trở về của bộ đếm chương trình (PC) được lưu trữ trong stack. Nhìn chung stack được định
vị trong SRAM, và do vậy kích cỡ stack được giới hạn bởi kích cỡ toàn bộ của SRAM, và
cách sử dụng của SRAM. Tất cả các chương trình của người sử dụng phải khởi tạo SP trong
thường trình reset (trước khi thường trình hoặc ngắt được thược hiện). SP có thể trỏ được vào
không gian I/O. SRAM có thể được truy c
ập một cách dễ dàng thông qua 5 chế độ địa chỉ
khác nhau hỗ trợ bởi kiến trúc AVR.Không gian bộ nhớ trong kiến trúc AVR là bản đồ bộ
nhớ thông thường và tuyến tính. Một module ngắt linh động có các thanh ghi điều khiển của

nó trong không gian I/O cùng với thêm vào bit khởi tạo ngắt toàn cục trong thanh ghi trạng
thái. Tất cả các ngắt có vector ngắt riêng biệt trong bảng vector ngắt. Các ngắt này có mức độ
ưu tiên theo vị trí của vector ngắt tươ
ng ứng. Mức có địa chỉ càng thấp thì có quyền ưu tiên
càng cao. Không gian bộ nhớ I/O có 64 địa chỉ cho các chức năng ngoại vi của CPU như là
các thanh ghi điều khiển, SPI, và các chức năng I/O khác. Bộ nhớ I/O có thể truy cập trực tiếp,
hoặc như là vị trí không gian dữ liệu theo chúng của tệp thanh ghi, $20-$5F. Thêm vào đó, nó
có không gian I/O mở rộng từ $60 đến $FF trong SRAM, các không gian này chỉ có các lệnh
ST/STS/STD và LD/LDS/LĐ có thể sử dụng.
















S¬ §å KiÕn Tróc AVR

Linhdt1

13

ALU Arithmetic Logic Unit
- n v x lý s hc v logicAVR ALU hiu nng cao tỏc
ng truc tip ti 32 thanh ghi a nng. Trong vũng 1 chu k, cỏc toỏn hng s hc thc hin
gia cỏc thanh ghi a nng hoc gia mt thanh ghi v mt toỏn hng tc thi. Cỏc toỏn t
ca ALU c chia lm 3 loi chớnh: S hc, logic, v x lý bit. Mt s phộp x lý ca kin
trỳc ny cng cung cp b nhõn s cú du v khụng cú d
u v dng phõn s.

DATA SRAM :
Bộ nhớ dữ liệu

EEPROM :
(Electrically Erasable Programmable Read-Only Memory):

Là loại ROM có thể

xoá đợc

bng in sau ú ghi li m khụng cn ly ra.

DATA BUS 8Bit :
Đờng truyền dữ liệu 8Bit

I/O Lines :
Đờng vào ra tín hiệu

32 x 8 Gneral Purpose Registers
: 32 thanh ghi đa năng 8 Bit

Status and control

: Khối nhận biết trạng thái và điều khiển

PRograme counter
: Bộ đếm chơng trình

Flash program memory :
Bộ nhớ flash, là một loại bộ nhớ s dng cỏc chớp NAND (tớch
hp nhiu transitor lờn mt tm bỏn dn), cỏc chớp ny cú kớch thc nh, tc c/ghi cao,
dung lng ln

Intruction register :
thanh ghi lệnh

Intruction decoder :
Giải mã lệnh

Control lines :
Những đờng điều khiển

IntErrupt unit:
Bộ xử lý ngắt
Linhdt1

14

SPI unit:
(Serial Peripheral Interface) mch ghộp ni ngoi vi ni tip, l mch liên kt d
liu ni tip ng

b cho phộp b iu khin truyn thụng vi cỏc thit b ngoi vi.

Watchdog timer :
l mt b m cú chc nng reset li vi iu khin khi xy ra s kin
trn

(overflow)
ANALOG COMPARATOR :
Bộ so sánh tín hiệu tơng tự

I/O MODULE1 -> I/O MODULE n
:Module vào ra tín hiệu

Direct addressing :
Đờng địa chỉ truyền trực tiếp

Indirect addressing :
Đờng địa chỉ truyền gián tiếp


Status Register Thanh ghi trng thỏi
Thanh ghi trng thỏi cha thụng tin v kt qu thc hin ca hu ht cỏc lnh s hc.
Cỏc thụng tin ny cú th c s dng iu khin chng trỡnh. Chỳ ý rng cỏc thanh ghi
trng thỏi c cp nht sau tt c cỏc hot ng ca ALU. Trong nhiu trng hp, iu ny
s b i nhng cn thit khi s dng cõu lnh so sỏnh chuyờn dng, k
t qu nhanh hn v
on chng trỡnh ngn gn hn.
Thanh ghi trng thỏi khụng t ng lu tr khi ang nhp vo mụt thng trỡnh ngt v lu
tr khi tr v t mt ngt. iu ny phi c qun lý bng phn mm. Thanh ghi trng thỏi
AVR SREG - c nh ngha nh sau:





Global Interrupt Enable- bit cho phộp ngt ton cc


Bit cho phộp ngt ton cc phi c t cho cỏc ngt cú th hot ng. iu khin
hot ng ca cỏc ngt riờng bit c thc hin trong cỏc thanh ghi iu khin riờng bit.
Nu thanh ghi cho phộp ngt ton cc c xúa, khụng cú mt ngt riờng bit no c hot
ng. Bit I c xúa bi phn cng sau khi mt ngt xy ra v c t bi lnh RETI cho
Linhdt1

15


các phép các ngắt tiếp theo hoạt động. Bit I cũng có thể được đặt và xóa bởi câu lệnh
SEI và CLI trong các ứng dụng.
Bit 6 – T: Bit Copy Storage



Các câu lệnh copy bit BLD (Bit LoaD) và BST (Bit STore) sử dụng bit T như là đích
hoặc nguồn cho bit hoạt động. 1 bit từ một thanh ghi trong tệp thanh ghi có thể được copy vào
bit T bằng lệnh BST và một bit trong T có thể được copy vào 1 bit trong thanh ghi trong tệp
thanh ghi bằng lệng BLD.

+ Bit 5 – H: Half Carry Flag

Cờ nhớ một nửa dùng cho các toàn hạng hạng một nửa byte trong các phép toán số học.
Cờ H sử dụng phép toán số học với số BDC .


+ Bit 4 – S: Sign Bit, S = N ⊕ V – bit dấu

Bit S là phép XOR giữa cờ âm và cờ tràn V .

+ Bit 3 – V: Two’s Complement Overflow Flag – cờ tràn mã bù 2

Cờ tràn V hỗ trợ phép toán số bù 2.


+ Bit 2 – N: Negative Flag – cờ âm

Cờ âm N hiển thị kết quả âm của phép toán logic hoặc số học.

+ Bit 1 – Z: Zero Flag

Cờ Zero Z hiển thị kết quả bằng 0 của phép toán logic hoặc số học.

+ Bit 0 – C: Carry Flag
Cờ nhớ C hiển thị số nhớ trong phép toán logic hoặc số học.


Linhdt1

16

General Purpose Register File – tệp các thanh ghi đa năng














Hình 1.4 Tệp thanh ghi đa năng của AVR CPU


Hầu hết các lệnh thực hiện với tệp thanh ghi có truy cập trực tiếp tới tất cả các thanh ghi,
và hầu hết chúng là lệnh đơn chu kỳ. Mỗi một thanh ghi được chỉ định bởi một địa chỉ bộ nhớ
dữ liệu, bố trí chúng trực tiếp vào 32 vị trí đầu tiên của không gian dữ liệu người sử dụng.
Mặc dù không phải là thực hiện theo luật như
các vị trí của SRAM, tổ chức bộ nhớ này
cho phép linh động cao khi truy cập các thanh ghi, như là thanh ghi con trỏ X,Y,Z có thể được
đặt vào danh mục của mọi thanh ghi trong tệp.
The X-register, Y-register and Z-register

Các thanh ghi R26..R31 có thêm các chức năng ngoài việc sử dụng như là một thanh
ghi đa năng. Các thanh ghi này là các con trỏ địa chỉ 16 bit cho chế độ địa chỉ gián tiếp của
không gian dữ liệu. 3 thanh ghi địa chỉ gián tiếp X, Y, Z được mô tả như như hình 3.5.
Trong các chế độ địa chỉ khác, các thanh ghi địa chỉ này có các chức năng như là độ
lệch cố định, tự động tăng và tự động giảm.





Linhdt1

17








Các thanh ghi X, Y và Z


Stack Pointer – ngăn xếp

Stack thường được sử dụng để chứa dữ liệu tạm thời, cho việc lưu trữ các biến địa
phương và cho việc lưu trữ địa chỉ trở về sau khi gọi các thường trình và các ngắt. Thanh ghi
con trỏ thường trỏ tới đỉnh của stack. Chú ý rằng stack được thực hiện khi tăng thêm từ địa chỉ
cao đến địa chỉ thấp, điều này nói lên rằng khi thự
c hiện lệnh PUSH thì con trỏ sẽ tự động
giảm. Con trỏ trỏ đến vùng ngăn xếp dữ liệu SRAM .
Không gian ngăn xếp trong SRAM phải được định nghĩa bằng chương trình trước khi
bất cứ thường trình hoặc ngắt được thực hiện. Con trỏ ngăn xếp phải được set để trỏ tới địa
chỉ trên $0100. Con trỏ ngăn xếp được giảm đi 1 khi dữ li
ệu được cất vào ngăn xếp và được
giảm đi 2 khi cất địa chỉ trở về của thường trình hoặc ngắt. SP được tăng lên khi dữ liệu được
lấy ra.
AVR SP được thực hiện với 2 thanh ghi 8 bit trong không gian I/O. Số các bit thực tế
sử dụng là tuỳ thuộc. Chú ý rằng không gian dữ liệu trong một số thực thi của kiến trúc AVR

rất nhỏ, chỉ SPL là cần. Trong trường hợ
p này SPH không sử dụng.






Sơ đồ các thanh ghi của con trỏ


Linhdt1

18
Reset and Interrupt Handling - điều khiển ngắt và reset
AVR cung cấp 1 vài nguồn ngắt khác nhau. Các ngắt này và vector reset riêng biệt có
vector chương trình riêng biệt nằm trong không gian nhớ chương trình. Tất cả các ngắt được
chỉ định bởi các bit cho phép riêng biệt mà các bit này phải được ghi mức logic 1 cùng với bit
cho phép ngắt toàn cục trong thanh ghi trạng thái để cho phép ngắt. Phụ thuộc vào giá trị PC,
các ngắt này phải được tự động loại bỏ khi các bit Boot Lock - BLB02 or BLB12 - được lập
trình. Yếu tố này cải thiện độ an toàn phần mềm.

Đị
a chỉ thấp nhất trong không gian bộ nhớ chương trình được mặc định là Reset và
Interrupt Vectors. Bảng vector ngắt






















Bảng vector ngắt và reset

Linhdt1

19


Khi địa chỉ càng nhỏ thì thứ tự ưu tiên càng cao.Các vector ngắt có thể được chuyển sang
đầu của vùng Boot Flash bằng cách đặt bit IVSEL trong thanh ghi điều khiển ngắt (MCUCR).

Reset Vector có thể được chuyển sang đầu của vùng Boot Flash bằng cách lập trình
BOOTRST fuse.
Khi một ngắt xảy ra, bit I (bit cho phép ngắt toàn cục) được xóa và tất cả các ngắt được
loại bỏ. Phần mềm sử dụng có thể ghi mức logic 1 vào bit I để cho phép các ngắt tiếp theo. Tất

cả các ngắt được kích hoạt có thể ngắt những thường trình ngắt hiện tại. Bit I được đặt tự động
khi trở về từ lệnh RETI của ngắt.

Có 2 loại ngắt cơ bản.
+ Loại thứ nhất được gây ra bởi sự kiện mà đặt cờ ngắt. Đối với loại ngắt này, PC được
hướng tới Interrupt Vector tương ứng để thực hiện thườ
ng trình phục vụ ngắt và phần cứng
xoá cờ ngắt tương ứng. Các cờ ngắt cũng có thể được ghi mức logic 1 vào vị trí bit cờ để được
xoá. Nếu một điều kiện ngắt xảy ra trong khi bit cho phép ngắt tương ứng bị xoá, thì cờ ngắt
sẽ được đặt và được nhớ cho đến khi ngắt được thực hiện, hoặc là cờ ngắt được xoá bởi phần
m
ềm. Tương tự nếu 1 hoặc nhiều điều kiện ngắt xảy ra trong

khi cờ cho phép ngắt toàn cục bị xoá thì các cờ ngắt tương ứng sẽ được đặt và nhớ cho
đến khi cờ cho phép ngắt toàn cục được đặt và nó sẽ được thực hiện theo thứ tự ưu tiên.
+ Loại ngắt thứ 2 sẽ kích hoạt kéo dài trong thời gian điều kiện ngắt tồn tại. Các ngắt
này không c
ần thiết phải có cờ ngắt. Nếu điều kiện ngắt mất đi trước khi ngắt được cho phép,
thì ngắt sẽ không xảy ra.

Khi AVR thoát khỏi từ một ngắt, nó sẽ luôn trở về chương trình chính và thực hiện một
hoặc nhiều lệnh trước khi một ngắt nào đó còn đợi đó được phục vụ.

Chú ý rằng các thanh ghi trạng thái không tự động lưu trữ khi nh
ập vào một thường
trình ngắt, và cũng không lưu trữ lại khi trở về từ một thường trình ngắt. Điều này phải được
thực hiện bởi phần mềm.
Linhdt1

20


Khi sử dụng câu lệnh CLI để cấm ngắt, các ngắt sẽ không được tác động ngay lập tức.
Không có ngắt nào được thực hiện sau khi thực hiện lệnh CLI, thậm chí nó xảy ra cùng lúc với
lệnh CLI.

Thời gian đáp ứng của 1 ngắt



Việc thực hiện ngắt trong ít nhất 4 chu kỳ đồng hồ với tất cả các ngắt. Sau 4 chu kỳ
đồng hồ, địa chỉ vector chương trình tương ứng với thường trình điều khiển ngắt thực sự được
khởi tạo.

Trong thời gian 4 chu kỳ này, PC được cất vào trong ngăn xếp. Vector thường là lệnh
nhảy đến thường trình ngắt và lệnh nhảy này mất 3 chu kỳ đồng h
ồ.

Nếu một ngắt xảy ra trong khi thực hiện một lệnh nhiều chu kỳ thì lệnh được hoàn
thành trước khi ngắt được phục vụ.

Nếu một ngắt xảy ra khi MCU đang trong chế độ ngủ thì thời gian đáp ứng ngắt sẽ tăng
thêm 4 chu kỳ. Thời gian tăng thêm này là thời gian để khởi động lại từ chế độ ngủ.


Sự trở về từ
một thường trình điều khiển ngắt mất 4 chu kỳ xung nhịp. Trong thời gian
4 chu kỳ này, PC (2 bytes) được lấy ra từ ngăn xếp, SP được tăng lên 2, và bit I trong SREG
được đặt.






II.2 : §Æc §iÓm Cña ATMEGA16L

+ S¬ ®å nguyªn lý :
Linhdt1

21


































Linhdt1

22

Các đặc Tính Của Vi Điều Khiển ATMEGA16L

- Hiu nng cao, tiờu th nng lng ớt
- Kin trỳc RISC - Reduce Instruction Set Computer (Có nghĩa là máy tính dùng tập lệnh
rút gọn,bộ vi xử lý kiểu này thực hiện ít lệnh hơn những bộ vi xử lý khác)
- 131 lnh mnh, hu ht cỏc lờnh thc hin trong mt chu k
- 32 Thanh ghi 8-bit a nng
- Tc c thc hin lờn ti 16 triu lnh trong 1 giõy vi tn s 16MHz
- Cú 2 b nhõn, mi b thc hin trong thi gian 2 chu k
- Cỏc b nh chng trỡnh v d liu c nh
- 16 Kb b nh
flash cú kh nng t lp trỡnh trong h thng
- Cú th thc hin c 10.000 ln ghi/xoỏ
- Vựng mó Boot tu chn vi nhng bit khoỏ c lp

- Lp trỡnh trờn trong h thng bi chng trỡnh on-chip Boot
- Thao tỏc c trong khi nghi thc s
- 512 bytes EEFROM
Cú th thc hin 100.000 ln ghi /xoỏ
- 1Kb SRAM bờn trong
- Lp trỡnh Khoỏ an ninh phn mm
+ Giao diện nối tiếp đồng bộ ( chuẩn IEEE std.1149.1).Khi thực hiện trao đổi dữ liệu với các
thiết bị tơng thích thì khung dữ liệu 8Bit giữa 2 thiết bị đợc truyền đồng bộ (cùng xung nhịp
đồng hồ)
- ít xảy ra lỗi
- Lập trình bộ nhớ Flash ,EEPROM ,ngắt ,khoá Bit thông qua giao diện jTAG
+ Ghộp ni ngoi vi
- 2 b
nh thi/ b m 8 bit vi cỏc ch t l nh trc v ch so sỏnh.
- 1 b nh thi/ b m 16 bit vi cỏc ch t l nh trc riờng bit, ch so sỏnh v
ch bt gi
- B thi gian thc vi b to dao ng riờng bit
- 4 kờnh PWM
- 8 kờnh, ADC 10 bit
- Giao in ni tip 2 dõy hng ti byte
Linhdt1

23
- B truyn tin ni tip USART kh trỡnh
- Giao din SPI ch / t
- Watchdog Timer kh trỡnh vi b to dao ng bờn trong riờng bit
- Mỏy so mu tng t bờn trong
+ Cỏc c im c bit khỏc.
- Power-on Reset v dũ Brown-out kh trỡnh.
- B to dao ng c nh c bờn trong.

- Cỏc ngun ngt bờn trong v bờn ngoi.
- 6 ch ng: Nhn ri, gim n ADC, tit kim nng lng, gim nng lng tiờu th,
ch
,đóng băng trạng thái
- I/O v cỏc loi.
- 32 ng I/O kh trỡnh.
- in ỏp hot ng.
2.7 5.5V
- Nhit hot ng: -40
o
C-85
o
C
+ Cỏc tc .
- 0-8 MHz khi in ỏp 2.7 5.5V, 0 - 16MHz khi in ỏp 4.5 5V
- Tiờu th nng lng ti 1 MHz, 3V, 25
o
C i vi ATmega16L.
- Hot ng tớch cc: 1.1mA
- Chế độ nghỉ ở 0.35mA
- Ch nng lng thp: <1 A khi in ỏp 2.7V
+ Bng vic kt hp 1 b 8-bit RISC CPU vi In-System Self-Programmable Flash trong ch
nguyờn vn 1 chip Atmel Atmega16L l mt b vi iu khin mnh cú th cung cp gii phỏp
cú tớnh linh ng cao, giỏ thnh r cho nhiu ng dng iu khin nhỳng(Theo

nh ngha ca
IEEE - Institute of Electrical and Electronics Engineers - Viện kỹ thuật và điện tử của Mỹ
,
thỡ
h thng nhỳng l mt h tớnh toỏn nm trong sn phm, to thnh mt phn ca h thng ln

hn v thc hin mt s chc nng ca h thng
)
Atmega16L AVR c h tr bi b
chng trỡnh y v cỏc tool(tiện ích) phỏt trin h thng, bỏo gm: B biờn dch
C,macro assemblers, program debugger/simulators(chơng trình mô phỏng), in-circuit
emulators(mạch mô phỏng) v evaluation kits(kit phát triển).


Linhdt1

24

Memories b nh của ATMEGA16L

Kin trỳc AVR cú 2 khụng gian b nh chớnh bao gm b nh chng trỡnh v b nh d
liu. Thờm vo ú, Atmega16L cú mt b nh EEPROM lu tr d liu. Tt c 3 khụng
gian ny l tuyn tớnh v nh thng l.

1.3.6.1 In-System Reprogrammable Flash Program Memory b nh chng trỡnh Flash cú
th lp trỡnh li nm bờn trong vi x lý.

Atmega16L cha 16K bytes b nh Flash cú th lp trỡnh li c nm trong chip
cha chng trỡnh. T khi tt c cỏc lnh ca AVR l 16 hoc 32 bit thỡ Flash c t chc
thnh 8Kx16. Vỡ lý do an ton phn mm nờn b nh chng trỡnh Flash c chia thnh 2
vựng: Vựng np chng trỡnh boot(chơng trình khởi động) v vựng chng trỡnh ng dng.

B nh Flash cú th thc hi
n ghi/xoỏ ớt nht 10.000 ln. B m chng trỡnh (PC) l
12 bit , nú cú th a ch hoỏ c 4K b nh chng trỡnh.
Bng hng s cú th c t trong khụng gian b nh chng trỡnh.

Bn b nh chng trỡnh nh hỡnh vẽ













Bn b nh chng trỡnh

×