MỤC LỤC
Trang
Phần A Giới thiệu
Trang bìa
Trang chấm ĐAMH của GVHD
Lời nói đầu
Mục lục
Liệt kê bảng
Liệt kê hình
Phần B Nội dung 1
Chương 1 Cơ sở lý thuyết 2
1.1 Giới thiệu vi điều khiển ATmega16L 2
1.1.1 Giới thiệu 2
1.1.2 Khảo sát sơ đồ chân 2
1.1.3 Cấu trúc của ATmega16L 3
1.1.4 Truyền thông nối tiếp đồng bộ và không đồng bộ(USART) 4
1.2 Led ma trận 6
1.3 Bàn phím PS/2 8
1.3.1 Sơ đồ chân 8
1.3.2 Nguyên lý hoạt động 8
1.3.3 Giao thức của bàn phím 9
Chương 2 Sơ đồ khối 10
2.1 Sơ đồ khối 10
2.2 Chức năng các khối 10
Chương 3 Thiết kế 11
3.1 Thiết kế các khối 11
3.2 Sơ đồ nguyên lý 11
3.2.1 Mạch nguyên lý mạch vi điều khiển 12
3.2.2 Mạch nguyên lý mạch led ma trận 13
3.3 Linh kiện sử dụng trong mạch 14
Chương 4 Thi công 15
4.1 Sơ đồ mạch in 15
4.1.1 Mạch in mạch vi điều khiển 15
4.1.2 Mạch in mạch led ma trận 15
4.2 Hàn và ráp linh kiện 17
4.3 Kết quả thi công 17
Chương 5 Kết luận 18
5.1 Kết quả đạt được 18
5.2 Hạn chế và hướng phát triển 18
Phần C Phụ lục và Tài liệu tham khảo 19
Phụ lục I Lưu đồ giải thuật 20
Phụ lục II Mã nguồn chương trình 23
Phụ lục III Giới thiệu IC liên quan 34
Tài liệu tham khảo 36
LIỆT KÊ BẢNG
Bảng 1.1 Độ dài dữ liệu truyền 6
Bảng 1.2 Tính tốc độ Baud 6
Bảng 1.3 Mã scancode của bàn phím 9
Bảng 3.1 Linh kiện sử dụng trong mạch 14
LIỆT KÊ HÌNH
Hình 1.1 Sơ đồ chân của ATmega16L 2
Hình 1.2 Bộ nhớ chương trình 3
Hình 1.3 Bộ nhớ dữ liệu 3
Hình 1.4 Thanh ghi UDR 4
Hình 1.5 Thanh ghi UCSRA 4
Hình 1.6 Thanh ghi UCSRB 5
Hình 1.7 Thanh ghi UCSRC 5
Hình 1.8 Thanh ghi UBRRH và UBRRL 6
Hình 1.9 Led ma trận 8x8 7
Hình 1.10 Sáng chữ A 7
Hình 1.11 Cổng PS/2 8
Hình 1.12 Giản đồ thời gian truyền 1 byte từ bàn phím đến thiết bị chủ 9
Hình 2.1 Sơ đồ khối 10
Hình 3.1 Mạch nguyên lý mạch vi điều khiển 12
Hình 3.2 Mạch nguyên lý mạch led ma trận 13
Hình 4.1 Mạch in mạch vi điều khiển 15
Hình 4.2 Mạch in mạch led ma trận 16
Hình 4.3 Mạch thực tế 17
Hình III.1 Sơ đồ logic của 74HC595 34
Hinh III.2 Sơ đồ chân ULN2803 35
42 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3933 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Thiết kế mạch quang báo giao tiếp bàn phím máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Phần A
GIỚI THIỆU
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HCM
KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ - VIỄN THÔNG
-------------------
ĐỒ ÁN MÔN HỌC 1
NGÀNH: CÔNG NGHỆ KỸ THUẬT MÁY TÍNH
Đề tài:
THIẾT KẾ MẠCH QUANG BÁO GIAO TIẾP BÀN PHÍM MÁY TÍNH
GVHD : LÊ MINH
SVTH : NGUYỄN HOÀNG VƯƠNG THẠCH
MSSV : 08119047
NGUYỄN VIẾT MINH TIẾN
MSSV : 08119059
TP. HỒ CHÍ MINH – 6/2011
Ñaïi Hoïc Sö Phaïm Kyõ Thuaät
Khoa Ñieän – Ñieän Töû
Boä Moân Ñieän Töû Vieãn Thoâng
COÄNG HOØA XAÕ HOÄI CHUÛ NGHÓA VIEÄTNAM
Ñoäc Laäp – Töï Do – Haïnh Phuùc
Ngaøy……thaùng … naêm 201..
PHIEÁU CHAÁM ÑOÀ AÙN MOÂN HOÏC…..
(Daønh cho ngöôøi höôùng daãn)
Hoï teân sinh vieân : ………………………………………………………………………………… MSSV: ……………………………..
…………………………….……………………………………………………………………………………………….MSSV:………………………………
Teân ñeà taøi : ………………………………………………………………………………………………………………………………………..
…………………………………………………………………………………………………………………………………………………………………………
Ngöôøi höôùng daãn : …………………………………………………………………………………………………………………………………
Nhöõng öu ñieåm cuûa Ñoà aùn :
………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ……………………………………………………………………………………………………………………………………………………………………………….
Nhöõng thieáu soùt cuûa Ñoà aùn:
………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………. ……………………………………………………………………………………………………………………………………………………………………………….
Ñeà nghò : Ñöôïc baûo veä: o Boå sung ñeå ñöôïc baûo veä: o Khoâng ñöôïc baûo veä: o
Caùc caâu hoûi sinh vieân phaûi traû lôøi tröôùc Toå chaám ÑAMH:
………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………..…………………………………………………
………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………….
……………………………………………………………………………………………………………………………………………………………………….……………………………………………………………………………………………………………………………………………………………
Ñaùnh giaù Ñieåm (Soá vaø chöõ):………………………………..
CHÖÕ KYÙ vaø HOÏ TEÂN
LỜI MỞ ĐẦU
Ngày nay, với sự phát triển không ngừng của khoa học kỹ thuật, nhất là trong lĩnh vực điện tử, việc đưa các thông tin quảng cáo đến với người tiêu dùng thật dễ dàng và nhanh chóng. Sản phẩm của doanh nghiệp sẽ được giới thiệu đến mọi người thông qua hình thức quảng cáo.
Trong rất nhiều hình thức quảng cáo thông tin như : báo, tivi, các website… thì hình thức dùng bảng thông tin điện tử là cách đơn giản và hiệu quả để quảng cáo. Chúng ta dễ dàng bắt gặp các bảng thông tin điện tử như vậy ở sân bay, nhà ga, ngân hàng…hoặc các bảng quảng cáo sản phẩm của doanh nghiệp trên đường phố lúc về đêm.
Qua đó thấy rằng, bảng thông tin điện tử được ứng dụng rất rộng rãi trong các lĩnh vực khác nhau : giới thiệu sản phẩm, biển thông báo, biển hiệu. Để hiển thị và thay đổi nội dung thông tin trên bảng quang báo đòi hỏi phải có kiến thức về lĩnh vực điện tử nhất định, do đó sẽ gây nhiều khó khăn cho đa số người dùng. Vì thế để tránh mất thời gian và để thuận tiện hơn cho người sử dụng, nhóm chúng em quyết định nghiên cứu và thực hiện đề tài “Thiết kế mạch quang báo giao tiếp bàn phím máy tính”. Thao tác hiển thị và thay đổi nội dung trở nên đơn giản và hiệu quả.
Trong quá trình thực hiện đề tài, nhóm chúng em đã nhận được sự giúp đỡ tận tình của thầy Lê Minh. Khi chúng em gặp khó khăn thì thầy đã nhiệt tình phân tích và chỉ dẫn hướng giải quyết cho chúng em. Nhóm chúng em xin trọng cám ơn thầy.
MỤC LỤC
Trang
Phần A Giới thiệu
Trang bìa
Trang chấm ĐAMH của GVHD
Lời nói đầu
Mục lục
Liệt kê bảng
Liệt kê hình
Phần B Nội dung 1
Chương 1 Cơ sở lý thuyết 2
1.1 Giới thiệu vi điều khiển ATmega16L 2
1.1.1 Giới thiệu 2
1.1.2 Khảo sát sơ đồ chân 2
1.1.3 Cấu trúc của ATmega16L 3
1.1.4 Truyền thông nối tiếp đồng bộ và không đồng bộ(USART) 4
1.2 Led ma trận 6
1.3 Bàn phím PS/2 8
1.3.1 Sơ đồ chân 8
1.3.2 Nguyên lý hoạt động 8
1.3.3 Giao thức của bàn phím 9
Chương 2 Sơ đồ khối 10
2.1 Sơ đồ khối 10
2.2 Chức năng các khối 10
Chương 3 Thiết kế 11
3.1 Thiết kế các khối 11
3.2 Sơ đồ nguyên lý 11
3.2.1 Mạch nguyên lý mạch vi điều khiển 12
3.2.2 Mạch nguyên lý mạch led ma trận 13
3.3 Linh kiện sử dụng trong mạch 14
Chương 4 Thi công 15
4.1 Sơ đồ mạch in 15
4.1.1 Mạch in mạch vi điều khiển 15
4.1.2 Mạch in mạch led ma trận 15
4.2 Hàn và ráp linh kiện 17
4.3 Kết quả thi công 17
Chương 5 Kết luận 18
5.1 Kết quả đạt được 18
5.2 Hạn chế và hướng phát triển 18
Phần C Phụ lục và Tài liệu tham khảo 19
Phụ lục I Lưu đồ giải thuật 20
Phụ lục II Mã nguồn chương trình 23
Phụ lục III Giới thiệu IC liên quan 34
Tài liệu tham khảo 36
LIỆT KÊ BẢNG
Bảng 1.1 Độ dài dữ liệu truyền 6
Bảng 1.2 Tính tốc độ Baud 6
Bảng 1.3 Mã scancode của bàn phím 9
Bảng 3.1 Linh kiện sử dụng trong mạch 14
LIỆT KÊ HÌNH
Hình 1.1 Sơ đồ chân của ATmega16L 2
Hình 1.2 Bộ nhớ chương trình 3
Hình 1.3 Bộ nhớ dữ liệu 3
Hình 1.4 Thanh ghi UDR 4
Hình 1.5 Thanh ghi UCSRA 4
Hình 1.6 Thanh ghi UCSRB 5
Hình 1.7 Thanh ghi UCSRC 5
Hình 1.8 Thanh ghi UBRRH và UBRRL 6
Hình 1.9 Led ma trận 8x8 7
Hình 1.10 Sáng chữ A 7
Hình 1.11 Cổng PS/2 8
Hình 1.12 Giản đồ thời gian truyền 1 byte từ bàn phím đến thiết bị chủ 9
Hình 2.1 Sơ đồ khối 10
Hình 3.1 Mạch nguyên lý mạch vi điều khiển 12
Hình 3.2 Mạch nguyên lý mạch led ma trận 13
Hình 4.1 Mạch in mạch vi điều khiển 15
Hình 4.2 Mạch in mạch led ma trận 16
Hình 4.3 Mạch thực tế 17
Hình III.1 Sơ đồ logic của 74HC595 34
Hinh III.2 Sơ đồ chân ULN2803 35
Phần B
NỘI DUNG
Chương 1
CƠ SỞ LÝ THUYẾT
1.1 Giới thiệu vi điều khiển ATmega16L
1.1.1 Giới thiệu
ATmega16L là vi điều khiển thuộc họ AVR do hãng Atmel sản xuất. Đây là chip vi điều khiển 8 bit khá mạnh, có nhiều tính năng, độ ổn định, khả năng tích hợp, sự mềm dẻo trong việc lập trình và rất tiện lợi.
Các tính năng của ATmega16L :
Bộ nhớ Flash 16KB, 512 byte EEPROM, 1 KB SRAM cho phép nạp xóa 10000 Flash/100000 EEPROM
Có 32 chân vào ra dữ liệu chia làm 4 port : PORT A,B,C,D và cả 4 Port đều có điện trở kéo lên.
Giao tiếp SPI – Giao tiếp I2C – Có 8 kênh ADC 10 bit
2 bộ Timer/Couter 8 bit, 1 bộ Timer/Couter 16 bit
1 bộ USART
1.1.2 Khảo sát sơ đồ chân
Hình 1.1 trình bày sơ đồ chân ATmega16L
Các PORT A, B, C, D là các Port xuất nhập của ATmega16L
VCC, GND là các chân cấp nguồn cho vi điều khiển với điện áp hoạt động là 5V
RESET là chân reset của ATmega16L, tín hiệu reset này tích cực mức thấp.
XTAL1, XTAL2 là 2 chân tạo bộ dao động ngoài cho vi điều khiển. Tần số thạch anh sử dụng cho ATmega16L là 0 – 8 MHz.
AREF là chân lấy điện áp chuẩn khi sử dụng bộ ADC.
AVCC là chân ổn định điện áp cho bộ biến đổi khi sử dụng bộ ADC.
Hình 1.1 : Sơ đồ chân của ATmega16L
1.1.3 Cấu trúc của ATmega16L
ATmega16L có cấu trúc Havard, trong đó đường truyền cho bộ nhớ dữ liệu và đường truyền cho bộ nhớ chương trình được tách riêng.
* Bộ nhớ chương trình : là bộ nhớ Flash lập trình được gồm 2 phần : phần đầu chứa các vector ngắt và phần mã lệnh nằm ngay sau đó.
Hình 1.2 : Bộ nhớ chương trình
* Bộ nhớ dữ liệu : Chia thành 5 phần
Hình 1.3 : Bộ nhớ dữ liệu
Phần 1 : Là phần đầu tiên trong bộ nhớ dữ liệu gồm 32 thanh ghi 8 bit có tên là Register File (RF). Các thanh ghi này được đặt tên theo thứ tự từ R0 đến R31. Chúng là nguồn chứa các số hạng trong phép toán và cũng là đích chứa kết quả trả lại của phép toán
Phần 2 : nằm ngay sau Register File, gồm 64 thanh ghi nhập/xuất (64 I/O Register) hay còn gọi là vùng nhớ I/O (I/O Memory). Tất cả các thanh ghi điều khiển, trạng thái… của thiết bị đều nằm ở đây. Việc điều khiển các Port có liên quan đến 3 thanh ghi DDRx, PORTx và PINx (x là tên của Port), tất cả 3 thanh ghi này đều nằm trong vùng nhớ I/O.
Thanh ghi DDRx : thanh ghi điều khiển hướng dữ liệu vào/ra cho các chân của cổng. Viết giá trị 1 vào một bit trong thanh ghi DDRx thì chân tương ứng của PORTx sẽ là chân xuất, ngược lại giá trị 0 thì chân tương ứng sẽ là ngõ nhập.
Thanh ghi PORTx : thanh ghi xác lập điện trở kéo lên.
Thanh ghi PINx : dùng để đọc giá trị logic trên các chân của PORTx
Phần 3 : RAM tĩnh, nội (Internal SRAM), là vùng chứa các biến tạm thời trong lúc thực thi chương trình.
Phần 4 : RAM ngoại, chỉ tồn tại khi gắn thêm bộ nhớ ngoài
Phần 5 : EEPROM, bộ nhớ này không bị xóa ngay cả khi mất điện, thích hợp cho việc lưu dữ liệu. Phần bộ nhớ EEPROM được tách riêng và có địa chỉ tính từ 0x0000.
1.1.4 Truyền thông nối tiếp đồng bộ và không đồng bộ (USART)
Vi điều khiển ATmega16L có 1 bộ USART. Có 3 chân liên quan đến module này là chân xung nhịp (XCK), chân truyền dữ liệu (TXD), chân nhận dữ liệu (RXD).
Có 5 thanh ghi liên quan đến việc điều khiển và hoạt động của USART là:
* UDR : là thanh ghi dữ liệu, là thanh ghi 8 bit có chức năng chứa giá trị nhận được và phát đi của USART.
Hình 1.4 : Thanh ghi UDR
* UCSRA : là 1 trong 3 thanh ghi điều khiển hoạt động của USART, thanh ghi này chủ yếu chứa các bit trạng thái
Hình 1.5 : Thanh ghi UCSRA
RXC : báo quá trình nhận kết thúc
TXC : báo quá trình truyền kết thúc.
UDRE : báo thanh ghi dữ liệu đang trống.
FE : khung truyền có lỗi
DOR : dữ liệu tràn.
PE : kiểm tra Parity có lỗi.
U2X : bit chỉ định gấp đôi tốc độ truyền
MPCM : bit chọn chế độ hoạt động đa xử lý.
* UCSRB : thanh ghi quan trọng điều khiển USART
Hình 1.6 : Thanh ghi UCSRB
RXCIE : bit cho phép ngắt khi quá trình nhận kết thúc.
TXCIE : bit cho phép ngắt khi quá trình truyền kết thúc.
UDRIE : bit cho phép ngắt khi thanh ghi UDR trống.
RXEN : bit điều khiển bộ nhận của USART, để kích hoạt chức năng nhận dữ liệu phải set bit này lên 1.
TXEN : bit điều khiển bộ truyền phát
UCSZ2 : bit này kết hợp với 2 bit khác trong thanh ghi UCSRC quy định độ dài của dữ liệu truyền nhận.
RXB8 : đóng vai trò là bit nhận thứ 9 trong chế độ truyền thông 9 bit, 8 bit đầu được chứa trong UDR.
TXB8 : đóng vai trò là bit truyền thứ 9 trong chế độ truyền thồng 9 bit, 8 bit đầu được chứa trong UDR.
* UCSRC : thanh ghi quy định khung truyền và chế độ truyền
Hình 1.7 : Thanh ghi UCSRC
Thanh ghi này có địa chỉ trùng với thanh ghi UBRRH (thanh ghi chứa byte cao dùng để xác lập tốc độ baud). Vì thế bit thứ 7 trong thanh ghi này, tức bit URSEL là bit chọn thanh ghi. Khi URSEL=1 thì thanh ghi UCSRC được chọn, nếu URSEL=0 thì thanh ghi UBRRH được chọn.
UMSEL : bit chọn chế độ truyền thông đồng bộ và không đồng bộ. Nếu UMSEL=1 thì chế độ đồng bộ được kích hoạt, nếu UMSEL=0 thì chế độ không đồng bộ được sử dụng.
UPM1 và UPM0 : hai bit được dùng để quy định kiểm tra Parity. Nếu UPM1:0=00 thì Parity không được sử dụng, nếu UPM1:0=10 thì Parity chẵn được dùng, nếu UPM1:0=11 thì Parity lẻ được dùng.
USBS : bit Stop trong khung truyền, nếu USBS=1 thì sẽ có 2 Stop bit, nếu USBS=0 thì sẽ có 1 Stop bit.
UCSZ1 và UCSZ0 : hai bit này kết hợp với bit UCSZ2 trong thanh ghi UCSRB quy định độ dài dữ liệu truyền. Bảng 1.1 tóm tắt các giá trị có thể của tổ hợp 3 bit này và độ dài truyền dữ liệu tương ứng.
Bảng 1.1: Độ dài dữ liệu truyền
UCPOL : bit chỉ chế độ xung kích trong chế độ truyền thông đồng bộ. Nếu UCPOL=0 thì dữ liệu thay đổi ở cạnh lên của xung, nếu UCPOL=1 thì dữ liệu thay đổi ở cạnh xuống của xung.
* UBRRH và UBRRL : hai thanh ghi thấp và cao quy định tốc độ baud
Hình 1.8 : Thanh ghi UBRRH và UBRRL
Như trong hình trên, chỉ có 4 bit thấp của UBRRH được dùng, 4 bit này kết hợp với 8 bit trong thanh ghi UBRRL tạo thành 12 bit quy định tốc độ baud. Nếu ghi vào thanh ghi UBRRL thì tốc độ baud sẽ tức thì được cập nhật. Vì thế phải ghi vào UBRRH trước sau đó mới ghi vào UBRRL.
Bảng 1.2 trình bày cách tính tốc độ baud dựa vào giá trị của thanh ghi UBRR và ngược lại, cách tính giá trị cần thiết cho thanh ghi UBRR khi đã biết tốc độ baud.
Bảng 1.2 : Tính tốc độ Baud
1.2 Led ma trận
Led ma trận là 1 tập hợp các led đơn được bố trí theo ma trận hình chữ nhật hay vuông, cho phép hiển thị ký tự bất kỳ. Trên thị trường có các loại ma trận led được tích hợp sẵn như 7x5 ( 7 hàng và 5 cột), 8x8 (8 hàng và 8 cột) .v.v.
Hình 1.9 : Led ma trận 8x8
Trong led ma trận : theo hàng thì các anode được nối chung, theo cột thì các cathode được nối chung. Như vậy với led ma trận 7x5 thì có 7 hàng và 5 cột. Anode nối với mức cao(H) và cathode nối với mức thấp(L) thì led sáng, các trường hợp còn lại led tắt. Hình 1.10 hiển thị chữ A trên led ma trận 8x8, có 2 cách hiển thị chữ A :
Hình 1.10 : Sáng chữ A
Cách 1 : mã quét gởi ra cột và dữ liệu gởi ra hàng:
Chọn cột 1 (bằng cách kéo cột 1 xuống mức L) các cột còn lại ở mức H , sau đó gởi byte dữ liệu ra 8 hàng (led nào sáng thì bit tương ứng bằng 1, led nào tắt thì bit tương ứng bằng 0).
Chọn cột 2 sau đó gửi byte dữ liệu tương ứng ra 8 hàng.
Chọn cột 3 sau đó gửi byte dữ liệu tương ứng ra 8 hàng.
Chọn cột 4 sau đó gửi byte dữ liệu tương ứng ra 8 hàng.
Chọn cột 5 sau đó gửi byte dữ liệu tương ứng ra 8 hàng.
Do tốc độ quét nhanh nên chúng ta sẽ thấy sáng cả chữ A.
Các byte dữ liệu có thể sử dụng chương trình tạo mã ma trận để lấy mã dễ dàng.
Với led ma trận 8x8, nếu chọn dòng làm việc cho 1 led là 20mA thì dòng cần cho 1 cột sẽ là 20 mA * 8= 160 mA. Vì thế cần đảm bảo cấp đủ dòng để led ma trận được sáng rõ.
Ưu điểm :
Khi mở rộng thêm led chỉ cần kết nối song song 8 hàng và cột dùng thanh ghi dịch rất đơn giản do số đường điều khiển ít.
Mỗi 1 thời điểm chỉ có 1 cột sáng nên dòng tiêu thụ thấp
Mạch đơn giản.
Khuyết điểm :
Bị giới hạn số cột vì khi mở rộng càng nhiều cột thì thời gian tắt của led tăng thêm. Giả sử có 100 cột thì thời gian sáng của mỗi cột bằng 1/100, thời gian tắt bằng 99/100.
Cách 2 : mã quét gửi ra hàng và dữ liệu gửi ra cột
Chọn hàng 1 sau đó đưa dữ liệu tương ứng ra các cột
Chọn hàng 2 sau đó đưa dữ liệu tương ứng ra các cột
Chọn hàng 3 sau đó đưa dữ liệu tương ứng ra các cột
Chọn hàng 4 sau đó đưa dữ liệu tương ứng ra các cột
Chọn hàng 5 sau đó đưa dữ liệu tương ứng ra các cột
Chọn hàng 6 sau đó đưa dữ liệu tương ứng ra các cột
Chọn hàng 7 sau đó đưa dữ liệu tương ứng ra các cột
Ưu điểm :
Khi tăng thêm led => số cột tăng lên thì thời gian sáng/tắt của led vẫn khổng đổi là 1/8.
Khuyết điểm :
Dòng cấp cho led lớn
Do số cột tăng nên cần nhiều thời gian để đưa dữ liệu ra cột
Với bảng quảng cáo led lớn có nhiều led phải sử dụng IC có tốc độ cao để quét.
1.3 Bàn phím PS/2
1.3.1 Sơ đồ chân
Hình 1.11 : Cổng PS/2
Cổng PS/2 gồm có 6 chân trong đó chỉ sử dụng 4 chân :
+ VCC và GND cấp nguồn 5V cho bàn phím
+ DATA : đường dữ liệu
+ CLOCK : đường xung clock
1.3.2 Nguyên lý hoạt động
Khi một phím bất kỳ trên bàn phím được nhấn, nó sẽ phát ra 1 mã hex cố định, mã này được gọi là “scan code”. Theo sau mã scan code là mã “break code” để xác định phím đó được nhả, nó gồm có 2 byte : byte đầu thường là F0, byte thứ 2 lặp lại byte mã scan code. Bảng 1.3 trình bày mã scancode của một số phím trên bàn phím.
Bảng 1.3 : Mã scancode của bàn phím
1.3.3 Giao thức của bàn phím
Có 2 chế độ giao tiếp : chế độ từ bàn phím đến thiết bị chủ và chế độ từ thiết bị chủ đến bàn phím. Trong đề tài này sẽ không trình bày chế độ giao tiếp từ thiết bị chủ đến bàn phím, chỉ tập trung vào chế độ từ bàn phím đến thiết bị chủ.
Bàn phím ở trạng thái nghỉ sẵn sàng để gửi dữ liệu chỉ khi cả 2 đường DATA và CLOCK đều ở mức cao. Để truyền dữ liệu được chính xác thì khung truyền 11 bit được sử dụng. Bit đầu tiên là bit Start (mức 0), theo sau là 8 bit dữ liệu (bit LSB được truyền trước), 1 bit Parity (Odd Parity) và kết thúc là bit Stop (mức 1).
Hình 1.12 : Giản đồ thời gian truyền 1 byte từ bàn phím đến thiết bị chủ
Dữ liệu được thay đổi tại cạnh lên của xung Clock và để thu được dữ liệu chính xác thì phải đọc ngay tại cạnh xuống của xung Clock.
Để thu dữ liệu có thể sử dụng ngắt cạnh xuống của vi điều khiển hoặc dùng chế độ truyền thông nối tiếp đồng bộ (USART) của vi điều khiển.
Chương 2
SƠ ĐỒ KHỐI
2.1 Sơ đồ khối
Hình 2.1 : Sơ đồ khối
2.2 Chức năng các khối
- Khối Bàn phím :
Sử dụng bàn phím để nhập chữ hoặc ký tự cần hiển thị lên led ma trận
- Khối Vi điều khiển :
Dùng vi điểu khiển để xuất tín hiệu cho khối điều khiển cột và xuất dữ liệu ra khối điều khiển hàng để hiển thị được chữ hoặc ký tự lên led ma trận
- Khối điều khiển hàng :
Nhiệm vụ của khối này là đưa dữ liệu ra hàng của led ma trận và đệm dòng cho hàng để đảm bảo cấp đủ dòng cho led ma trận.
- Khối điều khiển cột :
Thực hiện việc quét cột led ma trận liên tục để chữ hoặc ký tự được hiển thị. Đồng thời cũng cần đệm dòng cho cột để đảm bảo độ sáng của led ma trận
- Khối led ma trận :
Hiển thị chữ hoặc ký tự
Chương 3
THIẾT KẾ
3.1 Thiết kế các khối
Dựa trên sơ đồ khối đã thiết kế, nhóm thực hiện đề tài bắt đầu thiết kế từng khối
- Khối bàn phím : sử dụng bàn phím máy tính chuẩn PS/2. Cấu tạo bàn phím thường là 101 hoặc 102 phím, với đầy đủ các phím ký tự và phím số, dễ dàng trong việc soạn thảo để hiển thị.
- Khối vi điều khiển : dùng vi điều khiển ATmega16L với 1 KB SRAM đủ dung lượng để nhận nhiều ký tự từ bàn phím.
- Khối điều khiển hàng : dùng IC ULN2803 đệm cho hàng (vì IC ULN2803 là đệm đảo nên bảng mã led ma trận sẽ bị đảo), kết hợp sử dụng transistor npn D468 với dòng Ic=1 A đảm bảo dòng cung cấp đủ cho các hàng của led ma trận.
- Khối điều khiển cột : dùng IC dịch 74HC595 để quét cột của led ma trận. Vì dòng ngõ ra của IC 74HC595 chỉ là 20mA không đủ để đệm dòng cho cột của led ma trận, phải sử dụng thêm IC ULN2803 để đệm dòng cho cột
- Khối led ma trận : dùng 4 led ma trận 8x8 1 màu để hiển thị chữ hoặc ký tự được nhập từ bàn phím.
3.2 Sơ đồ nguyên lý
Để đỡ phức tạp trong việc vẽ mạch in, sơ đồ nguyên lý được chia làm 2 mạch : mạch vi điều khiển và mạch led ma trận
3.2.1 Mạch nguyên lý mạch vi điều khiển
Hình 3.1: Mạch nguyên lý mạch vi điều khiển
3.2.2 Mạch nguyên lý mạch led ma trận
3.3 Linh kiện sử dụng trong mạch
Bảng 3.1 : Linh kiện sử dụng trong mạch
Số thứ tự
Tên linh kiện
Số lượng
1
Vi điều khiển ATmega16L
1
2
IC ULN2803
5
3
IC 74HC595
4
4
Transistor NPN D468
8
5
IC ổn áp 7805
2
6
Domino 2
2
7
Jack nguồn DC
2
8
Điện trở thanh 4k7
1
9
Điện trở 10k
9
10
Thạch anh 8 Mhz
1
11
Điện trở 1k
1
12
Điện trở 680 ohm
1
13
Led 3mm
2
14
Led ma trận 8x8
4
15
Tụ 1000uF/16V
1
16
Tụ 100uF/50V
1
17
Tụ 10uF/50V
1
18
Tụ 2.2uF/50V
1
19
Tụ 104
1
20
Tụ 22p
2
21
Cổng PS/2
1
22
Nút nhấn mềm
1
Chương 4
THI CÔNG
4.1 Sơ đồ mạch in
Từ sơ đồ nguyên lý đã thiết kế, nhóm thực hiện đề tài tiến hành vẽ mạch in
4.1.1 Mạch in mạch vi điều khiển
Hình 4.1 : Mạch in mạch vi điều khiển
4.1.2 Mạch in mạch led ma trận
Hình 4.2 : Mạch in mạch led ma trận
4.2 Hàn và ráp linh kiện
Sau khi vẽ xong mạch in, nhóm thực hiện đề tài đem sơ đồ mạch in đi in, sau đó là tiến hành ủi và rửa mạch.
Kế đến nhóm thực hiện đề tài gắn và hàn các linh kiện lên mạch. Trong quá trình gắn và hàn linh kiện nhóm thực hiện đề tài đã chú ý đến : gắn đúng chân của các transistor, sử dụng thêm đế IC để khi hàn không làm hỏng IC, gắn đúng chiều các IC lên đế.
4.3 Kết quả thi công
Sau khi đã hàn và ráp linh kiện, nhóm thực hiện đề tài kiểm tra mạch (kiểm tra các mối hàn xem có bị dính với nhau không, kiểm tra các linh kiện có bị gắn ngược không…) và bắt đầu viết code cho mạch.
Khi code đã hoàn thành, nhóm thực hiện đề tài tiến hành nạp code cho vi điều khiển và chạy thử. Mạch chạy đúng và đạt yêu cầu. Khi nhập các ký tự bất kỳ trên bàn phím sẽ hiển thị đúng các ký tự đó trên led ma trận
Hình 4.3 : Mạch thực tế
Chương 5
KẾT LUẬN
5.1 Kết quả đạt được
Sau nhiều tuần tích cực tìm hiểu và nỗ lực thực hiện, nhóm thực hiện đề tài đã hoàn thành đồ án đúng theo yêu cầu và thời gian quy định. Trong đề tài nhóm thực hiện đề tài đã hoàn thành được những công việc :
+ Hiểu và nắm được hoạt động của led ma trận
+ Thi công mạch vi điều khiển và mạch led ma trận
+ Viết code hoàn chỉnh cho mạch
+ Mạch chạy ổn định và đúng yêu cầu
5.2 Hạn chế và hướng phát triển
- Hạn chế :
+ Chưa sử dụng được phím Caps Lock để thuận tiện trong việc nhập chữ hoa
+ Do còn thiếu kinh nghiệm trong việc vẽ mạch in nên trong mạch led ma trận có khá nhiều jump.
+ Trong phần thiết kế khối điều khiển hàng có điểm chưa hợp lý : không cần thiết sử dụng IC ULN2803 để đệm hàng và đảo mức mã ma trận. Có thể sử dụng transistor pnp A1013 để đệm dòng cho hàng thay cho IC ULN2803 và transistor npn D468. Vì transistor A1013 có Ic=1A, kích mức 0 là dẫn nên có thể đệm dòng cho hàng và đảo mức mã ma trận.
- Hướng phát triển:
+ Tìm hiểu cách hiển thị được Tiếng Việt có dấu lên led ma trận
+ Thay đổi hiệu ứng bằng các phím trên bàn phím
+ Tìm hiểu thêm các giải thuật để hiển thị được nhiều hiệu ứng hơn trên led ma trận.
Phần C
PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO
Phụ lục I
LƯU ĐỒ GIẢI THUẬT
* Chương trình chính : * Chương trình con xử lý cột :
* Chương trình con hiển thị nhập chữ
* Chương trình con dịch trái sang phải
* Chương trình con dịch phải sang trái
* Chương trình con phục vụ ngắt USART :
Phụ lục II
MÃ NGUỒN CHƯƠNG TRÌNH
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
Project :
Version :
Date : 3/18/2011
Author :
Company :
Comments:
Chip type : ATmega16L
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include
#include
#include
#include
#define DATA PORTC.0 // du lieu dua vao thanh ghi dich
#define SCK PORTC.1
#define LCK PORTC.2
#define RESET PORTC.3 // Reset thanh ghi dich
#define HANG PORTA // du lieu gui ra hang
eeprom unsigned char chuoi[120];
eeprom int sokytu;
bit cho_nhap=0,sh=0;
char kt;
unsigned char tam[720];
int i,tre,n,a,b,c=0;
int k;
// Standard Input/Output functions
#include
// Declare your global variables here
void xulycot()
{
c=0;
for(a=0;a<sokytu;a++)
{
for(b=0;b<5;b++)
{
tam[c]=font[(chuoi[a]-32)*5+b];
c++;
}
tam[c]=0xff; //them cot trong
c++; // sau moi ky tu
}
}
char dichphaisangtrai()
{
for(k=0;k<c+31;k++)
for(tre=0;tre<=120;tre++)
{
DATA=1;
for(i=0;i<32;i++)
{
SCK=1;LCK=1;
SCK=0;LCK=0;
if ((i+kc+31))
HANG=0xff; // thi cot trong
else // Lay (i+k - 32 cot trong)
HANG=tam[i+k-32]; //bang cot can hien thi
if (cho_nhap) // Neu nhan Phim F1 thi
{
HANG=0xff;
return 1; // thoat khoi ham dichphaisangtrai
}
delay_us(30);
HANG=0xff;
DATA=0;
}
}
}
char dichtraisangphai()
{
for(k=c+32;k>=0;k--)
for(tre=0;tre<=120;tre++)
{
DATA=1;
for(i=0;i<32;i++)
{
SCK=1;LCK=1;
SCK=0;LCK=0;
if ((i+kc+31))
HANG=0xff;
else
HANG=tam[i+k-32];
if (cho_nhap)
{
HANG=0xff;
return 1;
}
delay_us(30);
HANG=0xff;
DATA=0;
}
}
}
char hienthinhapchu()
{
while(1)
{
DATA=1;
n=c-32; // Hien thi 32 cot cuoi cua chuoi
for(i=0;i<32;i++)
{
SCK=1;LCK=1;
SCK=0;LCK=0;
if (i>=c) // neu i > tong so cot cua chuoi thi
HANG=0xff; // cot = 0xff
else if (c<32)
HANG=tam[i];
else
HANG=tam[n];
if (!cho_nhap)
{
HANG=0xff;
return 1;
}
delay_us(30);
HANG=0xff;
n++;
DATA=0;
}
}
}
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x01;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, Odd Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Sync. Master UCPOL=0
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0xF7;
UBRRH=0x01;
UBRRL=0xA0;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
HANG=0xff;
RESET=0; //reset thanh ghi dich
delay_ms(1);
RESET=1;
xulycot();
while (1)
{
hienthinhapchu();
dichphaisangtrai();
dichtraisangphai();
};
}
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char data1,t;
HANG=0xFF;
data1=UDR;
if (data1==0x05) // Ma phim F1
{ cho_nhap=1; // Cho phep nhap chu
sokytu=0;
c=0; //Tong so cot = 0
}
else if ((data1==0x5a) && (cho_nhap)) // Ma phim Enter
{
cho_nhap=0; // Khong cho phep nhap
xulycot(); // Xu ly cot de hien thi
}
else if ((data1==0x66) && (kt!=0xf0) && (cho_nhap)) //phim Backspace
{
sokytu--; // Giam so ky tu nhap di 1
c-=6; // Giam tong so cot di 6
if (sokytu<0)
{
sokytu=0;
c=0;
}
}
else if (((data1==0x12)||(data1==0x59)) && (cho_nhap)) //phim shift
{
if (kt!=0xf0) // Khi nhan phim shift
sh=1; // thi sh = 1
else // Khi nha phim shift
sh=0; // thi sh = 0
}
else if ((cho_nhap)&&(kt!=0xf0)&&(data1!=0xf0))
{
t=0; // Do tim ky tu nhap trong bang scancode
while ((Ko_Shift[t][0]!=data1) && (Ko_Shift[t][0]))
{
t++; // bien t la vi tri cua ky tu ASCII can lay
}
if (Ko_Shift[t][1]) // neu ky tu nhap co trong bang scancode
{
if (sh==0) // neu khong nhan phim shift thi
chuoi[sokytu]=Ko_Shift[t][1]; //lay ky tu ASCII trong bang
else //scancode Ko_Shift dua vao chuoi
chuoi[sokytu]=Co_Shift[t][1]; //lay ky tu ASCII trong bang
sokytu++; //scancode Co_Shift dua vao chuoi
xulycot();
}
}
kt=data1;
}
* Thư viện font1.c
flash unsigned char font[]={
//ascii_code:
0xFF,0xFF,0xFF,0xFF,0xFF,//SPACE 0
0xFF,0xFF,0xA0,0xFF,0xFF,//! 1
0xF4,0xF8,0xFF,0xF4,0xF8,//" 2
0xEB,0x80,0xEB,0x80,0xEB,//# 3
0xDB,0xD5,0x80,0xD5,0xED,//$ 4
0xD8,0xEA,0x94,0xAB,0x8D,//% 5
0xC9,0xB6,0xA9,0xDF,0xAF,//& 6
0xFF,0xF4,0xF8,0xFF,0xFF,//' 7
0xFF,0xE3,0xDD,0xBE,0xFF,//( 8
0xFF,0xBE,0xDD,0xE3,0xFF,//) 9
0xD5,0xE3,0x80,0xE3,0xD5,//* 10
0xF7,0xF7,0xC1,0xF7,0xF7,//+ 11
0xFF,0xA7,0xC7,0xFF,0xFF,//, 12
0xF7,0xF7,0xF7,0xF7,0xF7,//- 13
0xFF,0x9F,0x9F,0xFF,0xFF,//x 14
0xDF,0xEF,0xF7,0xFB,0xFD,/// 15
0xC1,0xAE,0xB6,0xBA,0xC1,//0 16
0xFF,0xBD,0x80,0xBF,0xFF,//1 17
0x8D,0xB6,0xB6,0xB6,0xB9,//2 18
0xDD,0xBE,0xB6,0xB6,0xC9,//3 19
0xE7,0xEB,0xED,0x80,0xEF,//4 20
0xD8,0xBA,0xBA,0xBA,0xC6,//5 21
0xC3,0xB5,0xB6,0xB6,0xCF,//6 22
0xFE,0x8E,0xF6,0xFA,0xFC,//7 23
0xC9,0xB6,0xB6,0xB6,0xC9,//8 24
0xF9,0xB6,0xB6,0xD6,0xE1,//9 25
0xFF,0xC9,0xC9,0xFF,0xFF,//: 26
0xFF,0xA4,0xC4,0xFF,0xFF,//// 27
0xF7,0xEB,0xDD,0xBE,0xFF,//< 28
0xEB,0xEB,0xEB,0xEB,0xEB,//= 29
0xFF,0xBE,0xDD,0xEB,0xF7,//> 30
0xFD,0xFE,0xAE,0xF6,0xF9,//? 31
0xCD,0xB6,0x8E,0xBE,0xC1,//@ 32
0x83,0xF5,0xF6,0xF5,0x83,//A 33
0xBE,0x80,0xB6,0xB6,0xC9,//B 34
0xC1,0xBE,0xBE,0xBE,0xDD,//C 35
0xBE,0x80,0xBE,0xBE,0xC1,//D 36
0x80,0xB6,0xB6,0xB6,0xBE,//E 37
0x80,0xF6,0xF6,0xFE,0xFE,//F 38
0xC1,0xBE,0xB6,0xB6,0xC5,//G 39
0x80,0xF7,0xF7,0xF7,0x80,//H 40
0xFF,0xBE,0x80,0xBE,0xFF,//I 41
0xDF,0xBF,0xBE,0xC0,0xFE,//J 42
0x80,0xF7,0xEB,0xDD,0xBE,//K 43
0x80,0xBF,0xBF,0xBF,0xFF,//L 44
0x80,0xFD,0xF3,0xFD,0x80,//M 45
0x80,0xFD,0xFB,0xF7,0x80,//N 46
0xC1,0xBE,0xBE,0xBE,0xC1,//O 47
0x80,0xF6,0xF6,0xF6,0xF9,//P 48
0xC1,0xBE,0xAE,0xDE,0xA1,//Q 49
0x80,0xF6,0xE6,0xD6,0xB9,//R 50
0xD9,0xB6,0xB6,0xB6,0xCD,//S 51 83
0xFE,0xFE,0x80,0xFE,0xFE,//T 52
0xC0,0xBF,0xBF,0xBF,0xC0,//U 53
0xE0,0xDF,0xBF,0xDF,0xE0,//V 54
0xC0,0xBF,0xCF,0xBF,0xC0,//W 55
0x9C,0xEB,0xF7,0xEB,0x9C,//X 56
0xFC,0xFB,0x87,0xFB,0xFC,//Y89 24 57
0x9E,0xAE,0xB6,0xBA,0xBC,//Z90 25 58
0xFF,0x80,0xBE,0xBE,0xFF,//[ 59
0xFD,0xFB,0xF7,0xEF,0xDF,//\ 60
0xFF,0xBE,0xBE,0x80,0xFF,//] 61
0xFB,0xFD,0xFE,0xFD,0xFB,//^ 92
0x7F,0x7F,0x7F,0x7F,0x7F,//_ 63
0xFF,0xFF,0xF8,0xF4,0xFF,//' 64
0xDF,0xAB,0xAB,0xAB,0xC7,//a 65
0x80,0xC7,0xBB,0xBB,0xC7,//b
0xFF,0xC7,0xBB,0xBB,0xBB,//c
0xC7,0xBB,0xBB,0xC7,0x80,//d
0xC7,0xAB,0xAB,0xAB,0xF7,//e 69
0xF7,0x81,0xF6,0xF6,0xFD,//f
0xF7,0xAB,0xAB,0xAB,0xC3,//g 71
0x80,0xF7,0xFB,0xFB,0x87,//h 72
0xFF,0xBB,0x82,0xBF,0xFF,//i 73
0xDF,0xBF,0xBB,0xC2,0xFF,//j 74
0xFF,0x80,0xEF,0xD7,0xBB,//k 75
0xFF,0xBE,0x80,0xBF,0xFF,//l 76
0x83,0xFB,0x87,0xFB,0x87,//m 77
0x83,0xF7,0xFB,0xFB,0x87,//n 78
0xC7,0xBB,0xBB,0xBB,0xC7,//o 79
0x83,0xEB,0xEB,0xEB,0xF7,//p 80
0xF7,0xEB,0xEB,0xEB,0x83,//q 81
0x83,0xF7,0xFB,0xFB,0xF7,//r 82
0xB7,0xAB,0xAB,0xAB,0xDB,//s 83
0xFF,0xFB,0xC0,0xBB,0xBB,//t 84
0xC3,0xBF,0xBF,0xDF,0x83,//u 85
0xE3,0xDF,0xBF,0xDF,0xE3,//v 86
0xC3,0xBF,0xCF,0xBF,0xC3,//w 87
0xBB,0xD7,0xEF,0xD7,0xBB,//x 88
0xF3,0xAF,0xAF,0xAF,0xC3,//y 89
0xBB,0x9B,0xAB,0xB3,0xBB,//z 90
0xFF,0xF7,0xC9,0xBE,0xBE, //{ 91
0xFF,0x88,0xFF,0xFF,0xFF, // | 92
0xBE,0xBE,0xC9,0xF7,0xFF,//} 93
0xE7,0xFB,0xF7,0xEF,0xF3,//~ 94
0xEF,0xC3,0x83,0xC3,0xEF,// 95
0xFF,0xFF,0xFF,0xFF,0xFF//BLANK CHAR 96
};
* Thư viện scancode.c
flash unsigned char Ko_Shift[][2]={
0x1C,'a',
0x32,'b',
0x21,'c',
0x23,'d',
0x24,'e',
0x2B,'f',
0x34,'g',
0x33,'h',
0x43,'i',
0x3B,'j',
0x42,'k',
0x4B,'l',
0x3A,'m',
0x31,'n',
0x44,'o',
0x4D,'p',
0x15,'q',
0x2D,'r',
0x1B,'s',
0x2C,'t',
0x3C,'u',
0x2A,'v',
0x1D,'w',
0x22,'x',
0x35,'y',
0x1A,'z',
0x45,'0',
0x16,'1',
0x1E,'2',
0x26,'3',
0x25,'4',
0x2E,'5',
0x36,'6',
0x3D,'7',
0x3E,'8',
0x46,'9',
0x0E,'`',
0x4E,'-',
0x55,'=',
0x5D,0x5C, // dau \
0x54,'[',
0x7C,'*',
0x7B,'-',
0x79,'+',
0x71,'.',
0x70,'0',
0x69,'1',
0x72,'2',
0x7A,'3',
0x6B,'4',
0x73,'5',
0x74,'6',
0x6C,'7',
0x75,'8',
0x7D,'9',
0x5B,']',
0x4C,';',
0x52,0x27, //dau '
0x41,',',
0x49,'.',
0x4A,'/',
0x29,' ',
0,0};
flash unsigned char Co_Shift[][2]={
0x1C,'A',
0x32,'B',
0x21,'C',
0x23,'D',
0x24,'E',
0x2B,'F',
0x34,'G',
0x33,'H',
0x43,'I',
0x3B,'J',
0x42,'K',
0x4B,'L',
0x3A,'M',
0x31,'N',
0x44,'O',
0x4D,'P',
0x15,'Q',
0x2D,'R',
0x1B,'S',
0x2C,'T',
0x3C,'U',
0x2A,'V',
0x1D,'W',
0x22,'X',
0x35,'Y',
0x1A,'Z',
0x45,')',
0x16,'!',
0x1E,'@',
0x26,'#',
0x25,'$',
0x2E,'%',
0x36,'^',
0x3D,'&',
0x3E,'*',
0x46,'(',
0x0E,'~',
0x4E,'_',
0x55,'+',
0x5D,'|',
0x54,'{',
0x7C,'*',
0x7B,'-',
0x79,'+',
0x71,'.',
0x70,'0',
0x69,'1',
0x72,'2',
0x7A,'3',
0x6B,'4',
0x73,'5',
0x74,'6',
0x6C,'7',
0x75,'8',
0x7D,'9',
0x5B,'}',
0x4C,':',
0x52,'"',
0x41,'<',
0x49,'>',
0x4A,'?',
0x29,' ',
0,0};
Phụ lục III
GIỚI THIỆU IC LIÊN QUAN
III.1 IC 74HC595
IC 74HC595 là thanh ghi dịch 8 bit, vào nối tiếp, ra nối tiếp hoặc song song với ngõ ra 3 trạng thái
Hình III.1 : Sơ đồ logic của 74HC595
* Chức năng :
- Vào dữ liệu 8-bit
- Đầu ra 8-bit nối tiếp và 8-bit song song
- Thanh ghi chốt với đầu ra 3 trạng thái
* Mô tả chân :
- VCC và GND: chân cấp nguồn 5V cho IC
- QA - QH: 8 đầu ra dữ liệu song song, chân SQH là chân ra dữ liệu nối tiếp
- RESET là chân Reset IC, tích cực mức thấp
- SHIFT CLOCK là chân nhận xung clock của thanh ghi dịch
- LATCH CLOCK là chân nhận xung clock cho thanh ghi chốt
- OUTPUT ENABLE : 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 OUTPUT ENABLE lên mức 1 các đầu ra sẽ ở trạng thái trở kháng cao
- A là chân nhận dữ liệu nối tiếp.
* Hoạt động :
Dữ liệu sau khi được đưa vào chân A của IC, bit dữ liệu đó sẽ được dịch vào thanh ghi dịch ứng với cạnh lên của xung clock đưa tới chân SHIFT CLOCK. 8 bit dữ liệu của thanh ghi dịch sẽ được đưa sang thanh ghi chốt khi có một xung cạnh lên đưa đến chân LATCH CLOCK.
Khi chân OUTPUT ENABLE tích cực mức 0 thì 8-bit dữ liệu này sẽ được đưa ra 8 đầu ra song song Xung tại chân SHIFT CLOCK phải xuất hiện trước xung vào chân LATCH CLOCK. 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 SQH.
Khi ghép nối các IC 74HC595 nối tiếp nhau thì các chân SHIFT CLOCK và LATCH CLOCK của tất cả các IC sẽ được nối chung với nhau và nối với nguồn xung clock, dữ liệu sẽ đưa vào chân A của IC đầu tiên, còn các IC sau đó thì được mắc nối tiếp nhau, chân A của IC này nối với chân SQH của IC trước.
III.2 IC ULN2803
IC ULN2803 là IC đệm đảo với 8 ngõ ra, mỗi ngõ ra là transistor ghép darlington với dòng điện và điện áp ngõ ra cao.
Hinh III.2 : Sơ đồ chân ULN2803
* Thông số :
- Điện áp ngõ ra tối đa : 50V
- Điện áp ngõ vào tối đa : 30V
- Dòng Ic ngõ ra tối đa là 500mA
- Dòng IB ngõ vào tối đa là 25mA
* Hoạt động
Khi ngõ vào mức cao, transistor được kích dẫn, tương ứng ngõ ra được đưa xuống chân GND tức mức thấp. Khi ngõ vào là mức thấp, transistor không được kích dẫn, ngõ tương ứng sẽ ở trạng thái tổng trở cao. Để tạo được mức 1 cần gắn thêm điện trở treo tại ngõ ra của IC ULN2803
TÀI LIỆU THAM KHẢO
DKS_GROUP, Giáo trình vi điều khiển AVR
Nguyễn Đình Phú, Vi xử lý 1, 2006.
Datasheet ATmega16.
Datasheet ULN2803.
Datasheet 74HC595.
Tài liệu tham khảo từ Internet :