Tất cả các thanh ghi quan trọng cần khảo sát nằm trong bộ nhớ dữ liệu của chip.Tổ chức bộ nhớ của AVR Bộ nhớ dữ liệu data memory: Đây là phần chứa các thanh ghi quan trọng nhất của chip,
Trang 1TRƯỜNG ĐẠI HỌC HẢI DƯƠNG KHOA ĐIỆN – ĐIỆN TỬ
====o0o====
ĐỒ ÁN TỐT NGHIỆP
THIẾT KẾ ĐỒNG HỒ ĐIỆN TỬ SỬ DỤNG
ĐIỀU KHIỂN TỪ XA
GIẢNG VIÊN HƯỚNG DẪN: TH.S PHAN ĐÌNH TRUNG
SINH VIÊN THỰC HIỆN: TRỊNH MINH HOÀNG
LỚP: U2.ĐTVT
HỆ: ĐẠI HỌC
Trang 2Hải Dương, tháng 07 năm 2017
LỜI CAM ĐOAN
Em xin cam đoan bản đồ án tốt nghiệp: Thiết kế đồng hồ điện tử sử dụng điều khiển
từ xa do em tự thiết kế dưới sự hướng dẫn của thầy giáo Th.S Phan Đình Trung Các
số liệu và kết quả thực hiện trong đồ án là hoàn toàn đúng với thực tế
Để hoàn thành đồ án này em chỉ sử dụng những tài liệu được ghi trong danh mục tàiliệu tham khảo và không sao chép hay sử dụng bất kỳ tài liệu nào khác Nếu phát hiện
có sự sao chép em xin chịu hoàn toàn trách nhiệm
Hải dương, ngày tháng năm 2017
Sinh viên thực hiện
Trịnh Minh Hoàng
Trang 42.3 Các lo i vi đi u khi n liên quan trong đ tài ạ ề ể ề
2.3.1 IC th i gian DS1307 ờ2.3.2 IC 74164
Trang 5DANH MỤC HÌNH VẼ
Trang 6DANH MỤC BẢNG SỐ LIỆU
Trang 8LỜI NÓI ĐẦU
Trong thời gian học tập tại Trường Đại học Hải Dương, tôi đã được đào tạo và tích lũy nhiều kiến thức cho bản thân cũng như phục vụ công việc sau khi ra trường.
Đặc biệt là khoảng thời gian thực hiện đề tài: ‘‘Thiết kế đồng hồ điện tử sử dụng điều khiển từ xa”.
Tôi xin bày tỏ lòng tri ân tới các thầy, cô Bộ môn, Khoa Điện- điện tử đã tận tình hướng dẫn và giúp đỡ tôi trong quá trình học tập, nghiên cứu và làm luận văn.
Đặc biệt tôi xin được bày tỏ lòng biết ơn sâu sắc đến thầy giáo Th.S Phan Đình Trung đã dành nhiều thời gian và công sức hướng dẫn tôi thực hiện và hoàn thành
luận văn này.
Mặc dù bản thân cũng đã cố gắng, song với kiến thức còn hạn chế và thời gian có hạn, luận văn đồ án tốt nghiệp chắc chắn không thể tránh khỏi những thiếu sót Tôi rất mong nhận được sự chỉ bảo của các thầy, cô, sự góp ý của bạn bè nhằm bổ sung hoàn thiện luận văn.
Xin trân trọng cảm ơn!
Trang 9Chương I Giới thiệu về đồng hồ điện tử
1.1 Đặt vấn đề
Cùng với sự phát triển của khoa học và công nghệ, các thiết bị điện tử đã, đang và
sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong hầu hết cáclĩnh vực khoa học kỹ thuật cũng như trong đời sống xã hội Việc gia công, xử lý các tínhiệu điện tử hiện đại đều dựa trên cơ sở nguyên lý số Vì các thiết bị làm việc dựa trên
cơ sở nguyên lý số có ưu điểm hơn hẳn so với các thiết bị làm việc dưạ trên cơ sởnguyên lý tương tự, đặc biệt là trong kỹ thuật tính toán
Sự phát triển mạnh mẽ của công nghệ điện tử đã cho ra đời nhiều vi mạch số cỡ lớnvới giá thành rẻ và khả năng lập trình cao đã mang lại những thay đổi lớn trong ngànhđiện tử Mạch số ở những mức độ khác nhau đã đang thâm nhập trong các lĩnh vựcđiện tử thông dụng và chuyên nghiệp một cách nhanh chóng Các trường kỹ thuật lànơi mạch số thâm nhập mạnh mẽ và được học sinh, sinh viên ưa chuộng do lợi ích và
Trang 10tính khả thi của nó Vì thế sự hiểu biết sâu sắc về kỹ thuật số là không thể thiếu đối vớisinh viên ngành điện tử hiện nay Nhu cầu hiểu biết về kỹ thuật số không chỉ riêng đốivới những người theo chuyên ngành điện tử mà còn đối với những cán bộ kỹ thuậtkhác có sử dụng thiết bị điện tử
Hình 1.1 Đồng hồ điện tử dạng led 7 đoạn
Một vài năm gần đây đồng hồ số ở Việt Nam đang ngày càng phát triển mạnh
mẽ, là một trong các vấn đề đóng vai trò quan trọng trong sự phát triển của một cuộcsống thời hiện đại người ta sử dụng đồng hồ số trong các bức tranh trang trí hay là cácđồng hồ lớn có hiển thị thời gian taị các nơi công cộng hay cơ quan xí nghiệp…Nó tốt
sẽ đem lại nhiều lợi ích to lớn Cũng chính vì vậy được mọi người rất ưa chuộng vìvừa đẹp và rất tiện lợi ngoài ra còn vì sự đơn giản, hiện đại, bắt mắt, chi phí hợp lýcũng như tính hiệu quả của nó.Với lại với màu sắc sặc sỡ, bắt mắt, gây nhiều chú ýchắc hẳn đã không còn xa lạ đối với người dân
Để đồng hồ hiển thị thời gian, ngày tháng năm và nhiệt độ… thêm rực rỡ thuhút được sự chú ý của mọi người ta sử dụng phương pháp lập trình dùng vi xử lý Dưới dây là một số sản phẩm đồng hồ thông minh đang được bán tại thị trườngViệt Nam:
Trang 111.2 Ý tưởng thiết kế đồng hồ điều khiển từ xa
Trang 121.3 Mô hình hệ thống
Trang 13Chương II Giới thiệu về vi điều khiển AT8 và các linh kiện
• Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiết kế tương thích C
• Nguồn tài nguyên về source code, tài liệu, application note rất lớn trên
internet
• Hầu hết các chip AVR có những tính năng (features) sau:
- Có thể sử dụng xung clock lên đến 16MHz, hoặc sử dụng xung clock nộilên đến 8MHz (sai số 3%)
Trang 14- Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung lượng lớn, có SRAM (Ram tĩnh) lớn, và đặc biệt có bộ nhớ lưu trữ lập trình được EEPROM.
- Nhiều ngõ ra (I/O PORT) 2 hướng (bi-directional)
- Các bộ chuyển đổi Analog-Digital phân giải 10bits, nhiều kênh
- Chức năng Analog comparator
- Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232)
- Giao diện nối tiếp Two-Wire-Serial (tương thích chẩn I2C)
- …
Một số chip AVR thông dụng:
AT90S1200
AT90S2313; AT90C8534
AT90S2323 and AT90S2343
AT90S2333 and AT90S4433
AT90S4414 and AT90S8515
AT90S4434 and AT90S8535
ATmega8/8515/8535ATmega16; 32ATmega161/162.163/169ATmega323; ATmega103ATmega64/128/2560/2561Attiny10, Attiny11 và Attiny12…
2.1.2 Cấu trúc AVR
AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data memory bus) và đường truyền bộ nhớ chương trình (program memory bus) được tách riêng Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại vi, với register file Trong khi đó program memory bus có
độ rộng 16bit và chỉ phục vụ cho instruction register
Bộ nhớ chương trình (program memory): Là bộ nhớ Flash lập trình được,
trong các chip AVR cũ như (AT90S1200 hay AT90S2313…) bộ nhớ chươngtrình chỉ gồm 1 phần là Application Flash Section nhưng trong các chip AVR mới chúng ta có thêm phần Boot Flash Section Vì chức năng chính của bộ nhớ chương trình là chứa instruction, chúng ta không có nhiều cơ hội
Trang 15trình AVR, bộ nhớ này “không quá quan trọng” Tất cả các thanh ghi quan trọng cần khảo sát nằm trong bộ nhớ dữ liệu của chip.
Tổ chức bộ nhớ của AVR
Bộ nhớ dữ liệu (data memory): Đây là phần chứa các thanh ghi quan trọng
nhất của chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này Bộ nhớ dữ liệu trên các chip AVR có độ lớn khác nhau tùy theo mỗi chip, tuy nhiên về cơ bản bộ nhớ này được chia thành 5 phần:
Phần 1: là phần đầu tiên trong bộ nhớ dữ liệu, như mô tả trong hình ,
phần này bao gồm 32 thanh ghi có tên gọi là register file (RF), hay General Purpose Register (GPR), tất cả các thanh ghi này đều là thanh ghi 8 bit như như sau:
Thanh ghi 8 bits
Tất cả csc cgip trong họ AVR đều bao gồm 32 thanh ghi Register File có địachỉ tuyệt đối từ 0x0000 đến 0x001F Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến 255 hoặc các giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một kí tự nào đó…Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31 Chúng được chia thành 2 phần, phần 1 bao gồm các thanh ghi từ R0
Trang 16đến R15 và phần 2 là các thanh ghi R16 đến R31 Các thanh ghi này có đặc điểm như sau:
- Được truy cập trực tiếp trong các instruction
- Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần 1 chu kỳ xung clock
- Register File được kết nối trực tiếp với bộ xử lí trung tâm – Cpu của chip
- Chúng là nguồn chứa các số hạng trong các phép toán và cũng chính là đích chứa kết quả trả lại của phép toán
Để minh họa , hãy xét ví dụ thực hiện phép cộng 2 thanh ghi bằng instruction ADD như sau: ADD R1, R2
Ta thấy trong dòng lệnh trên, 2 thnah ghi R1 và R2 được sử dụng trực tiếp với tên của chúng, dòng lệnh trên khi được dịch sang opcode để download vào chip sẽ có dạng: 000110000010010 trong đó 00001=1 tức thanh ghi R1 và 00010=2 chỉ thanh ghi R2 Sau phép cộng, kết quả sẽ được lưu vào thanh ghi R1
Tất cả các instruction sử dụng RF làm toán hạng đều có thể truy cập tất
cả các RF một cách trực tiếp trong 1 chu kì xung clock, ngoại trừ SBCI, SUBI, CPI, ANDI và LDI, các instruction này chỉ có thể truy cập từ thanh ghi R16 đếnR31
Thanh ghi R0 là thanh ghi duy nhất được sử dụng trong instruction LPM (Load Program Memory) Các thanh ghi R26, R27, R28, R29, R30, R31 ngoài chức năng thông thường còn được sử dụng như các con trỏ (Pointer register) trong một số instruction truy xuất gián tiếp
Trang 17Register File
Phần 2: là phần nằm ngay sau register file,phần này bao gồm 64 thanh
ghi được gọi là 64 thanh ghi nhập/xuất hay còn gọi là vùng nhớ I/O Đây là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi Tất cả các thanh ghi điều khiển, trạng thái… của thiết bị ngoại vi nằm ở đây
Phần 3: RAM tĩnh, nội (internal SRAM), là vùng không gian cho chứa
các biến (tạm thời hoặc toàn cục) trong lúc thực thi chương trình, vùng này tương tự như các thanh RAM trong máy tính nhưng có dung lượng khá nhỏ (khoảng vài KB)
Phần 4: RAM ngoại (external SRAM), các chip AVR cho phép người sử
dụng gắn thêm các bộ nhớ ngoài để chứa biến, vùng này thực chất chỉ tồn tại khi người sử dụng gắn thêm bộ nhớ ngoài vào chip
Phần 5: EEPROM (Electrically Ereasable Programmable ROM) là một
phần quan trọng chủa các chip AVR mới, vì là ROM nên bộ nhớ này không bị
Trang 18xóa ngay cả khi không cung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu
2.2 Vi điều khiển Atmega8
ATmega8 là m t vi đi u khi n CMOS 8-bit công su t th p d a trên ki n ộ ề ể ấ ấ ự ếtrúc AVR RISC B ng cách th c hi n các hằ ự ệ ướng d n m nh mẽ trong m t chu ẫ ạ ộ
kỳ đ ng h duy nh t, ATmega8 đ t đồ ồ ấ ạ ược thông lượng ti p c n 1MIPS trên ế ậ
m i MHz, cho phép nhà thi t k h th ng t i u hóa năng lỗ ế ế ệ ố ố ư ượng tiêu hao so
v i t c đ x lý.ớ ố ộ ử
ATmega8 cung c p các tính năng sau:ấ
8 Kbytes c a In-System Programmable Flash v i kh năng đ c-ghi-ghi, ủ ớ ả ọ
512 byte c a EEPROM, 1 Kbyte c a SRAM, 23 m c đích chung I / O dòng, 32 ủ ủ ụđăng ký làm vi c chung, ba linh ho t Timer / Counters v i so sánh ch đ , ệ ạ ớ ế ộinterrupts n i b và bên ngoài, m t USART l p trình n i ti p, m t ADC 6 ộ ộ ộ ậ ố ế ộkênh (tám kênh trong gói TQFP và QFN/MLF) v i đ chính xác 10-bit, m t ớ ộ ộWatchdog Timer có th l p trình v i Internal Oscillator, m t c ng n i ti p ể ậ ớ ộ ổ ố ếSPI, và năm ch đ ti t ki m năng lế ộ ế ệ ượng ph n m m có th l a ch n ầ ề ể ự ọ
Ch đ Idle d ng CPU trong khi cho phép SRAM, Timer / Counters, c ng ế ộ ừ ổSPI, và h th ng ng t đ ti p t c ho t đ ng S c m nh l u các n i dung ệ ố ắ ể ế ụ ạ ộ ứ ạ ư ộđăng ký nh ng đóng băng các oscillator, vô hi u hóa t t c các chip cho đ n ư ệ ấ ả ếkhi ng t k t n i ti p theo ho c thi t l p l i ph n c ng ắ ế ố ế ặ ế ậ ạ ầ ứ
Trong ch đ ti t ki m đi n, b đ nh th i không đ ng b ti p t c ch y, ế ộ ế ệ ệ ộ ị ờ ồ ộ ế ụ ạcho phép ngườ ử ụi s d ng đ duy trì m t c s h n gi trong khi ph n còn ể ộ ơ ở ẹ ờ ầ
Trang 19Trong ch đ ch , ch đ Crystal / Oscillator Oscillator đang ch y trong ế ộ ờ ế ộ ạkhi ph n còn l i c a thi t b đang ng Đi u này cho phép kh i đ ng nhanh ầ ạ ủ ế ị ủ ề ở ộ
k t h p v i tiêu th năng lế ợ ớ ụ ượng th p.ấ
Các b nh chộ ớ ương trình Flash có th để ượ ậc l p trình l i trong h th ng ạ ệ ốthông qua m t giao di n n i ti p SPI, b i m t chộ ệ ố ế ở ộ ương trình b nh không ộ ớ
bi n đ i thông thế ổ ường, ho c b ng m t chặ ằ ộ ương trình kh i đ ng On-chip ở ộđang ch y trên lõi AVR Chạ ương trình kh i đ ng có th s d ng b t kỳ giao ở ộ ể ử ụ ấ
di n nào đ t i chệ ể ả ương trình ng d ng xu ngứ ụ ố
ATmega8 là m t vi đi u khi n m nh mẽ cung c p m t gi i pháp r t linh ộ ề ể ạ ấ ộ ả ấ
ho t và hi u qu v chi phí cho nhi u ng d ng đi u khi n nhúng.ạ ệ ả ề ề ứ ụ ề ể
ATmega8 được h tr v i đ y đ các công c phát tri n chỗ ợ ớ ầ ủ ụ ể ương trình và
h th ng, bao g m các trình biên d ch C, các nhà l p ráp vĩ mô, chệ ố ồ ị ắ ương trình
mô ph ng và các b d ng c đánh giá.ỏ ộ ụ ụ
2.2.2 Thông số kĩ thuật
• B vi đi u khi n 8-bit Atmel®AVR® hi u su t caoộ ề ể ệ ấ
- 130 hướng d n m nh mẽ - H u h t vi c th c hi n chu trình đ n ẫ ạ ầ ế ệ ự ệ ơchu kỳ
- 32 × 8 s đăng ký làm vi c chungổ ệ
- V n hành tĩnhậ
- T c đ 16MIPS t c đ 16MHzố ộ ở ố ộ
- H s nhân 2 chu kỳ On-chip ệ ố
• Các phân đo n b nh không th bay h i caoạ ộ ớ ể ơ
- 8Kbytes trong h th ng ệ ố t l p trình b nh chự ậ ộ ớ ương trình Flash
Trang 20- 6 kênh ADC trong gói PDIP, 6 Kênh Đ chính xác 10-bitộ
- Giao di n n i ti p hai chi u b ng Byteệ ố ế ề ằ
- Chương trình Serial USART
- Giao ti p n i ti p Master / Slave SPI ế ố ế
- B đ nh th i Watchdog có th ộ ị ờ ể l p trình v i ậ ớ b dao đ ng On-Chip ộ ộriêng bi tệ
- B k t h p Analog On-Chipộ ế ợ
• Các tính năng vi đi u khi n đ c bi tề ể ặ ệ
- Cài đ t l i ngu n và l p trình phát hi n ra màu nâuặ ạ ồ ậ ệ
- Dao đ ng RC độ ược đ nh chu n n i bị ẩ ộ ộ
Trang 21Tùy thu c vào cài đ t c u chì l a ch n đ ng h , PB7 có th độ ặ ầ ự ọ ồ ồ ể ượ ửc s
d ng nh đ u ra t b khu ch đ i ụ ư ầ ừ ộ ế ạ dao đ ng ộ đ o ngả ược
Trang 22Nếú b dao đ ng n i bộ ộ ộ ộ RC ibribrated đượ ử ục s d ng nh ngu n đ ngư ồ ồ
h chip, PB7 6 đồ ượ ử ục s d ng nh TOSC2 1 đ u vàoư ầ không đ ng b ồ ộ cho Timer / Counter2 n u AS2 bit trong ASSR đế ược thi t l p.ế ậ
- Port C (PC5 PC0): Port C là m t c ng I/O hai chi u 7-bit v i đi n tr ộ ổ ề ớ ệ ởkéo lên bên trong (được ch n cho m i bit) ọ ỗ
- PC6 / RESET: N u c u chì RSTDISBL đế ầ ượ ậc l p trình, PC6 đượ ửc s
d ng nh m t chân I / O L u ý r ng đ c tính đi n c a PC6 khác v i ụ ư ộ ư ằ ặ ệ ủ ớcác chân c a ủ Port C
N u c u chì RSTDISBL không l p trình, PC6 đế ầ ậ ượ ử ục s d ng làm đ u ầvào Reset M t m c th p trên pin nàyộ ứ ấ có th i gian lâu h n chi u dài ờ ơ ềxung t i thi u sẽ t o ra Reset, ngay c khi đ ng h không ch y.ố ể ạ ả ồ ồ ạ
- Port D (PD7 PD0) : Port D là m t c ng I / O 8-bit có đi n tr kéo lên ộ ổ ệ ởtrong (được ch n cho m i bit) B đ m đ u ra Port D có các đ c tính ọ ỗ ộ ệ ầ ặ
đ i x ng v i c ch
ổ ố ứ ớ ả ùm cao và kh năng ngu n Là đ u vào, các chân ả ồ ầ
c ng D đổ ược rút ra t bên ngoài th p sẽ có ngu n n u đi n tr kéo ừ ấ ồ ế ệ ởlên được kích ho t Các chân c ng D đạ ổ ượ kéo nên khi m t đi u ki n c ộ ề ệ
đ t l i tr nên ho t đ ng, ngay c khi đ ng h không ch yặ ạ ở ạ ộ ả ồ ồ ạ
- RESET: Đ t l i đ u vào M t m c th p trên pin này lâu h n đ dài ặ ạ ầ ộ ứ ấ ơ ộxung t i thi u sẽ t o ra m t thi t l p l i, ngay c khi đ ng h không ố ể ạ ộ ế ậ ạ ả ồ ồ
ch y Xung ng n h n không đạ ắ ơ ược đ m b o đ t o ra m t thi t l p ả ả ể ạ ộ ế ậ
l i.ạ
- AVCC: AVCC là chân đi n áp cung c p cho A / D Converter, Port C (3 0)ệ ấ
và ADC (7 6) Nó ph i đả ược k t n i bên ngoài v i VCC, ngay c khi ế ố ớ ảADC không đượ ử ục s d ng N u ADC đế ượ ử ục s d ng, nó ph i đả ược n i ố
t i VCC thông qua m t b l c thông th p L u ý r ng c ng C (5 4) s ớ ộ ộ ọ ấ ư ằ ổ ử
d ng đi n áp cung c p kỹ thu t s , VCC.ụ ệ ấ ậ ố
- AREF : AREF là pin tham chi u tế ương t cho b chuy n đ i A / D.ự ộ ể ổ
- ADC7 6 (Ch Gói TQFP và QFN / MLF) ỉ : Trong gói TQFP và QFN / MLF,ADC7 6 đóng vai trò đ u vào tầ ương t cho b chuy n đ i A / D ự ộ ể ổ
Nh ng chân này đữ ược cung c p t ngu n cung c p analog và ph c ấ ừ ồ ấ ụ
Trang 23a Tổ chức bộ nhớ chương trình (Program Memory)
ATmega8 ch a 8Kbytes On-chip ứ trong h th ng b nhệ ố ộ ớ đ l u tr ể ư ữ
chương trình Vì t t c các hấ ả ướng d n AVR là 16-bit ho c 32-bit r ng, Flash ẫ ặ ộ
đượ ổc t ch c nh 4K x 16 bit Đ i v i b o m t ph n m m, không gian b ứ ư ố ớ ả ậ ầ ề ộ
Trang 24nh ớ chương trình Flash được chia thành hai ph n, ph n ầ ầ chương trình kh i ở
đ ng và ph n ộ ầ chương trình ứng d ng.ụ
B nh Flash có đ b n c a ít nh t 10.000 chu kỳ ghi / xóa Máy đ m ộ ớ ộ ề ủ ấ ế
ti n Proxy ATmega8 (PC) r ng 12 bit, do đó gi i quy t các v trí b nh ề ộ ả ế ị ộ ớ
Chương trình 4K Ho t đ ng c a ph n chạ ộ ủ ầ ương trình kh i đ ng và các Boot ở ộLock Bits liên quan đ n b o v ph n m m đế ả ệ ầ ề ược mô t chi ti t trong "H ả ế ỗ
tr b t i kh i đ ng - Đ c-ghi-t -ghi"ợ ộ ả ở ộ ọ ự
b B nh d li u SRAMộ ớ ữ ệ
- Các v trí b nh d li u th p h n năm 1120 ghi đ a ch t p đăng ký, ị ộ ớ ữ ệ ấ ơ ị ỉ ệ
b nh I / O, và SRAM d li u liên vùng 96 v trí đ u tiên l u tr h sộ ớ ữ ệ ị ầ ư ữ ồ ơđăng ký và b nh I / O, và 1024 v trí k ti p sẽ x lý SRAM d li u ộ ớ ị ế ế ử ữ ệ
Trang 25- Ch đ gián ti p v i ế ộ ế ớ ch đ di chuy nế ộ ể t i 63 v trí đ a ch t đ a ch c ớ ị ị ỉ ừ ị ỉ ơ
s đở ược cung c p b i đăng ký Y ho c đăng ký Z.ấ ở ặ
- Khi s d ng ch đ đăng ký đ a ch gián ti p v i t đ ng gi m trử ụ ế ộ ị ỉ ế ớ ự ộ ả ước
và tăng d nầ , đ a ch đăng ký X, Y và Z đị ỉ ượ gi m ho c gia tăng.c ả ặ
- 32 m c đích chung làm vi c đăng ký, 64 I / O đăng ký, và 1024 byte d ụ ệ ữ
li u n i b SRAM trong ATmega8 đ u có th truy c p thông qua t t c ệ ộ ộ ề ể ậ ấ ảcác ch đ đ a ch ế ộ ị ỉ
c Th i gian truy c p b nh d li uờ ậ ộ ớ ữ ệ
Truy c p SRAM d li u n i b đậ ữ ệ ộ ộ ược th c hi n trong hai chu kỳ clkCPUự ệ :
Trang 26d B nh d li u EEPROMộ ớ ữ ệ
ATmega8 ch a 512bytes b nh EEPROM d li u Nó đứ ộ ớ ữ ệ ượ ổc t ch c nh ứ ư
m t không gian d li u riêng bi t, trong đó có th đ c và vi t m t byte ộ ữ ệ ệ ể ọ ế ộEEPROM có đ b n ít nh t 100.000 chu kỳ ghi / xóa Vi c truy c p gi a ộ ề ấ ệ ậ ữEEPROM và CPU được mô t dả ưới đây, xác đ nh đăng ký đ a ch EEPROM, ị ị ỉđăng ký d li u EEPROM và đăng ký ki m soát EEPROM.ữ ệ ể
e Truy c p đ c/ghi EEPROMậ ọ
Các Đăng ký Truy c p EEPROM có th truy c p trong không gian I / O ậ ể ậ
Th i gian truy c p ghi c a EEPROM:ờ ậ ủ
L u ý: S d ng đ ng h 1MHz, đ c l p v i cài đ t CKSEL Fuse ư ử ụ ồ ồ ộ ậ ớ ặ
Tuy nhiên, ch c năng t đ nh th i cho phép ph n m m ngứ ự ị ờ ầ ề ười dùng phát
hi n khi nào có th ghi đệ ể ược byte k ti p N u mã ngế ế ế ười dùng ti p t c ế ụcác hướng d n ghi EEPROM, c n ph i th c hi n m t s bi n pháp ẫ ầ ả ự ệ ộ ố ệphòng ng a Trong các ngu n cung c p năng lừ ồ ấ ượng b l c r t nhi u, VCC ị ọ ấ ề
có kh năng tăng ho c gi m ch m khi b t lên / xu ng Đi u này làm cho ả ặ ả ậ ậ ố ềthi t b trong m t kho ng th i gian đ ch y đi n áp th p h n đế ị ộ ả ờ ể ạ ở ệ ấ ơ ược
Trang 27EEPROM không ch ý vi t, m t th t c ghi c th ph i đủ ế ộ ủ ụ ụ ể ả ược tuân th ủKhi đ c EEPROM, CPU sẽ b d ng l i cho b n chu kỳ đ ng h trọ ị ừ ạ ố ồ ồ ước khi
l nh ti p theo đệ ế ược th c hi n Khi EEPROM đự ệ ược vi t, CPU sẽ b d ng ế ị ừ
l i cho hai chu kỳ đ ng h trạ ồ ồ ước khi l nh ti p theo đệ ế ược th c thi.ự
f Đ a ch EEPROM Đăng ký - EEARH và EEARLị ỉ
- Các bit 15 9 - Res: Các bit d phòngự
Các bit này là bit dành riêng trong ATmega8 và sẽ luôn luôn đ c nh làọ ưkhông
- Bits 8 0 - EEAR8 0: Đ a ch EEPROMị ỉ
Đ a ch EEPROM Đăng ký - EEARH và EEARL - ch đ nh đ a ch ị ỉ ỉ ị ị ỉ
EEPROM trong không gian EEPROM 512bytes Các byte d li u ữ ệ
EEPROM được đ nh tuy n tuy n tính gi a 0 và 511 Giá tr ban đ u ị ế ế ữ ị ầ
c a EEAR không xác đ nh M t giá tr thích h p ph i đủ ị ộ ị ợ ả ược vi t trế ước khi EEPROM có th để ược truy c p.ậ
g Đăng ký D li u EEPROM – EEDRữ ệ
Bit 7 0 - EEDR7 0 : D li u EEPROM Đ i v i thao tác ghi EEPROM, thanh ữ ệ ố ớghi EEDR ch a d li u đứ ữ ệ ược ghi vào EEPROM theo đ a ch đị ỉ ược cung c p ấ
b i Đăng ký EEAR Đ i v i ho t đ ng đ c EEPROM, EEDR ch a d li u ở ố ớ ạ ộ ọ ứ ữ ệ
được đ c t EEPROM theo đ a ch c a EEAR.ọ ừ ị ỉ ủ
h Danh b ki m soát EEPROM – EECRạ ể
Trang 28- Bits 7 4 - Res: Bits Dành riêng
Các bit này là bit dành riêng trong ATmega8 và sẽ luôn luôn đ c nh là ọ ưkhông
- Bit 3 - EERIE: EEPROM S n sàng Ng t Kích ho tẵ ắ ạ
Vi t EERIE đ m t cho phép S n sàng EEPROM Ng t n u tôi bit trong ế ể ộ ẵ ắ ếSREG được thi t l p Vi t EERIE đ không vô hi u hoá các gián đo n ế ậ ế ể ệ ạ
Ng t k t n i EEPROM s n sàng t o ra m t liên đo n liên t c khi EEWEắ ế ố ẵ ạ ộ ạ ụ
b xóa.ị
- Bit 2 - EEMWE: EEPROM Master Write Enable
Bit EEMWE xác đ nh li u thi t l p EEWE v i m t EEPROM sẽ làm cho ị ệ ế ậ ớ ộEEPROM được ghi Khi EEMWE được thi t l p, thi t l p EEWE trong ế ậ ế ậvòng b n chu kỳ đ ng h sẽ ghi d li u vào EEPROM t i đ a ch đố ồ ồ ữ ệ ạ ị ỉ ược
ch n N u EEMWE b ng 0, vi c cài đ t EEWE sẽ không có hi u l c Khi ọ ế ằ ệ ặ ệ ựEEMWE đã được ghi vào m t b ng ph n m m, ph n c ng sẽ xóa bit ộ ằ ầ ề ầ ứ
xu ng không sau b n chu kỳ đ ng h ố ố ồ ồ
- Bit 1 - EEWE: EEPROM Vi t cho phépế
EEROM vi t tín hi u cho phép EEWE là ế ệ đèn ghi vào EEPROM Khi đ a ị
ch và d li u đỉ ữ ệ ược thi t l p đúng, bit EEWE ph i đế ậ ả ược ghi vào m t độ ểghi giá tr vào EEPROM EEMWE bit ph i đị ả ược ghi vào m t trộ ước khi
vi t lu n c logic cho EEWE, ho c không có ghi EEPROM di n ra Th ế ậ ứ ặ ễ ủ
t c sau đây ph i đụ ả ược tuân th khi vi t EEPROMủ ế
- Bit 0 - EERE: B t EEPROM EEROM đ c tín hi u cho phép EERE là đèn ậ ọ ệ
đ c đ n EEPROM Khi đ a ch chính xác đọ ế ị ỉ ược thi t l p trong đăng ký ế ậEEAR, bit EERE ph i đả ược ghi vào m t logic đ kích ho t đ c ộ ể ạ ọ
EEPROM Truy c p đ c EEPROM m t m t l nh và d li u đậ ọ ấ ộ ệ ữ ệ ược yêu
c u có s n ngay l p t c Khi EEPROM đầ ẵ ậ ứ ược đ c, CPU sẽ b d ng l i ọ ị ừ ạ
Trang 29trong b n chu kỳ trố ước khi l nh ti p theo đệ ế ược th c hi n Ngự ệ ườ ửi s
d ng nên thăm dò bit EEWE trụ ước khi b t đ u thao tác đ c N u thao ắ ầ ọ ếtác ghi đang được ti n hành, không th đ c đế ể ọ ược EEPROM, cũng nh ưkhông thay đ i đăng ký EEAR.ổ
hướng d n c a SBI và CBI Trong các thanh ghi này, giá tr c a các bit đ nẫ ủ ị ủ ơ
có th để ược ki m tra b ng cách s d ng hể ằ ử ụ ướng d n SBIS và SBIC Khi sẫ ử
d ng các l nh IN/OUT c th c a I/O, các đ a ch I/O 0x00 - 0x3F ph i ụ ệ ụ ể ủ ị ỉ ả
đượ ử ục s d ng Khi đ t Đ a ch I/O Đăng ký nh không gian d li u s ặ ị ỉ ư ữ ệ ử
d ng các l nh LD và ST, 0x20 ph i đụ ệ ả ược thêm vào các đ a ch này.ị ỉ
Đ tể ương thích v i các thi t b trong tớ ế ị ương lai, các bit được dành nên
được ghi b ng không n u đằ ế ược truy c p.ậ
Các đ a ch b nh I/O d phòng không bao gi đị ỉ ộ ớ ự ờ ược ghi
M t s c tr ng thái độ ố ờ ạ ược xóa b ng cách vi t m t cái h p lý cho chúng ằ ế ộ ợ
L u ý r ng hư ằ ướng d n CBI và SBI sẽ ho t đ ng trên t t c các bit trongẫ ạ ộ ấ ả Đăng ký I/O, ghi l i m t l n n a vào b t kỳ c nào đạ ộ ầ ữ ấ ờ ược đ c theo thi t ọ ế
l p, do đó xóa c Hậ ờ ướng d n CBI và SBI ch ho t đ ng v i các thanh ghi ẫ ỉ ạ ộ ớ
Trang 3056 thanh ghi trống có thể dùng như RAM DS1307 được đọc và ghi thông qua giao diện nối tiếp I2C (TWI của AVR) nên cấu tạo bên ngoài rất đơn giản DS1307 xuất hiện ở 2 góc SOIC và DIP có 8 chân như trong hình…
Các chân của DS1307 được mô tả như sau:
- X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động cho chip.
- Vbat: cực dương của một nguồn pin 3V nuôi chip.
- GND: chân mass chung cho cả pin 3V và Vcc.
- Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển Chú ý là nếu Vcc không được cấp nguồn nhưng Vbat được cấp thì DS1307 vẫn hoạt động(nhưng không ghi và đọc được).
- SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave/ Output Driver), tần số của xung được tạo có thể được lập trình Như vậy chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống chân này khi nối mạch.
- SCL và SDA là 2 đường giao xung nhjp và dữ liệu của giao diện I2C.
Có thể kết nối DS1307 bằng 1 mạch điện đơn giản như trong hình….
Trang 31Mạch ứng dụng đơn giản của D1307
Cấu tạo bên trong DS1307 bao gồm 1 số thành phần như mạch nguồn, mạch dao động, mạch điều khiển logic, mạch giao diện I2C, con trỏ địa chỉ
và các thanh ghi(hay RAM) Do đa số các thành phần bên trong DS1307 là thành phần “cứng” nên chúng ta không có có nhiefeuvieejc khi sử dụng DS1307 Sử dụng DS1307 chủ yếu là ghi và đọc các thanh ghi của chip này Vì thế cần hiểu rõ 2 vấn đề cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh ghi này tông qua giao diện I2C.
Bộ nhớ DS1307 có tất cả 64 thanh ghi 8-bit được đánh địa chỉ từ 0 đến 63 (từ 0x00 đến 0x3F theo hệ hexadecimal) Tuy nhiên, thực chất chỉ có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ” (RTC) còn lại 56 thanh ghi
bỏ trống có trống có thể được dùng chứa biến tạm như RAM nếu muốn Bảy thanh ghi đầu tiên chưa thông tin về thời gian của đồng hồ bao gồm: giây(SECONDS), phút(MINUESTS), giờ(HOURS), thứ(DAY), ngày (DATE), tháng(MONTH), năm(YEAR) Việc ghi giá trị vào 7 thanh ghi này tương đương với việc “cài đặt” thời gian khởi động cho RTC Việc đọc giá trị từ 7 thanh ghi là đọc thời gian thực mà chip tạo ra Ví dụ, lúc khởi động chương trình, chúng ta ghi vào thanh ghi “giây” giá trị 42, sau đó 12s chúng ta đọc thanh ghi này, chúng ta thu được giá trị 54 Thanh ghi thứ 8(CONTROL) là thanh ghi điều khiển xung ngõ ra SQW/OUT (chân 6)
Trang 32Tuy nhiên, do chúng ta không dùng chân SQW/OUT nên có thể bỏ qua thanh ghi thứ 8 Tổ chức bộ nhớ của DS1307 được trình bày như sau:
Vì 7 thanh ghi đầu tiên là quan trọng nhất trong hoạt động của DS1307, chúng ta sẽ khảo sát các thanh ghi này một cách chi tiết Trước hết hãy quan sát tổ chức theo từng bit của các thanh ghi này như trong hình:
Tổ chức các thanh ghi thời gian.
Trang 33Điều đầu tiên cần chú ý là chú ý là giá trị thời gian lưu trong các thanh ghi theo dạng BCD (Binary-Coded Decimal tạm dịch là các số thập phân theo
mã nhị phân) Ví dụ ta muốn cài đặt cho thanh ghi MINUTES giá trị 42 Nêu qui đổi 42 sang mã thập lục phân thì chúng ta thu đượ 42=0x2A theo cách hiểu thông thường chúng ta chỉ cần gán MINUTES=42 hoặc
MINUTES=0x2A, tuy nhiên các thanh ghi này chứa giá trị BCD nên sẽ như sau:
Với số 42, trước hết nó được tách thành 2 chứ số(digit) 4 và 2 Mỗi chữ số sau đó được đổi sang mã nhị phân 4-bit Chứ số 4 được đổi thành 0100, số
2 đổi thành 0010 Ghép mã nhị phân của 2 chữ số lại ta thu được một số 8 bit, đó là số BCD Với trường hợp này, số BCD thu được là 01000 010 (nhị phân) = 66 Như vậy, để đặt số phút 42 cho DS1307 chúng ta cần ghi vào thanh ghi MINUTES giá trị 66 (mã BCD của 42) Tất cả các phần mềm lập trình hay thanh ghi của chip điều khiển đều sử dụng mã nhị phân thông thường, không phải mã BCD, do đó cúng ta cần viết chương trình con để qui đổi số thập nhị phân(hoặc thập phân thường) sang BCD, phần này sẽ được lập trình trong lúc lập trình giao tiếp với DS1307 Thoạt nhìn, mọi người đều cho rằng số BCD chỉ làm vấn đề thêm rắc rối, tuy nhiên số BCD rất có ưu điểm trong việc hiển thị nhất là hiển thị từng chữ số như hiển thị bằng LED 7 đoạn chẳng hạn Quay lại ví dụ 42 phút, giả sử chúng ta dùng
2 LED 7-đoạn để hiển thị 2 chữ số của số phút Khi đọc thanh ghi
Trang 34MINUTES chúng ta thu được giá trị 66 (mã BCD của 42), do
66=01000010 (nhị phân), để hiển thị chúng ta chỉ cần dùng phương pháp tách bit thông thường để tách số 01000010 thành 2 nhóm 0100 và 0010 (tách bằng toán tử shift ‘’>>’’ của C hoặc instruction LSL, LSR trong asm)
và xuất trực tiếp 2 nhóm này ra LED vì 0010 = 4 và 0100 = 2, rất nhanh chóng Thậm chí, nếu chúng ta nối 2 LED 7 trong cùng 1 PORT, việc tách
ra từng digit là không cần thiết, để hiển thị cả số, chỉ cần xuất trực tiếp ra PORT Như vậy, với số BCD, việc tách và hiển thị digit được thực hiện rất
dễ dàng, không cần thực hiện phép chia (tốn thời gian thực thi) ho cơ số 10,
100, 1000… như trong trường hợp số thập phân.
Thanh ghi giây(SECONDS): thanh ghi này là thanh ghi đầu tiên trong bộ nhớ của DS1307, địa chỉ chỉ của nó là 0x00 Bốn bit thấp của thanh ghi này chứa mã BCD 4 bit của chữ số hàng đơn vị của giá trị giây Do đó giá trị cao nhất của chữ số hàng chục là 5 (không có giây 60) nên chỉ cần 3 bit (các loại bit SECONDS 6:4) là có thể mã hóa được (sô 5 = 101, 3bit) Bit cao nhất, bit 7, trong thanh ghi này có tên CH (Clock halt – treo đồng hồ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hóa, đồng hồ không hoạt động Vì vậy, nhất thiết phải reset bit này xuống 0 ngay từ đầu Thanh ghi phút (MINUTES): có địa chỉ 0x01, chứa giá trị phút của đồng
hồ Tương tự thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này được dùng trong mã BCD của phút, bit 7 luôn bằng 0.
Thanh ghi giờ(HOURS): có thể nói đây là thanh ghi phức tạp nhất trong DS1307 Thanh ghi này có địa chỉ 0x02 Trước hết 4-bit thấp của thanh ghi này được dùng cho chữ số hàng đơn vị của giờ Do DS1307 hỗ trợ 2 loại hệ thống hiển thị giờ (gọi là mode) là 12h (từ 1h đến 12h) và 24h (từ 1h đến
Trang 35hệ thống 24h được chọn, khi đó 2bit cao 5 và 4 dùng mã hóa chữ số hàng chục của giá trị giờ Do giá trị lớn nhất của chữ số hàng chục trong trường hợp này la 2 (=10, nhị phân) nên 2 bit này đủ để mã hóa Nếu bit6 = 1 thì
hệ thống 12h được chọn, trong trường hợp này chỉ có bit4 dùng mã hóa chữ
số hàng chục của giờ, bit 5 (màu cam trong hình ) chỉ buổi mỗi ngày, AM hoặc PM Bit5 = 0 là AM, bit5 = 1 là PM Bit 7luoon bằng 0.
Thanh ghi thứ (DAY-ngày trong tuần): nằm ở địa chỉ 0x03 Thanh ghi DAY chỉ mang giá trị từ 0 đến 7 tuowg ứng từ chủ nhật đến thứ 7 trong 1 tuần
Vì thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa.
Các thanh ghi còn lại có cấu trúc tương tự, DATE chứa ngày trong tháng (1 đến 31), MONTH chứa tháng (1 đến 12), YEAR chứa năm (00 đến 99( Chú ý, DS1307 chỉ dùng cho 100 nă, nên giá trị năm chỉ có 2 chữa số, phần đầu của năm do người dùng tự thêm vào (ví dụ 20xx).
Ngoài các thanh ghi trong bộ nhớ, DS1307 còn có 1 thanh ghi khác nằm
riêng gọi là con trỏ địa chỉ hay thanh ghi địa chỉ (Address Register) Giá trị
của thanh ghi này là địa chỉ của thanh ghi trong bộ nhớ mà người dùng muốn truy cập giá trị của thanh ghi địa chỉ (tức địa chỉ của bộ nhớ) được set trong lệnh Write Thanh ghi địa chỉ được tô đỏ như hình dưới…., cấu trúc DS1307.
Trang 362.4 IC 74HC164
a. Khái niệm:
IC 74164 là một thanh ghi dịch 8 bit vào nối tiếp-ra song song (Serial-in Parallelout), làm việc được ở tần số cao nhờ sử dụng Diode Schottky bên trong Dữ liệu nối tiếp được nhập vào thông qua cổng AND 2 ngõ vào, việc nhập này đồng bộ với cạnh lên xung Ck.
Chân Clear (Clr) tác động không đồng bộ với xung Ck, khi chân này tác động thì thanh ghi dịch sẽ bị xóa, tất cả các ngõ ra của nó sẽ bị kéo xuống mức thấp.
Về mặt giao tiếp với các IC khác thì IC 74164 được chế tạo để tương thích hoàn toàn với các IC thuộc họ TTL (của hãng Motorola)
IC 74164 có sơ đồ chân, sơ đồ nội bộ như sau:
Trang 37b Chức năng các chân của IC 74164 như sau:
VCC, GND: dùng cấp nguồn cho IC hoạt động VCC được nối đến cực dương của nguồn (+5V do là IC họ TTL), GND được nối đến cực âm của nguồn (0V) Đối với các IC số thuộc họ TTL thì đòi hỏi phải có nguồn cung cấp chính xác (5V ± 5%).
A, B: ngõ vào dữ liệu nối tiếp của IC 74164, đây là hai ngõ vào của một cổng AND 2 ngõ vào Dữ liệu muốn đến được Flip-Flop đầu tiên để bắt đầu quá trình ghi dịch thì phải qua cổng AND 2 ngõ vào này.
Clk: chân nhận xung clock (tác động cạnh lên) Dữ liệu ở hai ngõ vào A,
B được đưa đến ngõ ra (đồng thời dữ liệu ở các ngõ ra còn lại dịch phải một bit) đồng bộ với xung đưa vào chân này Điều này có nghĩa là IC sẽ thực hiện việc ghi dịch mỗi khi có cạnh lên xung clock tác động.
Clr: chân reset IC, chân này tác động ở mức thấp Khi chân Clr ở mức logic cao thì IC được phép hoạt động bình thường (ghi dịch), nhưng khi chân này được đưa xuống mức logic thấp thì IC bị reset ngay lập tức: tất cả các ngõ ra của nó đều bị kéo xuống mức logic thấp Việc reset này không đồng bộ với xung clock đưa vào IC, nghĩa là ở bất kỳ trạng thái nào của xung clock (dù đang ở mức logic cao hay thấp hoặc đang chuyển trạng
Trang 38thái) ta đều thực hiện được việc reset IC bằng cách hạ chân Clr này xuống mức thấp.
QA ~ QH : các ngõ ra song song của IC Các ngõ này có thể được lấy ra cùng lúc hoặc từng ngõ tuỳ vào yêu cầu của người sử dụng
Sơ đồ nội bộ của IC 74164 như sau:
IC 74164 có bảng các trạng thái hoạt động như sau:
L (l): LOW Voltage Levels.
H(h): HIGH Voltage Levels
x: Don’t Care
qn: biểu thị cho trạng thái logic tại ngõ ra thứ n của IC (n: A ~ H).
c Nguyên tắc hoạt động của IC 74164:
Trang 39Nguyên tắc hoạt động của IC được giải thích như sau: khi có cạnh lên xung Ck đầu tiên tác động vào chân Clk thì dữ liệu ở ngõ vào (A, B) sẽ được dịch đến ngõ ra đầu tiên QA, trạng thái logic của tất cả các ngõ ra khác không thay đổi Khi xung Ck thứ hai tác động thì dữ liệu từ ngõ ra đầu tiên QA sẽ dịch đến ngõ ra thứ hai QB, dữ liệu từ ngõ vào được dịch đến ngõ ra đầu tiên, trạng thái logic của tất cả các ngõ ra còn lại không đổi
Cứ tương tự như thế cho đến khi xung thứ 8 tác động thì dữ liệu đầu tiên đã được dịch đến ngõ ra cuối cùng QH Dữ liệu ở ngõ vào dịch đến ngõ ra
QA, dữ liệu từ QA dịch sang QB,… Như vậy dữ liệu đưa vào nối tiếp đã được lấy ra song song ở cả 8 ngõ ra sau 8 xung Ck tác động Khi có xung thứ 9 tác động thì dữ liệu từ ngõ vào sẽ được chuyển đến ngõ ra đầu tiên, trạng thái logic ở các ngõ ra khác sẽ được dịch phải một bit (như hình vẽ), trạng thái logic ở ngõ ra cuối cùng sẽ tự động biến mất.
2.5. LED MATRIX
2.5.1 Cấu tạo
Led bao gồm nhiều led đơn bố trí thành hàng và cột trong một vỏ.Các tín hiệu điều khiển cột được nối với Anode của tất cả các led trên cùng một cột Các tín hiệu điểu khiển hàng cũng được nối với Cathode của tất cả các led trên cùng một hàng như hình vẽ :
Trang 402.5.2 Nguyên lý hoạt động
Khi có một tín hiệu điều khiển ở cột và hàng ,các chân Anode của các led trên cột tương ứng được cấp điện áp cao , đồng thời các chân Cathode của các led trên hàng tương ứng được được cấp điện áp thấp Tuy nhiên lúc đó chỉ có một led sáng ,vì nó có đồng thời điện thế cao trên Anode và điện thế thấp trên Cathode.Như vậy khi có một tín hiệu điều khiển hàng
và cột ,thì tại một thời điểm chỉ có duy nhất một led tại chỗ gặp nhau của hàng và cột là sáng.Các bảng quang báo với số lượng led lớn hơn cũng được kết nối theo cấu trúc như vậy Trong trường hợp ta muốn cho sáng đồng thời một số led rời rạc trên ma trận, để hiện thị một kí tự nào đó ,nếu trong hiển thị tĩnh ta phải cấp áp cao cho Anode và áp thấp cho Cathode ,cho các led tương ứng mà ta muốn sáng.Nhưng khi đó một số led ta không mong muốn cũng sẽ sáng ,miễn là nó nằm tại vị trí gặp nhau của các cột và hàng mà ta cấp nguồn.Vì vậy trong điều khiển led ma trận
ta không thể sử dụng phương pháp hiển thị tĩnh mà phải sử dụng phương pháp quét (hiển thị động),có nghĩa là ta phải tiến hành cấp tín hiệu điều khiển theo dạng xung quét trên các hàng và cột có led cần hiển thị Để đảm cho mắt nhìn thấy các led không bị nháy,thì tần số quét nhỏ nhất cho mỗi chu kì là khoảng 20HZ(50ms).Trong lập trình điều khiển led ma trận bằng vi xử lý ta cũng phải sử dụng phương pháp quét như vậy Ma trận led có thể là loại chỉ hiển thị được một màu hoặc hiển thị được 2 màu trên một điểm,khi đó led có số chân ra tương ứng : đối với ma trận led 8x8 hiển thị một màu, thì số chân ra là 16,trong đó 8 chân dùng để điều khiển hàng và 8 chân còn lại dùng để điều khiển cột Đối với loại 8x8 có 2 màu thì số chân ra của led là 24 chân,trong đó có 8 chân dùng
để điều khiển cột (hoặc hàng ) chung cho cả hai màu,16 chân còn lại thì