Khi ấn 1 trong các nút ấn thì 04 LED bảy thanh sẽ hiển thj số lần ấn nút. Cảm biến hồng ngoại 1 dùng để Reset, cảm biến hồng ngoại 2 để đảo chiều đếm.PS: tài liệu có file mô phỏng proteus và code lập trình.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
HỒNG NGOẠI Giáo viên hướng dẫn : Ngyễn Thu Hà
Nhóm thực hiện đề tài : Nhóm 3
Thành viên trong nhóm : Hoàng Thị Nhung
Hoàng Thị Thu Nguyễn Thị Tuyết Hoàng Văn Tuấn Phan Hồng Sơn
Hà Nội - 2017
Trang 2Ứng dụng họ vi điều khiển 8051 ghép nối 04 led bảy thanh để hiển thị số lần ấn phím và
số lần tác động vào cảm biến hồng ngoại.
- Giáo Viên Bộ Môn:
Cô: Nguyễn Thu Hà
- Nhóm 3: Lớp Điện 4 – K9 gồm:
Phan Hồng Sơn.
Nhận xét của giáo viên bộ môn
Trang 3
Mục Lục
Chương 1: Phân tích yêu cầu công
nghệ………4
1.1 Phân tích và giới hạn về đặc điểm của các thiết bị………4
1.1.1 Tìm hiểu chung về hệ thống………4
1.1.2 Các đặc điểm chính của các thiết bị……… 4
1.2 Sơ đồ chân và chức năng của các vi mạch sử dụng……… 7
1.2.1 IC 89C51RD2……… 9
1.2.2 Cảm biến hồng ngoại V1……….9
Chương 2: Thiết kế hệ thống……….10
2.1 Xây mạch nguyên lý và thuyết minh……….10
2.1.1 Mạch nguyên lý……… 10
2.1.2 Thuyết minh hoạt động……….11
2.2 Tính chi tiết về các tham số trong hệ thống……… 12
2.2.1 Vi điều khiển 89C51RD2……….12
2.2.2 Led bảy thanh……… 13
2.3 Xây dựng thuật toán……… 16
2.3.1 Thuật toán điều khiển hệ thống………16
2.3.2 Thuật toán đảo chiều đếm ……… 17
2.3.3 Thuật toán đếm thuận nghịch ……….18
2.3.4 Thuật toán reset đếm:" Đem =0"……… 19
2.3.5 Thuật toán hiển thị: " Đem"……… 20
2.4 Viết chương trình ……… 21
2.5 Nạp và chạy mạch mô phỏng trên Proteus……… 24
Chương 3: Kết luận……… 24
Tài liệu tham khảo:………24
Trang 4Lời Nói Đầu
Ngày nay, các vi điều khiển đã thâm nhập vào mọi lĩnh vực vủa đời sống từ dân sự,quân sự đến an ninh quốc phòng, có mặt trong hầu hết các ứng dụng hàng ngày từnhững thiết bị nhỏ như điện thoại di động, máy nhắn tin, trò chơi điện tử, các thiết bịgia dụng (máy giặt, điều hòa, tủ lạnh….) đến những thiết bị lớn như ôtô, tàu thủy, xelửa, máy bay, hệ thống mạng điện thoại, các bộ điều khiển tự động trong nhà máy, các
bộ điều chỉnh trong nhà máy điện hạt nhân, trong các hệ thống điều khiển ánh sáng…Với một loạt các ứng dụng thú vị trên, ở đây chúng em xin giới thiệu một ứng dụng nhỏ dùng vi điều khiển 8051 (cụ thể là vi điều khiển 89C51RD2) ghép nối
04 LED bảy thanh để hiện thị số lần ấn phím và số lần tác động vào cảm biến hồng ngoại.
Được sự giúp đỡ và chỉ bảo tận tình của cô giáo Nguyễn Thu Hà và các bạn trong
lớp, nhóm chúng em đã hoàn thành bài tập lớn môn học này Tuy nhiên do thời gian vàtrình độ còn hạn chế, còn thiếu kinh nghiệm thực tế nên không tránh khỏi những saisót Chúng em rất mong nhận được những ý kiến và đóng góp của các thầy cô và cácbạn để chúng em có thể hoàn thiện thiết kế hơn nữa
Xin chân thành cảm ơn !
Trang 5Chương 1: Phân tích yêu cầu công nghệ.
1.1 Phân tích và giới hạn về đặc điểm của các thiết bị.
1.1.1 Tìm hiểu chung về hệ thống.
Nội dung đề tài: “Ứng dụng họ vi điều khiển 8051 ghép nối 04 led bảy thanh đểhiển thị số lần ấn phím và số lần tác động vào cảm biến hồng ngoại.”
Với yêu cầu của đề tài thì hệ thống gồm có
- Vi điều khiển 89C51RD2: Thiết bị chính dùng để nhận dữ liệu điều khiển, sau đó xử
lý tính toán và xuất dữ liệu ra LED 7 thanh
- Hai cảm biến hồng ngoại: Dùng nhận tín hiệu điều khiển (hồng ngoại) rồi chuyểnthành tín hiệu số đưa vào vi điều khiển Cảm biến thứ nhất dung để Reset, cảm biếnthứ 2 dùng để đảo chiều đếm
- Bốn LED bảy thanh: Hiển thị số lần ấn nút
- Bốn nút ấn N1, N2, N3, N4: Để tác động điều khiển hiển thị số lần ấn nút
Phân tích giới hạn của đề tài
- Với nội dung chính của đề tài là ứng dụng họ vi điều khiển 8051 ghép nối 04 ledbảy thanh để hiển thị số lần ấn phím và số lần tác động vào cảm biến hồng ngoại,không phải là ứng dụng lớn nên ta dùng vi điều khiển 89C51RD2 không cần ghép nốithêm bộ nhớ ngoài
- Bốn LED bảy thanh dùng để hiển thị chỉ hiện thị được giá trị 0000 – 9999, độ chínhxác cao, sai số bằng 0
- Hai cảm biến hồng ngoại dùng để Reset và đảo chiều đếm cho độ chính xác cao khithực hiện quá trình đếm số lần ấn nút
1.1.2 Các đặc điểm chính của các thiết bị.
a) Đặc điểm chính của vi điều khiển 89C51RD2
- Sơ đồ khối:
Trang 6Hình1.1: Sơ đồ khối của 89C51RD2
Các ngõ tín hiệu điều khiển :
Ngõ tín hiệu PSEN (Program store enable):
- PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng thường được nói đến chân 0E\ (output enable) của Eprom cho phép đọc cácbyte mã lệnh
- PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh Các mã lệnh củachương trình được đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh bêntrong 8951 để giải mã lệnh Khi 8951 thi hành chương trình trong ROM nội PSEN sẽ ởmức logic 1
Ngõ tín hiệu điều khiển ALE (Address Latch Enable ) :
- Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữliệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ 30 dùnglàm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúngvới IC chốt
- Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò làđịa chỉ thấp nên chốt địa chỉ hoàn toàn tự động Các xung tín hiệu ALE có tốc độ bằng1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các phầnkhác của hệ thống Chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong
8951
Ngõ tín hiệu EA\(External Access):
- Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0 Nếu ở mức
1, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte Nếu ởmức 0, 8951 sẽ thi hành chương trình từ bộ nhớ mở rộng Chân EA\ được lấy làm châncấp nguồn 21V khi lập trình cho Eprom trong 8951
Trang 7Khoảng cách làm việc hiệu quả 2 – 5 cm, điện áp làm việc là 3.3 – 5 V độ nhạysáng của cảm biến được điều chỉnh bằng chiết áp, cảm biến dễ lắp ráp, dễ sử dụng, …
Có thể được sử dụng rộng rãi trong robot tránh chướng ngại vật, xa tránh chướngngại vật và dò đường, …
Thông số kỹ thuật
Bộ so sánh sử dụng LM393, làm việc ổn định
Điện áp làm việc: 3.3 – 5 V DC
Trang 8Khi bật nguồn , đèn báo nguồn màu đỏ sáng.
OUT: Đầu ra kỹ thuật số (0 và 1)
1.2 Sơ đồ chân và chức năng của các vi mạch sử dụng
Hình 1.3: Sơ đồ chân của 89C51RD2
Chức năng các chân của 89C51RD2
Trang 9- AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập Trong đó có
24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có thể hoạtđộng như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus
dữ liệu và bus địa chỉ a.Các Port: Port 0 :
- Port 0 là port có 2 chức năng ở các chân 32 – 39 của 8951 Trong các thiết kế cỡnhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO Đối với các thiết
kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu
- Port 1: là port IO trên các chân 1-8 Các chân được ký hiệu P1.0, P1.1, P1.2, … cóthể dùng cho giao tiếp với các thiết bị ngoài nếu cần Port 1 không có chức năng khác,
vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài
- Port 2 : - Port 2 là 1 port có tác dụng kép trên các chân 21 - 28 được dùng như cácđường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mởrộng
-Port 3: - Port 3 là port có tác dụng kép trên các chân 10 - 17 Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở bảng sau:
Bit Tên Chức năng chuyển đổiP3.0 RXT Ngõ vào dữ liệu nối tiếpP3.1 TXD Ngõ vào dữ liệu nối tiếpP3.2 INT0\ Ngõ vào ngắt cứng thứ 0P3.3 INT1\ Ngõ vào ngắt cứng thứ 1P3.4 T0 Ngõ vào của Timer/Counter thứ 0P3.5 T1 Ngõ vào của Timer/Counter thứ 1P3.6 WR\ Tín hiệu ghi dữ liệu lên bộ nhớ
ngoàiP3.7 RD\ Tín hiệu đọc bộ nhớ dữ liệu ngoài
Bảng 1.1: Chức năng của Port3
1.2.2 LED bảy thanh
Sơ đồ chân
Trang 10Hình 1.4: Sơ đồ chân LED 7 thanh
Chức năng của LED 7 thanh
Được dùng để hiển thị số liệu trong các thiết bị đo, trong các bảng hiệu, trong cácthiết bị số, …
1.2.3 Cảm biến hồng ngoại V1.
Sơ đồ chân
Hình 1.5: Sơ đồ nguyên lý của cảm biến hồng ngoại
Chức năng của cảm biến
Dùng để phát hiện vật cảm, người, dò đường… Nên được sử dụng rộng rãi trongcác lĩnh vực đo lường điều khiển, an ninh, tự động hóa, …
Trang 12- Ban đầu gán biến đếm “Dem = 0” Khi ấn một trong các nút ấn N1 N2 N3 N4,biến đếm “Dem” sẽ tăng 1 giá trị đơn vị sau mỗi lần ấn, với điều kiện biến “TG = 0”,với M lần ấn thì biến “Dem = Dem + M” Ngược lại biến đếm “Dem” sẽ giảm 1 giá trịđơn vị sau mỗi lần ấn, với điều kiện biến “TG = 1”, với M lần ấn thì biến “Dem =Dem - M”, nếu biến “Dem <= 1” thì gán biến “Dem = 0” để ngăn không cho biến
“Dem” nhận giá trị âm
- Cảm biến reset sẽ gán biến “Dem = 0” sau mỗi lần tác động
Công thức tính toán biến “Dem”
- Gán Dem = 0 :
+ Với TG = 0 thì Dem = Dem + M
+ Với TG = 1 thì Dem = Dem – M
+ Nếu Dem <=1 thì Dem = 0
+ Với M là số lần ấn nút
2.1.2 Thuyết minh hoạt động
- Ấn một trong các nút ấn N1 N2 N3 N4 lần 1, bốn LED 7 sẽ hiển thị số lần ấn là
số 1 Ấn một trong các nút ấn N1 N2 N3 N4 lần 2, bốn LED 7 sẽ hiển thị số lần ấn là
số 2 Ấn một trong các nút ấn N1 N2 N3 N4 lần 3, bốn LED 7 sẽ hiển thị số lần ấn là
số 3 Quá trình lặp lại tương tự với M lần ấn một trong các nút ấn N1 N2 N3 N4, bốnLED 7 sẽ hiển thị số lần ấn là số M
- Tác động vào cảm biến đảo chiều đếm lần 1, bốn LED 7 đang hiển thị số lần ấntheo chiều thuận (tăng) sẽ đảo chiều đếm sang hiển thị số lần ấn theo chiều nghịch(giảm) Tác động vào cảm biến đảo chiều đếm lần 2, bốn LED 7 đang hiển thị số lần
ấn theo chiều nghịch (giảm) sẽ đảo chiều đếm sang hiển thị số lần ấn theo chiều thuận(tăng) Tác động vào cảm biến đảo chiều đếm lần 3, bốn LED 7 đang hiển thị số lần ấntheo chiều thuận (tăng) sẽ đảo chiều đếm sang hiển thị số lần ấn theo chiều nghịch(giảm) Quá trình lặp lại tương tự với N lần tác động vào cảm biến
- Tác động vào cảm biến reset, bốn LED 7 sẽ hiển thị số lần ấn là số 0
2.2 Tính chi tiết về các tham số trong hệ thống.
2.2.1 Vi điều khiển 89C51RD2.
Chọn vi điều khiển 89C51RD2 do hãng Intel sản xuất Các sản phẩm AT89C51RD2thích hợp cho những ứng dụng điều khiển Việc xử lý trên byte và các toán số học ởcấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữ liệu nhanh trênRAM nội Tập lệnh cung cấp một bảng tiện dụng của những tập lệnh số học 8 bit gồm
cả lệnh nhân và chia Nó cung cấp những hỗ trợ mở rộng trên chip dùng cho nhữngbiến 1 bit như là kiểu dữ liệu riêng biệt cho phép quản lý và kiểm tra từng bit trực tiếptrong hệ thống điều khiển
Vi điều khiển 89C51RD2 cung cấp những đặc tính chuẩn như : 4 Kbyte bộ nhớ chỉđọc có thế xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2TIME/COUNTER 16 Bit, 5 vecto ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bánsong công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP
Trang 13Các đặc điểm của chip 89C51RD2 được tóm tắt như sau :
4Kbyte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xóa
Tần số hoạt động từ: 0Hz đến 24MHz
3 mức khóa bộ nhớ lập trình
2 bộ Timer/counter 16 bit
128 Byte RAM nội
4 Port xuất /nhập I/O 8 bit
Giao tiếp nối tiếp
Ở trên là hình dạng LED7 ngoài thực tế và trong mạch nguyên lý và cấu tạo
Cấu tạo của LED chúng ta nhìn trên rất đơn giản chúng chỉ gồm các LED đơn đượcxếp lại với nhau thành hình như trên hình vẽ Các LED đơn này chỉ chung nhau Anot
Trang 14hoặc Katot và riêng nhau các chân con lại Anot hặc Katot Nhiệm vụ của chúng ta làcho sáng các LED đơn đó để cho nó thành số hay kí tự đơn giản.
Hiện nay LED 7 được sản xuất theo 2 kiểu là Anot chung và Katot chung và đượcđiều khiển làm việc tương tự như bơm dòng hay tiêu thụ dòng của các LED đơn cótrong LED7 (Thường hay thiết kế theo kiểu bơm dòng cho LED) Thông thường trongcác mạch thiết kế thực tế người thiết kế thường hay sử dụng loại Anot chung Phươngpháp ghép nối là cấp dòng, đảo trạng thái thông qua đệm và quét LED
Ghép nối led 7 thanh
Để ghép nối với LED7 có thể có nhiều cách, nhưng phải đảm bảo sao có thể điềukhiển tắt mở riêng từng LED đơn trong đó để tạo ra các số và các ký tự mongmuốn.Các IC điều khiển đều khó khả năng sinh dòng kém tức là dòng đầu ra của cácchân ICs nhỏ hơn khả năng nuôi dòng Do vậy, nếu ghép nối trực tiếp các net với cácchân cổng IC thì loại Anode chung là thích hợp hơn cả Cần phải chú ý dòng dồn vềICs quá mức chịu được thì cũng không được vì làm nóng và dei ICs điều khiển
Hai cách ghép nối thường dùng:
- Cách 1: Dùng trực tiếp các chân điều khiển (vi xử lý)
Đối với cách này thì nhìn thì rất tốn chân của vi xử lý Và dòng của LED sẽ dồn tất
cả về vi xử lý Nếu một hệ thống lớn thì cách này không ổn vì ảnh hưởng đến vi xử lý
và nhiều dòng dồn về vi xử lý sẽ làm vi xử lý nóng và dẫn tới chết ( chúng ta tưởngtượng xem nếu mà hệ thống nhiều phần điều khiển từ các chân vi xử lý mà tất cả cáctải điều khiển dồn trực tiếp dòng về vi xử lý thì lúc đó dòng trong 1 thời điểm khá lớnvượt quá ngưỡng cho phép của vi xử lý
Dòng mà vi xử lý chịu đựng được cũng khá nhỏ đâu dưới 100mA ) Các này chỉdùng được hệ thống điều khiển ít, mạch dùng vi xử lý khá đơn giản như hiện thị LED,đếm số từ 0 đến 9
Hinh 2.4: Ghép nối AT 89C51 với led 7 thanh
Trang 15- Cách 2 : Dùng IC giải mã BCD sang LED 7 thanh
Hình 2.5: Dùng IC giải mã BCD sang LED 7 thanh
Sử dụng IC giải mã 7447 để giả mã từ mã BCD sang mã LED7 Đối với cách nàythì trông rất ổn Vừa tiếp kiệm được chân vi xử lý và tránh được dòng dồn về vi xử lý(dòng ở đây được dồn về 7447) Đây là cách mà người thiết kế thường dùng trong các
hệ thống cần đến hiện thị
Thông thường các thiết kế, LED 7 thanh được dùng để hiện thị các giá trị các giá trị
số từ 0 đến 9 và đôi khi cần phải hiện thị các kí tự đơn giản như A đến F trong hệthống để báo trạng thái của hệ thống Các giá trị hiện thị bao gồm nhiều chữ số tức làchúng ta phải dùng đến nhiều LED7 ghép lại thì mới hiện thị được nhiều số Ví dụ nhưmuốn hiện thị số 123 chả hạn thì chúng ta phải dùng đến 3 LED 7 thanh ghép lại.Như vậy để ghép nhiều LED 7 thanh thay vì chúng ta phải dùng 8 chân riêng rẽ chomỗi LED Ví dụ để hiện thị được 3 chữ số lên LED 7 (123 chẳng hạn) khi đó ta sẽ mất3x8 = 24 chân dữ liệu điều khiển để hiện thị được 3 chữ số Như vậy sẽ rất tốn chân vi
xử lý, do vậy người ta dùng chung các đường dữ liệu cho các LED 7 thanh và thiết kếthêm các tín hiệu điều khiển cấp nguồn riêng rẽ cho từng LED 7 một hay là cấp nguồncho các chân Anot chung hay Katot chung Nhìn trên sơ đồ trên ta thấy được kiểu ghépnối giữa các LED Các đường dữ liệu vào của 3 LED được chung với nhau và các chânđiều khiển nguồn cho các LED được riêng rẽ và được điều khiển bằng transitor( khuếch đại dòng) Như vậy đối với mạch trên chúng ta tiếp kiệm được nhiều chân vi
xử lý Đối với mạch trên và cách ghép nối như trên thì mất tối đa chỉ có 11 chân vi xửlý
Trang 16Hinh 2.6: Ghép nối với nhiều led 7 thanhTám chân dữ liệu của LED 7 được chung nhau và chung được ghép nối qua 2 cách :Thứ nhất dùng vào trực tiếp các chân vi xử lý và thứ 2 là qua các IC đệm hay IC giảimã Nhưng trong thiết kế không mấy khi người ta cho trực tiếp các chân dữ liệu đóvào trực tiếp vi xử lý mà người ta phải cho qua các IC đệm hay giải mã đối với hệthống lớn Chỉ những mạch đơn giản người ta mới cho vào trực tiếp vi xử lý.Thôngthường người ta dùng thêm các IC đệm hay giải mã như ULN2803, 74LS47
Đối với phương pháp ghép LED như thế này thì làm sao điều khiển được hiện thị số
123 Nếu chúng ta mới nhìn thì sẽ thấy các LED 7 sẽ hiện thị giống nhau vì chúngchung nhau đường dữ liệu Nhưng không phải là vậy Nếu chung ta cho từng thời điểmtừng LED sáng 1 thì chúng ta sẽ thấy khác đó Số 123 sẽ được hiện thị lên 3 LED đó
Đó là thuật toán quét LED dựa vào hiện tượng lưu ảnh trong mắt khi chúng ta quét vớitần số lớn
Như vậy đối với phương pháp này chúng ta tiếp kiệm được một số lượng lớn chân
vi xử lý và đồng thời tiếp kiệm được năng lượng tiêu thụ do phương pháp quét LEDtrong thời gian ngắn Khi đó tối đa trong 1 thời điểm có 1 LED sáng toàn bộ thôi Cầnphải tính toán giá trị dòng vào cho LED sao cho LED sáng đẹp bằng cách thêm bớtđiện trở
2.3 Xây dựng thuật toán.
2.3.1 Thuật toán điều khiển hệ thống.