MẠCH QUANG BÁO
Trang 1LỜI NÓI ĐẦU
Cùng với sự phát triển của xã hội trong tất cả các lĩnh vực của đời sống, nhu cầu quảng bá của các tổ chức, doanh nghiệp, cá nhân cũng là một cách thúc đẩy để nhằm đưa hình ảnh của mình đến gần hơn với công chúng Có rất nhiều hình thức quảng bá khác nhau thông qua các phương tiện thông tin đại chúng như báo, đài, TV, Internet Giờ đây, khi đi dọc các tuyến đường của thành phố, chúng ta đã không còn xa lạ với hình ảnh của các bảng điện tử phát sáng đủ loại màu sắc, hình ảnh và hiệu ứng khác nhau của các doanh nghiệp, các trung tâm thương mại, các cửa hiệu Đó chính là các bảng Quang báo Không chỉ với mục đích đó, các bảng Quang báo còn được dùng để hiển thị các thông tin cần thiết như thông báo thời gian, biển chỉ dẫn, bảng cập nhật giá cả và được sử dụng rộng rãi trong các nhà ga, sân bay, ngân hàng, các sàn giao dich Có thể nói, ứng dụng của Quang báo là khá
đa dạng Và chính bởi tính chất hiện đại và khả năng hiển thị thông tin rõ ràng mà hiện nay Quang báo được sử dụng ngày càng phổ biến.
Đề tài “Mạch Quang báo” là một trong những đề tài cơ bản của mạch Quang báo
nói chung Tìm hiểu về đề tài này sẽ giúp chúng ta có được một cái nhìn chi tiết và rõ ràng hơn về nguyên tắc hiển thị của các bảng Led Khi nắm bắt được nguyên tắc đó, sẽ là vô cùng thú vị nếu chúng ta sử dụng nó làm cơ sở cho những ứng dụng Quang báo phục vụ trong đời sống hàng ngày.
Trang 2CHƯƠNG 1: MẠCH QUANG BÁO
SỬ DỤNG BÀN PHÍM PS2 ĐỂ NHẬP KÝ TỰ
Phân tích và Thiết Kế
1.1 Yêu cầu đề tài
Mạch quang báo sử dụng bàn phím PS2 có nhiệm vụ hiển thị văn bản cùng với các hiệu ứng theo mong muốn của người sử dụng Văn bản được nhập trực tiếp thông qua một bàn phím máy tính gắn ngoài Cụ thể ở đây là bàn phím PS/2 khi ta nhấn phím thì nội dung của phím sẽ được hiển thị trên vi điều khiển và hiển thị theo hiệu ứng đã định trước
1.2 Phân tích yêu cầu đề tài
Để làm mạch quang báo các câu hỏi được đặt ra là: Hiển thị ký tự như thế nào? Việc điều khiển hiển thị sẽ thực hiện như thế nào? Làm thế nào để thiết kế cho mạch hoạt động dựa trên các tài nguyên đã lựa chọn? Các phương pháp tối ưu có thể có không? Dựa trên yêu cầu của đề tài ta có thể đi đến phát thảo sơ bộ các khối cần thiết là : Khối nguồn, điều khiển hiển thị, xuất, nhập, và các giao tiếp điện giữa các khối
Vì thế sơ đồ khối đề xuất tổng thể sẽ như sau:
Sơ đồ phát thảo mạch quang báo
Trang 31.3 Phân tích nhiệm vụ và hoạt động của từng khối
1.3.1 Khối nhập
Yêu cầu dùng bàn phím PS/2 để tạo dữ liệu vào Khi ta nhấn phím thì nội dung sẽ hiển thị trên vi điều khiển, dựa trên cơ chế hoạt dộng của bàn phím khi nhấn phím để xây dựng được thuật toán đọc dữ liệu vào khối điều khiển
1.3.2 Khối xuất
Hiển thị được nội dung nhập vào Mạch này sẽ nhận nội dung đến theo một cơ chế nào đó để có thể thực hiện được việc hiển thị chính xác và mịn
1.3.3 Khối giao tiếp
Vì đặc tính điện của mỗi khối mạch là khác nhau vì mỗi khối khi được thiết kế đều có mức dòng công xuất và điện áp hoạt động theo yêu cầu nên việc cần thiết phải dùng khối giao tiếp điện là một yêu cầu hợp lý Nhiệm vụ của khối này là biến đổi dòng
và áp sao cho phù hợp với 2 khối nằm ở 2 bên giao diện ghép nối
1.3.4 Khối điều khiển
Yêu cầu của khối điều khiển là phải nhận được ký tự nhập từ bàn phím và phải
xử lý thông tin nhận được và biến nó qua kiểu thông tin với những đặc điểm phù hợp với khối hiển thị Việc lựa chọn các khối điều khiển dựa trên các công nghệ hiện nay là Vi điều khiển và Vi xử lý
Trang 4Để hiểu rõ cách thức truyền dữ liệu của bàn phím ta xét khung truyền số liệu của bàn phím
Cấu trúc truyền số liệu của bàn phím
Start: bit start ( luôn bằng 0)
D0- D7 : các bit dữ liệu
P : bit Parity, bit chẵn lẻ
Stop : bit stop (luôn luôn bằng 1)
Mỗi một phím khi nhấn sẽ được gán cho một mã quét gồm 1byte Khi nhả phím sẽ gán cho một mã quét gồm 2 byte Có phím được gán 2 byte cho nhấn phím và 3 byte cho nhả phím…
Trường hợp khi nhấn phím xuống trong khoảng thời gian dài thì sau 0,5s ( tùy vào từng bàn phím) bàn phím sẽ phát liên tục byte đó
Trang 51.4.2 Khối điều khiển:
Để sử lý dữ liệu nhận và xuất một cách mềm dẻo thì Khối điều khiển phải đóng vai trò như một “bộ não thông minh” Các dòng sản phẩm được thiết kế cho mục đích điều khiển trên thị trường hiện nay là Vi điều khiển, Vi xử lý
Với việc nhận dữ liệu từ bàn phím thì khối điều khiển phải có chức năng nhận dữ liệu Với việc xuất dữ liệu thì khối điều khiển phải có các cổng để dữ liệu đưa ra Với các phân tích ở trên thì việc lựa chọn Vi điều khiển để làm nền tảng cho khối điều khiển là hợp lý
vì có thể thõa mãn các yêu cầu như phân tích ở trên Câu hỏi tiếp theo nảy sinh là chọn dòng
vi điều khiển nào? Thõa mãn các yêu cầu gì?
Chọn dòng Vi điều phải có số chân đáp ứng được yêu cầu đề ra, phải có cổng nhận
dữ liệu vào với số chân hợp lí Cổng xuất dữ liệu phải đáp ứng được yêu cầu của khối hiển thị VĐK phải thực hiện được thuật toán đề ra một các mềm dẻo và cuối cùng là Vi Điều khiển phải thông dụng
Vì bàn phím phát dữ liệu trên 1 chân và xung Clock trên 1 chan nên cần ít nhất 2 chân để nhận dữ liệu
Với các phân tích ở trên, VĐK được chọn lựa là dòng AT89C của Atmel vì nó có cổng nhận dữ liệu nối tiếp ở chân P3.1 P3.2, 4 ngõ xuất nhập, có Timer định thời
Với cacs thuật toán được đề ra sẽ được phân tích bên dưới thì VĐK được chọn chính xác ;à AT89C52
Giới thiệu về VĐK 89C52:
Vi điều khiển AT89c52 do hãng Atmel sản xuất IC này có đặc điểm như sau:
• 8k 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 89c52:
Trang 6Hình 1.2 Sơ đồ chân 89C52
Chức năng của các chân 89C52:
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 89c52 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 89C52 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 89C52 để giải mã lệnh Khi 89c52 thi hành chương trình trong EPROM nội PSEN ở mức logic 1
ALE (Address Latch Enable):
Khi 89c52 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
Trang 7Tí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 nhất 2 chu kì máy
Các ngõ vào bộ dao động Xtal1, Xtal2:
Bộ tạo dao động được tích hợp bên trong 89C52 Khi sử dụng 89C52, người ta chỉ cần nối thêm tụ thạch anh và các tụ Tần số tụ thạch anh thường là 12 Mh – 24 Mh
Cấu trúc bên trong của 89c52
Sơ đồ khối bên trong 89c52:
Trang 8Hình 1.3 Cấu trúc bên trong của vi điều khiển
Tổ chức bộ nhớ
Hình 1.4 Bảng tóm tắt các vùng nhớ 89c52
Trang 9RAM bên trong 89c52 được phân chia như sau:
Các bank thanh ghi cĩ địa chỉ từ 00H đến 1FH
RAM địa chỉ hĩa từng bit cĩ địa chỉ từ 20H đến 2FH
RAM đa dụng từ 30H đến 7FH
Các thanh ghi chức năng từ 80H đến FFH
Hình 1.5 Cấu trúc bộ nhớ Ram bên trong vi điều khiển
7F 7E 7D 7C 7B 7A 79 78 2F
77 76 75 74 73 72 71 70 2E
6F 6E 6D 6C 6B 6A 69 68 2D
67 66 65 64 63 62 61 60 2C
5F 5E 5D 5C 5B 5A 59 58 2B
57 56 55 54 53 52 51 50 2A
4F 4E 4D 4C 4B 4A 49 48 29
47 46 45 44 43 42 41 40 28
3F 3E 3D 3C 3B 3A 39 38 27
37 36 35 34 33 32 31 30 26
2F 2E 2D 2C 2B 2A 29 28 25
27 26 25 24 23 22 21 20 24
1F 1E 1D 1C 1B 1A 19 18 23
17 16 15 14 13 12 11 10 22
0F 0E 0D 0C 0B 0A 09 08 21
07 06 05 04 03 02 07
1 00 20
Bank 3 1F
18
Bank 2 17
10
Bank 1 0F
CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
không được địa chỉ hóa bit
FF
Địa chỉ byte
Địa chỉ byte
Trang 10- Bộ nhớ trong 89c52 bao gồm ROM và RAM RAM trong 89c52 bao gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt.
- 89c52 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Chương trình và dữ liệu có thể chứa bên trong 8951 nhưng 8951 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu
Bộ nhớ bên trong 89c52 bao gồm ROM và RAM RAM bao gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt
89c52 có bộ nhớ theo cấu trúc Harvard: có những vùng nhớ riêng biệt cho chương trình và
dữ liệu Chương trình và dữ liệu có thể chứa bên trong 89c52 nhưng 89c52 vẫn có thể kết nối với 64 k byte bộ nhớ chương trình và 64 k byte bộ nhớ dữ liệu mở rộng
Ram bên trong 89c52 được phân chia như sau:
• Các bank thanh ghi có địa chỉ từ 00H đến 1FH
• Ram địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH
trong khi đó các bộ vi xử lý bên ngoài làm bộ nhớ ngăn xếp nên dung lượng tùy ý mở rộng Ram có thể truy xuất từng bit:
89c52 chứa 210 bit được địa chỉ hóa từng bit, trong đó 128 bit chứa ở các byte có địa chỉ từ 20H đến 2FH, các bit còn lại chứa trong nhóm thanh ghi chức năng đặc biệt
Ýtưởng truy xuất từng bit bằng phần mềm là một đặc tính mạnh của vi điều khiển nói chung Các bit có thể được đặt, xóa, and, or,… với 1 lệnh đơn Ngoài ra các port cũng có thể truy xuất được từng bít làm đơn giản phần mềm xuất nhập từng bit
Các bank thanh ghi:
Bộ lệnh 89c52 hỗ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định (sau khi reset
hệ thống), các thanh ghi nàyở các địa chỉ 00H đến 07H
Đây là lệnh 1 byte dùng địa chỉ thanh ghi Tuy nhiên có thể thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ 2: MOV A, 05H
Lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn nhiều so với lệnh tương ứng dùng địa chỉ trực tiếp
Bank thanh ghi tích cực bằng cách thay đổi các bit trong từ trạng thái chương trình (PSW) Giả sủ thanh ghi thứ 3 đang được truy xuất, lệnh sau đây sẽ di chuyển nội dung của thanh ghi A vào ô nhớ ram có địa chỉ 18H: MOV R0, A
Các thanh ghi có chức năng đặc biệt:
Trang 1189c52 có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Register) ở vùng trên của RAM nội từ địa chỉ 80H đến FFH.
Chú ý: tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21 thanh ghi chức năng đặc biệt được định nghĩa sẵn các địa chỉ
Các thanh ghi port xuất nhập:
Các port của 89c52 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H, port 2 ở địa chỉ A0H, và port3 ở địa chỉ B0H tất cả các port này đều có thể truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp
Các thanh ghi timer:
89c52 có chứa 3 bộ định thời/ đếm 16 bit được dùng cho việc định thời hoặc đếm sự kiện Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao) Timer 1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao) Việc khởi động timer được Set bởi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H, chỉ có TCON được địa chỉ hóa từng bit
Các thanh ghi port nối tiếp:
89c52 chứa một port nối tiếp dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc giao tiếp nối tiếp với các IC khác Một thanh ghi gọi là bộ đệm
dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả 2 dữ liệu truyền và dữ liệu nhận Khi truyền
dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp SCON ở địa chỉ 98H
Các thanh ghi ngắt:
89c52 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cấm sau khi reset hệ thống
và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H, cả 2 thanh ghi được địa chỉ hóa từng bit
Thanh ghi điều khiển công suất:
Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa các bit điều khiển
Tín hiệu Reset:
89c52 có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian 2 chu kỳ, sau
đó xuống mức thấp để 89c52 bắt đầu làm việc RST có thể kích bằng tay bằng một phím nhấn thường mở, sơ đồ mạch reset như hình trên (hình a)
sau khi reset hệ thống được tóm tắt như sau:
Trang 12Đếm chương trình PCThanhghi tích lũy AThanh ghi B
Thanh ghi trạng tháiSP
DPTRPort 0 đến Port 3IP
IECác thanh ghi định thời
0000H00H00H00H07H0000HFFHXXX0000 B0XX00000 B00H
Hoạt động thanh ghi TIMER
89c52 có hai timer 16 bit, mỗi timer có bốn cách làm việc Người ta sử dụng các timer để:
• Định khoảng thời gian
• Tạo tốc độ baud cho port nối tiếp trong 89c52
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những khoảng đều đặn và đặt cờ tràn timer Cờ được dùng để đồng bộ hóa chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các ngõra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ đo độ rộng xung )
Truy xuất các timer của 89c52 dùng sáu thanh ghi chức năng đặc biệt cho trong bảng sau:
TCON Điều khiển Timer 88H Có
Các thanh ghi chức năng của timer trong 8031
Trang 13Thanh ghi chế độ timer (TMOD):
Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0, và Timer 1
cao
1 = bộ đếm sự kiện
0 = bộ định khoảng thời gian
cao
Tóm tắt thanh ghi chức năng TMOD
Thanh ghi điều khiển timer(TCON)
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho Timer 1, Timer 0
TCON.7 TF1 8FH Cờ báo tràn timer 1 Đặt bởi phần cứng khi tràn,
được xóa bởi phần mềm, hoặc phần cứng khi bộ
xử lý chỉ đến chương trình phục vụ ngắt
mềm để cho timer chạy ngưng
phát hiện một cạnh xuống ở INT1 xóa bằng phần mềm họăc phần cứng khi CPU chỉ đến chương
Trang 14trình phục vụ ngắt.
mềm để ngắt ngoài tích cực cạnh xuống /mức thấp
Khởi động và truy xuất thanh ghi timer:
Thông thường các thanh ghi được khởi động một lần đầu ở chương trình để đặt ở chế
độ làm việc đúng Sau đó, trong thân chương trình, các thanh ghi timer được cho chạy, dừng, các bit được kiểm tra và xóa, các thanh ghi timer được đọc và cập nhật… theo đòi hỏi các ứng dụng
TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoạt động Ví dụ, các lệnh sau khởi động Timer 1 như timer 16 bit (chế độ 1) có xung nhịp từ bộ dao động tên chip cho việc định khoảng thời gian:
MOV TMOD, #1BLệnh này sẽ đặt M1 = 1 và M0 = 0 cho chế độ 1, C/ T= 0 và GATE = 0 cho xung nhịp nội và xóa các bit chế độ Timer 0 Dĩ nhiên, timer không thật sự bắt đầu định thời cho đến khi bit điều khiển chạy TR1 được đặt lên 1
Nếu cần số đếm ban đầu, các thanh ghi TL1/TH1 cũng phải được khởi động Một khoảng 100s có thể được khởi động bằng cách khởi động giá trị cho TH1/TL1 là FF9CH:
MOV TL1, #9CH MOV TH1, #0FFHRồi timer được cho chạy bằng cách đặt bit điều khiển chạy như sau:
SETB TR1
Cờ báo tràn được tự động đặt lên 1 sau 100s Phần mềm có thể đợi trong 100 s bằng cách dùng lệnh rẽ nhánh có điều kiện nhảy đến chính nó trong khi cờ báo tràn chưa được đặt lên 1:
WAIT: JNB TF1, WAITKhi timer tràn, cần dừng timer và xóa cờ báo tràn trong phần mềm:
CLR TR1CLR TF1
Ngắt ( INTERRUPT)
Trang 15Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác.
Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi điều khiển Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện
đó trong khi một chương trình khác đang thực thi
Tổ chức ngắt của 89c52:
Có 5 nguồn ngắt ở 89c52: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phép từng cái một bằng phần mềm
Khi có hai hoặc nhiều ngắt đồng thời, hoặc một ngắt xảy ra khi một ngắt khác đang được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đồ ưu tiên hai mức dùng để xác định việc thực hiện các ngắt Việc hỏi vòng tuần tự thì cố định nhưng ưu tiên ngắt thì có thể lập trình được
Cho phép và cấm ngắt :
Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE ( Interrupt Enable : cho phép ngắt ) ở địa chỉ A8H
(8052)
Tóm tắt thanh ghi IE
Các cờ ngắt :
Trang 16Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên một để xác nhận ngắt.
Các loại cờ ngắt
Các vectơ ngắt :
Khi chấp nhận ngắt, giá trị được nạp vào PC được gọi là vector ngắt Nó là địa chỉ bắt
đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau
Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo nghĩa này,
nó giống ngắt : nó ngắt chương trình chính và nạp cho PC giá trị mới
Trang 171.4.3 Khối xuất
Mạch quang báo sử dụng khối hiển thị là LED MATRIX Để hiển thị đủ chữ Tiếng
Việt (gồm phần chữ và dấu mũ) và hiển thị được 5 kí tự 1 lần thì ta dùng 8 LED MATRIX được xếp làm 2 hàng
Về cơ bản để giao tiếp bới 8 LED MATRIX 8x8 thì ta cần dùng 8x8x8=512 chân Điều này vượt quá khả năng của VĐK đã lự chọn Vì vậy giả pháp được đưa ra là “lợi dụng” đặc tính của mắt người là khả năng lưu ảnh 24 hình /s nên ta sẽ cho mỗi cột dữ liệu chớp tắt
30 lần/s Vì vậy mắt người có thể thấy được hình ảnh được liên tục
Sử dụng phương pháp này ta có thể tiết kiệm được chân của VĐK nhờ vào 2 giải pháp được đề ra để tận dụng được lợi thế này
a Dùng IC giải mã
Mỗi lần chọn 1 cột ta có thể dùng IC giải mã 5 > 32 Tuy nhiên IC này không có bán trên thị trường nên ta có thể sử dụng IC 4>16 và 2 bit chọn IC
Trang 18Dùng IC 2->4 và 3->8
IC 3 ->8 chọn cột
IC 2->4: chọn IC 3->8
Với phương án dùng IC giải mã Điều khiển cột ta phải dùng 5 bit để chọn cột ứng với
5 chân của IC
b Dùng IC dịch 74HC595
Ta đưa một bit 2 bit c h cực cột và cấp xung Clock Để bit tich cực cột được đưa ra IC
và bắt đầu dịch Sau đó đưa bit tắt cột vào Data và tiếp tục đưa xng Clock vào lúc này bit tích cực sẽ được dịch dần qua Bit tích cực ở cột nào thì cột đó sáng, hết chu kỳ tức là 32 cột thì ta lặp lại
Với phương pháp quét cột này ta chỉ mất 2 bit cho data và clock
Với cột tích cực thì ta đưa dữ liệu hàng ra thì dữ liệu đó sẽ được hiển thị với tốc độ quét nhanh ì ta hoàn toàn có thể thấy được chữ không nhấp nháy Với 2 hàng led matrix thì cần 16 bit dữ liệu hàng điều này hoàn toàn khả thi
Vậy chon phương án dùng IC dịch
Trang 20Giới thiệu LED MATRIX và IC dịch 74HC595
Bả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
Dưới đây là sơ đồ chân của bảng LED 8x8 được dùng trong đề tài
• Chân dài là Hàng
• Chân ngắn là cột: 2 chân ngắn kề nhau là 2 màu của cùng một cột
• Ta luôn để chữ Top hướng lên thì ta có cách xác đinh hàng cột như sau
Hàng chân trên :H1 – C1 C1 - H2 – C2 C2 – H3 – C3 C3 – H4 – C4 C4
Hàng chân dưới:H5 – C5 C5 - H6 – C6 C6 – H7 – C7 C7 – H8 – C8 C8
Trang 211.4.3.1.Nguyê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 tự
1.4.3.2.Nguyên tắc quét bảng ma trận Led
Khối hiển thị gồm bốn bảng LED 8x8 ghép lại thành một bảng cỡ 8x32 (8 hàng và 32 cột) Ta ghép 2 tầng như vậy để hiển thị chữ có dấu
Để hiển thị ký tự lên bảng LED, ở đây ta dùng phương pháp quét hàng và xuất dữ liệu cột Quá trình quét hàng là ta gửi tín hiệu cho phép đến từng hàng trong từng thời điểm Cùng lúc đó ta gửi dữ liệu đến các cột
Đầu tiên ta đưa dữ liệu cần hiển thị đến 32 cột
• Kích hoạt hàng thứ nhất và các LED tương ứng sẽ sáng Tạo một thời gian trễ, sau đó tắt hàng thứ nhất
• Gửi tiếp giá trị dữ liệu đến hàng thứ 2, kích hoạt hàng thứ 2, tạo trễ và lại tắt hàng thứ 2
• Quá trình quét đó cứ tiếp diễn cho đến khi quét hết 8 hàng 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 hàng đượ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
Trang 22thấ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 24 hình/s Thường ta chọn tần số quét từ 40Hz đến 100Hz hoặc có thể lớn hơn
Trạ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ọn loại ma trận LED 8x8 để hiển thị.Ta có sơ đồ nguyên lý của Ma trận LED 8x8 ( 2 màu chỉ chon 1 màu) có thể biểu diễn như sau:
1.4.3.3 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 8x32, sử dụng 40 byte Ram để lưu byte đầu tiên của mỗi chữ cái từ 30h đến 5Fh, 40 byte ram tiếp theo để lưu dấu Ta dùng 2 con trỏ:
1 trỏ vào phần chữ, 1 trỏ vào phần dấu Khi con trỏ chữ trỏ tới chữ nào thì con trỏ dấu phải trỏ tới dấu tương ứng của chữ đó
Khi trỏ đến byte đầu thì ta chỉ việc lấy 5 byte kế của 5 byte đầu để xuất ra ta sẽ có một chữ cái hoàn thiện Để tạo được hiệu ứng dịch chữ thì cứ sau mỗi lượt quét ta cần dịch các chữ qua trái một byte, vậy thì chữ cái đầu phải bắt đầu từ byte thứ 2 còn các chữ cái sau vẫn lấy như cũ Cứ như thế cho đến khi chữ cái đàu mất ta sẽ lặp lại quá trình đối với chữ cái thứ 2,3,4 đến khi gặp byte kết thúc là 99h thì dừng
1.4.3.4 IC 74HC595
IC 74HC595 là IC ghi dịch 8-bit, vào nối tiếp ra song song với một thanh ghi lưu trữ (storage register) và đầu ra 3 trạng thái
Trang 23 Chức năng của IC:
- Vào dữ liệu 8-bit
- Đầu ra 8 -bit nối tiếp và 8-bit song song
- Thanh ghi lưu trữ với đầu ra 3 trạng thái
- Tần số dịch 100MHz (Typical) Mô tả chân của IC 74HC595
- VCC và GND: chân cấp nguồn cho IC Điện áp nguồn cấp trong khoảng 2V -5.5V
- Q0 ~Q7: 8 đầu ra dữ liệu song song, chân Q7’ là chân ra dữ liệu nối tiếp
- MR là chân Reset IC, tích cực mức thấp (0) Khi đưa mức 0 vào chân này thì IC sẽ thực hiện Reset, tất cả đầu ra đều về 0
- SHCP là chân nhận xung đồng hồ của thanh ghi dịch
- STCP là chân nhận xung đồng hồ cho thanh ghi lưu trữ
- OE: chân cho phép xuất dữ liệu ra, tích cực mức thấp Khi hoạt động chân này ở mức 0 Khi đưa chân OE lên mức 1 các đầu ra sẽ ở trạng thái trở kháng cao
- Ds là chân nhận dữ liệu nối tiếp
Hoạt động của IC
Dữ liệu sau khi được đưa vào chân Ds của IC, bit dữ liệu đó sẽ được dịch ứng với sườn dương của xung nhịp, từ mức thấp-lên-cao( LOW-TO-HIGH ) đưa tới chân SHCP , dữ liệu vào tại mỗi thanh ghi sẽ được đưa sang thanh ghi lưu trữ khi có một sườn dương của xung nhịp đi vào chân STCP Xung đồng hồ tại chân SHCP phải xuất hiện trước xung nhịp vào chân STCP Mỗi xung clock đưa vào chân SHCP tươngứng với một bit dữ liệu đưa vào tại chân Ds, 8 xung ứng với 8-bit dữ liệu đưa vào, chúng được lưu trong thanh ghi lưu trữ Khi một tín hiệu tích cực mức 0 đưa vào chân OE thì 8-bit dữ liệu này sẽ được dưara 8 đầu ra song song Khi có 8 bit dữ liệu tiếp theo được dịch vào thì 8 bit dữ liệu trước đó sẽ lần lượt được dịch ra nối tiếp nhau qua chân Q7’
Trong chế độ hoạt động bình thường của IC, các chân MR sẽ được nối với dương nguồn, chân OE sẽ nối với đất
Khi ghép nối các IC 74595 nối tiếp nhau thành mạng IC thì các chân SHCP và STCP của tất cả các IC sẽ được nối chung với nhau và nối với nguồn xung nhịp, chân Ds của IC đầu tiên sẽ nối với chân vào dữ liệu (từ các IC khác), còn các IC sau đó thì được mắc nối tiếp nhau, chân Ds của IC này nối với chân Q7’ của IC trước đó
Sơ đồ chân 74HC595
Trang 24Giản đồ thời gian quá trình truyền dữ liệu
Trang 251.4.4 Khối giao tiếp:
Vấn đề giao tiếp được đặt ra là:
- Bàn phím và VĐK : có thể giao tiếp trực tiếp
- IC dịch và VĐK:
74HC595: input leakage current tại Vi = VCC or GND; VCC = 6.0 V là 1uAOFF-state output current tại VI = VIH or VIL; VCC = 6.0 V; VO = VCC or GND là 10uAIin max và Iout max = 20mA
VĐK: IL Logical 0 Input Current (Ports 1,2,3) VIN = 0.45V là -50 µA
ITL Logical 1 to 0 Transition Current (Ports 1,2,3) tại VIN = 2V, VCC = 5V ± 10%
là -650 µA
Vậy IC dich có thể giao tiếp trực tiếp với VĐK
-IC dịch và LED MATRIX, giữa LED MATRIX và VĐK:
Dòng qua mỗi LED khoảng từ 10 – 15 mA dòng hiệu dụng qua mỗi LED cỡ 55mA vì vậy giao tiếp giữa IC dịch và VĐK với khối hiển thị LED phải dùng mạch khuyếch đại dòng, vấn đề đặt ra là thiết kế mạch mạch khuyếch đại dòng sao cho dòng điện có thể chạy nhất quán phương án đề xuất là dùng ULN2803 đẻ giao tiếp giữa HC595 và LED và dùng mạch khuyếch đại sử dụng BJT để giao tiếp giữa VDK và LED
Chọn BJT thõa
Ic max> 2Ic = 110mA
Pcmax>2Pc=0.5x0.2x55 = 5mW
Vceo max> 2Vceo = 10V
Vậy chon BJT A1015 là BJT pnp với thông số thõa yêu cầu là
Trang 27Còn cặp Darlington ở dưới chính là 1 ngõ ra vào của ULN2803
IC gồm 8 cổng đảo, mỗi cổng đảo gồm transistor ghép darlington với dòng điện và điện áp ngõ ra cao
Trang 28Thông số của IC ULN 2803
Ta có thể tăng điện áp ngõ ra bằng cách thêm các điện trờ treo ở ngỏ ra với điện áp kéo lên cao
Chức năng:
- Đệm được 8 đường riêng biệt (nối trược tiếp được với 8 chân của 74595 và 8 chân kia nối với các cột của led matrix)
- Dòng ra tới 500 mA
- Chức năng của ULN2803 giống như bộ hút dòng
Chân 9,10 là các chân cấp nguồn
Chân 1 8 là các ngõ vào
Chân 11 18 là các ngõ ra đảo
Trang 29- Để tính dòng điện cột thì phải xem là quang báo rộng bao nhiêu, trên một cột có bao nhiêu Led.
VD: Đang có 8 Led trên một cột như vậy dòng tối đa của 1cột là 8*20mA = 160mA Bộ đệm dòng của cột phải > = 160mA Bộ này còn có thể gọi là bộ hút dòng.
Cuối cùng ta có khối giao tiếp giữa LED và IC dịch là
Mạch mô phỏng đối với 1 hàng LED
Trang 301.4.3.6 Hoạt động cơ bản của mạch quang báo đã thiết kế
Khi mới mở mạch lên thì mạch sẽ hiển thị đồng hồ
Trang 31CHƯƠNG 2: THI CÔNG MẠCH QUANG BÁO
Sơ đồ mạch in của từng khối:
1 Khối điều khiển trung tâm ( gồm cả khối xuất dữ liệu hàng)
Trang 32
2 Khối LED matrix
Trang 333.2 Kiểm tra linh kiện trong mạch
Quá trình bao gồm các thao tác gắn linh kiện, hàn mạch và kiểm tra
Mạch điều khiển trung tâm ( vi điều khiển):
Đế IC 40 chân loại có cần gạt để dễ tháo lắp, tránh hỏng chân vi điều khiển
Kiểm tra giá trị các điện trở có đúng không? Kiểm tra khả năng nạp xả của tụ bằng đồng
hồ tương tự (đặt hai que đo vào hai chân của tụ để xem kim lên hay không)
Kiểm tra reset còn tốt không? (đo thông mạch khi nhấn và không nhấn, kiểm tra kẹp nút nhấn)
Tiến hành hàn các linh kiện vào mạch Sau khi hàn xong, cần kiểm tra thông mạch, dính mạch giữa các mối hàn
Sau đó kiểm tra vi điều khiển còn tốt không: Nạp một chương trình đơn giản gửi giá trị ra các port của vi điều khiển, dùng đồng hồ đo giá trị điện áp để biết đúng hay sai
3.3 Kiểm tra hoạt động 74HC595:
Trang 34Đảo chân Dât mức thấp đưa xung CLK vào để cho mức thấp ra Q0 rồi đưa mức cao vào đưa xung CLK vào Nếu IC còn tot thì LED sẽ sáng lần lượt.
3.4 Kiểm tra ULN2803;
Trang 35CHƯƠNG 3: LƯU ĐỒ THUẬT TOÁN
CHƯƠNG TRÌNH ASSEMBLY
Trong đoạn chuương trình sử dụng các biến có lien quan với nhau giữa các chươngtrình con, tạm gọi là biến toàn cục vì vậy khi xét các biến này phải đặc biệt nắm vững được các giá trị của nó khi thoát hoặc vào chương trình con một cách chặt chẽ Đó là các biến R0,R1,SOSANH,SCANCODE
Tóm tắt họa đọng của mạch quang báo hiển thị dung LED ma trận như sau:
Khi khởi động mạch thì mạch sẽ hiện đồng hồ với giá trị mặc định là 00:00 Dấu 2 chấm tắt sang thì báo hiệu 2 giây đã trôi qua Đồng hồ có thể thiết lập thời gian bằng cách nhấn phím F1 và nhạp vào thời gian theo thưc tự GIỜ:PHÚT nếu nhập không đúng tức là ngoài các giá trị theo thong lệ thì đồng hồ sẽ chạy sai Sauk hi nhập xong bấm F8 dồng hồ sẽ bắt đầu chạy
Muốn thoát khỏi đồng hồ và nhập chữ chạy ta bấm F1 để vào chế độ nhập chữ sau đó nhập chữ theo yêu cầu bấm ENTER thì chữ sẽ bắt đầu chạy từ phải sang trái Muốn tăng giảm tốc độ trong quá trình chạy thì bấm F12 (tăng tốc) và F11(giảm tốc) Nếu muốn chữ đứng dừng tại vị trí nào thì bấm F2 chữ sẽ dừng lại tại vị trí đó và chuyển sang hiển thị chữ đứng Trong quá trình hiển thị chữ đưng ta có thể bám phím F9 F10 để dich dãy chữ sang trái
và sang phải
Để nhập tiếng việt thì ta có các yêu cầu sau đây:
Để nhập chữ Ă, Â, Ô, Ơ, Ê, Ư, Đ thì ta bấm bên phím số theo các số theo thứ tự từ 1 đến 7
Trang 36Để nhập dấu Sắc, Huyền, Hỏi, Ngã, Nặng thì ta bám các phím lần lượt F3 đến F7.
Trang 375.1 Lưu đồ chương trình chính: (HOÀN)
Mỗi chương trình con đề có một mã mà trước khi vào chương trình con mã này phải được xác nhận có đúng với mã của chương trình con hay không nếu đúng thì mới chấp nhận chayk không thì thoat khỏi chương trình con Ta có các mã sau:
HIENTHI: FCH; HTKHINHAP FFH; HTCHUDUNG FCH;HTDONGHO FDH
Trang 385.2 Khởi tạo (HOÀN)
Điều kiện khởi tạo cần tuân theo các điều kiện: phải có ngắt ngoài 0, ngắt do Timer1, giái trị đầu nạp cho Timer1, TOCDO=15, mã chạy chương trình con ban đầu phải chạy vào chương trình con hiển thị dồng hồ, Từ địa chỉ 30h-34h phải lưu vào byte đầu của số 0,0,:,0,0 để mặc định thời gian lúc khởi dộng là 00:00
Trang 395.2 Lưu đồ phím chức năng: (HOÀN)
Trang 405.3 Lưu đồ hiển thị chữ chạy (KHOA)
ma