Qua đó ta thấy rằng, bảng thông tin điện tử đã được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau như: giới thiệu sản phẩm, thông báo tin tức, làm biển hiệu Với ứng dụng rộng rãi như
Trang 1ĐỒ ÁN 2 THIẾT KẾ MẠCH QUANG BÁO 8X24 SỬ DỤNG VXL AT89C51
MỤC LỤC
Lời nói đầu……… …… 02
Chương 1-GIỚI THIỆU MẠCH QUANG BÁO I.Tổng quan 03
II.Chức năng từng khối 05
III Công nghệ ứng dụng hiện nay 05
Chương 2 MẠCH QUANG BÁO DÙNG VI ĐIỀU KHIỂN 89C51 I.Nguyên lý làm việc của mạch quang báo I.1Giới thiệu bảng đèn quang báo 07
I.2 Nguyên tắc làm sáng đèn LED 8x8 09
I.3 Nguyên tắc quét bảng ma trận LED 10
I.4 Phương pháp tạo hiệu ứng chử chạy 13
II Sơ đồ nguyên lý 16
III Lưu đồ giải thuật 17
IV Mã nguồn chương trình 18
Chương 3 – LINH KIỆN CHO MẠCH QUANG BÁO I Vi điều khiển 89C51 21
II IC 74HC595 33
III.Transistor A1015 36
Chương 4 –THI CÔNG MẠCH QUANG BÁO I.Sơ đồ mạch in 37
II.Ưu điểm và khuyết điểm của mạch trên 38
III HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI GVHD:TH.S NGUYỄN VĂN DŨNG SVTH:NGUYỄN NHẬT KHÁNH 1
Trang 2ĐỒ ÁN 2 THIẾT KẾ MẠCH QUANG BÁO 8X24 SỬ DỤNG VXL AT89C51
LỜI NÓI ĐẦUNgày nay, cùng với sự phát triển của khoa học kỹ thuật, nhất là trong lĩnh vực Điện tử - Tin học - Viễn thông, việc đưa thông tin quảng cáo đến với người tiêu dùng, đến với xã hội trở nên dễ dàng và nhanh chóng Thông qua nhiều hình thức quảng cáo khác nhau mà các doanh nghiệp giới thiệu sản phẩm của mình đến mọi người
Trong nhiều hình thức đa dạng của Thông tin quảng cáo như: báo, đài, tivi, tờ rơi, áp phích thì việc dùng Bảng thông tin điện tử là một cách đơn giản và hiệu quả để quảng cáo Chúng ta bắt gặp rất nhiều bảng thông tin như vậy trong thực tế Khi đi vào một hiệu sách, bạn có thể biết được hiệu sách đó bán loại sách gì, giá cả ra sao là nhờ vào bảng đèn quang báo rất bắt mắt trước cửa hiệu Hoặc khi vào sân bay, bạn biết được giờ giấc các chuyến bay, các thông báo ngắn của phi trường, cũng là nhờ vào quang báo Và khi đi trên đường phố lúc về đêm, bạn sẽ bắt gặp cùng với ánh đèn màu
là rất nhiều các bảng quang báo lớn với các hình ảnh sinh động như ly bia Tiger đang trào bọt, hay các hình ảnh, logo hiện lên với đủ kiểu (từ trên xuống, từ trái sang)
Qua đó ta thấy rằng, bảng thông tin điện tử đã được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau như: giới thiệu sản phẩm, thông báo tin tức, làm biển hiệu Với ứng dụng rộng rãi như vậy, việc tìm hiểu và thiết kế một bảng thông tin như vậy
đã thôi thúc em thực hiện đề tài “thiết kế mạch quang báo dùng Vi Điều Khiển”
Giới hạn đề tài
Như đã giới thiệu, bảng thông tin điên tử có thể hiển thị được các hình ảnh cử động, chứ không chỉ gói gọn trong việc hiển thị chữ Tuy nhiên, do điều kiện và thời gian có hạn nên đề tài chỉ giới hạn ở việc hiển thị chữ chạy
GVHD:TH.S NGUYỄN VĂN DŨNG SVTH:NGUYỄN NHẬT KHÁNH 2
Trang 3ĐỒ ÁN 2 THIẾT KẾ MẠCH QUANG BÁO 8X24 SỬ DỤNG VXL AT89C51
-Lựa chọn các linh kiện:
Để thực hiện một sản phẩm như trên ở quy mô nhỏ ta có thể sử dụng các họ
vi điều khiển khác nhau như AVR, PIC, 8051 hay vi xử lý đa năng như 8086 Tuy nhiên, để tiết kiệm chi phí cũng như xét trên khả năng mua các chip trên trên thị trường, tài liệu nghiên cứu về chúng, bộ Kit phát triển,em đã lựa chọn AT89C51 làm vi điều khiển cho mạch quang báo này Ngoài ra, các linh kiện khác hoàn toàn dễ kiếm trên thị trường hiện nay
GVHD:TH.S NGUYỄN VĂN DŨNG SVTH:NGUYỄN NHẬT KHÁNH 3
Trang 4ĐỒ ÁN 2 THIẾT KẾ MẠCH QUANG BÁO 8X24 SỬ DỤNG VXL AT89C51
Trang 5II.2.CHỨC NĂNG TỪNG KHỐI
Mạch điện sử dụng Vi Điều Khiển nên về phần cứng khá đơn giản
Khối điều khiển trung tâm sử dụng Vi Điều Khiển 89C51
Khối giải mã dữ liệu hàng sử dụng 8 con transistor cú chức năng giống như cổng NOT
Khối giải mã địa chỉ cột sử dụng IC 74HC595, đây là thanh ghi dịch 8-bit vào nối tiếp ra song song Ta sử dụng IC này nhằm mục đích tiết kiệm chân giao tiếp giữa
IC giải mã với Vi Điều Khiển Chân DATA-IN (14) để đưa dữ liệu nối tiếpvào, chân CLK (11) đưa xung đồng hồ dịch bit, chân LATCH(12) để chốt dữ liệu được gửi ra 8 đầu ra được nối đến 8 cột của bảng LED thông qua mạch đệm dòng
Nguyên lý hoạt động: Chương trình phần mềm chứa trong Vi Điều Khiển làm
nhiệm vụ điều khiển chính mọi hoạt động của mạch Chương trình phần mềm gồm có
nhiều chương trình con: chương trình hiển thị, chương trình cập nhật
III CÔNG NGHỆ ỨNG DỤNG HIỆN NAY:
Nhu cầu trang bị bảng điện tử ở của hàng, tòa nhà, sân bay, nhà ga, công ty chứng khoán hiện nay rất lớn Đã có những doanh nghiệp chuyên sản xuất những sản phẩm, tuy nhiên các sản phẩm đó mới chỉ được ứng dụng ở các cửa hàng, siêu thị với yêu cầu chất lượng chưa cao và ít tính năng Nội dung hiển thị được nạp vào trong ROM nên nếu nội dung hiển thị mà lớn thì đòi hỏi tăng kích thước bộ nhớ ROM bằng cách ghép nối thêm ROM Kể cả như vậy thì bộ nhớ ghép nối chỉ được phép tối đa 64Kbyte (với IC AT89C51) Do vậy đây vẫn là một phương án chưa “tối ưu” Để khắc phục điều này, các ký hiệu hỉển thị cần được mã hóa và lưu trong bộ nhớ Mỗi khi một ký hiệu nào được gọi tới hiển thị thì chương trình sẽ
tự động truy cập tới ô nhớ chứa mã điều khiển các LED tương ứng với ký hiệu
đó Phương án này đòi hỏi lập trình phức tạp hơn và có ghép nối với máy tính trong các ứng dụng cao cấp Tuy nhiên với mục đích tìm hiểu ứng dụng của kỹ thuật vi xử lý và yêu cầu bài toán đơn giản cũng như thời gian giới hạn, em mới
hoàn thành sản phẩm ở mức độ hiện nay.Ngoài việc quảng cáo, thông báo chỉ số
trong các ngành tái chính,gần đây quang báo còn được ứng nhiều vào việc điều tiết giao thông, dự báo thời tiết thông qua dự án Nghiên cứu ứng dụng biển quang báo
điện tử trong quản lý giao thông tại một số đô thị lớn như thành phố Hồ Chí Minh
và Hà nội.v.v.nhờ vào giao tiếp máy tính thông qua cổng nối tiếp RS232, khe cắm máy tính (Slot-card) ,cổng máy in (LPT) để nội dung có thể được thay đổi nhanh và phong phú hơn
Trang 6QUANG BÁO ĐƯỢC ỨNG DỤNG TRONG ĐIỀU TIẾT GIAO THÔNG
Trang 7CHƯƠNG 2 MẠCH QUANG BÁO DÙNG VI ĐIỀU KHIỂN 89C51
I Nguyên lý làm việc mạch quang báo
I.1 Giới thiệu về bảng LED ma trận
Trước khi đi vào nguyên lý hoạt động của mạch ta tìm hiểu qua về bảng ma trận LED được sử dụng trong đề tài
Bảng hiển thị ma trận LED (dot-matrix display) có rất nhiều loại và đủ kích
cỡ to nhỏ khác nhau, mỗi bảng gồm có rất nhiều LED đơn được ghép lại với nhau trong một khối Trong khối đó các LED đơn được sắp sếp theo các hàng và các cột, tại mỗi giao điểm của hàng với cột là một LED đơn, và người ta thường phân biệt các loại bảng LED theo số hàng và cột Một bảng LED 5x7 tức là có 5 cột dọc và 7 hàng ngang, tổng cộng sẽ có 5x7=35 LED đơn được ghép lại Cũng như vậy một bảng 8x8 là có 8 hàng và 8 cột, do 64 LED đơn ghép lại Và nhiều loại cỡ to hơn như 16x16 hay 32x32…
Trên thị trường ta thường thấy các bảng LED cỡ lớn, dài hàng mét với đủ kích cỡ Các bảng LED đó là do hàng nghìn LED đơn ghép lại Khi thiết kế những bảng LED to như vậy ta cần chú ý đến sự đồng đều về độ sáng của các LED để việc hiển thị được đồng đều Bên cạnh đó vấn đề cấp nguồn cho mạch cũng cần được chú ý và thiết kế cho phù hợp Trong đề tài này em sử dụng ba bảng LED 8x8 cho việc hiển thị
Sau đây là sơ đồ ghép nối của hai loại bảng LED thông dụng 8x8
Trang 8Bảng ma trận LED có hai loại, loại có các cột là các chân Anode, còn hàng là các chân Cathode và loại kia thì ngược lại các cột là Cathode, hàng là Anode Khi
sử dụng LED ta cần chú ý điều này để điều khiển cho đúng Khi đóng vỏ, sự phân
bố chân các hàng và cột là không theo thứ tự (do tính phức tạp trong ghép nối), do
đó ta cần tìm hiểu kỹ để mắc mạch cho đúng
Dưới đây là sơ đồ chân của bảng LED 8x8 được dùng trong đề tài
1 Các số gạch chân là hàng
2 Các số không gạch chân là cột
Trang 9Nguyên tắc làm sáng đèn trên bảng LED
Khi muốn làm sáng LED đơn, ta cần đưa điện áp dương vào chân Anode và điện áp âm vào chân Cathode với giá trị thích hợp, khi đó LED sáng Giá trị điện
áp và dòng điện tuỳ thuộc vào màu sắc từng loại LED Dòng chảy qua các LED để đảm bảo độ sáng bình thường là từ 10mA cho đến 25mA
Khi ta muốn làm sáng một điểm trên bảng ma trận LED ta cũng làm tương 0tự Xét với bảng LED 5x7 dưới đây (H1.3)
Trang 10I.3 Nguyên tắc quét bảng ma trận LED
Trong đề tài này em sử dụng ba bảng LED 8x8 ghép lại thành một bảng cỡ 8x24 (8 hàng và 24 cột) Mỗi ký tự sẽ được hiển thị trong một khung cỡ 8x8 Dưới đây là nguyên tắc quét và hiển thị một ký tự (giả thiết là chữ R) trên khung hình 7x5
Để hiển thị ký tự lên bảng LED, ở đây ta dùng phương pháp quét cột và xuất
dữ liệu hàng Quá trình quét cột là ta gửi tín hiệu cho phép đến từng cột trong từng thời điểm Cùng lúc đó ta gửi dữ liệu hàng đến 7 hàng Trong đề tài này tín hiệu cho phép cột là mức logic ‘1’, và dữ liệu hàng tương ứng là mức ‘0’ hay ‘1’ của từng hàng, mức ‘0’ ứng với LED sáng (on) và mức ‘1’ là tắt (off)
• Đầu tiên ta đưa dữ liệu cần hiển thị đến 8 hàng, ví dụ 11100110
• Kích hoạt cột thứ nhất và các LED tương ứng sẽ sáng Tạo một thời gian trễ, sau đó tắt cột thứ nhất
• Gửi tiếp giá trị dữ liệu 7 hàng của cột thứ 2, kích hoạt cột thứ 2, tạo trễ và lại tắt cột thứ 2
• Quá trình quét đó cứ tiếp diễn cho đến khi quét hết 16 cột của bảng LED Việc quét hiển thị này diễn ra trong thời gian rất ngắn, cỡ vài chục mili giây,
ta sẽ thấy hình ảnh hay chữ hiển thị trên bảng LED Tuy rằng trong mỗi thời điểm chỉ có một cột được sáng nhưng do thời gian quét rất nhanh và do hiện tương lưu ảnh trong võng mạc của mắt nên ta thấy hình ảnh xuất hiện liên tục Tần số quét cần phải đảm bảo sao cho đủ hoặc lớn hơn 24hình/s Thường ta chọn tần số quét từ 40Hz đến 100Hz hoặc có thể lớn hơn
• Dữ liệu hiển thị của hàng được lấy từ EEPROM hoặc từ Flash ROM của Vi Điều Khiển hay từ ROM ngoài
Trang 11Trạng thái của một LED sẽ được quyết định bởi tín hiệu điện áp đi vào đồng thời cả 2 chân Ví dụ để LED sáng thì điện áp 5V phải đưa vào chân dương và chân
âm phải được nối đất, LED sẽ tắt khi không có điện áp đưa vào chân dương.Với đề tài này, chúng em chọn loại ma trận LED 8x8 để hiển thị.Ta có sơ đồ nguyên lý của
Ma trận LED 8x8:
Trang 12Để ma trận có thể sáng như hình vẽ (hiển thị một phần của chữ ADIDAS):
Đèn LED thứ nhất Đèn LED thứ hai Đèn Led thứ baThực hiện quét dòng và cột:
- Chọn cột 1, đưa điện áp cột 1 về 0
- Sau đó chọn và quét lần lượt các hàng 1,2,3,4,5,6,7,8 như sau:
+ Đèn 1 tắt Điện áp đưa vào hàng 1 là 0V
+ Đèn 2 tắt Điện áp đưa vào hàng 2 là 0V
+ Đèn 3 sáng Điện áp đưa vào hàng 3 là 5V
+ Đèn 4 sáng Điện áp đưa vào hàng 4 là 5V
+ Đèn 5 sáng Điện áp đưa vào hàng 5 là 5V
+ Đèn 6 sáng Điện áp đưa vào hàng 6 là 5V
+ Đèn 7 sáng Điện áp đưa vào hàng 7 là 5V
+ Đèn 8 sáng Điện áp đưa vào hàng 8 là 5V
Chọn cột 2, nối đất Sau đó quét lần lượt các hàng 1,2,3,4,5,6,7,8
+ Đèn 1 tắt Điện áp đưa vào hàng 1 là 0V
+ Đèn 2 sáng Điện áp đưa vào hàng 2 là 5V
+ Đèn 3 tắt Điện áp đưa vào hàng 3 là 0V
+ Đèn 4 sáng Điện áp đưa vào hàng 4 là 5V
Trang 13+ Đèn 5 tắt Điện áp đưa vào hàng 5 là 0V
+ Đèn 6 tắt Điện áp đưa vào hàng 6 là 0V
+ Đèn 7 tắt Điện áp đưa vào hàng 7 là 0V
+ Đèn 8 tắt Điện áp đưa vào hàng 8 là 0V
-Tiếp tục quét với các cột từ 3 đến 8 bằng cách như trên, sau đó chuyển sang quét đèn LED thứ hai và thứ ba một cách tương tự
-Để mắt người nhận biết được toàn bộ hình ảnh của ma trận ta phải tiến hành quét nhiều lần Do mắt người không phân biệt được sự thay đổi ảnh nếu ảnh đó được quét với tốc
độ 24 hình/s nên nếu ta quét ảnh với tốc độ lớn hơn hoặc bằng 24 hình/s thì ảnh sẽ chạy liên tục và không bị giật
I.4 Phương pháp tạo hiệu ứng chữ chạy từ phải qua trái trên bảng LED
Sau khi đã hiển thị được hình ảnh lên bảng LED Bây giờ ta sẽ tìm hiểu cách tạo hiệu ứng chữ chạy trên bảng LED Thủ thuật ở đây là quét và hiển thị một hình ảnh trong một thời gian nhất định, sau đó ta dịch dữ liệu của các cột sang trái một vị trí, khi đó ta
sẽ tạo được hiệu ứng chữ chạy trên bảng LED
Đề tài này ta sử dụng mạch mẫu là bảng LED 8x24, sử dụng 32 byte RAM làm bộ đệm cho màn hình, lưu giá trị dữ liệu hàng của 24 cột Bộ đệm được khai báo trong RAM nội của chip 89C51 là một mảng gồm 33 phần tử
Chương trình hiển thị làmnhiệm vụ đọc dữ liệu từ các vị trí 0 đến 32 của bộ đệm và đưa
ra màn hình hiển thị
Hiệu ứng chữ chạy được tạo ra bằng cách dịch giá trị các phần tử đi một vị trí
(54, 43, 32,21,10 )
Sau mỗi lần dịch ta lại gọi chương trình hiển thị Khi đó trên bảng LED ta sẽ quan sát được hiệu ứng chữ chạy
VD: Di chuyển ký tự trên ma trận Led
Di chuyển chuỗi “AB” trên ma trận Led từ trái sang phải:
- Tính toán dữ liệu hiển thị
Giả sử cần hiển thị chuỗi “AB”:
Chữ ‘A’: 7Eh, 09h, 09h, 09h,
7Eh
Chữ ‘B’: 7Fh, 49h,49h,49h,36h
Trang 14Giữa chữ A và B có một cột trống để phân biệt
Chuỗi “AB”: 7Eh, 09h, 09h, 09h, 7Eh, 00h, 7Fh, 49h,49h,49h, 36h
Có thể thêm khoảng trắng trước và sau chuỗi để chuỗi hiện ra từ từ Chuỗi “ AB ”: 00h, 00h, 00h, 00h, 00h, 7Eh, 09h, 09h, 09h, 7Eh, 00h, 7Fh, 49h,49h,49h, 36h,00h, 00h, 00h, 00h
Khai báo biến:
- Hiển thị ký tự:
Quá trình hiển thị và cho chữ chạy mô tả như hình vẽ:
Trang 16Lần 1: hiển thị từ pa[0] ÷ pa[4]
Lần 2: hiển thị từ pa[1] ÷ pa[5]
Lần 16: hiển thị từ pa[15] ÷ pa[19]
lần j: hiển thị từ pa[j] ÷ pa[j+5]
Chuỗi “AB” gồm 2 ký tự cần lưu trữ 20 byte và quét tổng cộng 20 - 4 = 16lần Chuỗi
50 ký tự cần lưu trữ 50*6 + 8 = 308 byte và quét 304 lần
II.SƠ ĐỒ NGUYÊN LÝ:
Trang 17III:LƯU ĐỒ GIẢI THUẬT
Lưu đồ giải thuật
Trang 18CHUONG TRINH CHAY CHU TDT
MOV A,#0 ; Nhập giá trị ban dầu
MOV DPTR,#MACHU ;Nạp mã chữ vào thanh ghi DPTR
INC DPTR ; Tăng DPTR lên 1
CJNE A,#LOW(MACHU+45),LAP;So sánh A nếu # Low và R2 thì nhảy
HIENTHI:
MOV R0,#0 ; Nhập giá trị ban dầu
SETB DT ;Set 1 bit cho DT
Trang 19MOVC A,@A+DPTR ;Lấy giá trị trong DPTR cho vào thanh ghi A MOV HANG,A ; Xuất dữ liệu ra hàng 1
MOV A,R0 ;Nạp R0 vào thanh ghi a
MOV HANG,#0FFH ;Chống lem
CJNE R0,#25,SCAN ; Kiểm tra dữ liệu quét 32 cột
Trang 20RET
DELAY1:
Trang 21VI ĐIỀU KHIỂN 8 BIT AT89C51
I IC XỬ LÝ TRUNG TÂM 89C51:
1.Sơ đồ chân 89C51:
AT89C51 là IC vi điều khiển (Microcontroller) do hãng Atmel sản xuất
IC 89C51 có đặc điểm như sau:
• 4k byte ROM,128 byte RAM nội
• 4 Port I/O 8 bit
• 2 bộ đếm/ định thời 16 bit
• Giao tiếp truyền dữ liệu nối tiếp
• 64k byte bộ nhớ bên ngoài dung để lưu chương trình điều khiển
• 64k byte bộ nhớ bên ngoài dung để lưu dữ liệu
• 210 bit có thể truy xuất từng bit
• Có các lệnh xử lý bit
Sơ lược về các chân của 89C51:
Hình 2-1 Sơ đồ chân 89C51
Trang 22Chức năng của các chân 89C51:
Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7) Port 0 có 2 chức năng: 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 thiết kế 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: từ chân 1 đến chân 8 (P1.0 _ P1.7) Port 1 chỉ có chức năng dung làm các đường điều khiển xuất nhập IO
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Nếu không dùng bộ nhớ mở rộng bên ngoài thì port 2 dùng làm các đường điều khiển IO.Nếu dung bộ nhớ mở rộng bên ngoài thì port 2 có chức năng là bus địa chỉ cao A0 – A15
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có 2 chức năng.Các chân port này có nhiều chức năng , các công dụng chuyển đổi có liên hệ đặc biệt của 89C51 như ở bảng sau:
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 OE\ của Eprom cho phép đọc các byte mã lệnh
PSEN ở mức thấp trong thời gian 89C51 lấy lệnh Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 89C51 để giải mã lệnh Khi 89C51 thi hành chương trình trong EPROM nội PSEN
ở mức logic 1
ALE (Address Latch Enable):
Khi 89C51 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và
dữ liệu (AD7 – AD0) 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ùng là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úng với IC chốt
Tín hiệu ở 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
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 thì vi điều khiển thi hành chương trình từ bộ nhớ nội
Nếu ở mức 0 thì vi điều khiển thi hành chương trình từ bộ nhớ ngoại
RST (Reset):
Ngõ vào chân 9 là ngõ vào Reset.Khi cấp điện cho hệ thống hoặc nhấn nút Reset thì mạch sẽ reset vi điều khiển.Khi reset thì tín hiệu reset phải ở mức cao ít