Trong các thiết bị điện và điện tử , các bộ điều khiển các hoạt động trong hệ thống sản xuất tự động, điều khiển được sử dụng trong robot, dây truyền tự động,...các hệ thống càng thông m
Trang 1LỜI MỞ ĐẦU
Ngày nay, các thiết bị máy móc phục vụ đời sống con người trong sinh
hoạt cũng như trong sản xuất phát triển nhanh và ngày càng thông minh Sở
dĩ có được điều đó là nhờ ứng dụng thành tựu của khoa học kỹ thuật Một trong vô số những thành tựu trên là kỹ thuật đo lường và điều khiển.
Trong các thiết bị điện và điện tử , các bộ điều khiển các hoạt động
trong hệ thống sản xuất tự động, điều khiển được sử dụng trong robot, dây truyền tự động, các hệ thống càng thông minh thì vai trò của hệ đo lường và điều khiển ngày càng quan trọng.
Qua quá trình học tập và tìm hiểu, chúng em thấy có rất nhiều đề tài
hay và thiết thực, trong đó đề tài : ĐO VÀ KHỐNG CHẾ NHIỆT ĐỘ QUA CỔNG COM rất thực tế và có khả năng phát triển rộng rãi, đồng thời mở
ra nhiều hứa hẹn trong công tác nghiên cứu, khai thác và ứng dụng các đề tài khác Trên cơ sở đó chúng em đã triển khai thực hiện đề tài này.
Được sự hướng dẫn, giúp đỡ tận tình của cô giáo:Ths Vũ Thị Thu Hương chúng em đã nắm đựơc cấu tạo, nguyên lý hoạt động, cách thức lập
trình và ứng dụng của hệ thống đồng thời có sự mở rộng thêm phạm vi đồ án nhằm nâng cao kết quả đề tài
Do thời gian nghiên cứu, triển khai đề tài ngắn và kinh nghiệm bản thân còn hạn chế nên chúng em có thể còn nhiều thiếu sót Vì đó mà chúng
em rất mong nhận được sự quan tâm, góp ý và chỉ bảo ân cần của thầy cô và các bạn.
Chúng em xin chân thành cảm ơn!
Trang 2Nhận xét của giáo viên hướng dẫn
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Hà nội, ngày 21/12/2012 Hà nội, ngày …./12/2012
Trần Việt Dũng
Nguyễn Công Minh
Nguyễn Hữu Hưng
Trang 3
Mục Lục Mục Lục
Chương I : Giao tiếp với máy tính
1.1 Tổng quan về giao tiếp máy tính
1.2 Giao tiếp qua cổng nối tiếp
Chương II : Cơ sở lý thuyết
1 Giới thiệu về AT89S52
2 Bộ chuyển đổi tương tự_số ADC 0804
3 Tổng quan về LM 35
4 Giới thiệu sơ lược về MAX 232
Chương III : Thiết kế
Trang 4CHƯƠNG I: GIAO TIẾP MÁY TÍNH 1.1 Tổng quan về giao tiếp máy tính
Để có thể tiến hành điều khiển hoặc giám sát các quá trình thực hiệnbằng máy tính, trước hết phải có mối liên hệ cần thiết giữa máy tính và thếgiới bên ngoài Cổng giao lưu với thế giới bên ngoài được mở rộng bằng giaodiện.Đối với máy tính PC tuân theo chuẩn công nghiệp có thể thực hiện cáckhả năng ghép nối sau:
Sử dụng card mở rộng được cắm vào máy tính ( phương pháp này đạtđược tốc độ truy nhập lớn nhất nhưng chi phí cao)
Các giao diện đã được tiêu chuẩn hóa đóng vai trò ghép nối máy tínhvới các mạch điện bên ngoài.Cách ghép nối qua cổng nối tiếp thường đượclựa chọn vì chi phí thấp
Ghép nối với một bộ vi xử lý riêng để thực hiện những bài toán khác
mà không cần trao đổi dữ liệu với máy tính
Các giao diện có trên máy tính PC như giao diện nối tiếp,giao diệnsong song và cả cổng trò chơi (game port) cho phép sử dụng trực tiếp làmgiao diện
Trang 51.2 Giao tiếp qua cổng nối tiếp
1.2.1 Cấu trúc cổng nối tiếp ( cổng COM)
Cổng nối tiếp có các ưu điểm sau:
Khoảng cách truyền xa hơn cổng song song
Số dây kết nối ít
Có thể truyền không dây dùng hồng ngoại
Có thể ghép nối với vi điều khiển hay PLC
Cho phép nối mạng
Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc
Có thể cung cấp nguồn cho các mạch điện đơn giản
Cổng COM có hai loại: loại 9 chân và loại 25 chân
Sơ đồ chân:
Trang 61.2.2 Các chuẩn giao tiếp nối tiếp
Thường sử dụng nhiều nhất là chuẩn RS-232 và RS-485 Ở đề tài này chỉ sử dụng chuẩn RS-232
Chuẩn RS-232: Tín hiệu truyền theo chuẩn RS-232 của EIA
(Electronics Industry Associations) Chuẩn RS-232 qui định mức logic 1 ứng với điện áp từ -3V đến -25V, mức logic 0 ứng với điện áp từ 3V đến 25V và
có khả năng cung cấp dòng từ 10mA đến 20mA Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch
Trang 7Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếucáp truyền đủ ngắn có thể lên đến 115.200 bps Chuẩn RS-232 chỉ có thể kết nối nhiều nhất hai thiết bị, với khoảng cách dài nhất (12,7 m đến 25,4 m).
Chuẩn RS-485: có thể kết nối tối đa là 32 thiết bị, khoảng cách dài hơntối đa là (1016m đến hơn 1km) gấp 40 lần RS-232 Tốc độ cao 10Mbs/s
1.2.3 Các đặc tính kỹ thuật của chuẩn RS-232:
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200bps,
4800bps, 9600bps, 19200 bps
1.2.4 Định dạng dữ liệu:
Sau đây giới thiệu về cách định dạng dùng trong truyền thông nối tiếp.
- Định dạng đồng bộ: Trong truyền đồng bộ, mọi thiết bị dùng mộtxung đồng hồ được phát ra bởi một thiết bị hoặc từ một nguồn xung ngoài.Xung đồng hồ có thể có một tần số cố định hoặc có thể chốt tại nhữngkhoảng thời gian không đều Mọi bít truyền đi được đồng bộ với đồng hồ
- Định dạng không đồng bộ: Trong truyền không đồng bộ, liên kếtkhông bao gồm đường xung đồng hồ, bởi vì mỗi điểm đầu cuối của liên kết
đã có xung đồng hồ cho riêng từng cái Mỗi điểm sẽ cần phải đồng ý cùngmột tần số của đồng hồ và mọi đồng hồ chỉ khác nhau một vài % Mỗi byte
Trang 8cho tín hiệu kết thúc việc truyền trong mỗi một từ được truyền đi Cổng
RS-232 trong PC dùng định dạng không đồng bộ để giao tiếp với modems (thiết
bị mã hoá, giải mã dữ liệu) và các thiết bị khác Dù RS-232 có thể truyền dữliệu đồng bộ nhưng liên kết không đồng bộ vẫn được dùng phổ biến 485 hơn
Trang 9Chương II Cơ sở lý thuyết
1, Giới thiệu về AT89S52
- Cấu trúc bên trong:
- Một số hình ảnh về AT89S52
Trang 10• CPU( CPU centra lprocessing unit):
8- bit data bus; 16- bit address bus; không gian địa chỉ 64Kbyte
Thanh ghi từ trạng thái chương trình;
• Bộ nhớ (Memory):
Trang 11 Bộ nhớ chương trình( ROM) gồm 8Kbyte Flash, ghi xóa hàngnghìn lần.
Stack)
Vùng thanh ghi có chức năng đặc biệt SFR (Special FuntionRegister)
• Bộ UART, có chức năng truyền nhận nối tiếp
• 3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sựkiện
• Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong
• Bộ lập trình (ghi chương trình lên Flash ROM) cho phép người sửdụng có thể nạp các chương trình cho chíp mà không cần các bộ nạp chuyêndụng
• 4 cổng xuất nhập song song 2 chiều 8- bit với 32 chân
1.2, Cấu tạo và chức năng các khối của AT89CS52
Chức năng của CPU là tiến hành các thao tác tính toán xử lý, đưa ra cáctín hiệu địa chỉ, dữ liệu và điều khiển nhằm thực hiện một nhiệm vụ nào đó
do người lập trình đưa ra thong qua các lệnh (instrustions)
Bộ nhớ chương trình và bộ nhớ dữ liệu có không gian địa chỉ riêng biêt
Bộ nhớ chương trình có địa chỉ từ 0x0000 đến 0xFFFF (64Kbyte) Người
sử dụng có thể thiết kế để chip hoạt động với bộ nhớ chương trình tích hợpsẵn trên chip bằng cách nối tín hiệu EA (31) lên Vcc, hoặc hoạt động với bộnhớ chương trình bên ngoài bằng cách nối tín hiệu EA (31) xuống GND.Thông thường , tín hiệu EA được nối cố định lên Vcc hoặc GND nên chỉchạy với một trong hai loại bộ nhớ chương trình
Bộ nhớ chương trình dùng để chứa mã chương trình hướng dẫn CPU thựchiện một nhiệm vụ nào đó AT89S52 có bộ nhớ chương trình 8Kbyte dạngFlash, không bị mất dữ liệu khi ngừng cung cấp nguồn nuôi.Bộ nhớ chươngtrình bên ngoài có dung lượng tối đa là 64Kbyte
Bộ nhớ dữ liệu dùng để chứa dữ liệu (bao gồm các tham số, các biến tạmthời…) AT89S52 có 256byte bộ nhớ dữ liệu dạng SRAM, mất dữ liệu khicắt nguồn nuôi Ngoài ra có thể ghép nối với bộ nhớ SRAM bên ngoài vớidung lượng tối đa la 64Kbyte RAM ngoài và RAM trong có thể cùng được
sử dụng trong cùng một thiết kế
Cổng vào ra song song (Parallel I/O Port)
AT89S52 có 4 cổng vào ra song song, tên lần lượt là P0, P1, P2, P3 Mỗicổng có 8 tín hiệu (nên còn gọi là cổng 8- bit), mỗi tín hiệu gọi là một bit và
có tên la Px.y Trong đó x là số thứ tự của cổng (0→3), y là số thứ tự của bit (0→7)
Trang 12Hầu hết các cổng đều tích hợp, kiêm nhiệm thêm một số tính năng nào đó(ví dụ: ngắt ngoài, cổng truyền thông nối tiếp, đầu vào đếm sự kiện ) Trongphần lớn trường hợp, khi sử dụng các tính năng kiêm nhiệm, người dùngkhông nên sử dụng cổng đó ở chức năng vào/ra thong thường nữa Ngoại vion- chip sẽ nắm quyền điều khiển mức logic tại cổng đó.
Tất cả các cổng đều là cổng hai chiều (bi-directional), tức là có thể dùnglàm cổng vào hoặc cổng ra
Cổng vào dùng để đọc dữ liệu từ bên ngoài, cổng ra dùng để điều khiểnngoại vi bên ngoài
Chiều vào/ ra là độc lập giữa các cổng, thậm chí độc lập giữa các bittrong cùng một cổng
Sau khi reset, tất cả các cổng đều là cổng vào
Các thanh ghi SFR liên quan: mỗi cổng liên quan đến một thanh ghi chứcnăng đặc biệt 8-bit (SFR) có tên trùng với tên của cổng, lần lượt là P0, P1,P2, P3
Trước khi sử dụng cổng, phải cấu hình hướng vào/ra cho cổng
Để cấu hình cổng vào (input port), người dùng phải ghi giá trị logic “1”lên bit trong thanh ghi SFR tương ứng Sau đó có thể đọc mức logic tại cổngbằng cách đọc thanh ghi cổng (SFR) tương ứng
Để cấu hình làm cổng ra (output port), người dùng không phải thực hiệnthem bất kỳ thao tác nào Đơn giản, chỉ cần ghi mức logic mong muốn vàothanh ghi cổng tương ứng
Đặc tính điện: Mức logic 0: U<= 0.45V; I= 1.6mA
Mức logic 1: U>= 2.4V; I= 60µA
Ngắt la những yêu cầu do ngoại vi (là các phần cứng tích hợp trên IChoặc các tác động từ bên ngoài) guwit tới CPU nhằm đòi hỏi những đáp ứngnhất định Mục đích của việc thiết kế cơ chế ngắt trong vi xử lý nhằm tiếtkiệm thời gian cho CPU Trong hầu hết các trường hợp, vi xử lý cần phảithực hiện nhiều nhiệm vụ trong thời gian rất ngắn và liên tục Để đáp ứng kịpthợi với các sự kiện cần xử lý, CPU có thể tiến hành thăm dò (polling) liêntục các sự kiện để xem khi nào chúng xảy ra thì xử lý, đáp ứng lại.Tuy nhiênnếu làm như vậy thì lãng phí rất nhiều thời gian của CPU trong khi còn có rất
Trang 13nhiều nhiệm vụ khác đang chờ được thực hiện, ngoài ra CPU không thể thăm
dò liên tục nhiều sự kiện trong cùng một lúc được Người ta tạo ra ngắt đểCPU không phải thăm dò liên tục một hay nhiều sự kiện đó Bằng cách ghépcác sự kiện cần đáp ứng với các cơ chế ngắt khác nhau, khi một sự kiện nào
đó xảy ra, phần cứng phụ trách ngắt tích hợp trên CPU sẽ tự động báo choCPU biết rằng sự kiện đã xảy ra CPU dừng công việc đang làm lại ( nhưngphải thực hiện xong lệnh đang thực hiện, dù mới chỉ ở giai đoạn tìm nạp mãlệnh), và chuyển sang xử lý xong sự kiện gây ngắt, CPU sẽ tiếp tục quay lạilam tiếp công việc đang dang dở (nhờ hoạt động của ngăn xếp) Nói đến ngắtkhông thể không nói đến mức ưu tiên của các loại ngắt khác nhau Có 2 loạimức ưu tiên ngắt cơ bản là ưu tiên giữa các ngắt xảy ra đồng thời và ưu tiêngiữa các ngắt xảy ra khác thời điểm, chen vào nhau Trong cả hai trường hợp,ngắt có ưu tiên cao hơn sẽ luôn được phục vụ ngay lập tức
AT89S52 có 6 nguyên nhân gây ngắt:
Tên ngắt Nguyên nhân gây ra ngắt
Địa chỉ vector ngắt
Mức
độ ưu tiên cứng
Cờ báo ngắt
Ngắt ngoài 0
Tín hiệu INT0 thayđổi mức logic 1→0,hoặc giữ ở mức logic0
Ngắt ngoài 1
Tín hiệu INT1 thayđổi mức logic 1→0,hoặc giữ ở mức logic0
Ngắt cổng
nối tiếp
Cổng nối tiếp nhậnđược hoặc truyềnxong một khung dữliệu đầy đủ
TX2,EXF2
(T2CON)
Trang 14Các cờ báo ngắt do INT0, INT1, Timer 0, Timer 1 bị xóa khi CPU xử lýchương trình ngắt Còn cờ ngắt của cổng nối tiếp và ngắt do Timer 2 không
tự động xóa, người dùng phải xóa bằng phần mềm
Thanh ghi cho phép ngắt IE (Interrupt Enable):
EA: bít cho phép hoặc cấm tất cả các ngắt Để cho phép một ngắt thì bít
tương ứng với ngắt đó và bít EA pahir được đặt bằng 1 Nếu É=0 tất cả cácngắt đều bị cấm
ET2: bít cho phép ngắtt do Timer 2.
ES: bít cho phép ngắt truyền thong nối tiếp.
ET1: bít cho phép ngắtt do Timer 1.
EX1: bít cho phép ngắt ngoài INT1.
ET0: bít cho phép ngắtt do Timer 0.
EX0: bít cho phép ngắt ngoài INT0.
Mức ưu tiên của ngắt là chỉ số giúp CPU phân xử xem sẽ xử lý ngắt nàotrước khi hai hay nhiều ngắt đồng thời xảy ra, hoặc sẽ dừng việc xử lý mộtngắt lại hay không khi bị một ngắt khác chen vào Khi xảy ra ngắt đồngthời,CPU sẽ phân xử theo trình tự ưu tiên cứng liệt kê ở bảng trên Khi mộtngắt xảy ra chen vào quá trình xử lý dang dở của một ngắt khác, CPU sẽ phân
xử theo mức độ ưu tiên quy định bởi người dùng thông qua thanh ghi đặtmức ưu tiên ngắt IP
Thanh ghi ưu tiên ngắt IP (Interrupt Priority):
MSB
LSB
PT2: bít ưu tiên ngắt do timer 2.
PS: bít ưu tiên ngắt truyền thông nối tiếp.
PT1: bít ưu tiên ngắt do timer 1.
PX1: bít ưu tiên ngắt ngoài INT1.
PT0: bít ưu tiên ngắt do timer 0.
PX0: bit ưu tiên ngắt ngoài INT0.
Timer/Counter là các ngoại vi có chức năng đếm xung nhịp (clock)
Khi đếm xung nhịp bên trong chip gọi là bộ đinh thời hay timer
Trang 15Khi đếm xung nhịp bên ngoài chip đưa và gọi là bộ đếm sự kiện haycounter.
Mỗi xung nhịp xuất hiện them, giá trị của timer/counter sẽ tự động tăngthêm 1
Khi timer/counter đếm vượt quá giá trị giới hạn mà nó có thể biểu diễn,giá trị đếm sẽ tự động xóa về 0 và đếm lại từ đầu Sự kiện này được gọi làtràn trên (overflow)
Giá trị lớn nhất tùy thuộc vào chế độ hoạt động
Khi dừng đếm, giá trị đếm của timer/counter vẫn giữ nguyên, trừ khi mấtnguồn nuôi, reset hay người dùng chủ định xóa bằng lệnh
Khi được cho phép đếm, timer/counter sẽ đếm từ giá trị hiện đang giữ.AT89S52 có 3 timer/counter 16bit lần lượt là timer/counter 0,timer/counter 1, timer/counter 2
Các timer đều có ngắt:
Timer 0 có ngắt do tràn
Timer 1 có ngắt do tràn
Timer 2 có ngắt do tràn hoặc do sự kiện capture
Các thanh ghi liên quan:
- Thanh ghi dữ liệu (hay thanh ghi giá trị đếm):
Thanh ghi dữ liệu TH0, TL0 ,TH1, TL1, TH2, TL2:
- Thanh ghi điều khiển TMOD(Sử dụng cho timer/counter 0 và
timer/counter 1):
-GATE: bit quy định yếu tố cho phép timer/counter đếm hay dừng Nếu
GATE=0, timer/counter sẽ đếm hay dừng phụ thuộc vào trạng thái bit TRx(thanh ghi TCON) Nếu GATE=1, timer/counter sẽ đếm nếu bit TRx=1(thanh ghi TCON) và tín hiệu ngắt ngoài INTx ở mức cao Trong trường hợpnày, nếu TRx-0 hoặc tín hiệu ngắt ngoài INTx ở mức thấp, timer/counter sẽdừng đếm
C/T: bit lựa chọn xung nhịp đưa vào đếm Nếu C/T = 0, xung nhịp đưa
vào đếm chính là xung nhịp của CPU (lúc này gọi là bộ định thời – timer).Nếu C/T = 1, xung nhịp đưa vào đếm là xung nhịp lấy từ bên ngoài vào quatín hiệu T0 và T1 (lúc này gọi là bộ đếm sự kiện – counter)
M1:M0 0:0 = Mode 0: timer/counter 13bit ghép bởi <5bit thấp TL>:<thanh ghi TH>
Trang 161:0 = Mode 2: timer/counter 8bit, đếm bằng TL, khi tràn tự động nạp TH vào
TL.
1:1 = Mode 3: TL0 là timer/counter 8bit, sử dụng các bit điều khiển của
timer0 TH0 là timer 8bit, sử dụng các bit điều khiển của timer 1 Timer 1
không hoạt động ở chế độ này
- Thanh ghi TCON (Sử dụng cho timer/counter 0 và timer/counter 1):
TF1: Cờ ngắt của timer/countet 1, khi =1 báo hiệu rằng timer/counter 1 đã
đếm vượt quá trị lớn nhất mà nó có thể biểu diễn (255 đối với chế độ 8bit và
65535 đối với chế độ 16bit)
TR1: bit cho phép timer/counter 1 hoạt động đếm hoặc dừng.
TF0: Cờ ngắt của timer/countet 0, khi =1 báo hiệu rằng timer/counter 0 đã
đếm vượt quá trị lớn nhất mà nó có thể biểu diễn (255 đối với chế độ 8bit và
65535 đối với chế độ 16bit)
TR0: bit cho phép timer/counter 0 hoạt động đếm hoặc dừng.
IE1: Cờ ngắt của ngắt ngoài 1.
IT1: Bit cho phép chọn loại ngắt ngoài cho INT1.
IE0: Cờ ngắt của ngắt ngoài 0.
IT0: Bit cho phép chọn loại ngắt ngoài cho INT0.
Thanh ghi T2CON (Sử dụng cho Timer/counter 2):
TF2: Cờ báo tràn của Timer 2 TF2 không được thiết lập khi TCLK hoặc
RCLK được đặt bằng 1
EXF2: Cờ ngắt ngoài của Timer 2 EXF2 =1 khi xảy ra sự nạp lại hoặc
thu nhận EXF2=1 cũng gây ra ngắt do Timer 2 nếu như ngắt này được lậptrình cho phép
RCLK: Bit chọn Timer cung cấp xung nhịp cho đường nhận của cổng nối
tiếp
TCLK: Bit chọn Timer cung cấp xung nhịp cho đường truyền của cổng
nối tiếp
EXEN2: Bit điều khiển hoạt động của Timer2, khi EXEN2=1 việc nạp lại
hoặc thu nhận (capture) diễn ra khi có sự chuyển trạng thái từ 1 sang 0 ở chânT2EX nếu Timer2 không sử dụng để cung cấp tốc độ baud cho cổng nối tiếp
Trang 17TR2: Bit điều khiển hoạt động của Timer 2.
C/T2: Bit lựa chọn xung nhịp đưa vào đếm (tương tự TR0 và TR1).
CP/RL2: Bit chọn chế độ capture hay nạp lại của Timer 2 Khi CP/RL2=1
việc thu nhận được thực hiện khi có sườn xuống ở chân T2EX và bit EXEN2được đặt bằng 1 Khi CP/RL2=0 việc nạp lại được thực hiện khi hoặc làTimer2 tràn hoặc khi có sương xuống ở chân T2EX và bit EXEN2 được đặtbằng 1.Nếu RCLK hoặc TCLK=1, bit này được bỏ qua, Timer 2 tự nạp khitràn
Các chế độ của Timer 2:
- Thanh ghi điều khiển T2MOD (Sử dụng cho Timer 2):
T2OE: Bit cho phép đầu ra khi sử dụng Timer 2 để tạo xung (chế độ
Clock Out)
DCEN: Bit cho phép Timer 2 hoạt động như một bộ đếm tiến/lùi.
- Thanh ghi chứa giá trị nạp lại (chế độ Auto- Reload) hoặc chứa giá trị
capture (chế độ Capture) (Sử dụng cho Timer 2):
Thanh ghi RCAP2H:
Thanh ghi RCAP2L: