Thiết kế tổng quan phần mềm điều khiển Vì hệ thống đợc thiết kế theo mô hình của hệ thống tự động, nên chơng trình điều khiển phải đáp ứng tất cả những công việc đặt ra của hệ thống, kh
Trang 1và điều khiển bảng led
Khóa luận tốt nghiệp
Vinh, 5/2006
Lời nói đầu
Sự phát triển vợt bậc của ngành kỹ thuật máy tính và điện tử hiện nay đã
đợc minh chứng cụ thể qua cuộc sống hàng ngày của chúng ta trong tất cả cáclĩnh vực
Việc ứng dụng vi điều khiển vào đo lờng và điều khiển đã đem lại nhữngkết quả đầy tính u việt Các thiết bị, hệ thống đo lờng và điều khiển có độ chínhxác cao, thời gian thu thập dữ liệu ngắn, nhng đáng quan tâm hơn cả là mức độ
tự động hóa trong việc thu nhận và xử lý số liệu
Trang 2Kỹ thuật số ra đời đã khắc phục đợc những nhợc điểm của kỹ thuật tơng
tự, làm cho các bộ phận máy móc trở nên đơn giản và gọn nhẹ, ít tốn kém năng ợng và xử lý thông tin nhanh, chính xác hơn so với kỹ thuật tơng tự
l-Vi điều khiển là một chíp điện tử có mật độ tích hợp cao, trong đó có các
vi mạch số có khả năng nhận, xử lý và xuất dữ liệu Đặc biệt là quá trình xử lý sốliệu đợc điều khiển theo một chơng trình gồm tập các lệnh đợc ngời sử dụng nạpsẵn vào trong bộ nhớ chơng trình của vi điều khiển Một vi điều khiển có thểthực hiện đợc rất nhiều yêu cầu điều khiển khác nhau
Kỹ thuật vi điều khiển ra đời với sự kết hợp giữa phần cứng và phần mềm
đã làm cho hoạt động của các mạch điện tử trở nên mềm dẻo hơn với những phầnmềm rất linh hoạt mà ta có thể sửa chữa, thay đổi bổ sung làm cho chơng trình
điều khiển trở nên phong phú tùy theo nhu cầu của ngời sử dụng Đây là u điểmrất thuận lợi mà kỹ thuật vi điều khiển mang lại
Vì những lý do trên, em đã chọn đề tài " ứng dụng Vi điều khiển
Mặc dù đã hoàn thành đề tài với tất cả sự nỗ lực của bản thân, nhng chắcchắn không tránh khỏi những thiếu sót trong quá trình thực hiện Rất mong đợc
sự đánh giá và góp ý của quý thầy cô và bạn bè
Em xin chân thành cảm ơn.
GVHD: đặng hồng lĩnh (khoa CNTT
trờng Đại học Vinh)
Đại học Bách Khoa Hà Nội)
Trang 3Chơng I: Khảo sát, phân tích và thiết kế tổng quan hệ thống
I Khảo sát hệ thống
Ngày nay, cùng với sự phát triển của công nghệ và nhu cầu tiêu dùng ngàycàng tăng của con ngời thì việc quảng bá sản phẩm, thông tin là một trong nhữngnhu cầu thứ yếu của các cá nhân, doanh nghiệp Một trong những cách quảng báthông tin hiệu quả là bảng điện tử
Có rất nhiều loại bảng điện tử phục vụ cho các mục đích khác nhau, do đó
có những đặc tính kỹ thuật và kinh tế khác nhau Bảng thông tin điện tử có thểphân loại theo một số chỉ tiêu nh Indoor hay Outdoor, Text hay Graphics LoạiIndoor là loại để trong nhà, không bị ảnh hởng của ánh sáng mặt trời nên cờng
độ ánh sáng không cần lớn Loại Outdoor là loại bảng để ngoài trời, bị ảnh hởngbởi ánh sáng mặt trời, do đó loại này đòi hỏi chất lợng cao hơn, cả ở mạch điềukhiển lẫn công nghệ chế tạo đèn LED
Hiện nay, trên thị trờng Việt Nam đã xuất hiện nhiều chủng loại bảng điện
tử với nhiều công nghệ khác nhau Từ bảng điện tử loại nhỏ nh bảng báo trên sânvận động, các bảng quảng cáo thơng hiệu sản phẩm trên các cửa hiệu, cho đếncác bảng kích thớc lớn, Các bảng cũng đa chủng loại với nhiều kỹ xảo khác nhau
Các bảng điện tử tiên tiến có một số đặc điểm sau:
Cờng độ sáng lớn
Tầm nhìn xa đến 500m
Tuổi thọ của LED cao 100.000 giờ (khoảng trên 10 năm sáng liên tục)
Trang 4Tiết kiệm năng lợng, có khả năng thay đổi cờng độ sáng theo độ sáng của
II Phân tích hệ thống
1 Nguyên lý hoạt động của bảng điện tử
Nguyên lý hoạt động của bảng điện tử dựa theo nguyên lý hoạt động củacác màn hình, đó là sử dụng phơng pháp quét hình theo từng dòng.Mỗi dònggồm nhiều điểm ảnh, mỗi điểm ảnh có thể có một hoặc vài đèn, màu sắc khácnhau Mỗi đèn đợc biểu diễn thông qua một bit dữ liệu, bit 1 tơng ứng với đènsáng, bit 0 tơng ứng với đèn tắt
Tại một thời điểm, không phải tất cả các dòng trên màn hình đều sáng
nh-ng do tốc độ quét nhanh và sự lu ảnh trên võnh-ng mạc tạo cho nh-ngời nhìn thấy hình
ảnh liên tục Trong quá trình quét, mạch điều khiển sẽ đa dữ liệu ra Module hiểnthị, chính dữ liệu này sẽ quyết định điểm ảnh nào sáng, điểm ảnh nào tắt, màusắc của điểm ảnh là gì Các điểm ảnh này sẽ tạo ra hình ảnh trên bảng điện tử
Hình 2.2 Nguyên tắc tạo ảnh trên ma trận LED
2 Phân tích hệ thống
Trong dự án này, bảng điện tử có kích thớc 16x64 điểm ảnh, mỗi điểm ảnh
có hai đèn xanh đỏ, chia làm 2 Module, mỗi Module có kích thớc 16x32 điểm
ảnh
Trang 5Để hiển thị một hình ảnh ta phải quét hết 16 dòng Nếu thời gian quét mộtdòng là 1ms, thì để quét xong một hình ảnh ta phải mất 16ms Nếu thời gian trễcho một hình ảnh là 34ms thì thời gian hiển thị của hình ảnh đó là 50ms Nh vậy,
ta có thể hiển thị đợc 1000/50 = 20 hình/s
Chất lợng hình ảnh phụ thuộc vào tốc độ dòng quét, tỉ lệ thời gian sáng vàthời gian tối của từng dòng Thời gian quét dòng phụ thuộc vào thời gian đẩy dữliệu ra và thời gian trễ sáng cho dòng đó Độ trễ sáng của dòng có ảnh h ởng đếnmức độ sáng tối cũng nh màu sắc của hình ảnh, vì vậy, để tạo ra nhiều mức sángtối và tăng số màu hiển thị thì phải có khả năng thay đổi độ trễ sáng của dòng
III Thiết kế tổng quan hệ thống
ảnh trên bảng điện tử
Sơ đồ khối tổng quan phần cứng nh sau:
2 Thiết kế tổng quan phần mềm điều khiển
Vì hệ thống đợc thiết kế theo mô hình của hệ thống tự động, nên chơng trình
điều khiển phải đáp ứng tất cả những công việc đặt ra của hệ thống, khi khởi
Module điều khiển
Module quét dòng
Dữ liệu và các tín hiệu điều khiển
Các tín hiệu
điều khiển
Các tín hiệu quét dòng
Bảng điện tử(Các Module hiển thị)
Trang 6động hệ thống chơng trình điều khiển thực hiện quét xâu văn bản cần hiển thị,nạp dữ liệu nhận đợc vào bộ đệm của bảng điện tử, sau đó thể hiện thông tin lênbảng điện tử, công việc đó đợc lặp đi lặp lại nhiều lần.
Sơ đồ khối tổng quan phần mềm nh sau:
đèn sáng tối, tạo ra hình ảnh trên bảng điện tử
Sau đây là thiết kế chi tiết từng module
I Module hiển thị
Module này có nhiệm vụ nhận dữ liệu và các tín hiệu điều khiển đa tới từModule điều khiển để xác định điểm ảnh nào sẽ sáng hay tắt, sáng màu gì trênmỗi dòng đợc quét
Hệ thống sử dụng các Module hiển thị có kích thớc 16x32 Mỗi module16x32 đợc tạo thành từ 8 ma trận LED 2 màu (đỏ và xanh), anode chung với kíchthớc 8x8 Các ma trận này đợc nối với nhau thành 16 dòng và 32 cột Module
Trang 7hiển thị LED sử dụng các ma trận LED 8x8, mỗi điểm có hai đèn xanh và đỏghép lại Sơ đồ chân của một ma trận LED nh sau:
Error: Reference source not found
Ri: Led đỏ thứ iGi: Led xanh thứ iLi: Dòng thứ iTại mỗi điểm, có hai đèn LED, một xanh một đỏ Mỗi đèn có hai cực dơng
và âm Cực dơng sẽ dùng để điều khiển quét dòng Do đó tất cả các đèn trêncùng một dòng có chung cực dơng (Li) Các đèn đỏ trên cùng một cột có chungcực âm (Ri), các đèn xanh trên cùng một cột có chung cực âm (Gi)
Dữ liệu và các tín hiệu điều khiển đợc đa ra Module hiển thị theo kiểu đẩynối tiếp Các IC điều khiển led trên Module hiển thị sẽ dựa vào các tín hiệu điềukhiển để quyết định đẩy dữ liệu đến các Module hiển thị tiếp theo hoặc chốt dữliệu để hiển thị ra bảng điện tử
Trên cơ sở đó, mỗi module hiển thị cần phải có các tín hiệu chính sau :SCLK :Xung đồng hồ để dịch 1 bit dữ liệu vào từ (và ra khỏi) thanh ghi dịch.SIN_RED : Dữ liệu vào cho màu đỏ
SIN_GREEN : Dữ liệu vào cho màu xanh
SOUT_RED : Dữ liệu ra từ thanh ghi dịch của màu đỏ
SOUT_GREEN : Dữ liệu ra từ thanh ghi dịch của màu xanh
LATCH : Chốt dữ liệu từ thanh ghi dịch để cập nhật các điểm ảnh trên dòng
Sau đây là sơ đồ nguyên lý của Moule hiển thị led:
Trang 9Hệ thống sử dụng các IC điều khiển led 74HC595.
Sơ đồ chân của IC này nh sau:
Trang 10Mỗi module hiển thị kích thớc 16x32 đợc điều khiển bởi 8 IC 74HC595, 4
IC điều khiển màu đỏ và 4 IC điều khiển màu xanh Mỗi IC này có các tín hiệuvào ra nh sau :
STCP(CLK): Xung đồng hồ vào
Q0 : Tín hiệu dữ liệu vào thanh ghi dịch
Q7’ : Dữ liệu ra từ thanh ghi dịch
SHCP(LATCH): Tín hiệu cho phép chốt dữ liệu từ thanh ghi dịch
Q1, ,Q7 : Các chân ra từ bộ thanh ghi dịch 8 bit sau khi đã đợc chốt
Ngoài ra còn một số thành phần khác :
JP1, JP2, JP3, JP4: Là các đờng cung cấp nguồn cho 16 dòng
J5,J6: Là đầu vào và đầu ra của dữ liệu và các tín hiệu điều khiển
Sử dụng 2 IC 74LS245 làm IC đệm dữ liệu
Hoạt động của các Module này nh sau: Các bít dữ liệu cho 2 màu xanh và
đỏ đợc đa lần lợt đến hai tín hiệu SDI trên 8 IC điều khiển led tơng ứng với haimàu này Đầu ra SDO của 8 IC này đợc nối với đầu vào SDI của 8 IC trongModule tiếp theo với các màu tơng ứng
Khi xung CLK đợc kích hoạt, tại mỗi IC, bit dữ liệu ở đầu vào SDI đợc luvào thanh ghi dịch tại bit b0, đồng thời bit b6 dịch sang bit b7 và giá trị của bítb7 đợc đa ra SDO
Quá trình dịch liên tục đến khi hết một hàng ngang các module, tơng ứngvới các điểm ảnh cần hiển thị
Sau khi đợi một khoảng thời gian (phụ thuộc vào tốc độ quét), dữ liệu chodòng mới đợc cập nhật bằng cách kích hoạt tín hiệu LATCH để chốt tín hiệu từcác thanh ghi dịch đồng thời nguồn điện cung cấp cho dòng trớc đó bị tắt đểchuyển cho dòng kế tiếp
Ưu điểm :
Do sử dụng IC chuyên dụng nên tốc độ đẩy dữ liệu nhanh, nên có thể tậndụng thời gian còn lại vào việc khác
Do sử dụng bộ chốt bên trong nên đảm bảo thời gian tắt rất nhỏ, không
ảnh hởng tới độ sáng của các điểm ảnh
II Module quét dòng:
Nhiệm vụ của module này là giãi mã tín hiệu chọn dòng từ module điềukhiển đa xuống, để tại mỗi thời điểm chỉ cho một dòng đợc sáng Bảng điện tử
có kích thớc 16 dòng và 64 cột, đợc quét bởi một Module quét dòng, đầu vào là
Trang 11các tín hiệu điều khiển đợc đa xuống từ Module điều khiển, đầu ra sẽ chọn mộttrong số 16 dòng để hiện thị Mỗi Module hiển thị tại một thời điểm chỉ cho mộtdòng đợc sáng.
Module quét dòng phải chọn một trong số 16 dòng để hiển thị nên cần 4tín hiệu chọn dòng từ Module điều khiển đa xuống là các tín hiệu A0, A1, A2,A3 Các tín hiệu chọn dòng sẽ đợc giải mã bằng IC giải mã 3-8 74LS138 ở đâyModule quét dòng sử dụng hai IC giải mã để tạo thành bộ giải mã 4-16
Trên mỗi dòng của bảng điện tử có 64 điểm , mỗi điểm lại có hai đèn LED, một
đèn xanh, một đèn đỏ, do vậy một dòng sẽ có 128 đèn Vì vậy, các tín hiệu chọndòng này phải đi qua bộ khuếch đại công suất để có thể cung cấp đủ dòng cho
128 đèn sáng đồng thời trong trờng hợp cực đại
Sau đây là sơ đồ khối và sơ đồ nguyên lý của một Module quét dòng:
Sơ đồ khối của một Module quét dòng
Sơ đồ nguyên lý của Module quét dòng
A1A0
A2A3BLANK
Row 1Row 0
Row 15
.
.
Bộ phận giải mãBộ phận khuyếch đại công suất
Trang 12Bộ phận giải mã gồm hai IC 74LS138, ngoài 4 tín hiệu chọn dòng A0, A1,A2, A3 còn có một tín hiệu BLANK dùng để bật tắt dòng đợc chọn Thực chất đó
là tín hiệu cho phép hai IC giải mã hoạt động, nó cũng đợc nối chung đến tất cảcác chân cho phép của IC 74LS138 Khi tín hiệu này ở mức cao, cả hai IC giảimã đều không hoạt động, dòng tắt Khi tín hiệu này ở mức thấp, một trong hai ICgiải mã đợc chọn, tùy thuộc vào tín hiệu A3, cho phép chọn một trong số 16
Trang 13dòng Điều này giúp ta hoàn toàn có thể điều khiển đợc thời điểm sáng của cácdòng đợc chọn Khi lập trình, trớc khi chốt dữ liệu và thay đổi tín hiệu chọn dòngphải đa tín hiệu BLANK lên mức cao để tắt dòng để đảm bảo việc thay đổi tínhiệu chọn dòng không làm ảnh hởng tới hình ảnh trên bảng điện tử
Bộ phận khuếch đại công suất khi có tín hiệu chọn dòng sẽ cung cấp mộtdòng điện có khả năng cho 128 đèn sáng đồng thời Trên mỗi Module sẽ gồm 16
đèn công suất, trong đó mỗi đèn điều khiển một dòng của module hiển thị
Trong bảng chân lý của IC 74LS138 Chân E3 của IC giải mã thứ nhấtluôn đợc đặt ở mức cao Chân E2 của IC giải mã thứ hai luôn đặt ở mức thấp.Khi đó tín hiệu A4 (BLANK) sẽ là tín hiệu điều khiển bật tắt dòng đã đợc chọn.Khi A4 ở mức thấp thì dòng đợc chọn sẽ sáng, A4 ở mức cao dòng sẽ tắt Nếu A4
ở mức cao thì E2(IC1) và E1(IC2) đều ở mức cao, do đó cả hai đều không hoạt
động Khi A4 ở mức thấp thì, tín hiệu A3 có tác dụng chọn IC giải mã thứ nhấthay thứ hai làm việc, do đó A3 chính là bit thứ 4 dùng để chọn 1 trong 16 dòng.Khi A3 ở mức thấp, giải mã thứ nhất làm việc do E1 của IC1 ở mức thấp, giải mãthứ hai không làm việc do E3 của IC2 ở mức thấp Ngợc lại, khi A3 ở mức cao,giải mã thứ nhất không làm việc do E1 của IC1 ở mức cao, giải mã thứ hai làmviệc do E3 của IC2 ở mức cao Khi lập trình điều khiển việc quét dòng cần đa tínhiệu A4 lên mức cao trớc khi đa các tín hiệu chọn dòng
Tại mỗi đầu ra, sử dụng IRF9630 để tạo ra dòng và điện áp ở đầu ra lớn
đủ khả năng cung cấp điện cho một dòng sáng trong trờng hợp cực đại
III Module điều khiển
Đây là Module điều khiển chính của bảng điện tử với bộ xử lý trung tâm là
vi điều khiển Atmega 90S8515L Module điều khiển là Module quan trọng nhất,
nó điều khiển toàn bộ hoạt động của hệ thống Có thể nói đây là bộ não của toàn
bộ hệ thống, nó thực hiện các chức năng sau
- Nhận dữ liệu từ bộ nhớ chơng trình ghi vào bộ nhớ RAM
- Lấy dữ liệu từ bộ nhớ RAM và hiển thị qua bảng điện tử thông qua các thao tác
đẩy dữ liệu và quét hàng
Dựa trên những nguyên lý và yêu cầu công việc nh vậy, Module điều khiển
đợc thiết kế nh sau
Trang 15Sơ đồ nguyên lý và hoạt động của Module điều khiển
Trung tâm của Module điều khiển cũng là thành phần chính của Module
điều khiển là vi điều khiển Atmega 90S8515L, vi điều khiển này sẽ điều khiểnmọi hoạt động của Module điều khiển, vi điều khiển đợc chế tạo trên công nghệSRAM có khả năng lu trữ chơng trình lớn, và có khả năng cấu hình(nạp lại ch-
ơng trình) nhiều lần Vi điều khiển có thể đợc lập trình bằng ngôn ngữASSEMBLY hoạc C để thực hiện các chức năng cần thiết Ưu điểm của việc sửdụng vi điều khiển la:
Nhanh chóng xây dựng đợc các thiết bị điều khiển cần thiết với các chứcnăng phức tạp dựa vao các công cụ thiết kế mạch và ngôn ngữ lập trình
Có thể thực hiện với tốc độ cao do thực hiện bằng phần cứng
Do vây, với yêu câu của việc điều khiển bảng điện tử chọn vi điều khiểnlàm vi mạch điều khiển là hợp lý và cần thiết
Sơ đồ chân của vi điều khiển nh sau
Trang 16Vi điều khiển thực hiện đọc dữ liệu từ RAM đẩy dữ liệu ra Module quétdòng thông qua các chân của cổng A là PA0, PA1, PA2, PA3, PA4 trong đó PA0
# PA3 là các tín hiệu chọn dòng, PA4 là tín hiệu dùng để tắt bật bộ chọn dòng.Mặt khác vi điều khiển đẩy dữ liệu ra Module hiển thị qua các chân của cổng C
là PC0, PC1, PC2, PC3 Trong đó PC3 là chân tín hiệu CLK dùng để đa dữ liệuvào thanh ghi dịch của các IC 74HC595, PC2 là chân tín hiệu LATCH dùng đểchốt dữ liệu vào thanh ghi dịch của các IC đó, hai chân còn lại là PC1, PC0 làchân tín hiệu điều khiển cho hai màu xanh và đỏ của Module hiển thị
Ngoài ra Module diều khiển còn có khối cung cấp nguồn để nuôi vi điềukhiển và khối tạo xung nhịp
Nh đã trình bày trong thiết kế tổng quan, phần mềm điều khiển gồm cácModule chơng trình nh sau
void LOAD_FONT(char NUMBER): là thủ tục lấy font của ký tự đang xétvơi mã ASCII tơng ứng
Trang 17void NAP_BUFFER(unsigned char x): là thủ tục nạp thông tin vừa nhận
đ-ợc từ thủ tục LOAD_FONT vào bộ đệm của bảng điện tử
void SCAN(void): là thủ tục quét dữ liệu từ bộ đệm để hiển thị lên bảng
void LOAD_FONT(char NUMBER)
{ /* NEU GIA TRI CUA BIEN NUMBER BANG GIA TRI
Nạp Font
Trang 18DATA[3]=0x30C0;
DATA[4]=0x1FFC;
DATA[5]=0x0FFC;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x42: // KY TU "B" {
DATA[0]=0x3FFC; DATA[1]=0x3FFC;
DATA[2]=0x318C;
DATA[3]=0x318C;
DATA[4]=0x1FF8;
DATA[5]=0x0E70;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x43: // KY TU "C" {
DATA[0]=0x0FF0; DATA[1]=0x1FF8;
DATA[2]=0x300C;
DATA[3]=0x300C;
DATA[4]=0x300C;
DATA[5]=0x300C;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x44: // KY TU "D" {
Trang 19DATA[0]=0x3FFC;
DATA[1]=0x3FFC;
DATA[2]=0x300C;
DATA[3]=0x300C;
DATA[4]=0x1FF8;
DATA[5]=0x0FF0;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x45: // KY TU "E" {
DATA[0]=0x3FFC; DATA[1]=0x3FFC;
DATA[2]=0x318C;
DATA[3]=0x318C;
DATA[4]=0x318C;
DATA[5]=0x318C;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x46: // KY TU "F" {
DATA[0]=0x3FFC; DATA[1]=0x3FFC;
DATA[2]=0x3180;
DATA[3]=0x3180;
DATA[4]=0x3180;
DATA[5]=0x3000;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
Trang 20case 0x47: // KY TU "G"
{
DATA[0]=0x1FF8; DATA[1]=0x3FFC;
DATA[2]=0x300C;
DATA[3]=0x30CC;
DATA[4]=0x3CFC;
DATA[5]=0x1CF8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x48: // KY TU "H" {
DATA[0]=0x3FFC; DATA[1]=0x3FFC;
DATA[2]=0x0180;
DATA[3]=0x0180;
DATA[4]=0x3FFC;
DATA[5]=0x3FFC;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x49: // KY TU "I" {
DATA[0]=0x300C; DATA[1]=0x300C;
DATA[2]=0x3FFC;
DATA[3]=0x3FFC;
DATA[4]=0x300C;
DATA[5]=0x300C;
DATA[6]=0x0000;
DATA[7]=0x0000;
Trang 21break;
}
case 0x4A: // KY TU "J" {
DATA[0]=0x0038; DATA[1]=0x0038;
DATA[2]=0x300C;
DATA[3]=0x300C;
DATA[4]=0x3FFC;
DATA[5]=0x3FF8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x4B: // KY TU "K" {
DATA[0]=0x3FFC; DATA[1]=0x3FFC;
DATA[2]=0x0660;
DATA[3]=0x0C30;
DATA[4]=0x1818;
DATA[5]=0x300C;
DATA[6]=0x0000;
DATA[7]=0x0000;
break; }
case 0x4C: // KY TU "L" {
DATA[0]=0x3FFC; DATA[1]=0x3FFC;
DATA[2]=0x000C;
DATA[3]=0x000C;
DATA[4]=0x000C;
DATA[5]=0x000C;