1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

thiet ke mach quang bao.pdf

17 2,2K 24
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mạch quang báo dùng Vi Điều Khiển PIC16F88
Tác giả Nguyễn Chí Linh, Tek Song Leng
Người hướng dẫn Giáo Viên Hướng Dẫn: Nguyễn Nam Quân
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Thiết kế mạch Logic
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 17
Dung lượng 699,96 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu thiết kế mạch quảng báo.

Trang 1

Chương 3 Mạch quang báo dùng Vi Điều Khiển PIC16F88

I Nguyên lý làm việc của mạch quang báo

I.1 Giới thiệu về bảng LED ma trận

Trước khi đi vào nguyên lý hoạt động của mạch ta tìm hiểu qua về bảng ma trận LED

được sử dụng trong đề tài

Bảng hiển thị ma trận LED (dot-matrix display) có rất nhiều loại và đủ kích cỡ to nhỏ khác nhau, mỗi bảng gồm có rất nhiều LED đơn được ghép lại với nhau trong một khối Trong khối đó các LED đơn được sắp sếp theo các hàng và các cột, tại mỗi giao điểm của hàng với cột là một LED đơn, và người ta thường phân biệt các loại bảng LED theo số hàng

và cột Một bảng LED 5x7 tức là có 5 cột dọc và 7 hàng ngang, tổng cộng sẽ có 5x7=35 LED đơn được ghép lại Cũng như vậy một bảng 8x8 là có 8 hàng và 8 cột, do 64 LED đơn ghép lại Và nhiều loại cỡ to hơn như 16x16 hay 32x32…

Trên thị trường ta thường thấy các bảng LED cỡ lớn, dài hàng mét với đủ kích cỡ Các bảng LED đó là do hàng nghìn LED đơn ghép lại Khi thiết kế những bảng LED to như vậy

ta cần chú ý đến sự đồng đều về độ sáng của các LED để việc hiển thị được đồng đều Bên cạnh đó vấn đề cấp nguồn cho mạch cũng cần được chú ý và thiết kế cho phù hợp Trong đề tài này em sử dụng hai bảng LED 8x8 cho việc hiển thị, sử dụng ma trận 5x7 cho việc hiển thị mỗi một ký tự

Sau đây là sơ đồ ghép nối của hai loại bảng LED thông dụng là 5x7 và 8x8

Trang 2

H1.1 Bảng LED 8x8

Bảng ma trận LED có hai loại, loại có các cột là các chân Anode, còn hàng là các chân Cathode và loại kia thì ngược lại các cột là Cathode, hàng là Anode Khi sử dụng LED ta cần chú ý điều này để điều khiển cho đúng Khi đóng vỏ, sự phân bố chân các hàng và cột là không theo thứ tự (do tính phức tạp trong ghép nối), do đó ta cần tìm hiểu kỹ để mắc mạch cho đúng

Dưới đây là sơ đồ chân của bảng LED 8x8 được dùng trong đề tài

Các số gạch chân là hàng

Các số không gạch chân là cột

Trang 3

6 3 4 1 6 7 2 4 Hµng

Cét

8 5 3 5 8 7 2 1

H1.2 B¶ng LED 5x7

Trang 4

I.2 Nguyên tắc làm sáng đèn LED trên bảng LED

Khi muốn làm sáng LED dơn, ta cần đưa điên áp dương vào chân Anode và điện áp âm vào chân Cathode với giá trị thích hợp, khi đó LED sáng Giá trị điện áp và dòng điện tuỳ thuộc vào màu sắc từng loại LED Dòng chảy qua các LED để đảm bảo độ sáng bình thường

là từ 10mA cho đến 25mA Về điện áp ta có bảng sau

Màu LED\Điện áp Vmin V Vmax

Khi ta muốn làm sáng một điểm trên bảng ma trận LED ta cũng làm tương tự Xét với bảng LED 5x7 dưới đây (H1.3)

H1.3 Bảng LED 5x7

Ta muốn làm sáng LED tại vị trí hàng 5 - cột 3 (Row = 5 : Col = 3), ta đưa mức điện áp dương (mức logic 1) đến chân số 4 tức hàng thứ 5 và nối chân số 10 tức cột 3 xuống đất (GND hay mức logic 0), đèn LED tại vị trí đó sẽ sáng

Việc hiển thị thông tin trên bảng LED ta cũng làm tương tự, cho sáng những điểm theo sự

