- Bộ UART, có chức năng truyền nhận nối tiếp.3 bộ Timer/Counter 16 bit thực hiệnchứ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ậ
Trang 1ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ
Đồ án môn: VI ĐIỀU KHIỂN
Đề tài: Thiết kê mô hình đo gia tốc của một vật chuyển
động tịnh tiến
Giáo viên hướng dẫn : VŨ THỊ THU HƯƠNG
Sinh viên thực hiện:
Lớp: CNKT Điện Tử 3 Khóa 4
Hà Nội 04-2012
Trang 2LỜI NÓI ĐẦU
Ngày nay cùng với sự phát triển của cá ngành khoa hoc kỹ thuật, mà KT Điện
tử đóng vai trò quan trọng trong các lĩnh vực khoa học kỹ thuận, quản lý, công nghiệp tự động hóa, thông tin liên lạc… do đó chúng ta phải nắm bắt và vận dụng
nó một cách có hiệu quả nhằm góp phần vào sự phát triển của khoa học kỹ thuật thế giới nói chung và khoa học kỹ thuật điện tử nói riêng
Xuất phát từ nhu cầu thực tế của các doanh nghiệp việc đo gia tốc là rất cầnthiết trong các thiết bị như xe máy, ô tô, tàu hỏa, tàu thủy, máy bay…hay máy mócđộng cơ thiết bị công nghiệp, một thiết bị khá quan trọng trong các sản phẩm nghành công nghiệp nặng Từ thực tế đó góp phần giúp người vận hành có thêm chút thông tin quan trọng
Do đó trong khuôn khổ đề tài này chúng em thiết kế bộ đo gia tốc hiển thị trên LCD
Mặc dù chúng em rất cố gắng để hoàn thành đồ án này, nhưng không tránh khỏi những thiếu sót mong quý thầy cô có những ý kiến giảng giải quý giá Chúng
em mong được đón nhận những ý kiến đóng góp của thầy cô Cuối cùng xin chân thành cảm ơn quý thầy cô và các bạn sinh viên
Chúng em xin trân thành cảm ơn!
Nhóm sinh viên
Trang 3MỤC LỤC
PHẦN I: GIỚI THIỆU KHÁI QUÁT 4
A/ PHÂN TÍCH BÀI TOÁN 4
B/ GIỚI THIỆU LINH KIỆN TRONG MẠCH 4
1, IC AT89S52 4
1.1 Cấu tạo IC 5
1.2 Các chân chức năng của IC8051 7
1.3 Phần cứng tối thiểu để một chip AT89S52 8
1.4 Cấu tạo và chức năng các khối của AT89S52 8
PHẦN II THIẾT KẾ MẠCH GHÉP NỐI 23
A Thiết kế phần cứng 23
B Mạch in 24
C Nguyên lý hoạt động của mạch 24
D Thiết kế phần mềm 24
1.Một số lệnh cho LCD cần nhớ 24
2 Code chương trình 25
PHẦN III: KẾT LUẬN 31
Tài liệu tham khảo 31
Trang 4PHẦN I: GIỚI THIỆU KHÁI QUÁT
A/ PHÂN TÍCH BÀI TOÁN
Bài toán đặt ra là thiết kế một bộ đo gia tốc của vật chuyển động, vì thế phảicó:
Cảm biến để nhận biết vật đi qua
Khối sử lý trung tâm 89S52
Khối hiển thị LCD
Sơ đồ khối của hệ thống được minh hoạ theo hình sau:
B/ GIỚI THIỆU LINH KIỆN TRONG MẠCH
Trang 5Hình 1: Hình dạng thực tế IC 89S52
Sơ đồ chân:
1.1 Cấu tạo IC
CPU( CPU centra lprocessing unit):
- 8- bit data bus; 16- bit address bus; không gian địa chỉ 64Kbyte
- Thanh ghi tích lũy A;
- Thanh ghi tích lũy phụ B;
- Đơn vị logic học (ALU);
Trang 6- Thanh ghi từ trạng thái chương trình;
- Bốn băng thanh ghi;
- Con trỏ ngăn xếp
Bộ nhớ (Memory):
- Bộ nhớ chương trình( ROM) gồm 8Kbyte Flash, ghi xóa hàng nghìn lần
- Bộ nhớ dữ liệu( dạng SRAM) gồm 256 byte (chứa ngăn xếp – Stack)
- Vùng thanh ghi có chức năng đặc biệt SFR (Special Funtion Register)
- Bộ UART, có chức năng truyền nhận nối tiếp.3 bộ Timer/Counter 16 bit thực hiệnchứ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épngườ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ạpchuyên dụng.4 cổng xuất nhập song song 2 chiều 8- bit với 32 chân
Trang 7Chức năng duy nhất của Port 1 là chức năng xuất nhập cũng như các Port khác Port1
có thể xuất nhập theo bit và theo byte
Port 2( P2.0=>P2.7)
Port 2 ngoài chức năng là cổng vào/ra như Port 0 và Port 1, Port 2 còn là byte cao củabus địa chỉ khi sử dụng bộ nhớ ngoài
Port 3( P3.0=>P3.7)
Trang 8Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng, cụ thểnhư sau:
Chân /PSEN (pin 29): là chân điều khiển đọc chương trình ở bộ nhớ ngoài
Chân ALE (pin 30): ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần
số dao động của vi điều khiển Tín hiệu ALE được dùng để cho phép vi mạchchốt bên ngoài như 7473
1.2 Các chân chức năng của IC8051
Chân /EA (pin 31): Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớtrong hay ngoài EA=1 thì thực hiện chương trình trong ROM nội EA=0 thựchiện ở RAM ngoài
RST( Reset: pin 9): Ngõ vào reset trên chân số 9 khi RST=1 (là ngắt cứng có mức
ưu tiên cao nhất) thì bộ vi điều khiển sẽ được khởi động lại thiết lập ban đầu
XTAL1, XTAL2 (pin 18, 19): Hai chân này được nối song song với thạch anh tần
số max=33 Mhz Để tạo dao động cho bộ vi điều khiển
Vcc,GND: cung cấp nguồn nuôi cho bộ vi điều khiển cấp qua chân 20 và 40
Trang 91.3 Cấu tạo và chức năng các khối của AT89S52
Đơn vị xử lý trung tâm CPU:
Bộ nhớ:
- 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ợp sẵntrê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ôngthường , tín hiệu EA được nối cố định lên Vcc hoặc GND nên chỉ chạy vớimộ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 khi cắtnguồn nuôi Ngoài ra có thể ghép nối với bộ nhớ SRAM bên ngoài với dung
Trang 10lượng tối đa la 64Kbyte RAM ngoài và RAM trong có thể cùng được sử dụngtrong cùng một thiết kế.
- Vùng thanh ghi có chức năng đặc biệt: SFR (special function register)
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ỗi cổ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)
- Hầ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 ) Trong phần lớntrường hợp, khi sử dụng các tính năng kiêm nhiệm, người dùng không nên sửdụng cổng đó ở chức năng vào/ra thong thường nữa Ngoại vi on- chip sẽ nắmquyền điều khiển mức logic tại cổng đó
Trang 11- Tất cả các cổng đều là cổng hai chiều (bi-directional), tức là có thể dùng làm cổngvà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ển ngoại vibê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 bit trong cùngmộ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ức nă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 bittrong thanh ghi SFR tương ứng Sau đó có thể đọc mức logic tại cổng bằ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ện them bất
kỳ thao tác nào Đơn giản, chỉ cần ghi mức logic mong muốn vào thanh ghi cổngtươ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
Cổng Vào Ra Nối Tiếp(Serial Port)
- 8051 có 1 cổng vào ra nối tiếp(UART)
- Tín hiệu liên quan:RxD(P3.0, chân số 10) va TxD(P3.1, chân số 11)
- Dữ liệu đi và về hoàn toàn độc lập với nhau, do đó có thể truyền nhận đồng thời,
và cổng nối tiếp có đặc tính như vâyj được gọi là song công(Full duplex)
Các thanh ghi liên quan:
Dữ liệu nhận về thong qua RxD, tới 1 thanh ghi chức năng đặc biệt(8-bit) tên làSBUF
Trang 12Dữ liệu truyền thong qua TxD, từ 1 thanh ghi chức năng đặc biệt(8-bit) cũng tên
là SBUF
Thanh ghi điều khiển SCON:
SM0-SM1
0-0=mode0:chế độ đồng bộ 8 bit,clock =1/12 Fosc
0-1=mode1:chế độ dị bộ 8-bit, clock thay đổi được tùy ý
1-0=mode2:chế độ dị bộ 9-bit,clock= 1/64 Fosc hoặc 1/32 Fosc
1-1=mode3:chế độ dị bộ 9-bit,clock thay đổi được tùy ý
SM2:bit cho phép chế độ gioa tiếp đa vi xử lý(multimicroprocessor),mode 2 hoặc
mode3.Trong các chế độ thong thường,SM2=0
REN:bit cho phép nhận dữ liệu nếu ghi vào đó giá trị logic 1.Giá trị logic 0 tại bit
này sẽ”khóa cổng “ với các dự lieuj gửi đến
TB8:bit dữ liệu thứ 9 phát đi trong các chế độ truyền nhận 9-bit(mode 2 và 3) RB8: bit dữ liệu thứ 9 nhận về trong các chế độ truyền nhận 9-bit(mode 2 và 3) TI:cờ báo ngắt truyền ,khi =1 báo hiệu rằng 1 khung dữ liệu (8 hay 9 bit tùy chế
độ) đã được truyền xong Cờ này không tự động xóa về 0 khi chương trình phục
vụ ngắt thực hiện.User phải xóa bằng lệnh
RI:cờ báo ngắt nhận,khi =1 báo hiệu rằng 1 khung dữ liệu (8 hay 9-bit tùy chế
độ) đã được nhận về đầy đủ,Cờ này không tự động xóa về 0 khi chương trìnhphục vụ ngắt thực hiện.User phải xóa bằng lệnh
Với cổng nối tiếp các bit dữ liệu được truyền lần lượt trên cùng 1 đường tín hiệuthay vì truyền cùng một lúc trên các đường tín hiệu khác nhau.Thông thường thì việctruyền dữ liệu bằng cổng nối tiếp phải tuân theo một cơ chế, một giao thức hay mộtnguyen tắc nhất định Có thể kể ra một số giao thức như SPI,I2C,SCI
Cổng nối tiếp có 2 kiểu truyền dữ liệu chính:
Truyền đồng bộ(synchronous):thiết bị truyền và nhận đều dung chung một xungnhịp (clock)
Trang 13Truyền dị bộ(asynchronous):thiết bị truyền và thiết bị nhận sử dụng hai nguồnxung nhịp riêng Tuy nhiên hai nguồn xung này không đươc khác nhau quá nhiềuXung nhịp là yếu tố không thể thiếu trong truyền dữ liệu nối tiếp và nó có vai tròxác định giá trị của bit dữ liệu
Cổng nối tiếp có thể có một trong các tính năng sau:
Đơn công: thiết bị chỉ có thể hoặc truyền hoặc nhận dữ liệu
Bán song công:thiết bị có thể truyền và nhận dữ liệu nhưng tại một thời điểm cóthể làm 1 trong 2 việc đó
Song công:thiết bị có thể truyền và nhận dữ liệu đồng thời
Ngắt (Interrupts)
Ngắt là những yêu cầu do ngoại vi (là các phần cứng tích hợp trên IC hoặc các tácđộng từ bên ngoài) guwit tới CPU nhằm đòi hỏi những đáp ứng nhất định Mục đíchcủa việc thiết kế cơ chế ngắt trong vi xử lý nhằm tiết kiệm thời gian cho CPU Tronghầu hết các trường hợp, vi xử lý cần pahir thực hiện nhiều nhiệm vụ trong thời gianrất ngắn và liên tục Để đáp ứng kịp thợi với các sự kiện cần xử lý, CPU có thể tiếnhành thăm dò (polling) liên tục các sự kiện để xem khi nào chúng xảy ra thì xử lý,đáp ứng lại.Tuy nhiên nếu làm như vậy thì lãng phí rất nhiều thời gian của CPU trongkhi còn có rất nhiề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 để CPUkhông phải thăm dò liên tục một hay nhiều sự kiện đó Bằng cách ghép các sự kiệncầ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ứngphụ trách ngắt tích hợp trên CPU sẽ tự động báo cho CPU biết rằng sự kiện đã xảy ra.CPU dừng công việc đang làm lại ( nhưng phả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ại lam tiếp công việc đang dang dở (nhờ hoạt động của ngănxếp) Nói đến ngắt khô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ại mứ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
Trang 14AT89S52 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
Trang 15khung dữ liệu đầy đủ (SCON)
Ngắt
timer/counter2
Timer/Counter2 đếm tràntrên hoặc tín hiệu T2EX thay đổi mức logic 1→0
(T2CON)
Cá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 phải được đặt bằng 1 Nếu EA=0 tất cả các ngắ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ào trước khihai hay nhiều ngắt đồng thời xảy ra, hoặc sẽ dừng việc xử lý một ngắt lại hay khôngkhi bị một ngắt khác chen vào Khi xảy ra ngắt đồng thời,CPU sẽ phân xử theo trình
tự ưu tiên cứng liệt kê ở bảng trên Khi một ngắ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ùngthông qua thanh ghi đặt mức ưu tiên ngắt IP
Thanh ghi ưu tiên ngắt IP (Interrupt Priority):
Trang 16MSB 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.
Bộ định thời/ Bộ đếm (Timers/ Counters)
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
Khi đếm xung nhịp bên ngoài chip đưa và gọi là bộ đếm sự kiện hay counter
Mỗi xung nhịp xuất hiện them, giá trị của timer/counter sẽ tự động tăng thê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ất nguồ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:
Trang 17 Thanh ghi dữ liệu (hay thanh ghi giá trị đếm): TH0, TL0 (Timer0) TH1, TL1 (Timer1) TH2, TL2 (Timer2) đều là các thanh ghi 8 bit.
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ệungắt ngoài INTx ở mức cao Trong trường hợp này, nếu TRx-0 hoặc tín hiệu ngắtngoà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 qua tí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>
0:1 = Mode 1: timer/counter 16bit ghép bởi <thanh ghi TH>:<thanh ghi TL>
1: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):