ĐỒ ÁN TỐT NGHIỆP CƠ ĐIỆN tử
ĐỒ ÁN TỐT NGHIỆP MÔ HÌNH LED XOAY
Một vài năm gần đây ngành quảng cáo ở Việt Nam đang ngày càng phát triển mạnh mẽ, nó tạo ra hiệu quả kinh doanh cho các doanh nghiệp. Quảng cáo với công nghệ LED có thể được sử dụng ở mọi nghành nghề và mọi lĩnh vực khác nhau của đời sống xã hội như:bản quảng cáo trên các ô tô để giới thiệu cho khách hàng tuyến đường chạy, và để chào đón, quảng cáo tại các quầy lễ tân để thông báo thông tin, để chào đón khách hàng hayđể chào mừng một sự kiện nào đó, quảng cáo trên sàn nhà, …
Đèn LED là 1 loại bóng đèn phát sáng đời mới tiêu hao năng lượng cực kỳthấp, có nhiều màu sắc để chọn lựa, và có nhiều ứng dụng trong cuộc sống ngày nay và tương lai.Việc quảng cáo bằng led có nhiều hình thức khác nhau, từ đơn giản chỉ là các bảng hiệu có thông tin cố định, đến những ứng dụng để tạo các ký tự và hình ảnh ,dùng mạch diện tử điều khiển sự chớp tắt và tạo hiệu ứng ánh sáng mong muốn. Bảngđiện tử có thông tin thay đổi được còn gọi là bảng quang báo hay màn hình điện tử LED, có nhiều màu sắc, nhiều cách hiển thị sinh động, dễ dàng thu hút sự chú ý của mọi người. Do dễ dàng thay đổi thông tin trên bảng điện tử, nên đây được xem như là phương tiện để truyền đạt thông tin hiện đại, nhanh chóng.
Led quay cũng là một trong những hình thức quảng cáo led,tuy nhiên hình thức này khá thú vị là những con led không đứng yên mà chuyển động liên tục để tạo ra những thông tin quảng cáo dựa vào sự lưu ảnh của mắt,và chắc có lẽ vì những điểm đặc biệt này mà đồ án học phần chúng em đã chọn đề tài led quay(quang báo quay) để thử sức mình.Trong quá trình thực hiện dưới sự hướng dẫn nhiệt tình của thầy chúng em đã cố gắng để hoàn thành tốt nhất đề tài này,nhưng vẫn còn nhiều sai sót.Rất mong sự đóng góp ý kiến của thầy để đề tài được hoàn thiện hơn.
MỤC LỤC
Trang
CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI................................................................. 6
1. Giới thiệu led quay............................................................................ 6
2. Nguyên lý hoạt động......................................................................... 6
CHƯƠNG II: TÍNH TOÁN............................................................................... 8
CHƯƠNG III: CƠ SỞ LÝ THUYẾT............................................................. 10
1. Sơ lượt về pic 16f877a.................................................................. 10
2. Sử dụng pic 16f877a trong đề tài................................................ 12
3. Một số linh kiện khác...................................................................... 13
4. IC mở rộng port 74LS373.............................................................. 14
CHƯƠNG IV: THỰC HIỆN MÔ HÌNH....................................................... 15
I. Thi công phần cứng......................................................................... 15
1. Thực hiện phần cứng............................................................ 15
2. Thi công mạch........................................................................ 16
II. Các môi trường làm việc............................................................... 17
1. Các phần mền hỗ trợ lập trình............................................. 17
2. Cấu trúc chương trình.......................................................... 20
III. Lưu đồ thuật toán......................................................................... 22
1. Lưu đồ giải thuật trên PIC................................................... 22
2. Lưu đồ giải thuật trên máy tính.......................................... 23
CHƯƠNG V: KẾT QUẢ, HƯỚNG PHÁT TRIỂN.................................... 24
CHƯƠNG VI: PHỤ LỤC............................................................................... 25
1. Code trên PIC viết bằng ngôn ngữ C........................................... 25
2. Code trên máy tính viết bằng Visual Basic................................. 30
DANH MỤC TÀI LIỆU THAM KHẢO
CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI
1.Giới thiệu led quay
Quang báo quay(propeller display)là mạch ứng dụng hiệu ứng led đơn để tạo ra kí tự, chữ, hình ảnh mà người lập trình cần hiển thị.
Mạch quang báo dùng trang hoàng cho các buổi tiệc, liên hoan, sinh nhật, giáng sinh, tết,.... Với mục đích này thì phải thực hiện sao cho đẹp, lạ, gọn nhẹ, an toàn là điều cần thiết.
Các hiệu ứng của quang cáo sẽ làm cho buổi tiệc, liên hoan hay các sản phẩm quảng cáo trở nên đẹp và thu hút mọi người hơn.
Trong đồ án này chúng em thực hiện mạch hiển thị thông qua led đơn nhờ các tín hiệu được xuất ra từ vi điều khiển PIC 16F877A và sử dụng ngôn ngữ lập trình CCS . Tín hiệu từ vi điều khiển đưa ra led đơn cùng vói việc động cơ DC xoay ở một tốc độ tương đối ổn định, kết hợp với ngắt ngoài và sự lưu ảnh của mắt cùng với các khoảng delay khác nhau sẽ hiển thị được các hình ảnh, văn bản mà ta muốn hiển thị.
Hình1:Quang báo quay.
Mỗi quang báo quay bao gồm:nguồn,động cơ,mạch điều khiển lôgic,led tạo hiệu ứng.
- Sự lưu ảnh của mắt:
Sự lưu ảnh của mắt tức là lưa ảnh trên võng mạch phải mất một khoảng thời gian cở 0.1s thì võng mạc mới phục hồi lại như củ được. Trong khoảng thời gian 0.1s này cảm giác ánh sáng chưa bị mất và người quan sát vẩn còn thấy hình ảnh của vật.
Trong phim ảnh người ta chiếu 25 ảnh trên một giây để người xem có cảm giác các hoạt động trong phim ảnh là liên tục.
2.Nguyên lý hoạt động
- Với một thanh led đơn khi quay quanh trục tùy theo kiểu đặt thanh led đứng hay nằm mà ta có những cột led xếp thành hình trụ tròn, hình tròn, hình vành khăn…giống như một bảng led ma trận.Việc đưa dữ liệu từ vi điều khiển (VĐK) ra led về nguyên tắc giống với phương pháp quét LED matrix, lợi dụng sự lưu ảnh trên mắt kết hợp với tốc độ quay của động cơ sẽ tạo ra những đoạn văn bản,hình ảnh với hiệu ứng mong muốn vì thế khi chọn động cơ ta cần chọn loại có tốc độ vòng quay nhanh và ổn định. Tốc độ quay càng nhanh thì ảnh hiểu thị sẽ càng mịn. Nguyên tắc hiểu thị ảnh là tại 1 vị trí trên hành trình quay của dãy led sẽ ứng với 1 trạng thái hiển thị, do tốc độ quay nhanh mắt ta sẽ thấy 1 ảnh là sự kết hợp của các trạng thái hiển thị led tại các vị trí khác nhau trên hành trình quay theo chủ ý của người viết chương trình (văn bản, hình ảnh…)
- Quét led có 2 phuơng pháp: quét cột và quét hàng
- Quét cột:thường sử dụng, tức là quét lần lượt hết các cột(cột ảo ). Khi quét cột nào thì cột đó sẽ hiển thị tương ứng các trạng thái tắt mở các vị trí cần hiển thị của led.Khi lần lượt quét hết các cột thì chữ,hình ảnh cần hiển thị lần lượt được hiện ra.Phương pháp này hữu ích để dịch cột từ trái sang phải hay từ phải sang trái (chạy chữ qua lại).
- Quét hàng: ngược lại so với quét cột. Phương pháp này thuận lợi cho việc chạy chữ lên xuống
CHƯƠNG II: TÍNH TOÁN
- Tính tóan thời gian quét ( xuất ra dữ liệu trên led)
+ Thạch anh sử dụng: 20MHz = Fosc
Chu kỳ máy: 1/4 Fosc = Fm => Fm = 20x10^ 6/ 4 = 5x10^6 (Hz)
Tm = 1/ Fm = 1/ 5x10^6 = 200 (ns)
=> 8 bit dữ liệu xuất ra trong khoảng thời gian: 200 x 8 = 1600 (ns)
=>24 bit dữ liệu xuất ra tronh khoảng thời gian: 200 x 24 = 4800 (ns)
+ Thêm 3bit đóng ngắt các IC mở rộng port: 200 x 24 + 200 x 3= 5400 (ns)
Bù thêm thời gian đọc Epprom và tính toán ( khoảng 6 chu kì máy)
Tt = 200x24 + 200x3 + 200x6 = 6600 (ns)
Vậy Tq >> Tt để đảm bảo chữ được hiển thị không bị méo, lệch. (1)
(theo thực tế ta chọn (Tq > 4Tt)
- Chọn tốc độ quét
Ta có: Vì led sử dụng la loại led 5mm nên mỗi điểm ảnh la 5x5 (mm)
Quãng đường phân biệt giữa hai cột ảo liên tiếp nhau là: Sa
Gọi Ta là thời gian phân biệt giữa hai cột ảo liên tiếp nhau
Gọi W là vận tốc của động cơ:
S = PxR (P là khoảng cách Rad)
=> P = S/R = 5x10^-3/80x10^-3 = 0.0625 (Rad)
Ta có theo (1) thì Tq>4Tt
Chọn động cơ có tốc độ là 1200 v/p = 40π Rad/s
=> Ta = 0.0625 / 40π = 491 (ms) >> 6.6 ns (thỏa điều kiện)
=> Chọn động cơ có tốc độ 1200 v/p
- Tính tốc độ của chữ: (Wc)
Wc > W = > Chữ chạy theo chiều quay của động cơ
Wc <W => Chữ chạy ngược chiều quay của động cơ
Wc =W => Chữ đứng im
Phương án thực hiện.
- Trên thực tế khi thi công phần cứng, tùy theo quy mô dự án mà có những cách thi công khác nhau.
- Thông thường nhiều người sử dụng là động cơ DC 12V ,24V, động cơ quạt….
- Phần hiển thị là led đơn với nhiều kích cỡ : 5 li, 3 li, led dán …màu sắc đa dạng, led càng nhỏ thì chữ càng mịn càng đẹp.
Led có thể được xếp thành cột ngang hoặc đứng để tạo ra bề mặt hiển thị mong muốn
- Một phần nữa mà khi thi công phần cứng mà nhiều người gặp khó khăn là đưa nguồn lên mạch điều khiển.Vì mạch điều khiển
là phần chuyển động nên không thể đặt nguồn riêng lên mạch được ,mạch cần gọn, nhẹ càng tốt.Hướng giải quyết cho vấn đề này là sử dụng nguồn di động gắn trực tiếp lên phần xoay.
- Sau khi tìm hiểu, dựa vào khả năng nhóm đã đưa ra phương án thực hiện như sau:
- Chọn động cơ 12VDC :tốc độ nhanh, khá ổn định,dễ cố định khi láp ráp, thuận lợi cho việc thi công và lập trình sau này
- Chọn led 5 li để thi công: dễ thi công, tạo thanh led 24 con không quá.
- Thanh led được đặt theo bán kính cong để mặt hiển thị là hình cầu.
- Sử dụng VĐK Pic16f877A, ic mở rộng port 74LS373 và eeprom để dử liệu không bị mất khi tắt nguồn.
- Đề tài có sử dụng giao tiếp với máy tính để tiện thay đổi nội dung hiển thị.
CHƯƠNG III: CƠ SỞ LÝ THUYẾT
-
Sơ lượt về pic 16f877a
Pic 16f877a là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng, 40 chân, bộ nhớ đủ cho hầu hết các ứng dụng thông thường). Cấu trúc tổng quát của PIC 16F877A như sau:
- 8 K Flash ROM.
- 368 Bytes RAM.
- 256 Bytes EEPROM.
- 5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập.
- 2 bộ định thời 8 bits (Timer 0 và Timer 2).
- Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiết kiệm năng lượng (SLEEP MODE) với nguồn xung Clock ngoài.
- 2 bô CCP( Capture / Compare/ PWM).
- 1 bộ biến đổi AD 10 bits, 8 ngõ vào.
- 2 bộ so sánh tương tự (Compartor).
- 1 bộ định thời giám sát (WatchDog Timer).
- Một cổng song song 8 bits với các tín hiệu điều khiển.
- Một cổng nối tiếp.
- 15 nguồn ngắt.
- Có chế độ tiết kiệm năng lượng.
- Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial Programming)
- Được chế tạo bằng công nghệ CMOS
- 35 tập lệnh có độ dài 14 bits.
- Tần số hoạt động tối đa 20MHz.
B1. Sơ đồ chân Pic 16f877a
B2. Hình ảnh thật Pic 16f877a
Sơ đồ khối Pic16f877a
2 Sử dụng pic 16f877a trong đề tài
- Chân reset: 1.
- Chân cấp nguồn: 11, 12, 31, 32.
- Tạo dao động: 13,14.
- Ccp1: RC2.
- 2 chân giao tiếp máy tính RC6, RC7.
- Xuất dữ liệu điều khiển: portE, portD.
- ...............................
.......................................................................
CHƯƠNG V: KẾT QUẢ, HƯỚNG PHÁT TRIỂN
1. KẾT QUẢ ĐẠT ĐƯỢC
A. Kết quả
- Sau quá trình nghiên cứu, thi công, hoàn thiện đề tài đã cho được kết quả như yêu cầu đã đề ra:
+ Mô hình chạy ổn định
+ Hiển thị nội dung chữ đều nhau
+ Nhỏ gọn dễ vận chuyển và bảo quản
+ Kết cấu đơn giản dễ vận hành, sử dụng
+...
B. Mặt hạn chế
- Trong quá trình thực hiện đề tài phát sinh một số hạn chế như sau:
+ Hiện chữ giới hạn (10 kí tự)
+ Giới hạn bề mặt nhìn thấy nội dung
+...
2. HƯỚNG PHÁT TRIỂN ĐỀ TÀI
- Đây là một đề tài mới lạ nên chưa phát huy hết được mức độ của đề tài. Vì vậy sẽ có rất nhiều hướng phát triển như sau:
+ Mô hình thực tế có thể phát triển lên quy mô, mức độ cao hơn
+ Tăng khả năng hiện chữ cũng như bề mặt hiển thị
+ Không giới hạn mức độ, số lượng chữ hiện ra
+ Hiển thị được chữ Tiếng Việt có dấu
+...
CHƯƠNG VI: PHỤ LỤC
- Code trên PIC viết bằng ngôn ngữ C:
#include "16f877a.h"
#fuses hs,noprotect,nodebug,nowdt,nobrownout,nolvp,nocpd
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
int8 i,a;
int8 data[80]={};
int1 start;
#int_ccp2
void ghi()
.............................................
Next
Case "5"
For j = 1 To 8
buffer(j + ((i - 1) * 8)) = machu5(j)
Next
Case "6"
For j = 1 To 8
buffer(j + ((i - 1) * 8)) = machu6(j)
Next
Case "7"
For j = 1 To 8
buffer(j + ((i - 1) * 8)) = machu7(j)
Next
Case "8"
For j = 1 To 8
buffer(j + ((i - 1) * 8)) = machu8(j)
Next
Case "9"
For j = 1 To 8
buffer(j + ((i - 1) * 8)) = machu9(j)
Next
Case " "
For j = 1 To 8
buffer(j + ((i - 1) * 8)) = daucach(j)
Next
Case Else
MsgBox "QUA TRINH TRUYEN BI LOI XIN LAM LAI TU DAU"
End Select
Next
SampleText = buffer()
MSComm1.Output = SampleText
End If
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
MSComm1.InputMode = comInputModeText
End Sub
Private Sub Text1_Click()
Text1 = ""
End Sub