I. Mục đích nghiên cứ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ác lĩ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ững kế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ính xác cao, thời gian thu thập dữ liệu ngắn, nhưng đá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.
Kỹ 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 lượng và xử lý thông tin nhanh, chính xác hơn so với kỹ thuật tương tự.
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ạp sẵ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ần mề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ểm rấ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 Atmega 90S8515L trong thiết kế và điều khiển bảng led " làm đề tài nghiên cứu khoa học.
II. Nguyên lý hoạt động.
Nguyên lý hoạt động của bảng điện tử dựa theo nguyên lý hoạt động của cá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òng gồ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ác nhau. Mỗi đèn được biểu diễn thông qua một bit dữ liệu, bit 1 tương ứng với đèn sá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ự lưu ảnh trên võng mạc tạo cho 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ển tthị, 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àu sắ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ử.
III.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 và đỏ, chia làm 2 Module, mỗi Module có kích thước 16x32 điểm ảnh.
Để 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ột dò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 đến mứ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áng tố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.
IV. Thiết kế phần cứng.
Phần cứng bảng điện tử gồm có Module điều khiển, Module quét dòng, và các Module hiển thị. Module điều khiển lấy dữ liệu đưa ra bảng điện tử, đồng thời đưa các tín hiệu điều khiển tới Module quét dòng để điều khiển việc quét dòng. Module quét dòng dựa vào các tín hiệu từ Module điều khiển để đưa tín hiệu chọn dòng ra Module hiển thị, quyết định dòng nào sáng, dòng nào tối. Các Module hiển thị nhận dữ liệu và tín hiệu điều khiển từ Module điều khiển và Module quét dòng, thông qua các IC chuyên dụng để điều khiển các đèn sáng tối, tạo ra hình ảnh trên bảng điện tử.
1. 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ên mỗ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 module 16x32 được tạo thành từ 8 ma trận LED 2 màu (đỏ và xanh), anode chung với kích thướ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 hiể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.
2. 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ều khiể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à cá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ột trong số 16 dòng để hiện thị. Mỗi Module hiển thị tại một thời điểm chỉ cho một dòng được sáng.
3. 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 dòng.
V. Thiết kế phần mềm.
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 độ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ên bảng điện tử, công việc đó được lặp đi lặp lại nhiều lần, dựa vào những yêu cầu đó phần mềm điều khiển được thiết kế gồm các Module chương trình như sau.
+ void LOAD_FONT(char NUMBER): là thủ tục lấy font của ký tự đang xét vơi mã ASCII tương ứng.
+ void 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 điện tử.
+ void main(void): là thân chương trình chính, nó duyệt từng ký tự của xâu cần hiển thị sau đó lần lượt gọi các thủ tục LOAD_FONT, NAP_BUFFER, SCAN.
VI. Kết luận.
Kết quả đạt được.
+ Đã chế tạo thành công bảng điện tử vơi kích thước 16x64x2color.
+ Hình ảnh chuyển động tốt, có thể thay đổi được tốc độ chạy và màu sắc của hình ảnh.
+ Nhìn chung trong quá trình hoạt động chương trình điều khiển đáp ứng được hầu hết những yêu cầu đặt ra của hệ thống và không xẩy ra lỗi.
Kết quả chưa đạt được.
+ Chất lượng màu sắc của hình ảnh chưa được rõ nét
+ Hệ thống chưa gép nối được với bàn phím để nhận dữ liệu từ bàn phím.
+ Khi thay đổi nội dung của xâu thì phải nạp lại mã nguồn.
+ Bảng điện tử chỉ mới thể hiện được text chuẩn không dấu.
Hướng phát triển của đề tài.
+ Tiếp tục mở rộng đề tài với kich thước lơn hơn.
+ Xây dựng đầy đủ bộ font tiếng việt cho bảng điện tử.
+ Thực hiện ghép nối bảng điện tử với bàn phím để nhận dữ liệu trực tiếp từ bàn phím khi thay đổi nội dung của bảng điện tử mà không phải nạp lại mã nguồn cho vi điều khiển.
+ Nội dung của bảng điện tử có thể là dạng text hoặc là đồ họa.
51 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2462 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Ứng dụng vi điều khiển Atmega 90S8515L trong thiết kế và điều khiển bảng led, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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¸c lÜ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÷ng kÕ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Ýnh x¸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.
Kü 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 lîng vµ xö lý th«ng tin nhanh, chÝnh x¸c h¬n so víi kü thuËt t¬ng tù.
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¹p s½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Çn mÒ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Óm rÊ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 Atmega 90S8515L trong thiÕt kÕ vµ ®iÒu khiÓn b¶ng LED " lµm ®Ò tµi tèt nghiÖp.
Em xin ch©n thµnh c¶m ¬n thÇy ®Æng hång lÜnh tæ kü thuËt m¸y tÝnh khoa C«ng NghÖ Th«ng Tin trêng §¹i häc Vinh, vµ thÇy bïi quèc anh tæ kü thuËt m¸y tÝnh khoa C«ng NghÖ Th«ng Tin trêng §¹i häc B¸ch khoa Hµ Néi ®· tËn t×nh híng dÉn, chØ b¶o Em trong qu¸ tr×nh lµm luËn v¨n, vµ em xin ch©n thµnh c¶m ¬n c¸c th©y c« trong khoa C«ng NghÖ Th«ng Tin trêng §¹i häc Vinh ®· gi¶ng d¹y, trang bÞ cho em nh÷ng kiÕn thøc cÇn thiÕt trong th¬i gian häc tËp t¹i trêng, vµ t«i xin ch©n thµnh c¶m ¬n c¸c b¹n bÌ ®· ®ãng gãp ý kiÕn trong th¬× gian t«i thùc hiÖn luËn v¨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¾c ch¾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.
Vinh, th¸ng 05 n¨m 2006
GVHD: ®Æng hång lÜnh (khoa CNTT trêng §¹i häc Vinh)
bïi quèc anh (khoa CNTT trêng §¹i häc B¸ch Khoa Hµ Néi)
SVTH: «ng m¹nh hïng
Ch¬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µy cµ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÷ng nhu 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¹i Indoor 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ëng bë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Òu khiÓ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©n vË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 ®Õn c¸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).
TiÕt kiÖm n¨ng lîng, cã kh¶ n¨ng thay ®æi cêng ®é s¸ng theo ®é s¸ng cña ¸nh s¸ng mÆt trêi.
C¸c module ®îc thiÕt kÕ ®éc lËp, cã kh¶ n¨ng chèng l¹i t¸c ®éng cña m«i trêng kh¾c nghiÖt nh kh«ng thÊm níc, chÞu nhiÖt, chèng tia cùc tÝm ...
Tuy nhiªn gi¸ thµnh cña c¸c b¶ng ®iÖn tö cña níc ngoµi cßn rÊt cao. Do ®ã viÖc t×m hiÓu x©y dùng b¶ng ®iÖn tö víi gi¸ thµnh hîp lý lµ cÇn thiÕt ®èi víi nhu cÇu trong níc hiÖn nay.
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ña c¸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ßng gå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¸c nhau. Mçi ®Ìn ®îc biÓu diÔn th«ng qua mét bit d÷ liÖu, bit 1 t¬ng øng víi ®Ìn s¸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 nhng do tèc ®é quÐt nhanh vµ sù lu ¶nh trªn vâng m¹c t¹o cho 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Ón thÞ, 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µu s¾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.
§Ó 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ét dß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 ®Õn mø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¸ng tè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
1. ThiÕt kÕ tæng quan phÇn cøng
PhÇn cøng b¶ng ®iÖn tö gåm cã Module ®iÒu khiÓn, Module quÐt dßng, vµ c¸c Module hiÓn thÞ. Module ®iÒu khiÓn lÊy d÷ liÖu ®a ra b¶ng ®iÖn tö, ®ång thêi ®a c¸c tÝn hiÖu ®iÒu khiÓn tíi Module quÐt dßng ®Ó ®iÒu khiÓn viÖc quÐt dßng. Module quÐt dßng dùa vµo c¸c tÝn hiÖu tõ Module ®iÒu khiÓn ®Ó ®a tÝn hiÖu chän dßng ra Module hiÓn thÞ, quyÕt ®Þnh dßng nµo s¸ng, dßng nµo tèi. C¸c Module hiÓn thÞ nhËn d÷ liÖu vµ tÝn hiÖu ®iÒu khiÓn tõ Module ®iÒu khiÓn vµ Module quÐt dßng, th«ng qua c¸c IC chuyªn dông ®Ó ®iÒu khiÓn c¸c ®Ìn s¸ng tèi, t¹o ra h×nh ¶nh trªn b¶ng ®iÖn tö.
S¬ ®å khèi tæng quan phÇn cøng nh sau:
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Þ)
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 ®é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ªn b¶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:
B¾t ®Çu
KÕt thóc
Khëi t¹o bé ®Öm
N¹p ph«ng ký tù
N¹p d÷ liÖu vµo bé ®Öm
XuÊt d÷ liÖu lªn b¶ng
khi cha hÕt x©u
Sai
§óng
Ch¬ng II: ThiiÕt kÕ phÇn cøng
Nh ®· m« t¶ , phÇn cøng cña b¶ng ®iÖn tö gåm cã Module ®iÒu khiÓn, Module quÐt dßng, vµ c¸c Module hiÓn thÞ.
Module ®iÒu khiÓn lÊy d÷ liÖu ®a ra b¶ng ®iÖn tö, ®ång thêi ®a c¸c tÝn hiÖu ®iÒu khiÓn tíi Module quÐt dßng ®Ó ®iÒu khiÓn viÖc quÐt dßng.
Module quÐt dßng dùa vµo c¸c tÝn hiÖu tõ Module ®iÒu khiÓn ®Ó ®a tÝn hiÖu chän dßng ra Module hiÓn thÞ, quyÕt ®Þnh dßng nµo s¸ng, dßng nµo tèi.
C¸c Module hiÓn thÞ nhËn d÷ liÖu vµ tÝn hiÖu ®iÒu khiÓn tõ Module ®iÒu khiÓn vµ Module quÐt dßng, th«ng qua c¸c IC chuyªn dông ®Ó ®iÒu khiÓn c¸c ®Ì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ªn mç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 module 16x32 ®îc t¹o thµnh tõ 8 ma trËn LED 2 mµu (®á vµ xanh), anode chung víi kÝch thí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 hiÓ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:
R1 G1 L1 R2 G2 L2 R3 G3 L3 R4 G4 L4
R8 G8 L8 R7 G7 L7 R6 G6 L6 R5 G5 L5
H×nh 4.1. S¬ ®å ch©n cña ma trËn Led 8 * 8 (2 mµu)
Ri: Led ®á thø i
Gi: Led xanh thø i
Li: Dßng thø i
T¹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ªn cïng mét dßng cã chung cùc d¬ng (Li). C¸c ®Ìn ®á trªn cïng mét cét cã chung cù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 ®Èy nè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Òu khiÓ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:
HÖ thèng sö dông c¸c IC ®iÒu khiÓn led 74HC595.
S¬ ®å ch©n cña IC nµy nh sau:
Mç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Öu vµ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 hai mµ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 trong Module 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 lu vµ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Ýt b7 ®î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 øng ví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 cho dß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Ën dô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Òu khiÓ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µ c¸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ét trong sè 16 dßng ®Ó hiÖn thÞ. Mçi Module hiÓn thÞ t¹i mét thêi ®iÓm chØ cho mét dß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 4 tÝ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. ë ®©y Module 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än dß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
A1
A0
A2
A3
BLANK
Row 1
Row 0
Row 15
.
.
.
.
.
.
Bé phËn gi¶i m·
Bé phËn khuyÕch ®¹i c«ng suÊt
S¬ ®å nguyªn lý cña Module quÐt dßng
Bé 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¶i m· ®Ò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 IC gi¶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 dß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¸c dß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ßng ph¶i ®a tÝn hiÖu BLANK lªn møc cao ®Ó t¾t dßng ®Ó ®¶m b¶o viÖc thay ®æi tÝn hiÖ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ét dß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Êt lu«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Êt hay 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µm viÖ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Ýn hiÖ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.
S¬ ®å 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Ón mä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øc n¨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Ón lµ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.
Vi ®iÒu khiÓn thùc hiÖn ®äc d÷ liÖu tõ RAM ®Èy d÷ liÖu ra Module quÐt dß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Öu vµ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Òu khiÓn vµ khèi t¹o xung nhÞp.
Ch¬ng III: ThiÕt kÕ phÇn mÒm ®iÒu khiÓn
Nh ®· tr×nh bµy trong thiÕt kÕ tæng quan, phÇn mÒm ®iÒu khiÓn gåm c¸c Module ch¬ng tr×nh nh sau.
void LOAD_FONT(char NUMBER): lµ thñ tôc lÊy font cña ký tù ®ang xÐt v¬i m· ASCII t¬ng øng.
void 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 ®iÖn tö.
void main(void): lµ th©n ch¬ng tr×nh chÝnh, nã duyÖt tõng ký tù cña x©u cÇn hiÓn thÞ sau ®ã lÇn lît gäi c¸c thñ tôc LOAD_FONT, NAP_BUFFER, SCAN
tõ nh÷ng yªu cÇu vµ c«ng viÖc nh trªn ta cã gi¶i thuËt vµ ch¬ng tr×nh cña c¸c Module ch¬ng tr×nh t¬ng ng sau.
I. ThuËt to¸n vµ ch¬ng tr×nh cña thñ tôc LOAD_FONT
B¾t ®Çu
KÕt thóc
M· ASCII
hîp lÖ
N¹p Font
1. ThuËt to¸n.
Sai
§óng
2. Ch¬ng tr×nh.
void LOAD_FONT(char NUMBER)
{ /* NEU GIA TRI CUA BIEN NUMBER BANG GIA TRI */
switch (NUMBER) /* HECXA CUA MOT KY TU NAO DO THI LAY FORNT TUONG UNG */
{ /* CUA KY TU DO */
case 0x41: // KY TU "A"
{
DATA[0]=0x0FFC;
DATA[1]=0x1FFC;
DATA[2]=0x30C0;
DATA[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"
{
DATA[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;
}
case 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;
break;
}
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;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x4D: // KY TU "M"
{
DATA[0]=0x3FFC;
DATA[1]=0x1FFC;
DATA[2]=0x0C00;
DATA[3]=0x0600;
DATA[4]=0x0C00;
DATA[5]=0x1FFC;
DATA[6]=0x3FFC;
DATA[7]=0x0000;
break;
}
case 0x4E: // KY TU "N"
{
DATA[0]=0x3FFC;
DATA[1]=0x1FFC;
DATA[2]=0x0E00;
DATA[3]=0x0180;
DATA[4]=0x0070;
DATA[5]=0x3FF8;
DATA[6]=0x3FFC;
DATA[7]=0x0000;
break;
}
case 0x4F: // KY TU "O"
{
DATA[0]=0x1FF8;
DATA[1]=0x3FFC;
DATA[2]=0x300C;
DATA[3]=0x300C;
DATA[4]=0x3FFC;
DATA[5]=0x1FF8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x50: // KY TU "P"
{
DATA[0]=0x3FFC;
DATA[1]=0x3FFC;
DATA[2]=0x30C0;
DATA[3]=0x30C0;
DATA[4]=0x3FC0;
DATA[5]=0x1F80;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x51: // KY TU "Q"
{
DATA[0]=0x1FF8;
DATA[1]=0x3FFC;
DATA[2]=0x300C;
DATA[3]=0x306C;
DATA[4]=0x3FFC;
DATA[5]=0x1FF8;
DATA[6]=0x000C;
DATA[7]=0x0000;
break;
}
case 0x52: // KY TU "R"
{
DATA[0]=0x3FFC;
DATA[1]=0x3FFC;
DATA[2]=0x31E0;
DATA[3]=0x31B0;
DATA[4]=0x3F98;
DATA[5]=0x1F0C;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x53: // KY TU "S"
{
DATA[0]=0x1F18;
DATA[1]=0x3F9C;
DATA[2]=0x318C;
DATA[3]=0x318C;
DATA[4]=0x39FC;
DATA[5]=0x18F8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x54: // KY TU "T"
{
DATA[0]=0x3000;
DATA[1]=0x3000;
DATA[2]=0x3FFC;
DATA[3]=0x3FFC;
DATA[4]=0x3000;
DATA[5]=0x3000;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x55: // KY TU "U"
{
DATA[0]=0x3FF8;
DATA[1]=0x3FFC;
DATA[2]=0x000C;
DATA[3]=0x000C;
DATA[4]=0x3FFC;
DATA[5]=0x3FF8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x56: // KY TU "V"
{
DATA[0]=0x3FE0;
DATA[1]=0x3FF0;
DATA[2]=0x0018;
DATA[3]=0x000C;
DATA[4]=0x0018;
DATA[5]=0x3FF0;
DATA[6]=0x3FE0;
DATA[7]=0x0000;
break;
}
case 0x57: // KY TU "W"
{
DATA[0]=0x3FFC;
DATA[1]=0x3FF8;
DATA[2]=0x0030;
DATA[3]=0x0060;
DATA[4]=0x0030;
DATA[5]=0x3FF8;
DATA[6]=0x3FFC;
DATA[7]=0x0000;
break;
}
case 0x58: // KY TU "X"
{
DATA[0]=0x381C;
DATA[1]=0x0E70;
DATA[2]=0x03C0;
DATA[3]=0x03C0;
DATA[4]=0x0E70;
DATA[5]=0x381C;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x59: // KY TU "Y"
{
DATA[0]=0x3E00;
DATA[1]=0x3F00;
DATA[2]=0x01FC;
DATA[3]=0x01FC;
DATA[4]=0x3F00;
DATA[5]=0x3E00;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x5A: // KY TU "Z"
{
DATA[0]=0x303C;
DATA[1]=0x307C;
DATA[2]=0x30CC;
DATA[3]=0x318C;
DATA[4]=0x330C;
DATA[5]=0x3E0C;
DATA[6]=0x3C0C;
DATA[7]=0x0000;
break;
}
case 0x20: // KY TU " "
{
DATA[0]=0x0000;
DATA[1]=0x0000;
DATA[2]=0x0000;
DATA[3]=0x0000;
DATA[4]=0x0000;
DATA[5]=0x0000;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x30: // KY TU "0"
{
DATA[0]=0x1FF8;
DATA[1]=0x3FFC;
DATA[2]=0x318C;
DATA[3]=0x30CC;
DATA[4]=0x3FFC;
DATA[5]=0x1FF8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x31: // KY TU "1"
{
DATA[0]=0x0000;
DATA[1]=0x0600;
DATA[2]=0x0C0C;
DATA[3]=0x1FFC;
DATA[4]=0x3FFC;
DATA[5]=0x000C;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x32: // KY TU "2"
{
DATA[0]=0x1C1C;
DATA[1]=0x3C3C;
DATA[2]=0x306C;
DATA[3]=0x30CC;
DATA[4]=0x3F8C;
DATA[5]=0x1F0C;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x33: // KY TU "3"
{
DATA[0]=0x1838;
DATA[1]=0x39BC;
DATA[2]=0x318C;
DATA[3]=0x318C;
DATA[4]=0x3FFC;
DATA[5]=0x1E78;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x34: // KY TU "4"
{
DATA[0]=0x01E0;
DATA[1]=0x03E0;
DATA[2]=0x0660;
DATA[3]=0x0C60;
DATA[4]=0x1FFC;
DATA[5]=0x3FFC;
DATA[6]=0x0060;
DATA[7]=0x0000;
break;
}
case 0x35: // KY TU "5"
{
DATA[0]=0x3F89;
DATA[1]=0x3F9C;
DATA[2]=0x318C;
DATA[3]=0x318C;
DATA[4]=0x31FC;
DATA[5]=0x30F8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x36: // KY TU "6"
{
DATA[0]=0x1FF8;
DATA[1]=0x3FFC;
DATA[2]=0x318C;
DATA[3]=0x318C;
DATA[4]=0x39FC;
DATA[5]=0x18F8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x37: // KY TU "7"
{
DATA[0]=0x380C;
DATA[1]=0x383C;
DATA[2]=0x30F0;
DATA[3]=0x33C0;
DATA[4]=0x3F00;
DATA[5]=0x3C00;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x38: // KY TU "8"
{
DATA[0]=0x1E78;
DATA[1]=0x3FFC;
DATA[2]=0x318C;
DATA[3]=0x318C;
DATA[4]=0x3FFC;
DATA[5]=0x0E78;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
case 0x39: // KY TU "9"
{
DATA[0]=0x1E18;
DATA[1]=0x3F1C;
DATA[2]=0x330C;
DATA[3]=0x330C;
DATA[4]=0x3FFC;
DATA[5]=0x1FF8;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
default:
{
DATA[0]=0x0000;
DATA[1]=0x0000;
DATA[2]=0x0000;
DATA[3]=0x0000;
DATA[4]=0x0000;
DATA[5]=0x0000;
DATA[6]=0x0000;
DATA[7]=0x0000;
break;
}
}
}
II. ThuËt to¸n vµ ch¬ng tr×nh cña thñ tôc NAP_BUFFER
B¾t ®Çu
KÕt thóc
N¹p font cña ký tù ®ang xÐt vµo ®Þa chØ cuèi cïng cña bé ®Öm
DÞch c¸c phÇn tö trong bé ®Öm lªn 1 vÞ trÝ
1. ThuËt to¸n.
2. Ch¬ng tr×nh.
void NAP_BUFFER(unsigned char x)
{
BUFFER[59]=BUFFER[58]; /* NAP THEM COT CUA FORNT CUA KY TU DANG XET */
BUFFER[58]=BUFFER[57]; /* DONG THOI DICH TAT CA CAC COT TRUOC DO LEN MOT VI TRI */
BUFFER[57]=BUFFER[56]; /* NHAM MUC DICH CHO DONG KY TU CHAY */
BUFFER[56]=BUFFER[63];
BUFFER[63]=BUFFER[62];
BUFFER[62]=BUFFER[61];
BUFFER[61]=BUFFER[60];
BUFFER[60]=BUFFER[51];
BUFFER[51]=BUFFER[50];
BUFFER[50]=BUFFER[49];
BUFFER[49]=BUFFER[48];
BUFFER[48]=BUFFER[55];
BUFFER[55]=BUFFER[54];
BUFFER[54]=BUFFER[53];
BUFFER[53]=BUFFER[52];
BUFFER[52]=BUFFER[43];
BUFFER[43]=BUFFER[42];
BUFFER[42]=BUFFER[41];
BUFFER[41]=BUFFER[40];
BUFFER[40]=BUFFER[47];
BUFFER[47]=BUFFER[46];
BUFFER[46]=BUFFER[45];
BUFFER[45]=BUFFER[44];
BUFFER[44]=BUFFER[35];
BUFFER[35]=BUFFER[34];
BUFFER[34]=BUFFER[33];
BUFFER[33]=BUFFER[32];
BUFFER[32]=BUFFER[39];
BUFFER[39]=BUFFER[38];
BUFFER[38]=BUFFER[37];
BUFFER[37]=BUFFER[36];
BUFFER[36]=BUFFER[27];
BUFFER[27]=BUFFER[26];
BUFFER[26]=BUFFER[25];
BUFFER[25]=BUFFER[24];
BUFFER[24]=BUFFER[31];
BUFFER[31]=BUFFER[30];
BUFFER[30]=BUFFER[29];
BUFFER[29]=BUFFER[28];
BUFFER[28]=BUFFER[19];
BUFFER[19]=BUFFER[18];
BUFFER[18]=BUFFER[17];
BUFFER[17]=BUFFER[16];
BUFFER[16]=BUFFER[23];
BUFFER[23]=BUFFER[22];
BUFFER[22]=BUFFER[21];
BUFFER[21]=BUFFER[20];
BUFFER[20]=BUFFER[11];
BUFFER[11]=BUFFER[10];
BUFFER[10]=BUFFER[9];
BUFFER[9]=BUFFER[8];
BUFFER[8]=BUFFER[15];
BUFFER[15]=BUFFER[14];
BUFFER[14]=BUFFER[13];
BUFFER[13]=BUFFER[12];
BUFFER[12]=BUFFER[3];
BUFFER[3]=BUFFER[2];
BUFFER[2]=BUFFER[1];
BUFFER[1]=BUFFER[0];
BUFFER[0]=BUFFER[7];
BUFFER[7]=BUFFER[6];
BUFFER[6]=BUFFER[5];
BUFFER[5]=BUFFER[4];
BUFFER[4]=DATA[x];
}
B¾t ®Çu
KÕt thóc
HANG < 16
COT < 64
HANG =1,VITRI=1
COT=1
§Èy vÞ trÝ lµ VITRI lªn cét cã gi¸ trÞ COT vµ hµng cã gi¸ trÞ lµ HANG
COT++
TrÔ thêi gian ®Ó lu ¶nh
HANG++, VITRI++
III. ThuËt to¸n vµ ch¬ng tr×nh cña thñ tôc SCAN.
1. ThuËt to¸n
Sai
§óng
Sai
§óng
2. Ch¬ng tr×nh
void SCAN(void)
{
unsigned char HANG=0x00; /* BAT DAU QUET TU HANG 0 */
unsigned int MASK,TG ; /* DUNG MOT MAT NA DE TEST TUNG BIT CUA BUFFER */
TG=0x8000; /* BAT DAU TEST TU BIT CAO NHAT */
for(i=1;i<=16;i++) /* THUC HIEN TEST 16 LAN CHO 16 HANG */
{
MASK=TG;
for(j=0;j<64;j++)
{ MASK &= BUFFER[j]; /* TEST TUNG BIT DE HIEN THI */
if(MASK==0x0000) /* NEU BIT DO LA 0 THI TAT LED */
{
SDIR=1;
SDIG=1;
}
else /* NGUOC LAI THI BAT LED */
{
SDIR=0;
SDIG=1;
}
CLK=1; /* DAY XUNG CLK DE CHOT DU LIEU VAO SHIF REGISTER */
CLK=0;
MASK=TG; /* TRA LAI GIA TRI CHO MAT NA */
}
CONTROL=HANG; /* CHON HANG HIEN THOI */
LATCH=1; /* CHOT DU LIEU DE HIEN THI LEN BANG LED */
LATCH=0;
#asm("cli")
delay_us(1700); /* TRE DE LUU ANH */
#asm("sei")
BLANK=1; /* TAT BO CHON HANG DE TRANH HIEN TUONG BONG MA */
HANG++; /* TANG HANG DE QUET HANG TIEP THEO */
TG/=2; /* TEST BIT TIEP THEO */
}
}
IV. ThuËt to¸n vµ ch¬ng tr×nh cña th©n ch¬ng tr×nh chÝnh
B¾t ®Çu
KÕt thóc
Khëi t¹o bé ®Öm
Gäi thñ tôc LOAD_FONT
Gäi thñ tôc NAP_BUFFER
Gäi thñ tôc SCAN
khi cha hÕt x©u
1. ThuËt to¸n
Sai
§óng
2. Ch¬ng tr×nh
void main(void)
{
DDRA=0xFF; /* DINH DANG CONG A VA C LA CONG OUT */
DDRC=0xFF;
for(i=0;i<64;i++) /* KHOI TAO BO DEM BUFFER */
BUFFER[i]=0x0000;
while(1) /* KHI NAO CON DUNG THI THUC HEN */
{
m=0; /* BAT DAU XET TU KY TU DAU TIEN */
while(ST[m]!=NULL) /* KHI CHUA XET HET XAU */
{
MA=toascii(ST[m]); /* LAY MA ASCII CUA KY TU DANG XET */
LOAD_FONT(MA); /* GOI THU TUC LAY FORNT CUA KY TU DO */
n=0; /* VI FORNT CUA MOI KY TU LA 12x8 */
while(n<8) /* NEN PHAI NAP 8 LAN CHO MOT KY TU */
{NAP_BUFFER(n); /* TUONG UNG VOI 8 COT */
SCAN(); /* GOI THU TUC SCAN */
SCAN();
n=n+1; /* TANG n DE NAP COT TIEP THEO */
}
m=m+1; /* TANG m DE XET KY TU TIEP THEO */
}
n=0;
while(n<8) /* SAU KHI QUET HET XAU THI NAP THEM 8 KY TU RONG */
{ /* NHAM MUC DICH DOI CHO DEN KHI CHAY HET XAU */
LOAD_FONT(0xFF); /* ROI MOI CHAY LAI LAN TIEP THEO */
m=0;
while (m<8)
{
NAP_BUFFER(m);
SCAN();
SCAN();
m=m+1;
}
n=n+1;
}
}
}
V. Mét sè khai b¸o trong ch¬ng tr×nh
/****************************************
Project : LED DRIVERS
Version : 1.0
Date : 20/03/2006
Author : ONG MANH HUNG
Company : CNTT - VINH UNIVERSITY
Chip type : ATmega8515L
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
******************************************/
#include
#include
#include
#include
#include
/********** THIET LAP CONG DIEU KHIEN **********/
#define CLK PORTC.3
#define LATCH PORTC.2
/********** THIET LAP CONG DU LIEU **********/
#define SDIR PORTC.1
#define SDIG PORTC.0
/********** THIET LAP CONG CHON HANG **********/
#define CONTROL PORTA
/********** TAT BAT BO CHON HANG **********/
#define BLANK PORTA.4
/********** KHAI BAO DU LIEU **********/
unsigned int BUFFER[64],k; /* BO DEM CUA BANG LED */
char ST[]="",MA; /* XAU CAN OUT */
unsigned char i,j,n,m;
unsigned int DATA[8]; /* DUNG DE LUU FONT CUA KY TU DANG XET */
Ch¬ng IV: KÕt luËn
I. KÕt qu¶ ®¹t ®îc.
§· chÕ t¹o thµnh c«ng b¶ng ®iÖn tö v¬i kÝch thíc 16x64x2color.
H×nh ¶nh chuyÓn ®éng tèt, cã thÓ thay ®æi ®îc tèc ®é ch¹y vµ mµu s¾c cña h×nh ¶nh.
Nh×n chung trong qu¸ tr×nh ho¹t ®éng ch¬ng tr×nh ®iÒu khiÓn ®¸p øng ®îc hÇu hÕt nh÷ng yªu cÇu ®Æt ra cña hÖ thèng vµ kh«ng xÈy ra lçi.
II. KÕt qu¶ cha ®¹t ®îc.
ChÊt lîng mµu s¾c cña h×nh ¶nh cha ®îc râ nÐt
HÖ thèng cha ghÐp nèi ®îc víi bµn phÝm ®Ó nhËn d÷ liÖu tõ bµn phÝm.
Khi thay ®æi néi dung cña x©u th× ph¶i n¹p l¹i m· nguån.
B¶ng ®iÖn tö chØ míi thÓ hiÖn ®îc text chuÈn kh«ng dÊu.
III. Híng ph¸t triÓn cña ®Ò tµi.
TiÕp tôc më réng ®Ò tµi víi kich thíc l¬n h¬n.
X©y dùng ®Çy ®ñ bé font tiÕng viÖt cho b¶ng ®iÖn tö.
Thùc hiÖn ghÐp nèi b¶ng ®iÖn tö víi bµn phÝm ®Ó nhËn d÷ liÖu trùc tiÕp tõ bµn phÝm khi thay ®æi néi dung cña b¶ng ®iÖn tö mµ kh«ng ph¶i n¹p l¹i m· nguån cho vi ®iÒu khiÓn.
Néi dung cña b¶ng ®iÖn tö cã thÓ lµ d¹ng text hoÆc lµ ®å häa.
tµi liÖu tham kh¶o
C¸c phÇn mÒm sö dông vµ tµi liÖu tham kh¶o ®îc tr×nh bµy díi ®©y.
PhÇn mÒm:
PhÇn mÒm CodeVisionAVR C Compile ®Ó lËp tr×nh cho Vi ®iÒu khiÓn.
PhÇn mÒm Protel DXP 2004 ®Ó vÏ m¹ch nguyªn lý vµ m¹ch in.
Tµi liÖu tham kh¶o:
Bµi gi¶ng m«n häc Ngo¹i vi vµ giao diÖn cña ThÇy Bïi Quèc Anh Khoa CNTT Trêng §¹i häc B¸ch Khoa Hµ Néi.
Bµi gi¶ng m«n häc Vi xö lÝ cña ThÇy §Æng Hång LÜnh Khoa CNTT Trêng §¹i häc Vinh.
Bµi gi¶ng m«n häc §iÖn tö sè cña ThÇy NguyÔn Quang Ninh Khoa CNTT Trêng §¹i häc Vinh.
C¸c Website:
http:// www.AllDataSheet.com