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 , nh-ng ứng dụng lại đadạ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ềukhiể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
+150°C,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 +125°C. 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 2°C - 150°C với tần số (20 -1500Hz) nh-ng 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
55 trang |
Chia sẻ: oanhnt | Lượt xem: 1939 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Đồ án Nhiệt kế điện tử điều khiển tự động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
môn : vi xử 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 , nh−ng ứ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
+150˚C,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 +125˚C. 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 2˚C - 150˚C với tần số (20 -1500Hz) nh−ng 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 +125˚C
(-67˚F đến +257˚F) 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 // Khởi tạo LCD
#include
#include
#include
#include
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 (t113)
{
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 điều khiển AVR (Atmel Norway design) thuộc họ vi điều khiển Atmel, nú là họ Vi
điều khiển mới trờn thị trường cũng như đối với người sử dụng. Đõy là họ Vi Điều Khiển
được chế tạo theo kiến trỳc RISC (Reduced Intruction Set Computer) cú cấu trỳc khỏ phức
tạp. Ngoài cỏc tớnh năng như cỏc họ VĐK khỏc, nú cũn tớch hợp nhiều tớnh năng mới rất tiện
lợi cho người thiết kế và lập trỡnh.Sự ra đời của AVR bắt nguồn từ yờu cầu thực tế là hầu hết
khi cần lập trỡnh cho vi điều khiển, chỳng ta thường dựng những ngụn ngữ bậc cao HLL
(Hight Level Language) để lập trỡnh ngay cả với loại chip xử lớ 8 bit trong đú ngụn ngữ C là
ngụn ngữ phổ biến nhất. Tuy nhiờn khi biờn dịch thỡ kớch thước đoạn mó sẽ tăng nhiều so với
dựng ngụn ngữ Assembly. Hóng Atmel nhận thấy rằng cần phải phỏt triển một cấu trỳc đặc
biệt cho ngụn ngữ C để giảm thiểu sự chờnh lệch kớch thước mó đó núi trờn. Và kết quả là họ
vi điều khiển AVR ra đời với việc làm giảm kớch thước đoạn mó khi biờn dịch và thờm vào đú
là thực hiện lệnh đỳng đơn chu kỳ mỏy với 32 thanh ghi tớch lũy và đạt tốc độ nhanh hơn cỏc
họ vi điều khiển khỏc từ 4 đến 12 lần. Vỡ thế nghiờn cứu AVR là một đề tài khỏ lý thỳ và giỳp
cho học sinh, sinh viờn biết thờm một họ vi điều khiển vào loại mạnh hiện nay.
Linhdt1
10
PHÂN LOẠI AVR
+ AT90S8535: Khụng cú lệnh nhõn hoặc chia trờn thanh ghi.
+ ATMEGA 8, 16, 32 (AVR loại 8 bit, 16 bit, 32 bit): Là loại AVR tốc độ cao, tớch hợp sẵn
ADC 10 bit.
+ AVR tớch hợp sẵn LCD driver : Atmega169,329
+ AVR cú tớch hợp SC (power stage controller): AT90PWM thường dựng trong cỏc ứng
dụng điều khiển động cơ hay chiếu sỏng nờn cũn gọi là lighting AVR.
+ Attiny11, 12, 15: AVR loại nhỏ.
Các đặc điểm chính
1-Kiến 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) với hầu hết cỏc lệnh cú chiều dài cố định, truy
nhập bộ nhớ nạp – lưu trữ và 32 thanh ghi đa năng.
2- Cú nhiều bộ phận ngoại vi ngay trờn chip, bao gồm: Cổng vào/ra số, bộ biến đổi ADC,
bộ nhớ EEFROM, bộ định thời, bộ điều chế độ rộng xung (PWM), …
3- Hầu hết cỏc lệnh đều thực hiện trong một chu kỳ xung nhịp.
4- Hoạt động với chu kỳ xung nhịp cao, cú thể lờn đến 20 MHz tuỳ thuộc từng loại chip cụ
thể.
5- Bộ nhớ chương trỡnh và bộ nhớ dữ liệu được tớch hợp ngay trờn chip.
6- Khả năng lập trỡnh được trong hệ thống, cú thể lập trỡnh được ngay khi đang được cấp
nguồn trờn bản mạch khụng cần phải nhấc chip ra khỏi bản mạch.
7- Hỗ trợ cho việc lập trỡnh bằng ngụn ngữ bậc cao – ngụn ngữ C.
Cốt lừi của AVR là sự kết hợp tập lệnh đầy đủ với cỏc thanh ghi đa năng 32 bit. Tất cả cỏc
thanh ghi 32 bit này liờn kết trực tiếp với khối xử lý số học và logic (ALU) cho phộp 2 thanh
ghi độc lập được truy cập trong một lệnh đơn trong 1 chu kỳ đồng hồ. Kết quả là tốc độ nhanh
gấp 10 lần cỏc bộ vi điều khiển CISC(Complex Instruction Set Computer : mỏy tớnh với tập
lệnh phức tạp . Một loại kiến trỳc của bộ xử lớ được đặc trưng bởi tớnh chất là cỏc lệnh cú độ
dài khỏc nhau (khụng cố định) , thường là một số nhỏ cỏc chế độ đa địa chỉ và thanh ghi) .
Với cỏc tớnh năng đó nờu, chế độ nghỉ (Idle) CPU trong khi cho phộp bộ truyền tin nối tiếp
đồng bộ USART, giao tiếp 2 dõy, chuyển đổi A/D, SRAM, bộ đếm, bộ định thời, cổng SPI và
hệ thống cỏc ngắt vẫn hoạt động. Chế độ Power-down lưu giữ nội dung của cỏc thanh ghi
nhưng làm đụng lạnh bộ tạo dao động, thoỏt khỏi cỏc chức năng của chip cho đến khi cú ngắt
ngoài hoặc là reset phần cứng. Chế độ Power-save đồng hồ đồng bộ tiếp tục chạy cho phộp
chương trỡnh sử dụng giữ được đồng bộ thời gian nhưng cỏc thiết bị cũn lại 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ố học và logicAVR ALU hiệu năng cao tỏc
động trựuc tiếp tới 32 thanh ghi đa năng. Trong vũng 1 chu kỳ, cỏc toỏn hạng số học thực hiện
giữa cỏc thanh ghi đa năng hoặc giữa một thanh ghi và một toỏn hạng tức thời. Cỏc toỏn tử
của ALU được chia làm 3 loại chớnh: Số học, logic, và xử lý bit. Một số phộp xử lý của kiến
trỳc này cũng cung cấp bộ nhõn số cú dấu và khụng cú dấu và dạng 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 bằng điện sau đú ghi lại mà khụng cần lấy 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ử dụng cỏc chớp NAND (tớch
hợp nhiều transitor lờn một tấm bỏn dẫn), cỏc chớp này cú kớch thước nhỏ, tốc độ đọc/ghi cao,
dung lượng lớn
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) mạch ghộp nối ngoại vi nối tiếp, là mạch liên kết dữ
liệu nối tiếp đồng bộ cho phộp bộ điều khiển truyền thụng với cỏc thiết bị ngoại vi.
Watchdog timer : là một bộ đếm cú chức năng reset lại vi điều khiển khi xảy ra sự kiện
tràn (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 trạng thỏi
Thanh ghi trạng thỏi chứa thụng tin về kết quả thưc hiện của hầu hết cỏc lệnh số học.
Cỏc thụng tin này cú thể được sử dụng để điều khiển chương trỡnh. Chỳ ý rằng cỏc thanh ghi
trạng thỏi được cập nhật sau tất cả cỏc hoạt động của ALU. Trong nhiều trường hợp, điều này
sẽ bỏ đi những cần thiết khi sử dụng cõu lệnh so sỏnh chuyờn dụng, kết quả nhanh hơn và
đoạn chương trỡnh ngắn gọn hơn.
Thanh ghi trạng thỏi khụng tự động lưu trữ khi đang nhập vào mụt thường trỡnh ngắt và lưu
trữ khi trở về tự một ngắt. Điều này phải được quản lý bằng phần mềm. Thanh ghi trạng thỏi
AVR – SREG - được định nghĩa như sau:
Global Interrupt Enable- bit cho phộp ngắt toàn cục
Bit cho phộp ngắt toàn cục phải được đặt để cho cỏc ngắt cú thể hoạt động. Điều khiển
hoạt động của cỏc ngắt riờng biệt được thực hiện trong cỏc thanh ghi điều khiển riờng biệt.
Nếu thanh ghi cho phộ
Các file đính kèm theo tài liệu này:
- Nhiet ke dien tu dieu khien tu dong.pdf
- HQDT.doc