điều khiển của ta để tạo ra chữ và hình ảnh Việc điều khiển hiển thị sẽ được trình bày trong phần dưới dây

Trang 5

I.3 Nguyên tắc quét bảng ma trận LED

Trong đề tài này em sử dụng hai bảng LED 8x8 ghép lại thành một bảng cỡ 8x16 (8 hàng

và 16 cột) Mỗi ký tự sẽ được hiển thị trong một khung cỡ 5x7 Dưới đây là nguyên tắc quét

và hiển thị một ký tự (giả thiết là chữ R) trên khung hình 5x7

Để hiển thị ký tự lên bảng LED, ở đây ta dùng phương pháp quét cột và xuất dữ liệu hàng Quá trình quét cột là ta gửi tín hiệu cho phép đến từng cột trong từng thời điểm Cùng lúc đó ta gửi dữ liệu hàng đến 7 hàng Trong đề tài này tín hiệu cho phép cột là mức logic

‘1’, và dữ liệu hàng tương ứng là mức ‘0’ hay ‘1’ của từng hàng, mức ‘0’ ứng với LED sáng (on) và mức ‘1’ là tắt (off)

- Đầu tiên ta đưa dữ liệu cần hiển thị đến 7 hàng, ví dụ 11100110

- Kích hoạt cột thứ nhất và các LED tương ứng sẽ sáng Tạo một thời gian trễ, sau đó tắt cột thứ nhất

- Gửi tiếp giá trị dữ liệu 7 hàng của cột thứ 2, kích hoạt cột thứ 2, tạo trễ và lại tắt cột thứ 2

- Quá trình quét đó cứ tiếp diễn cho đến khi quét hết 16 cột của bảng LED Việc quét hiển thị này diễn ra trong thời gian rất ngắn, cỡ vài chục mili giây, ta sẽ thấy hình ảnh hay chữ hiển thị trên bảng LED Tuy rằng trong mỗi thời điểm chỉ có một cột được sáng nhưng do thời gian quét rất nhanh và do hiện tương lưu ảnh trong võng mạc của mắt nên ta thấy hình ảnh xuất hiện liên tục Tần số quét cần phải đảm bảo sao cho đủ hoặc lớn hơn 24hình/s Thường ta chọn tần số quét từ 40Hz đến 100Hz hoặc có thể lớn hơn

Dữ liệu hiển thị của hàng được lấy từ EEPROM hoặc từ Flash ROM của Vi Điều Khiển hay từ ROM ngoài Trong đề tài này ban đầu dữ liệu được lấy từ ROM trong PIC16F88, khi câp nhật dữ liệu từ máy tính thì dữ liệu sẽ được lấy từ EEPROM trong PIC16F88 (256 byte)

Quét cột

Dữ liệu

hàng

Tín hiệu kích hoạt cột (C1 -> C5)

Trang 6

I.4 Phương pháp tạo hiệu ứng chữ chạy từ phải qua trái trên bảng LED

Sau khi đ hiển thị được hình ảnh lên bảng LED Bây giờ ta sẽ tìm hiểu cách tạo hiệu ứng chữ chạy trên bảng LED Thủ thuật ở đây là quét và hiển thị một hình ảnh trong một thời gian nhất định, sau đó ta dịch dữ liệu của các cột sang trái một vị trí, khi đó ta sẽ tạo được hiệu ứng chữ chạy trên bảng LED

Đề tài này ta sử dụng mạch mẫu là bảng LED 8x16, sử dụng 16 byte RAM làm bộ đệm cho màn hình, lưu giá trị dữ liệu hàng của 16 cột Bộ đệm được khai báo trong RAM nội của chip PIC16F88 là một mảng gồm 17 phần tử Chương trình hiển thị làm nhiệm vụ đọc dữ liệu

từ các vị trí 0 đến 16 của bộ đệm và đưa ra màn hình hiển thị Hiệu ứng chữ chạy được tạo ra bằng cách dịch giá trị các phần tử đi một vị trí (15 ->16, 14 ->15, 13 ->12…) Sau mỗi lần dịch ta lại gọi chương trình hiển thị Khi đó trên bảng LED ta sẽ quan sát được hiệu ứng chữ chạy

II Nguyên lý làm việc của mạch quang báo

Mạch điện sử dụng Vi Điều Khiển PIC nên về phần cứng khá đơn giản Mạch gồm có 3 khối chính với 3 IC chính được sử dụng

