Đồ án Quang báo hiển thị bằng LED ma trận

 Bảng quang báo chạy text với font tiếng Việt và tiếng Anh, chạy từ trái sang phải, từ phải sang trái, chạy từ trên xuống dưới, từ dưới lên trên.  Tạo font chữ và giải mã.  Vi điều khiển lưu vào vùng nhớ trong ROM sau đó vi điều khiển lấy dữ liệu điều khiển hiển thị ra màn hình led ma trận thông qua mạch công suất và mạch hiển thị.

pdf70 trang | Chia sẻ: lylyngoc | Lượt xem: 10638 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Quang báo hiển thị bằng LED ma trận, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
gồm: INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và PEIE). PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF). PIE1( địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE). TMR1L (địa chỉ 0Eh): chứa giá trị 8 bit thấp của bộ đếm Timer1. TMR1H (địa chỉ 0Eh): chứa giá trị 8 bit cao của bộ đếm Timer1. T1CON (địa chỉ 10h): xác lập các thông số cho Timer1. 11.TIMER_2 Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần số prescaler va postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit cho phép ngắt Timer2 tác động là TMR2ON (T2CON). Cờ ngắt của Timer2 là bit TMR2IF (PIR1). Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chia tần số prescaler 4 bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc 1:16 và được điều khiển bởi các bit T2CKPS1:T2CKPS0 (T2CON)). Timer2 còn được hỗ trợ bởi thanh ghi PR2. Giá trị đếm trong thanh ghi TMR2 sẽ tăng từ 00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset về 00h. Kh I reset thanh ghi PR2 được nhận giá trị mặc định FFh. Ngõ ra của Timer2 được đưa qua bộ chia tần số postscaler với các mức chia từ 1:1 đến 1:16. Postscaler được điều khiển bởi 4 bit T2OUTPS3:T2OUTPS0. Ngõ ra của postscaler đóng vai trò quyết định trong việc điều khiển cờ ngắt. Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó Timer2 còn đóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP. Các thanh ghi liên quan đến Timer2 bao gồm: INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn bộ các ngắt (GIE và PEIE). PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer2 (TMR2IF). PIE1 (địa chị 8Ch): chứa bit điều khiển Timer2 (TMR2IE). TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer2. T2CON (địa chỉ 12h): xác lập các thông số cho Timer2. PR2 (địa chỉ 92h): thanh ghi hỗ trợ cho Timer2. Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2. Ta có một vài nhận xét về Timer0, Timer1 và Timer2 như sau: Timer0 và Timer2 là bộ đếm 8 bit (giá trị đếm tối đa là FFh), trong khi Timer1 là bộ đếm 16 bit (giá trị đếm tối đa là FFFFh). Timer0, Timer1 và Timer2 đều có hai chế độ hoạt động là timer và counter. Xung clock có tần số bằng ¼ tần số của oscillator. Xung tác động lên Timer0 được hỗ trợ bởi prescaler và có thể được thiết lập ở nhiều chế độ khác nhau (tần số tác động, cạnh tác động) trong khi các thông số của xung tác động lên Timer1 là cố định. Timer2 được hỗ trợ bởi hai bộ chia tần số prescaler và postcaler độc lập, tuy nhiên cạnh tác động vẫn được cố định là cạnh lên. Timer1 có quan hệ với khối CCP, trong khi Timer2 được kết nối với khối SSP. Một vài so sánh sẽ giúp ta dễ dàng lựa chọn được Timer thích hợp cho ứng dụng. 12 ADC ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạng tương tự và số. PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0). Hiệu điện thế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thể chuẩn được xác lập trên hai chân RA2 và RA3. Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu số là 10 bit số tương ứng và được lưu trong hai thanh ghi ADRESH:ADRESL. Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này có thể được sử dụng như các thanh ghi thông thường khác. Khi quá trình chuyển đổi hoàn tất, kết quả sẽ được lưu vào hai thanh ghi ADRESH:ADRESL, bit (ADCON0) được xóa về 0 và cờ ngắt ADIF được set. Qui trình chuyển đổi từ tương tự sang số bao gồm các bước sau: 1. Thiết lập các thông số cho bộ chuyển đổi ADC: Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanh ghi ADCON1) Chọnh kênh chuyển đổi AD (thanh ghi ADCON0). Chọnh xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0). Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0). 2. Thiết lập các cờ ngắt cho bộ AD Clear bit ADIF. Set bit ADIE. Set bit PEIE. Set bit GIE. 3. Đợi cho tới khi quá trình lấy mẫu hoàn tất. 4. Bắt đầu quá trình chuyển đổi (set bit ). 5. Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách: Kiểm tra bit . Nếu =0, quá trình chuyển đổi đã hoàn tất. Kiểm tra cờ ngắt. 6. Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit (nếu cần tiếp tục chuyển đổi). 7. Tiếp tục thực hiện các bước 1 & 2 cho quá trình chuyển đổi tiếp theo Cần chú ý là có hai cách lưu kết quả chuyển đổi AD, việc lựa chọn cách lưu được điều khiển bởi bit ADFM và được minh họa cụ thể trong hình sau: Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm: INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE, PEIE). PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF). PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE). ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quả chuyển đổi AD. ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số cho bộ chuyển đổi AD. PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vào analog ở PORTA. PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vào analog ở PORTE. 13 COMPARATOR Bộ so sánh bao gồm hai bộ so so sánh tín hiệu analog và được đặt ở PORTA. gõ vào bộ so sánh là các chân RA3:RA0, ngõ ra là hai chân RA4 và RA5. Thanh ghi điều khiển bộ so sánh là CMCON. Các bit CM2:CM0 trong thanh ghi CMCON đóng vai trò chọn lựa các chế độ hoạt động cho bộ Comparator (hình 2.10). Cơ chế hoạt động của bộ Comparator như sau: Tín hiệu analog ở chân VIN + sẽ được só sánh với điện áp chuẩn ở chân VIN- và tín hiệu ở ngõ ra bộ so sánh sẽ thay đổi tương ứng như hình vẽ. Khi điện áp ở chân VIN+ lớn hơn điện áp ở chân VIN+ ngõ ra sẽ ở mức 1 và ngược lại. Dựa vào hình vẽ ta thấy đáp ứng tại ngõ ra không phải là tức thời so với thay đổi tại ngõ vào mà cần có một khoảng thời gian nhất định để ngõ ra thay đổi trạng thái (tối đa là 10us). Cần chú ý đến khoảng thời gian đáp ứng này khi sử dụng bộ so sánh. Cực tính của các bộ so sánh có thể thay đổi dựa vào các giá trị đặt vào các bit C2INV và C1INV (CMCON). Các chế độ hoạt động của bộ comparator. Các bit C2OUT và C1OUT (CMCON) đóng vai trò ghi nhận sự thay đổi tín hiệu analog so với điện áp đặt trước. Các bit này cần được xử lí thích hợp bằng chương trình để ghi nhận sự thay đổi của tín hiệu ngõ vào. Cờ ngắt của bộ so sánh là bit CMIF (thanh ghi PIR1). Cờ ngắt này phải được reset về 0. Bit điều khiển bộ so sánh là bit CMIE (Tranh ghi PIE). Các thanh ghi liên quan đến bộ so sánh bao gồm: CMCON (địa chỉ 9Ch) và CVRCON (địa chỉ 9Dh): xác lập các thông số cho bộ so sánh. Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit cho phép các ngắt (GIE và PEIE). Thanh ghi PIR2 (địa chỉ 0Dh): chứa cờ ngắt của bộ so sánh (CMIF). Thanh ghi PIE2 (địa chỉ 8Dh): chứa bit cho phép bộ so sánh (CNIE). Thanh ghi PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): các thanh ghi điều khiển PORTA. Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2. 14 BỘ TẠO ĐIỆN ÁP SO SÁNH Bộ so sánh này chỉ hoạt động khi bộ Comparator đựơc định dạng hoạt động ở chế độ ‘110’. Khi đó các pin RA0/AN0 và RA1/AN1 (khi CIS = 0) hoặc pin RA3/AN3 và RA2/AN2 (khi CIS = 1) sẽ là ngõ vào analog của điện áp cần so sánh đưa vào ngõ VIN- của 2 bộ so sánh C1 và C2 (xem chi tiết ở hình 2.10). Trong khi đó điện áp đưa vào ngõ VIN+ sẽ được lấy từ một bộ tạo điện áp so sánh. Sơ đồ khối của bộ tạo điện áp so sánh đựơc trình bày trong hình vẽ sau: Bộ tạo điện áp so sánh này bao gồm một thang điện trở 16 mức đóng vai trò là cầu phân áp chia nhỏ điện áp VDD thành nhiều mức khác nhau (16 mức). Mỗi mức có giá trị điện áp khác nhau tùy thuộc vào bit điều khiển CVRR (CVRCON). Nếu CVRR ở mức logic 1, điện trở 8R sẽ không có tác dụng như một thành phần của cầu phân áp (BJT dẫn mạnh và dòng điện không đi qua điện trở 8R), khi đó 1 mức điện áp có giá trị VDD/24. Ngược lại khi CVRR ở mức logic 0, dòng điện sẽ qua điện trở 8R và1 mức điện áp có giá trị VDD/32. Các mức điện áp này được đưa qua bộ MUX cho phép ta chọn được điện áp đưa ra pin RA2/AN2/VREF-/CVREF để đưa vào ngõ VIN+ của bộ so sánh bằng cách đưa các giá trị thích hợp vào các bit CVR3:CVR0. Bộ tạo điện áp so sánh này có thể xem như một bộ chuyển đổi D/A đơn giản. Giá trị điện áp cần so sánh ở ngõ vào Analog sẽ được so sánh với các mức điện áp do bộ tạo điện áp tạo ra cho tới khi hai điện áp này đạt được giá trị xấp xỉ bằng nhau. Khi đó kết quả chuyển đổi xem như được chứa trong các bit CVR3:CVR0. Các thanh ghi liên quan đến bộ tạo điện áp so sánh này bao gồm: Thanh ghi CVRCON (địa chỉ 9Dh): thanh ghi trực tiếp điều khiển bộ so sánh điện áp. Thanh ghi CMCON (địa chỉ 9Ch): thanh ghi điều khiển bộ Comparator. Chi tiết về các thanh ghi sẽ được trình bày cụ thể ở phụ lục 2. 3.2. CÁC LINH KIỆN KHÁC TRONG MẠCH QUANG BÁO  IC 74HC573: 74HC573 là mạch chốt tín hiệu tốc độ cao được chế tạo theo cơng nghệ CMOS. IC 74HC573 sử dụng để giải mã khi kết nối vi xử lý với bộ nhớ ngồi. IC 74HC573 gồm 8 mạch chốt là các Flip-Flop cùng với 8 bộ đệm ngõ ra 3 trạng thái. IC này cĩ hai chân điều khiển: chân cho phép nhập dữ liệu (LE) vào IC, chân cịn lại (/OE) quyết định việc xuất dữ liệu của IC, cả hai chân này làm việc độc lập với nhau. 16 1 2 3 4 5 6 7 8 15 14 13 12 11 9 10 VCC GND /OE D2 D1 O1 O2 O3 D3 O8 D8 D7 O7 O6 D6 D5 74573 20 19 17 18 D4 O4 O5 LE Chức năng các chân của IC như sau:  VCC, GND: hai chân này dùng để cấp nguồn nuơi cho IC, VCC nối với +5V, GND được nối mass.  LE: Latch Enable, chân cho phép chốt dữ liệu. Khi chân này ở mức logic cao thì dữ liệu mới được phép nhập vào IC, khi nĩ ở mức logic thấp thì dữ liệu mới khơng được phép nhập vào và dữ liệu cũ (đã được đưa vào trước đĩ) vẫn cịn ở ngõ ra của nĩ.  /OE: Output Enable, chân cho phép xuất dữ liệu. Khi chân này ở mức logic thấp thì dữ liệu ở ngõ ra của Flip-Flop (bên trong IC) được đưa ra ngồi. Ngược lại, khi chân này ở mức logic cao thì dữ liệu khơng được phép đưa ra ngồi và tất cả cá ngõ ra đều ở trạng thái tổng trở cao.  D1 – D8: Data Inputs, các ngõ vào của IC. Dữ liệu được đưa vào IC thơng qua các ngõ này.  O1 – O8: Out Puts, các ngõ ra tương ứng với các ngõ vào trên. Cụ thể là ngõ ra O1 tương ứng với ngõ vào D1, O2 tương ứng với D2,… O8 tương ứng với D8. Sơ đồ khối: Hình 3.6: Sơ đồ khối 74HC573 LATCH ENABLE LE D G D D1 D G G O O O D2 D8 O1 O2 O8 OUTPUT ENABLE OE Đặc điểm của vi mạch:  Tốc độ truyền tín hiệu từ đầu vào sang đầu ra chỉ cĩ 18ns.  Phạm vi điện áp hoạt động: 2 – 5.5V.  Dịng điện đầu vào thấp nhất: 1uA. Nguyên tắc hoạt động của IC 74573: Dựa vào bảng trạng thái ta nhận thấy dữ liệu mới chỉ được phép truyền qua IC khi cả hai chân điều khiển (LE và OE) ở mức logic thích hợp: LE ở mức logic cao, OE ở mức logic thấp. Khi cả hai chân điều khiển ở trạng thái này thì dữ liệu ở ngõ vào sẽ được đưa vào bên trong IC (truyền qua các Flip-Flop) và đưa thẳng ra ngồi thơng qua các cổng đệm ngõ ra 3 trạng thái. Khi chân OE ở mức logic thấp (cho phép) mà chân LE cũng ở mức logic thấp (cấm) thì dữ liệu ở ngõ ra của IC là dữ liệu cũ (vừa mới được truyền qua IC). Lúc này dữ liệu mới ở ngõ vào sẽ khơng được phép nhập vào IC. Ngược lại, khi chân OE ở mức logic cao thì ngõ ra của IC sẽ ở trạng thái tổng trở cao, bất chấp trạng thái logic của các ngõ vào cịn lại. Mặc dù ngõ ra ở trạng thái tổng trở cao nhưng dữ liệu ở ngõ vào (nếu cĩ) vẫn được phép đưa vào IC (đưa đến ngõ ra của các Flip-Flop ở bên trong IC). Dữ liệu này sẽ được phép truyền đến ngõ ra khi chân OE về lại mức logic thấp. Khi cả hai chân điều khiển đều ở trạng thái cấm (chân OE ở mức logic cao, chân LE ở mức logic thấp) thì ngõ ra sẽ ở trạng thái tổng trở cao và ngõ vào sẽ khơng được phép nhập dữ liệu mớivào. Như vậy, ở trạng thái này thì IC hồn tồn khơng giao tiếp với bất kỳ linh kiện nào khác ở cả ngõ vào và ngõ ra. Output Enable (OE) Latch Enable (LE) D Output Q L L L H H L H L X H L Q0 H X X Z Bảng 3.13:Trạng thái hoạt động74HC573 L:Trạng thái thấp Z: Trở kháng mức cao H:Trạng thái cao Q0: Điều kiện trước  LED MA TRẬN: Led ma trận dùng để chỉ thị, hiển thị, làm nguồn sáng trong các máy in lazer, ngồi ra cịn được sử dụng trong các hệ thống thơng tin dựa vào quang sợi. Led ma trận được coi là một trong nguồn quang điện phổ biến nhất. Về cấu tạo led ma trận gồm nhiều led đơn ghép lại. Cĩ hai loại: Anode chung ( cột Anode, hàng Catode) và Catode chung (cột Catode, hàng Anode), đa dạng về màu sắc….. Hình 3.17 : Hình dạng thực tế Hình 3.18: Cấu trúc bên trong của led ma trận 8x8 Dịng làm việc khoảng 10mA, và Điện áp làm việc khoảng 2,6V. Điều quan trọng khi sử dụng led là luơn mắc nối tiếp với một điện trở. RT = V V I B D F  VB : Điện thế nguồn VD : Điện thế ngưỡng của led IF : Dịng điện qua led Điện áp ngưỡng của led cĩ các trị số sau : đỏ 1,6 ... 2V cam 2,2 ... 3V xanh lá cây 2,7 ... 3,2V vàng 2,4 ... 3,2V xang da trời 3,0 ... 5V CHƯƠNG 4 CÁC PHƯƠNG PHÁP HIỂN THỊ LED MA TRẬN Led ma trận được coi là một trong các nguồn quang điện tử phổ biến nhất. Nĩ khơng đắt, tiêu thụ ít cơng suất, và dễ dàng thích hợp cho các mạch điện tử. Led ma trận hiển thị bao gồm nhiều led ma trận nhỏ kết hợp lại tạo thành một ma trận gồm m cột và n hàng (led ma trận m×n). Led ma trận 8×8 là led ma trận gồm cĩ 8 cột và 8 hàng. Led ma trận này cĩ hai loại: loại thứ nhất là cathode chung (cột cathode, hàng anode), loại thứ hai là anode chung (cột anode, hàng cathode). Sau đây là các phương pháp hiển thị ma trận led. 4.1 PHƯƠNG PHÁP HIỂN THỊ SỬ DỤNG IC CHỐT: Hiển thị led ma trận bằng phương pháp chốt giúp cho người lập trình thay đổi cách thức quét và hiển thị một cách linh hoạt và nhanh chĩng. matrix_3mau 12 9 6 3 13 16 19 22 11852141720231074115182124 c1 c2 c3 c4 c5 c6 c7 c8 hx 1 hx 2 hx 3 hx 4 hx 5 hx 6 hx 7 hx 8 hd 1 hd 2 hd 3 hd 4 hd 5 hd 6 hd 7 hd 8 DM74LS573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 LE O E Q 0 Q 1 Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 DM74LS573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 U7 DM74LS573 23456789111 1918171615141312 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 LEO E Q 0 Q 1 Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Hình 4.1: Giao tiếp led ma trận dùng phương pháp chốt. 4.1.1. CHỐT HÀNG: Chốt hàng là phương pháp trong một khoảng thời gian xác định chỉ cĩ một cột được tích cực, dữ liệu được đưa ra 8 hàng rồi chốt lại, dữ liệu được hiển thị trên màn hình led ma trận. Sau đĩ dữ liệu kế tiếp được đưa ra 8 hàng và được chốt lại bởi một IC chốt khác, trong khi đĩ dữ liệu trước đĩ vẫn hiện diện tại ngõ ra của IC chốt. Như vậy dữ liệu của hàng nào được đưa ra đúng địa chỉ của hàng đĩ trong khi các dữ liệu của các hàng khác vẫn hiện diện trên hàng mà khơng bị mất đi. Việc thực hiện chốt hàng được thể hiện ở lưu đồ như sau: Hình 4.2: Qui trình hiển thị chốt hàng. 4.1.2 CHỐT CỘT: Chốt cột là phương pháp trong một khoảng thời gian xác định chỉ cĩ một hàng được tích cực, dữ liệu được đưa ra 8 cột rồi chốt lại, dữ liệu được hiển thị trên màn hình led ma trận. Sau đĩ dữ liệu được đưa ra 8 cột kế tiếp và được chốt lại bởi một IC chốt khác, trong khi đĩ dữ liệu trước đĩ vẫn hiện diện tại ngõ ra của IC chốt (dữ liệu vẫn hiện diện tại các cột). Như vậy dữ liệu của cột nào được đưa ra đúng địa chỉ của cột đĩ trong khi các dữ liệu của các cột khác vẫn hiện diện trên cột mà khơng bị mất đi. Việc thực hiện chốt cột được thể hiện ở lưu đồ như sau: Hình 4.3: Qui trình hiển thị chốt cột.. Ưu, nhược điểm của phương pháp hiền thị led ma trận sử dụng IC chốt:  Ưu điểm:  Mở rộng số hàng, số cột của bảng quang báo.  Dữ liệu được truyền đi nhanh.  Chuyển đổi cách quét hàng, cột một cách linh hoạt.  Nhược điểm:  Tạo bảng mã khĩ khăn.  Khĩ khăn trong việc lập trình xuất dữ liệu ra. 4.2 PHƯƠNG PHÁP HIỂN THỊ SỬ DỤNG THANH GHI DỊCH: 4.2.1 QUÉT HÀNG: a) Giới thiệu chung về phương pháp quét hàng. Quét hàng là phương pháp mà trong một khoảng thời gian xác định chỉ cho một hàng được tích cực hiển thị trong khi các hàng khác đều tắt, các hàng được quét (tích cực) tuần tự ở các khoảng thời gian kế tiếp nhau được lặp lại nhiều lần với tốc độ > 24hình /1s sẽ cho ta một hình ảnh liên tục cần hiển thị lên trên màn hình led ma trận. Vcc Vcc H7 R26 27 H 8 Vcc R42 3K3 R16 1K R2 27 R15 3K3 Q8 TIP42 CTRL_B15 R35 27Q7 C1815 R28 1K R7 1K R41 27 R1 1K H 5 Q28 TIP42 CTRL_B7 R47 27 R19 1K H15 R44 27 R27 3K3 Q23 C1815 R24 3K3 Q18 TIP42 H4 R20 27 R22 1K H 6 H 3 CTRL_B8 R18 3K3 R17 27 H6 H 2 Q21 C1815 R6 3K3 Q32 TIP42 R21 3K3 CTRL_B12 CTRL_B14 CTRL_B9 Q10 TIP42 Vcc U7 matrix_3mau 12 9 6 3 13 16 19 22 11852141720231074115182124 c1 c2 c3 c4 c5 c6 c7 c8 hx 1 hx 2 hx 3 hx 4 hx 5 hx 6 hx 7 hx 8 hd 1 hd 2 hd 3 hd 4 hd 5 hd 6 hd 7 hd 8 Q17 C1815 R46 1K U1 TPIC6B595/SO 3 18 121398 456714151617 S D I S D O R C LK S R C LK GS R C LR D R A IN 0 D R A IN 1 D R A IN 2 D R A IN 3 D R A IN 4 D R A IN 5 D R A IN 6 D R A IN 7 R13 1K R34 1K CTRL_B3 H9 H3 Q31 C1815 Q11 C1815 CTRL_B13 Q26 TIP42 H14 Q4 TIP42 Vcc Vcc Vcc Q9 C1815 R9 3K3 H1 Q16 TIP42 Q27 C1815 H10 Q25 C1815 Q22 TIP42 R23 27 R14 27 R45 3K3 Vcc R11 27 Q29 C1815 H 1 Q5 C1815 Vcc CTRL_B6 R30 3K3 Vcc R36 3K3 Vcc Q13 C1815 Q6 TIP42 R32 27 R37 1K R8 27 U2TPIC6B595/SO 3 18 12 13 9 8 4 5 6 7 14 15 16 17 S D I S D O R C LK S R C LK G S R C LR D R A IN 0 D R A IN 1 D R A IN 2 D R A IN 3 D R A IN 4 D R A IN 5 D R A IN 6 D R A IN 7 Q15 C1815 R33 3K3 Vcc H2 Q30 TIP42 R39 3K3 H 7 Q20 TIP42 CTRL_B11 R29 27 R12 3K3 R38 27 R31 1K Vcc Q19 C1815 H16 H13 Q1 C1815 CTRL_B2 H5 R4 1K Q24 TIP42 R48 3K3 Q2 TIP42 R40 1K CTRL_B5 R5 27 Vcc H 4 H12 R3 3K3 Q14 TIP42 Vcc Q3 C1815 R25 1K CTRL_B4 CTRL_B1 Vcc R10 1K Q12 TIP42 H11 R43 1K CTRL_B10 CTRL_B16 Hình 4.4: Sơ đồ mạch thanh ghi. b) Quá trình thực hiện quét hàng: Quét hàng sử dụng thanh ghi dịch là tương đối phức tạp cho người lập trình trong việc đưa dữ liệu ra cột. Dữ liệu lần lượt được đưa vào chân Datain của thanh ghi dịch sau đĩ tác động xung clock dữ liệu đươc dịch đi. VD: Đưa dữ liệu ra 8 cột được diễn ra như sau: Hình 4.5: Qui trình đưa dữ liệu ra 8 cột cho led ma trận. Dữ liệu của hàng thứ nhất được đưa ra cột sau đĩ tích cực hàng thứ nhất như vây dữ liệu của hàng thứ nhất được hiển thị trên màn hình led ma trận, tiếp tục dữ liệu của hàng thứ hai được đưa ra cột sau đĩ tích cực hàng thứ hai lúc này dữ liệu của hàng thứ hai được hiển thị trên màn hình led ma trận, cứ như vậy cho đến dữ liệu của hàng cuối cùng được đưa ra cột sau đĩ tích cực hàng cuối cùng. Cứ như thế quá trình trên được lặp đi lặp lại > 24lần/1s, đến đây chúng ta quan sát được một hình ảnh liên tục hiển thị trên màn hình led ma trận. Ví dụ: Hiển thị chữ B lên màn hình led ma trận (hàng được tích cực ở mức 1, cột được tích cực ở mức 0). Hình 4.6: Hiển thị chữ B trên led ma trận dùng phương pháp quét hàng. Hàng 1 Hàng 8 Cột 8 Cột 1 Dữ liệu thứ nhất cĩ giá trị: 11111111 được đưa ra cột tích cực hàng thứ nhất (điều khiển hàng thứ nhất cho ra giá trị là 1); dữ liệu thứ hai cĩ giá trị: 00001111 đưa ra cột, tích cực hàng thứ hai; dữ liệu thứ 3 cĩ giá trị: 01110111 đưa ra cột, tích cực hàng thứ 3; dữ liệu thứ 4 cĩ giá trị: 01110111 đưa ra cột, tích cực hàng thứ 4; tiếp tục đữ liệu hàng thứ 5 cĩ giá trị: 00001111 đưa ra cột, tích cực hàng thứ 5; kế tiếp là dữ liệu của hàng thứ 6 cĩ giá trị: 01110111 được đưa ra cột, tích cực hàng thứ 6 ; dữ liệu của hàng thứ 7 cĩ giá trị: 01110111 đưa ra cột, tích cực hàng thứ 7; dữ liệu thứ 8 cĩ giá trị: 00001111 đưa ra cột, tích cực hàng thứ 8. Như vậy tồn bộ dữ liệu của chữ B đã được đưa ra hiển thị trên màn hình led ma trận. Quá trình trên được diễn ra rất nhanh > 24lần/ 1s nên chúng ta cĩ cảm giác nĩ diễn ra một cách đồng thời nhờ đĩ mà chúng ta quan sát được trên màn hình led ma trậnlà một chữ B liên tục. 4.2.2 Quét cột: a) Giới thiệu chung về phương pháp quét cột. Phương pháp quét cột là phương pháp mà trong một khoảng thời gian xác định chỉ cho một cột được tích cực hiển thị trong khi các cột khác đều tắt, các cột được quét (tích cực) tuần tự ở các khoảng thời gian kế tiếp nhau được lặp lại nhiều lần với tốc độ > 24 hình/1s sẽ cho ta một hình ảnh liên tục cần hiển thị lên trên màn hình led ma trận. b) Quá trình thực hiện quét cột. Dữ liệu của cột thứ nhất được đưa ra hàng sau đĩ tích cực cột thứ nhất như vây dữ liệu của cột thứ nhất được hiển thị trên màn hình led ma trận, tiếp tục dữ liệu của cột thứ hai được đưa ra hàng sau đĩ tích cực cột thứ hai lúc này dữ liệu của hàng thứ hai được hiển thị trên man hình led ma trận, cứ như vậy cho đến dữ liệu của cột cuối cùng được đưa ra hàng sau đĩ tích cực cột cuối cùng. Cứ như thế quá trình trên được lặp đi lặp lại > 24lần/1s, đến đây chúng ta quan sát được một hình ảnh liên tục hiển thị trên màn hình led ma trận. Ví dụ: Hiển thị chữ B lên màn hình led ma trận (hàng được tích cực ở mức1, cột được tích cực ở mức 0). Hình 4.7: Hiển thị chữ B trên led ma trận dùng phương pháp quét cột. Hàng 1 Hàng 8 Cột 8 Cột 1 Dữ liệu thứ nhất cĩ gía trị: 11111110 được đưa ra hàng, tích cực cột thứ nhất (điều khiển cột thứ nhất cho ra giá trị là 0); dữ liệu thứ hai cĩ giá trị: 10010010 đưa ra hàng, tích cực cột thứ hai; dữ liệu thứ 3 cĩ giá trị:10010010 đưa ra hàng, tích cực cột thứ 3; dữ liệu thứ 4 cĩ giá trị: 10010010 đưa ra hàng, tích cực cột thứ 4; tiếp tục đữ liệu hàng thứ 5 cĩ giá trị: 01101100 đưa ra hàng, tích cực cột thứ 5; kế tiếp là dữ liệu của cột thứ 6 cĩ giá trị: 00000000 được đưa ra hang, tích cực cơt thứ 6 ; dữ liệu của cột thứ 7 cĩ giá trị: 00000000 đưa ra hàng, tích cực cột thứ 7; dữ liệu thứ 8 cĩ giá trị: 00000000 đưa ra hàng, tích cực cột thứ 8. Như vậy tồn bộ dữ liệu của chữ B đã được đưa ra hiển thị trên màn hình led ma trận. Quá trình trên được diễn ra rất nhanh > 24lần/ 1s nên chúng ta cĩ cảm giác nĩ diễn ra một cách đồng thời, nhờ đĩ chúng ta quan sát được trên màn hình led ma trận là một chữ B liên tục. Ưu, nhược điểm của phương pháp hiền thị led ma trận sử dụng thanh ghi dịch:  Ưu điểm:  Tiết kiệm đường truyền, hiệu quả kinh tế.  Tiết kiệm chân PORT.  Truyền dữ liệu đi xa hơn.  Mở rộng bảng ma trận lên một cách dễ dàng.  Lập trình dễ dàng trong phương pháp quét cột.  Nhược điểm:  Tốn thời gian để thực hiện việc truyền dữ liệu đến các cột.  Chuyển đổi khơng linh hoạt bằng sử dụng phương pháp chốt.  Lập trình khĩ khăn hơn khi sử dụng phương pháp quét hàng. CHƯƠNG 5 SƠ ĐỒ KHỐI VÀ CHỨC NĂNG TỪNG KHỐI 5.1 SƠ ĐỒ KHỐI HỆ THỐNG: Hình 5.1: Sơ đồ khối của hệ thống. 5.2 Ý NGHĨA TỪNG KHỐI: 5.2.1 Khối điều khiển: Khối điều khiển: Được thiết kế bởi PIC 16F877A cĩ nhiệm vụ xử lý tất cả các dữ liệu của chương trình. Điều khiển dữ liệu hiển thị. Điều khiển xuất nhập dữ liệu. Điều khiển truy xuất dữ liệu và xử lý sau đĩ truyền đến các khối: cơng suất, chốt và đệm để hiển thị trên Led ma trận. VCC b6 D8 DIODE SW1 SW_PB_SPST b8 P1 5 9 4 8 3 7 2 6 1 R3 R C14 33P Y1 12MHz RXV b1 RXMAX VCC C12 CAP RXMAX 0 TXMAX 0 b5 C13 33P b3 R10 1k TXV C8 CAP b7 0 J13 CON9 1 2 3 4 5 6 7 8 9 C5 CAP b4 RXV TXV VCC U14 MAX232 1 3 4 5 16 15 2 6 12 9 11 10 13 8 14 7 C1+ C1- C2+ C2- VC C G N DV+ V- R1OUT R2OUT T1IN T2IN R1IN R2IN T1OUT T2OUT b2 C7 CAP VCC C6 CAP C4 104 TXMAX U13 PIC16F877A 11 12 14 32 13 31 2 3 1 4 5 6 7 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 Vd d G N DOSC2/CLKOUT M C LR /V PP OSC1/CLK GND RA0/ANO RA1/AN1 VDD/MCLR RA2/AN2 RA3/AN3 RA4/TOCK/C1OUT RA5/AN4 RB0/INT RB1 RB2 RB3 RB4 RB5 RB6/BGC RB7/BGD RC0/T1OSO/ RC1/T1OSI RC2/CCP1 RC3/SCK/SCL RC4/SDA/SDI RC5/SD0 RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 Hình 5.3: Sơ đồ kết nối mạch VĐK. 5.2.2 Khối cơng suất: Nâng cơng suất đủ lớn để cung cấp cho khối hiển thị. Nếu ta dùng các IC để thúc cơng suất thì ta sẽ cĩ dịng ngõ ra cố định, khi muốn dùng tải cơng suất lớn hơn thì ta khĩ cĩ thể sửa đổi lại mạch cơng suất được. Và một điều nữa là theo tính tốn, dịng điện ở mỗi hàng cĩ thể lên tới vài trăm mA , giá trị này cao hơn nhiều so với dịng ngõ cực đại của IC .Do đĩ cần phải thiết kế mạch để thúc cơng suất cho tải. Cịn nhiều cách khác nữa để thúc tải như dùng SCR, Triac, Opto, Relay...Các cách này thường được dùng cho các tải cĩ cơng suất lớn ở ngồi trời. Do tải ở đây là bảng cơng suất khơng lớn lắm nên ta chỉ cần dùng Transistor cơng suất trung bình. Về phương diện cơng suất chính là việc nâng dịng cho dữ liệu hàng và cột nhằm đảm bảo yêu cầu về dịng qua led ma trận, vì phần cứng bao gồm 6 led ma trận, mỗi led ma trận là một khối bao gồm 64 led đơn nên ta chỉ sử dụng C1815, đảm bảo tính ổn định và cung cấp đủ dịng cho tải. Như vậy, cứ mỗi cột ta phải dung một mạch đệm dịng. D1 LED Q1 1R1001 R3 R VCC R4 R Hình 5.4: Sơ đồ nguyên lý mạch đệm dịng. 5.2.3 Khối hiển thị: Cĩ nhiệm vụ dịch chuyển dữ liệu ra các cột, đệm tăng dịng đủ lớn để điều khiển hiển thị các yêu cầu của người sử dụng. Khối hiển thị làm nhiệm vụ dịch dữ liệu từ vi điều khiển, chốt dữ liệu, đệm dữ liệu đủ dịng và hiển thị trên Led ma trận . b8 p5 p21 U9 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 p6 p18 p3 LED 5 b8 b6 b6 U7 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 p17 p2 p22 p20 LED 2 b7 b6 p13 p10 b1 p7 p14 p1 RN3 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 RN1 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 b3 b4 b3 p11 p8 p24 RN2 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 p12 U8 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 p16 p15 b5 b7 b2 LED 3 p19 b1 b8 b4 b3 b1 b7 b4 LED 6 b2 b2 b5 p9 p4 LED 1 LED 4 p23 b5 Hình 5.5: Sơ đồ mạch các IC chốt và hiển thị. Do nhĩm thực hiện đồ án quyết định chọn phương pháp hiển thị bằng IC chốt và quét hàng nên trong khoảng thời gian xác định một cột chỉ phải chịu dịng của một điểm ảnh, dịng ra cực đại tại một ngõ ra là 500mA, với những tính năng trên nhĩm thực hiện quyết định chọn IC 74HC573 để làm thanh ghi dịch và dung BJT C1815 đệm dịng ở cột 5.2.4 Khối nguồn: Trong một mạch điện tử thì bộ nguồn cĩ vai trị rất quan trọng, nĩ quyết định sự hoạt động hay ngưng hoạt động của mạch. Một bộ nguồn khơng tốt sẽ làm cho mạch hoạt động kém ổn định và dể làm hỏng linh kiện. Vì vậy bộ nguồn ổn áp tốt sẽ rất cần thiết cho các mạch điện tử ( mạch dùng các IC số). Chức năng của mọi ổn áp DC là biến đổi điện áp vào DC chưa ổn định thành điện áp ra DC ổn định và giá trị điện áp này phải đúng với giá trị khi tính tốn lý thuyết. Điện áp này phải được duy trì liên tục và khơng thay đổi khi điện áp ngõ vào hoặc dịng tải thay đổi (ở một giới hạn cho phép của mạch). Để thực hiện điều này thì một nguồn ổn áp thường gồm các phần sau: Hình 5.6: Sơ đồ khối của khối nguồn.  Khối chỉnh lưu và lọc: cĩ nhiệm vụ đổi điện áp xoay chiều thành điện áp một chiều và lọc.  Khối cơng suất: cung cấp dịng chính cho tải.  Khối lấy mẫu: lấy một điện áp từ ngõ ra đưa về so sánh với Vref để điều khiển ổn định điện áp. CHƯƠNG 6 TÍNH TỐN 6.1 NGUỒN ĐIỀU KHIỂN:  Sơ đồ mạch: C4 10uf /25V VCC C2 10uF/25V VCC D2 C3 104 C1 1000uf /25V J5 CON2 1 2 R2 1K - + D1 RS403L 2 1 3 4 U1 LM7805 1 3 2 IN OUT G N D Hình 6.1: Sơ đồ mạch nguồn ổn áp 5V Thiết kế: Để an tồn IC 7805 cung cấp dịng cho tải là: 100mA - 1A Điện áp ngõ vào tối thiểu phải cao hơn điện áp ngõ ra 2V để mạch hoạt động tốt. Trong đĩ C1, C2 dùng để lọc (nguồn DC chưa ổn định) để ổn định điện áp ngõ vào, C3 dùng để lọc nhiễu cao tần, C4 làm cho áp được phẳng hơn. 6.2. MẠCH NGUỒN RESET: Mạch dùng để thiết lập lại trạng thái ban đầu cho hệ thống, gọi tắt là reset hệ thống. 16f877A được reset bằng cách giữ chân MCLR ở mức thấp. MCLR cĩ thể được tác động bằng tay hoặc được tác động khi cấp nguồn (reset máy). Dưới đây là 2 dạng mạch reset:  Sơ đồ mạch: R2 R MCLR R1 R VCC C2 C SW1 D1 DIODE R2 R MCLR R1 R VCC C2 C Hình 6.2: mach reset tự động -- mạch reset bằng tay Giải thích mạch: Khi vừa cấp nguồn, điện áp trên tụ là 0V ngõ ra đưa đến chân reset ở mức cao, PIC bắt đầu hoạt động ở chế độ này. Sau đĩ tụ nạp điện do đĩ chân reset của PIC luơn ở mức cao, PIC được phép hoạt động. Hoặc khi mạch đang hoạt động mà nhấn nút SW làm IC ngưng hoạt động (do tụ phĩng điện), PIC chỉ hoạt động trở lại khi nút nhấn SW được thả ra và tụ nạp đến một giá trị nào đĩ. để chân reset của PIC khơng cịn bị tác động. Tính tốn: nguồn cung cấp cho mạch là 5V nên các IC thuộc họ CMOS sẽ hiểu mức logic cao khi điện áp các chân ngõ vào là 3.5V, mức thấp là 1V. Do đĩ, để IC thốt khỏi trạng thái reset (mức thấp) thì điện áp ở chân reset (điện áp trên R2) phải ≤ 1V Ta cĩ: VCC = 5V mà Vcc= VC + VR = VC + 1V  VC = 4V ; ( chọn VR=1V khi IC thốt khỏi trạng thái Reset ) Giả sử lúc chưa cĩ điện áp cung cấp, Vcc = 0V, Vc = 0V. Khi cĩ điện áp Vcc =5V, tụ được nạp điện với phương trình nạp: )1( RC t CCC eVV   với:  = RC: thời hằng nạp của tụ. t: thời gian tụ nạp đầy.  )1(54 RC t e   eRC t = 1 - 5 4 = 0.2  RC t = 1,6 Chọn t = 0.13 s  RC= 0.0812 s Chọn C = 10 uF  R = C  = 8.12 K Vậy, ta chọn R2 = 8.2 K . Tính R1: Nhấn nút SW , tụ bắt đầu xã điện: VCC = 5V, (3V>VRESET =VR2) Ta cĩ: VRESET = (VCC /(R1 + R2) x R1 R1 = (VCC .R2 – VRESET .R2)/VRESET = 10K 6.3. MẠCH ĐỆM DỊNG:  Sơ đồ mạch: R1 R R2 R VCC Q1 C1815 5V D1 LED Hình 6.3: Mạch đệm dịng Về phương diện cơng suất chính là việc nâng dịng cho dữ liệu hàng và cột nhằm đảm bảo yêu cầu về dịng qua led ma trận. Đồ án dùng quang báo 8x48 ( tức 8 hàng, 48 cột), nguồn dương đưa vào cột nên cĩ 48 mạch kéo dịng. Tính tốn:  Tính R2 Khi Q1 dẫn bão hịa ta cĩ: Ib = k  min 1I c ;( mà Ic1 Ib2) Vì mach đệm dịng được thiết kế trên cột và quét theo hàng nên khi quét mỗi cột chỉ sang một led. Để mỗi led đơn của led ma trận sáng bình thường trong quá trình quét led ta phân cực như sau: Ic = 20mA VLed = 2V Trong đĩ: IR: dịng qua led ma trận VLed : áp định mức đặt lên mỗi led  Ib = 3x(20/80) = 0.75(mA)  R2 = (Vcc – Vbe –Vled)/Ib= (5 – 0,8 – 2 )/0.75 =3 kΩ  Tính R1: Khi Transistor C1815 dẫn bão hịa thì: R1 = (Vcc – Vce – Vled )/Ic = (5 – 0,2 – 2)/20 = 140 Ω Chọn: R1 = 220 Ω, R2 = 3,3kΩ CHƯƠNG 7 SƠ ĐỒ MẠCH VÀ NGUYÊN LÝ HOẠT ĐỘNG 7.1 SƠ ĐỒ NGUYÊN LÝ 7.2 NGUYÊN LÝ HOẠT ĐỘNG Khi khởi động nguồn quang báo, đầu tiên vi điều khiển sẽ cập nhật cấu hình của quang báo trong đĩ cĩ font chữ, dữ liệu phơng hình, dữ liệu hiển thị trạng thái điều khiển, trạng thái của phần lưu giữ liệu, cấu hình chạy chữ Do khởi động mặc định là chữ chạy trước nên sau khi cập nhật cấu hình quang báo xong, chương trình sẽ dựa vào cấu hình chạy chữ mà thực hiện. Nếu khơng cĩ sự kiện nào phát sinh thì quang báo sẽ chạy vịng lặp hiển thị là vơ tận. Việc hiển thị trên bảng led là động. Tức là trong một thời điểm chỉ cĩ một hàng được sáng. Nhưng khi quét nhanh ở tần số 50Hz trở lên thì mắt thường coi như là sáng liên tục trên tồn bảng. Kỹ thuật quét led : Là cấp tín hiệu điều khiển theo dạng xung theo kiểu quét cho các hàng cần hiển thị tần số quét nhỏ nhất cho mỗi chu kỳ cần khoảng 25Hz (40ms) nhằm bảo đảm cho mắt thấy các led sáng đều khơng nhấp nháy. Dữ liệu phơng chữ, hình được đổ qua cột. Khi quét hết 48 cột thì được một hình. Khi chạy chữ chỉ cần hiển thị một hình khác đã được dịch đi một cột (hoặc hàng). CHƯƠNG 8 LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH HOẠT ĐỘNG Ý TƯỞNG THIẾT KẾ PHẦN MỀM:  Bảng quang báo chạy text với font tiếng Việt và tiếng Anh, chạy từ trái sang phải, từ phải sang trái, chạy từ trên xuống dưới, từ dưới lên trên.  Tạo font chữ và giải mã.  Vi điều khiển lưu vào vùng nhớ trong ROM sau đĩ vi điều khiển lấy dữ liệu điều khiển hiển thị ra màn hình led ma trận thơng qua mạch cơng suất và mạch hiển thị. 8.1. LƯU ĐỒ GIẢI THUẬT. 1 .Quy trình hoạt động của hệ thống: Hình 8.1 Quy trình hoạt động của hệ thống 2.Lưu đồ chương trình chính: Hình 8.2: Lưu đồ chương trình chính. 3. Lưu đồ chương trình: chạy_chữ. Hình 8.5: Lưu đồ chương trình chạy_chữ. 8.2. CHƯƠNG TRÌNH HOẠT ĐỘNG. #include #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=12000000) //khai bao mang int const quet[]={0b11111110,0b11111101,0b11111011,0b11110111,0b11101111,0b11011 111,0b10111111,0b01111111}; int const mang0[]={0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,128,190,72,72,72,72,136, 0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,156,162,130,186,34,28, 0,0,0,0,0,145,83,85,89,81,145, 0,0,0,0,0,145,81,95,81,81,145, 0,0,0,0,152,164,132,152,160,36,24, 0,0,0,0,0,2,2,2,2,2,94, 0,0,0,0,0,145,83,85,89,81,145, 0,0,0,0,0,0,0,0 }; int const mang1[]={0,0,0,0,0,0,0,0, 0,128,142,82,87,82,82,142, 0,0,0,17,10,251,36,36,36,36,35, 0,0,0,0,206,81,65,225,65,81,206, 0,0,0,0,0,40,40,232,40,37,34, 0,0,0,0,0,147,148,144,151,148,99, 0,0,0,0,0,147,180,212,148,148,147, 0,0,0,0,232,136,136,136,136,133,130, 0,0,0,0,0,145,83,85,89,81,145, 0,0,0,0,0,195,36,32,39,36,203, 0,0,0,0,0,0,0,0 }; int const mang2[]={0,0,0,0,0,0,0,0, 5,10,131,68,68,196,68,67, 0,0,0,0,0,68,76,84,100,68,68, 0,0,0,0,243,20,20,125,20,20,243, 0,0,0,0,0,122,138,139,138,138,122, 0,0,0,0,0,162,162,156,136,136,136, 0,0,0,0,0,28,34,2,58,34,28, 0,0,0,0,139,136,136,248,136,136,136, 0,0,0,0,0,227,20,16,23,20,227, 0,0,0,0,0,137,138,248,136,138,137, 0,0,0,0,0,0,0,0 }; int const mang3[]={0,0,0,0,0,0,0,0, 4,2,137,154,170,203,138,138, 0,0,0,0,0,78,81,193,89,81,78, 0,0,0,0,62,9,9,9,9,9,8, 0,0,0,0,0,0,2,0,0,2,0 , 0,0,0,0,0,151,176,211,144,144,151, 0,0,0,0,0,78,209,81,95,81,81, 0,0,0,0,0,4,0,0,0,4,0, 0,0,0,0,0,56,69,5,5,69,56, 0,0,0,0,0,242,66,66,66,66,66, 0,0,0,0,0,0,0,0 }; int const mang4[]={0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,64,160,234,42,235,42,42,234,64, 0,0,0,28,162,162,162,162,162,28, 0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,124,16,16,16,16,16, 0,0,0,0,0,20,20,245,22,20,20, 0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,34,162,190,162,162,162, 0,0,0,0,0,157,162,162,190,162,162, 0,0,0,0,0,0,0,0 }; int const mang5[]={0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,29,36,36,28,4,5, 0,0,0,0,7,8,0,7,8,8,7, 0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,81,81,95,81,81,81, 0,0,0,0,0,1,1,1,1,1,1 , 0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,147,180,212,151,148,148 , 0,0,0,0,0,8,13,10,8,8,8 , 0,0,0,0,0,0,0,0 }; void chot0() { output_high(pin_c0); output_low(pin_c0); } void chot1() { output_high(pin_c1); output_low(pin_c1); } void chot2() { output_high(pin_c2); output_low(pin_c2); } void chot3() { output_high(pin_c3); output_low(pin_c3); } void chot4() { output_high(pin_c4); output_low(pin_c4); } void chot5() { output_high(pin_c5); output_low(pin_c5); } void main(void) { int m,i,a; set_tris_b(0x00); set_tris_c(0x00); set_tris_d(0x00); output_b(0x00); output_c(0x00); output_d(0x00); while(1) { for(m=0;m<=20;m++) { for(i=0;i<=7;i++) { output_b(mang0[a+i]); chot0(); output_b(mang1[a+i]); chot1(); output_b(mang2[a+i]); chot2(); output_b(mang3[a+i]); chot3(); output_b(mang4[a+i]); chot4(); output_b(mang5[a+i]); chot5(); output_d(quet[i]); delay_ms(2); output_b(0x00); chot0(); chot1(); chot2(); chot3(); chot4(); chot5(); output_d(0xff); delay_us(2); } } a++; if(a==104) a=0; } } CHƯƠNG 9 TỔNG KẾT Sau 4 tuần nghiên cứu và thực hiện với nhiều nỗ lực và cố gắng của nhĩm thực hiện đề tài cùng với sự hướng dẫn tận tình của cơ Bùi Thị Kim Chi, quyển đồ án này đã hồn thành với những nội dung như sau: 9.1. CÁC VẤN ĐỀ ĐÃ ĐƯỢC GIẢI QUYẾT TRONG ĐỒ ÁN:  Các vấn đề đã nghiên cứu:  Nghiên cứu vi điều khiển PIC 16F877A  Nghiên cứu cách quét led ma trận.  Thiết kế và thi cơng mơ hình một bảng quang báo.  Nghiên cứu ngơn ngữ lập trình C.  Các vấn đề đã thực hiện:  Lập trình điều khiển vi điều khiển PIC 16F877A bằng ngơn ngữ C.  Lập trình điều khiển led ma trận theo cách quét hàng.  Kết quả thực nghiệm và đánh giá mơ hình: Thời gian nghiên cứu và thi cơng khơng nhiều nên phần thiết kế vẫn chưa tối ưu về tính thẩm mỹ và hiệu quả kinh tế nhưng vẫn đảm bảo mơ hình họat động tốt. Độ sáng của quang báo là cĩ thể chấp nhận được, nội dung cần hiển thị và cĩ khả năng thay đổi được . Hình 9.8: Bảng quang báo 8x48 điểm ảnh. 8.2. ƯU VÀ NHƯỢC ĐIỂM CỦA THI CƠNG MẠCH:  Ưu Điểm:  Chữ hiển thị rõ ràng, tốc độ di chuyển vừa phải.  Mạch hoạt động ổn định trong thời gian dài.  Nhược Điểm:  Khi muốn thay đổi kiểu hiển thị cần phải nạp lại chương trình tức tác động trực tiếp trên board.  Các phương hướng phát triển đề tài:  Tăng kích thước của mạch quang báo cho phù hợp với thực tế sử dụng.  Sử dụng nhiều font chữ để làm phong phú hơn bảng quang báo.  Giao tiếp với máy tính .  Tạo bảng led ma trận bằng led out door để đáp ứng nhu cầu sử dụng. KẾT LUẬN: Đề tài: “QUANG BÁO HIỂN THỊ LED MA TRẬN”. Đề tài đã trình bày được nguyên tắc hoạt động cơ bản của một mạch quang báo, giới thiệu về cách sử dụng cũng như sơ đồ chân, sơ đồ nội bộ của các IC số dùng trong mạch. Nhĩm thực hiện đề tài xin chân thành cảm ơn quý thầy cơ cùng các bạn sinh viên, đã đĩng gĩp rất nhiều ý kiến, cơng sức quý báu trong quá trình nhĩm thực hiện đề tài này. Đặc biệt là cơ NGUYỄN THỊ HỒNG ÁNH, đã nhiệt tình hướng dẫn, chỉ bảo những kinh nghiệm, kiến thức thực tế để đề tài được hồn thành nhanh chĩng. Tuy nhiên, do cịn hạn chế về thời gian và trình độ nên đề tài khơng tránh khỏi nhiều sai sĩt, nhĩm rất mong nhận được sự đĩng gĩp ý kiến chân tình của quý thầy cơ và các bạn để đề tài được hồn chỉnh hơn. PHẦN II PHỤ LỤC GIỚI THIỆU VỀ LẬP TRÌNH C CHO PIC 16F877A I.Giới thiệu C là một ngơn ngữ khá mạnh và rất nhiều ngưịi dùng.C là một ngơn ngữ lập trình đa dụng,cấp cao cĩ những khả năng thực hiện những thao tác khá sâu như hợp ngữ (Assembly language).Chính nhờ tính tổng quát và linh hoạt đĩ mà C được xem là ngơn ngữ lập trình chuỵên nghiệp rất hiệu quả và tiện lợi,lập trình C cho vxl chúng ta chỉ cần biết số lượng lệnh khơng nhiều . Đầu tiên bạn phải làm quen với Các kiểu tốn tử ở C Các kiểu dữ liệu Cẩu trúc cơ bản của một chương trình Các cấu trúc điều khiển (chính các tập lệnh ) Cấu trúc điều kiện : if và else Các cấu trúc lặp Vịng lặp while Vịng lặp do while Vịng lặp for Lệnh break. Cấu trúc lựa chọn: switch. case Biết sử dụng các hàm và chương trình con . II.Cơ bản C 1. Các chỉ thị trước xử lý của C // chu thich /********** chu thich****************** *************************************** */ Đây là dịng chú thích. Tất cả các dịng bắt đầu bằng hai dấu sổ (//) được coi là chú thích chúng khơng cĩ bất kì một ảnh hưởng nào đến hoạt động của chương trình. Chúng cĩ thể được các lập trình viên dùng để giải thích hay bình phẩm bên trong mã nguồn của chương trình. Trong trường hợp này, dịng chú thích là một giải thích ngắn gọn những gì mà chương trình chúng ta làm. Cịn trong dấu (/* */) bạn cĩ thể chú thích bao nhiêu dịng tuỳ thích #include hoặc #include "16F877A.H" trình biên dịch sẽ gọi file thư viện của 16F877A ra #include ;// khai báo cho tốn học #include ;// khai báo cho chương trình dịch hỗ trợ cho PIC #include ;// khai báo cổng ra,vào #define bien_thay_the bien 2. Các tốn tử : ->Tốn tử gán (=). Ex: b = 5; a = 2 + b; a = 2 + (b = 5); a = b = c = 5; ->Các tốn tử số học ( +, -, *, /, % ) + cộng - trừ * nhân / chia % lấy phần dư (trong phép chia) ->Các tốn tử gán phức hợp (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=) value += increase; tương đương với value = value + increase; a -= 5; tương đương với a = a - 5; a /= b; tương đương với a = a / b; price *= units + 1; tương đương với price = price * (units + 1); Tăng và giảm ++ - - a++; a+=1; a=a+1; tính chất tiền tố hoặc hậu tố (++a) # (a++) Ex: B=3; B=3;A=++B; // A is 4, B is 4 B=3; A=B++; // A is 3, B is 4 -> Các tốn tử quan hệ ( ==, !=, >, =, <= ) == Bằng != Khác > Lớn hơn < Nhỏ hơn > = Lớn hơn hoặc bằng < = Nhỏ hơn hoặc bằng 3. Các kiểu dữ liệu Các kiểu biến.chuẩn type bits byte phạm vi char 8 1 -127 to 128 unsigned char 8 1 0 to 255 int 16 2 -32,768 to 32,767 unsigned int 16 2 0 to 65,535 Kiểu dữ liệu trong Keil C type bits byte phạm vi bit 1 0 0 to1 sbit 1 0 0 to1 sfr 8 1 0 to 255 sf16 16 2 0 to 65,535 4. Cấu trúc cơ bản của 1 chương trình C Cac cấu trúc lệnh _while (expr) stmt : xét điều kiện trước rồi thực thi biểu thức sau . _ do stmt while (expr) : thực thi biểu thức trước rồi xét điều kiện sau . _Return : dùng cho hàm cĩ trả về trị, hoặc khơng trả về trị cũng được, khi đĩ chỉ cần dùng : return ; ( nghĩa là thốt khỏi hàm tại đĩ). _Break : ngắt ngang (thốt khỏi) vịng lặp while. _Continue : quay trở về đầu vịng lặp while . Các chỉ thị tiền định #include //Gọi thư viện cĩ sẵn cách viết khác "*.h" #define led1 PORTA.0 //dùng định nghĩa các biến char bien1,bien2; //cac bien can dung int a,b; void chuongtrinhcon(unsigned int b) // chuong trinh con { … } int ham(void) // chuong trinh con dang ham { …. Return(a); } { int a; // khai bao bien dang so nguyen chuongtrinhcon(); a = ham(); } Khai báo ngắt void main // chuong trinh chinh { ... while(1) //vong lap vo tan sau khi thuc hien xong cong viec } void ngat0(void) interrupt 0 // chuong trinh ngat { Khai báo Timer void delay(unsigned char time) { while(time--) { TMOD=0x01; TR0=0; TH0 = 0xFF;// nạp giá trị cho timer TL0 = 0xFF; nạp giá trị cho timer TF0=0; TR0 = 1; // Chạy bộ định thời while(!TF0); // chờ khi nào cờ TF0 =1 } TÀI LIỆU THAM KHẢO  [1] Hồ Trung Mỹ – Giáo trình Quang điện tử.Đại học Bách khoa Tp.Hồ Chí Minh. [2] Ngơ Diên Tập – Vi điều khiển với lập trình - Nhà xuất bản Khoa học và Kỹ thuật Hà Nội [3] W.Buchanan – C for Electronic Engineering [4] Tài liệu PIC 16F877A_Nguyễn Văn Xuân [5] Báo Cáo PIC 16F877A_Nguyễn Chí Linh [6] www.Microchip.com [7] www.diendandientu.net [8] www.datasheet.com [9] www.picvietnam.com q45 d4 Q27 Q47 VCC VCC q17 d1 VCC p24 d7 Q5 VCC p17 R9 VCC d2 b1 VCC q4 q2 2 q4 0 b7 q41 d4 b7 d3 VCC p4 q3 d5 d4 d3 q6 p20 Q12 VCC d5 R16 Q50 VCC q33 p31 b5 R23 VCC p48 p30 d2 d6 SO DO NGUYEN LI p35 p13 q1 3 q2 4 VCC p11 p35 d1 p27 q6 q34 q9 U11 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 10 20 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 G N D VC C D8 DIODE VCC p34 p5 b8 Q45 VCC p48 q27 d2 b6 C3 104 VCC VCC q36 q4 5 d1 VCC VCC p3 q1 9 b3 p15 b2 b3 Q16 R27 b3 p41 q39 q2 9 q4 2 U15 LM7805 1 3 2 IN OUT G N D p42 d1 b6 d1 b8 b8 U12 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 10 20 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 G N D VC C p38 p11 q2 8 Q49 q9 d2 R44 VCC VCC p44 d1 Q39 R18 p9 d6 Q38 KHOI CONG SUAT VCC q7 d4 SW1 SW_PB_SPST q30 q10 q14 d6d7 VCC d6 p29 VCC p23 p26 R8 R15 VCC p14 p3 q1 4 q3 6 d7 d1 R19 U3 Matrix 1215 2 8 11 105 1 6 13 16 4 93 147 1215 2 8 11 105 1 6 13 16 4 93 147 RN2 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 q20 q21 b4 Q34 q3 9 b4 b7 b2 Q19 p12 U1 Matrix 1215 2 8 11 105 1 6 13 16 4 93 147 1215 2 8 11 105 1 6 13 16 4 93 147 p13 d4 Q4 U5 Matrix 1215 2 8 11 105 1 6 13 16 4 93 147 1215 2 8 11 105 1 6 13 16 4 93 147 R4 470 VCC VCC p15 q44 b6 Q3 C1815 R34 VCC p22 q2 0 q3 3 b7 Q8 R42 R36 VCC q3 7 d7 d8 d2d6 R37 U13 PIC16F877A 11 12 14 32 13 31 2 3 1 4 5 6 7 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 Vd d G N DOSC2/CLKOUT M C LR /V P P OSC1/CLK GND RA0/ANO RA1/AN1 VDD/MCLR RA2/AN2 RA3/AN3 RA4/TOCK/C1OUT RA5/AN4 RB0/INT RB1 RB2 RB3 RB4 RB5 RB6/BGC RB7/BGD RC0/T1OSO/ RC1/T1OSI RC2/CCP1 RC3/SCK/SCL RC4/SDA/SDI RC5/SD0 RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 q11 p22 p16 p39 q2 1 d5 b7 b4 b8 Q15 VCC q28 q18 q1 6 d7 R17 Q35 KHOI NGUON p21 p9 q37 R10 Y1 12MHz RXV R51 RN3 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 VCC VCC q2 3 d4 Q17 U2 Matrix 1215 2 8 11 105 1 6 13 16 4 93 147 1215 2 8 11 105 1 6 13 16 4 93 147 Q42 p33 q32 q3 2 d6 R39 RN6 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 VCC VCC q29 b4 d3 p40 p45 p45 q4 4 R29 VCC p21 p26 d7 Q41 VCC q3 0 b3 b2 d5 R25 R43 p40 p18 VCC q15 d5 Q31 U9 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 10 20 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 G N D V C C q2 q1 TXV D2 b6 d8 b5 b6 VCC b1 d3 R10 1k q42 p10 d3 b4 R21 C13 33P R45 VCC p32 b6 C4 104 KHOI DIEU KHIEN p43 p44 q4 1 R20 R38 VCC Q28 U6 Matrix 1215 2 8 11 105 1 6 13 16 4 93 147 1215 2 8 11 105 1 6 13 16 4 93 147 p42 d5d8 R7 q26 b2 b6 Q37 U7 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 10 20 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 G N D VC C R6 VCC p28 q5 R33 R3 R VCC q2 5 d3 q1 2 b2 Q36 KHOI HIEN THI p36 q12 U8 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 10 20 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 G N D VC C Q11 R50 R46 p1 p2 d3 d8 R49 R28 VCC p18 b8 d4 R30 VCC q4 p4 p19 Q21 Q26 Q48 q47 q8 p6 b8 b3 Q24 VCC q5 q2 7 Q30 R13 R14 p7 p12 p36 q2 b5 Q25 q3 d5 p17 p31 p37 q23 d3 R12 p33 q4 7 d8 b1 R40 Q44 q46 q13 q35 d7 b5 b5 p29 d1 p28 p7 q1 0 d4 U4 Matrix 1215 2 8 11 105 1 6 13 16 4 93 147 1215 2 8 11 105 1 6 13 16 4 93 147 p37 p32 b3 d2 J15 CON2 1 2 C14 33P U10 74HC573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 10 20 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 G N D V C C q31 q1 R5 RN5 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 VCC q16 p47 d8 Q7 VCC p8 q4 8 b5 b4 b4 b8 Q18 p19 q2 6 VCC p38 R41 q25 p47 q1 1 d8 b2 d6 R26 R22 q4 6 d5 R47 b1 d7 Q43 Q10 R35 q48 p1 p27 q3 1 p10 p46 q3 5 Q33 RN1 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 Q14 Q22 p8 q1 8 b1 Q23 - + D1 RS403L 2 1 3 4 VCC q8 R31 R48 p43 p23 b7 C4 10uf /25V VCC p5 p20 q1 7 Q13 VCC p46 b1 VCC p2 q3 8 R11 Q46 C1 1000uf /25V VCC p24 q40 p39 d8 RN4 R-PACK 1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9 q3 4 d2 Q6 R24 p41 p6 q1 5 d2 Q20 C2 10uF/25V Q40 Q9 p30 q19 q4 3 b2 VCC b3 b1 R32 VCC p16 p25 b7 q43 q38 p34 b5 Q29 q22 p25 q7 p14 q24 d6 R3 1K

Các file đính kèm theo tài liệu này:

  • pdftt_3953.pdf