Khối điều khiển trung tâm sử dụng Vi Điều Khiển PIC16F88 Vi Điều Khiển này có 18 chân (kích thước nhỏ nhất của dòng PIC Mid-range) Tuy vậy, với nhiều tính năng mạnh được tích hợp sẵn nên PIC16F88 được chọn

Khối giải m$ địa chỉ cột sử dụng IC 74HC154 là IC giải m/giả đa hợp Chíp CMOS này được dùng để giải m cột, 4 đường vào và 16 đướng ra 16 đường ra này được nối

đến 16 cột để làm nhiệm vụ đưa tín hiệu cho phép cột

KhốI giải m$ dữ liệu hàng sử dụng IC 74HC595, đây là thanh ghi dịch 8-bit vào nối tiếp ra song song Ta sử dụng IC này nhằm mục đích tiết kiệm chân giao tiếp giữa IC giải m với Vi Điều Khiển Chân DATA-IN (14) để đưa dữ liệu nối tiếp vào, chân CLK (11) đưa xung đồng hồ dịch bit, chân LATCH(12) để chốt dữ liệu được gửi ra 8 đầu ra được nối đến 8 hàng của bang LED thông qua mạch đệm dòng

Nguyên lý hoạt động: Chương trình phần mềm chứa trong Vi Điều Khiển làm nhiệm vụ

điều khiển chính mọi hoạt động của mạch Chương trình phần mềm gồm có nhiều chương trình con: chương trình hiển thị, chương trình cập nhật EEPROM…

Trang 7

Lưu đồ thuật toán

YES

NO YES

NO

Khởi tạo ban đầu:

- Định nghĩa các chân vào ra

- Thiết lập cho ADC(kênh,tốc độ)

- Lưu bản tin vào EEPROM)

Xoá bộ đệm

màn hình

Đọc giá trị

ADC

Trở về Update_flag ?

Gọi chương trình cập nhật:

- Số từ hiển thị mới

- Vị trí EEPROM

- Số ký tự thêm vào

- Nhập Chương trình

hiển thị trên

bảng LED

Nhập bản tin mới ?

START

Hiển thị nội dung:

- Bản tin

Cập nhật bản tin

END

Trang 8

III Sơ đồ nguyên lý mạch điện

a Khối mạch chính và hiển thị

U6

PIC16F88 14

15

17 1 3

6 8 10 12

VDD

OSC2/CLKOUT MCLR OSC1/CLKIN

RA0 RA1 RA3 RA4/TOCKI

RB0/INT RB1 RB2/RX RB3 RB5/TX RB6 RB7

Col4 Col8

row4

Col7

XTAL2

R9 4k7 VCC

row5

Col1 Q7

A3

VCC

Ma tran 8x8

Q8 A1015

A0

A1015

Dieu chinh toc do 10K

Q1 A1015

Col0

A1015 U4

74HC595

14

11

10

12

13

15 1 2 4 6 9

SER

SRCLK

SRCLR

RCLK

G

QA QB QC QE QF QG QH QH'

row6

Col13

U5

74154

Y Y Y Y Y

A C G XTAL1

A2

Ma tran 8x8

A0

R2 4k7

row8 A1015

A2

row1

R9 4k7

Q3 A1015

VCC

R3 4k7

VCC

Col5

A3

R3 4k7

row2 R1 4k7

A1

R2 4k7

A1

Col11 Col15 Col2

row3

Col14 row7

A1015

b Khối tạo dao động, mạch Reset

C5 22p 10MHz

XTAL2 XTAL1

C6 22p

VCC

RST

R15 10k

c Khối giao tiếp máy tính

MAX232

1 3

5

2 6

12 9 11

10

13 8

14 7

C1+

C1-C2+

C2-V+

V-R1OUT T1IN

R1IN T1OUT

C2 10uF

C3

TX (RB5)

C1

COM on PC

5 9 8 7 6

RX (RB2)

Nối đến chân MCLR(1)

Trang 9

d Khối nguồn

7805

VIN VOUT

100uF

+5V 10uF

+9V +12V

104 47uF

IV Linh kiện sử dụng trong mạch

a Khối điều khiển trung tâm: Vi điều khiển PIC16F88

b GiảI m dữ liệu hàng: IC 74HC595

c GiảI m địa chỉ cột: IC 74HC154

d Đệm dòng cho hàng dùng Transistor A1015

e Giao tiếp máy tính: IC MAX232 (MAXIM-DALLAS)

f Điện trở 4K7, 10K, tụ 10àF, 100àF, 47àF, IC 7805 (ổn áp 5V)

g Bảng LED 8x8 (2 bảng)

V M< nguồn chương trình

Dưới đây là m nguồn của chương trình hiển thị LED Chương trình sử dụng ngôn ngữ

C, sử dụng trình biên dịch PCWH Compiler của hng Custom Computer Services, Inc (CCS), phiên bản 3.227 Đây là phần mềm chuyên dụng trong việc lập trình PIC các dòng PIC16F và PIC18F…

Để lập trình cho PIC ta có thể sử dụng rất nhiều ngôn ngữ khác nhau như C, C++, BASIC, ASM… Mỗi ngôn ngữ lại có một trình biên dịch khac nhau Riêng nhà cung cấp chip là hng MicroChip thì hỗ trợ người dùng trình dịch bằng ASM là MPLAB IDE (phiên bản mới nhất là 7.21) Đây là phần mềm hoàn toàn miễn phí, cho phép người dùng phát triển trên môi trường ASM các ứng dụng Tuy vậy trong đề tài này em chọn dùng ngôn ngữ C để viết m chương trình vì C là ngôn ngữ bậc cao, cho phép ta thực hiện nhiều phép toàn phức tạp với câu lệnh đơn giản Trong trình biên dịch PCWH Compiler có hỗ trợ khá nhiều hàm cho phép ta lập trình với PIC một cách nhanh chóng như: các hàm giao tiếp I2C, RS232, SPI…, các hàm xử lý với EEPROM như write_eeprom, read_eeprom,…

Trang 10

//+===Chuong trinh LED matrix display===========+

//| Thiet ke: Nguyen Chi Linh - DT8K47 - DHBKHN |

//| MCU: PIC16F88 (4K FLASH ROM, 256K EEPROM) |

//| Cac IC khac: 74154 - demux/decoder 1-of-16 |

//| 74595 - Ghi dich 8bit |

//+=============================================+

#include <16f88.h>

#include <defs_88.h>

#device *=16 ADC=8

#FUSES NOWDT, HS, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO

#use delay(clock=20000000)

#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9)

#include <input.c>

#include <font_ascii.c> //File chua bo font ma hoa ky tu ASCII

// Dinh nghia cac chan cho ket noi 74595

#bit clk = 0x06.1 //RB0

#bit data = 0x06.3 //RB1

#bit latch = 0x06.4 //RB3

// Bo nho dem man hinh hien thi

int8 buff_disp[25]; //Bo nho dem cho man hinh LED

int8 max_char=117; //SO ky tu hien thi toi da

int8 time=5; //Bien quy dinh toc do chu chay

int1 text_on_rom=0;

int8 chon=0;

int8 address;

int8 choose_text;

//=========KHAI BAO CAC CHUONH TRINH CON================

int8 doc_eeprom(int8 addr);

void send_2_595(int8 temp);

void display();

void copy_2_ram1(int8 index_char);

void copy_2_ram2(int8 index_char);

void update_eeprom();

void convert_bcd(int8 x);

//=============================================

#INT_EXT

EXT_ISR() {

disable_interrupts(GLOBAL);

clear_interrupt(int_ext);

chon++;

if(chon==3) chon = 0;

choose_text = 0;

text_on_rom = 0;

Trang 11

enable_interrupts(GLOBAL);

}

//===========Chuong trinh chinh================

void main() {

int8 i,j,k;

#bit update_rom = 0x06.6

char const a[119]= " Hello World.LED Matrix PIC16F88 - 74154 - 74595 Bang thong tin dien tu.Nguyen Chi Linh-DT8 DAI HOC BACH KHOA HA NOI ";

char const b[119]= " HAPPY NEW YEAR *2006* - CHUC MUNG NAM MOI - Chuc Mung Nam Moi - Happy new year linhnc308@yahoo.com 1234567890 ";

char const c[119]= " You like a little flame in my heart When I see you, the flame is like

up Because I love you Because I LOVE YOU ";

char const adc[6] = " ADC=";

//===========================================

TRISA=0x10; // Thiet lap chan vao ra

TRISB=0b00100101;

//==Thiet lap ngat ngoai 0 ==================

enable_interrupts(INT_EXT);

ext_int_edge(H_TO_L);

enable_interrupts(GLOBAL);

//===========================================

setup_adc_ports(sAN4);

setup_adc(ADC_CLOCK_INTERNAL);

chs0=0; //Clear bit 1f.3

chs1=0; //Clear bit 1f.4

chs2=1; //Clear bit 1f.5

delay_ms(10);

//======= HIEN THI TRAI TIM =======

//==============================

//======= HIEN THI BAN TIN ========

for(i=0;i<6;++i)

write_eeprom(0xf0+i,adc[i]);

for(i=0;i<117;++i)

write_eeprom(i,a[i]);

write_eeprom(0xff,max_char); // Luu so ky tu toi da vao ROM

if(update_rom==1) //Kiem tra cong tac cap nhat du lieu

update_eeprom(); //Goi chuong trinh con cap nhat(giao tiep qua cong COM)

for (i=0;i<=24;i++) // Clear RAM of buff_disp

buff_disp[i]=0xff;

//Doanchuong trinh nay se hien thi noi dung ban tin luu trong EEPROM

while(1) {

for (i=0;i<=max_char;i++) // Begin of text

{

if(choose_text==0) {choose_text=1; goto hien_thi;}

if(text_on_rom==0)

Trang 12

{

switch(chon)

{

case 0: j=a[i]-32; break;

case 1: j=b[i]-32; break;

case 2: j=c[i]-32; break;

case 3: chon=0; break;

}

}

else

j=read_eeprom(i)-32;

if(j < 51)

copy_2_ram1(j);

else

{

j=j-51;

copy_2_ram2(j);

}

}

k=read_adc();

convert_bcd(k);

for(i=0;i<8;++i)

{

k = doc_eeprom(0xf0 + i)-32;

copy_2_ram1(k);

}

}

}

//========= END MAIN ==============

// === CAC CHUONG TRINH CON =========

//=======Gui du lieu theo duong noi tiep toi 595============

void send_2_595(int8 temp) {

#bit flag_bit = temp.7 // bien temp la du lieu 8-bit can gui

int8 i;

clk=0;

for(i=0;i<8;i++)

{

if(flag_bit)

data=1; //bit 1

else data=0; //bit 0

clk=1; clk=0;

temp<<=1; // Dich trai 1 bit

}

latch=1; latch=0; //Chot du lieu

}

Trang 13

//===========Chuong trinh con hien thi=========

void display() {

int8 count,column_count;

int8 i;

time = read_adc()/10; // Viec doc gia tri ADC truoc khi hien thi lam cho viec thay doi // toc do chu chay linh hoat hon, truc tiep tha doi

for (i=0;i<=time;i++) //Toc do chu chay thay doi boi bien time

{

column_count=0; //Bien dem so cot, xem da quet het 16 cot chua

for(count=24;count>0;count )

{

send_2_595(buff_disp[count]);

if(column_count > 15) RB7=1; else RB7 = 0;

PORTA=column_count;

delay_us(300);

column_count++;

}

}

}

//========Copy to Ram1=====================

void copy_2_ram1(int8 index_char) {

int8 i,j;

for (j=0;j<=5;j++)

{ // Dich RAM

for (i=24;i>0;i )

buff_disp[i]= buff_disp[i-1]; // Dich RAM sang trai

buff_disp[0]= font[index_char].b[j]; // Luu ma ascii vao RAM

display(); // Goi hien thi

}

buff_disp[0]=0xff;

}

//========Copy to Ram 2===================

void copy_2_ram2(int8 index_char) {

int8 i,j;

for (j=0;j<=5;j++)

{

for (i=24;i>0;i ) // Dich RAM

buff_disp[i]= buff_disp[i-1]; //Dich RAM sang trai

buff_disp[0]=font2[index_char].b[j]; //Luu ma ascii vao RAM

display(); // Goi hien thi

}

buff_disp[0]=0xff; // Them mot khoang trang giua hai ky tu

}

Ngày đăng: 20/08/2012, 09:09

HÌNH ẢNH LIÊN QUAN

Bảng ma trận LED có hai loại, loại có các cột là các chân Anode, còn hàng là các chân  Cathode và loại kia thì ng−ợc lại các cột là Cathode, hàng là Anode - thiet ke mach quang bao.pdf
Bảng ma trận LED có hai loại, loại có các cột là các chân Anode, còn hàng là các chân Cathode và loại kia thì ng−ợc lại các cột là Cathode, hàng là Anode (Trang 2)
Bảng LED - thiet ke mach quang bao.pdf
ng LED (Trang 7)
Hình ảnh mạch điện. - thiet ke mach quang bao.pdf
nh ảnh mạch điện (Trang 17)

TỪ KHÓA LIÊN QUAN