Tải bản đầy đủ (.pdf) (36 trang)

Bảng thông tin điện tử dùng vi điều khiển PIC 16f88

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.72 MB, 36 trang )

Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
1



Trng i Hc Bỏch Khoa H Ni
Khoa in T Vin Thụng
====o0o====








Báo cáo bài tập lớn
Môn :vi xử lí

đề tài: Bảng thông tin điện tử dùng
vi điều khiển pic16f88

Giảng viên hớng dẫn: Hàn Huy Dũng
Nhóm sinh viên thực hiện: Lớp Điện Tử 1&2 K48
Khoa : ĐT-VT





Hà nội 2006


Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
2



Báo cáo bài tập lớn môn vi xử lý

Nhóm sinh viên thực hiện:
Nguyên Đức Toàn ( Điện tử1-K48)
Nguyễn Tiến Cờng ( Điện tử2-K48)
Lơng Hồng Thắng ( Điện tử2-K48)
Nguyễn Bá Chiến ( Điện tử2-K48)
Nguyễn Huy Quang ( Điện tử2-K48)
Trần Huy Du ( Điện tử2-K48)




Lời nói đầu

Sự ra đời và phát triển của máy vi tính là một bớc đột phá của con
ngời . Nó đợc sử dụng nh một công cụ không thể thiếu trong cuộc sống
cũng nh trong sản xuất . Đây chính chính là một ví dụ điển hình nhất về
ứng dụng của các bộ vi xử lý trong đời sống . Với những tính năng vợt trội
nh kích thớc nhỏ gọn , cho phép lập trình đợc , giao tiếp đợc với các

thiết bị ngoại vi các bộ vi xử lý chính là một công cụ đầy sức mạnh trong
lĩnh vực điện tử .
Và sau đây chúng em xin đợc trình bày ứng dụng của bộ vi xử PIC
16F88 để hiển thị dòng chữ chạy bằng ma trận led . Đây là chỉ là một trong
những ứng dụng nhỏ của vi xử lý nhng nó đ giúp chúng em hiểu rõ hơn về
bộ vi xử lý PIC16F88 . Tuy đ rất cố gắng nhng do kiến thức vi xử lý , kĩ
thuật lập trình , lắp ráp phần cứng còn nhiều hạn chế , nên chúng em còn
nhiều thiếu sót , rất mong đợc sự đóng góp của thầy giáo . Cuối cùng em
xin đợc cảm ơn thầy đ giúp đỡ chúng em trong quá trình thực hiện bài tập
lớn .

A)Mục đích thiết kế
- Dùng bộ vi điều khiển PIC16F88 hoặc PIC16F84 để hiển thị chữ chạy
trên 2 ma trận led(8ì8) .
- Phần cứng bao gồm
PIC16F88 Hoặc PIC16F84 là phần tử điều khiển chính
Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
3

74LS154 để quét 16 cột( giải m côt)
74HC595 để gửi dữ liệu hàng
A1015 để đệm dòng cho hàng
Ma trận led (8ì8) để hiển thị

Sơ đồ khối của mạch điện:


- Chức năng chính của phần mềm

* Hiển thị nội dung bản tin đợc lu trong Flash
* Copy nội dung bản tin vào EEPROM và hiển thị nội dung đó
* Tốc độ chữ chạy đợc xác định bởi biến time , giá trị đợc thay đổi
thông qua giá trị ADC 8bit đợc lấy tại chân RA4 ( kênh AN4)




B) Giới thiệu các linh kiện dùng trong mạch
1. Ma trận led (8ì8)
1.1 Nguyên lí hoạt động :
Gồm 64 điôt phát quang (LED) đợc sắp xếp thành một ma trận 8
cột và 8 hàng . Các LED trên cùng một hàng đợc nối chung Anốt , các LED
trên cùng một cột đợc nối chung catốt . Một LED ở vị trí hàng thứ i và cột j
chỉ sáng khi có tín hiệu chọn hàng I ở mức cao (5V) và tín hiệu chọn cột j ở
mức thấp (0V) .
VĐK
PIC16F88
GiảI m
cột
Hiển thị LED

Khối giải m
Cột
Khối hút
dòng
Nguồn
VCC 5V

Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö

Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
4

1.2 S¬ ®å nguyªn lý
S¬ ®å nguyªn lý cña ma trËn LED 8*8 t−¬ng tù nh− sau



- Ma trËn LED ®−îc ®ãng vá d¹ng DIP ( Dual In – line Pakage) gåm 16
ch©n chia lµm hai hµng

- S¬ ®å ch©n cña ma trËn LED:



Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
5
















2. Bộ giải mã / phân kênh 74154

Đây là IC giải m địa chỉ 4 đờng vào 16 đờng ra:

Dới đây là sơ đồ chân kết nối và sơ dồ khối logic của IC
Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
6



74LS154 có 24 chân gồm : 4 chân đầu vào A , B , C, D , 16 đầu ra 0 15 ,
đầu cấp nguồn V
cc
=
+
5V ( chân 24 ) , chân GND nối đất ( chân 12 ) , hai đầu
chọn chip là G1 và G2.
Mỗi địa chỉ 4 bit đầu vào kích thích một đầu ra ở mức thấp, các đầu ra
còn lại ở mức cao. Các đầu vào chọn chip cần phải đặt thấp để vi mạch làm
việc. Nếu một hoặc cả hai đầu G1, G2 ở mức cao thì tất cả các đầu ra sẽ ở
mức cao.



Dới đây là bảng chân lý của IC 74LS154:









Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
7




G
1

G
2

D

C

B


A

0

1

2

3

4

5

6

7

8

9

1
0

1
1

1
2


1
3

1
4

1
5

1

0

x

x

x

x

1

1

1

1


1

1

1

1

1

1

1

1

1

1

1

1

0

1

x


x

x

x

1

1

1

1

1

1

1

1

1

1

1

1


1

1

1

1

0

0

0

0

0

0

0

1

1

1

1


1

1

1

1

1

1

1

1

1

1

1

0

0

0

0


0

1

1

0

1

1

1

A

1

1

1

1

1

1

1


1

1

1

0

0

0

0

1

0

1

1

0

1

1

1


1

1

1

1

1

1

1

1

1

1

0

0

0

0

1


1

1

1

1

0

1

1

1

1

1

1

1

1

1

1


1

1

0

0

0

1

0

0

1

1

1

1

0

1

1


1

1

1

1

1

1

1

1

1

0

0

0

1

0

1


1

1

1

1

1

0

1

1

1

1

1

1

1

1

1


1

0

0

0

1

1

0

1

1

1

1

1

1

0

1


1

1

1

1

1

1

1

1

0

0

0

1

1

1

1


1

1

1

1

1

1

0

1

1

1

1

1

1

1

1


0

0

1

0

0

0

1

1

1

1

1

1

1

1

0


1

1

1

1

1

1

1

0

0

1

0

0

1

1

1


1

1

1

1

1

1

1

0

1

1

1

1

1

1

0


0

1

0

1

0

1

1

1

1

1

1

1

1

1

1


0

1

1

1

1

1

0

0

1

0

1

1

1

1

1


1

1

1

1

1

1

1

1

0

1

1

1

1

0

0


1

1

0

0

1

1

1

1

1

1

1

1

1

1

1


1

0

1

1

1

0

0

1

1

0

1

1

1

1

1


1

1

1

1

1

1

1

1

1

0

1

1

0

0

1


1

1

0

1

1

1

1

1

1

1

1

1

1

1

1


1

1

0

1

0

0

1

1

1

1

1

1

1

1

1


1

1

1

1

1

1

1

1

1

1

0


Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
8


Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö

Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
9


Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
10







3.Giới thiệu IC 74HC595
- Sơ đồ chân IC:

Đây là IC dùng để giải m hàng, các chân 11,12,14 đợc cấp điện áp( hay
mức logic) từ PIC16F88
Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
11
-S¬ ®å logic cña 74LS595:

Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006

12

Các chân ra từ QA ->QH lần lợt đợc đa đến các hàng của LED
74LS595 có nguồn cung cấp 5V , các mức điện áp và dòng vào ra nh
sau :

Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
13






4.PIC16F88

a.S¬ ®å ch©n cña V§K PIC16F88:
















Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
14
-
Mét sè th«ng tin vÒ PIC16F88:

Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
15


Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
16

Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
17


Vi xử lý PIC16F88 có 18 chân :
- chân 17 , 18 , 1 , 2 , 3 là các chân vào\ra của PIC đợc qui định bởi thanh

ghi TRISA , PORTA .
- chân 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 là các chân vào\ra của PIC đợc qui định
bởi thanh ghi TRISB , PORTB .
- chân 15,16 nối với thạch anh dao động ngoài .
- chân 14 nối với nguồn để cung cấp cho PIC .
Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
18
- chân 5 nối đất .

b) Tổ chức bộ nhớ của PIC
Vùng con trỏ ( Pointer ) đợc đặt ở địa chỉ 0x0004
Vùng ngăn xếp ( Stack ) có 8 mức ( Stack level 1 Stack level 8 )
Vùng véctơ ngắt ( Interrupt vector )
Vùng nhớ chơng trình ( Program memory ) đợc đặt ở địa chỉ
0x0005 .

c) Vùng nhớ chơng trình
- Vùng nhớ chơng trình của PIC16F88 đợc chia thành 4 bank
Bank0 : 00h 7Fh
Bank1 : 80h FFh
Bank2 : 100h 17Fh
Bank3 : 180h 1FFh


- 4 bank này ( gồm các thanh ghi 8 bit ) đợc chia làm 3 phần
Phần các thanh ghi có địa chỉ xác định và đ đợc đặt tên . Đây là
những thanh ghi đặc biệt của PIC
Vd : thanh W( work register ) , thanh STATUS , thanh TRISA , thanh

TRISB , thanh PORTA , thanh PORTB
Phần các thanh ghi dùng chung ( General Perpose Register ) là các
thanh ghi cha đợc định nghĩa , cha có tên . Những thanh ghi này có
tác dụng nh các biến trong chơng trình .
Phần các thanh ghi nằm ở bank 1 , 2 , 3 tơng thích với các thanh ghi
từ 70h đến 7Fh ở bank 0 .

d) Tóm tắt tập lệnh của PIC16F88
- cấu trúc lệnh :
NHN LệNH tham số 1 , tham số 2 ; chú thích
Lệnh xoá một thanh ghi bất kì
CLRF (tên thanh ghi )
Vd: CLRF TRISB ; trisb = 00000000 quy định portb là đầu ra
Lệnh ghi một giá trị bất kì vào thanh ghi W
MOVLW ( giá trị )
Vd : MOVLW b11110000 ; ghi giá trị nhị phân b11110000 vào
thanh ghi W .
MOVWF ghi giá trị của thanh ghi W vào một thanh ghi khác
MOVWF ( tên thanh ghi )
Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
19
Vd : MOVWF PORTB ; ghi giá trị hiện tại trong thanh ghi W vào
thanh ghi PORTB .
Bật một bít trong một thanh ghi bất kì
BSF ( thanh ghi ) , ( vị trí bít)
Vd : BSF PORTB , 0 ; bật bít 0 của thanh PORTB , tức là RB0=1
Nhảy đến một nhn bất kì
GOTO ( nhn )

Nhảy tại chỗ
GOTO $
Định địa chỉ trong bộ nhớ chơng trình
ORG ( địa chỉ )
Chọn bank trong bộ nhớ chơng trình
BANKSEL (tên bank hoặc tên của thanh ghi nằm trong bank )
Vd : BANKSEL TRISB ; chuyển đến bank 1 là bank chứa TRISB .
Gọi một chơng trình con
CALL ( nhn )
Vd : CALL DELAY ; gọi chơng trình con DELAY
Trở về chơng trình chính từ chơng trình con
RETURN
Tắt một bít trong một thanh ghi bất kì
BCF ( thanh ghi ) , ( vị trí bít)
Vd : BCF PORTB , 0 ; tắt bít 0 của thanh PORTB , tức là RB0=0
DECSZ (Decrement File , Skip if Zero ) : giảm giá trị một thanh ghi
nào đó đI một đơn vị . Nếu sau khi giảm mà kết quả là 0 thì nó sẽ
nhảy cách ra một ô nhớ trong bộ nhớ chơng trình và thực hiện
lệnh ngay sau nó . Nếu giá trị khác không thì nó sẽ thực hiện lệnh
liền kề nó .
DECSZ [ thanh ghi ] , F\W

C. Giải thuật của mạch thông tin điện tử

1.Phơng pháp quét ma trận LED:

Chúng ta sẽ dùng phơng pháp quét LED theo hàng và cột. Khi hàng m
đợc cung cấp mức điện áp cao (3-5V) thi ở cột n nào đó nếu có mức điện
áp thấp (0-0.5V) thì LED ở vị trí [m,n] sẽ sáng.
Dới đây là mạch mô tả quét một điểm LED sáng:

Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
20



H×nh ¶nh m« t¶ gi¶i thuËt quÐt ma trËn LED

Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
21

Mỗi LED trên ma trận cần một áp tối thiểu khoảng 2.5V, và dòng tiêu
thụ là 10 mA vì vậy ta cần dùng thêm Tranzitor trong mỗi hàng để đệm
dòng.
Dùng các PortA của VĐK (gồm có RA0 ,RA1, RA2, RA3) để đa tín
hiệu giải m cột cho 74LS154 .Dùng PortB (RB0, RB1, RB3) để xuất dữ liệu
hàng của ma trận LED.
2.Kĩ thuật hiển thị LED
Ta dùng các chu kì xung nhịp để hiển thị LED. Ta cần quết LED để đạt
đợc tốc độ quét nhỏ hơn 25 hình/s thì mắt ngời mới có thể nhìn thấy đợc
Để thực thi xong một lệnh, vi điều khiển PIC cần dến 4 chu kì xung clock.
Nh vậy thời gian thực thi xong 1 lệnh đợc tính bằng:

0
4 tt
i
ì=


với
0
t
là chu kì xung nhịp của VĐK PIC
Từ đây ta có thể dùng hàm delay để đạt đợc tốc độ quét LED nh mong
muốn.
3.Sơ đồ khối của giải thuât:









Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN
Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
22
D) Sơ đồ khối của mạch quang báo






Trong mạch trên thì 74LS154 co thể đợc thay thế bằng 2 con giải m
74LS138 theo sơ đồ sau:

Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
23

D) ThiÕt kÕ phÇn mÒm

#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)
//Baud_min=4800 Baud_max=115200

#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 data = 0x06.1 //RB1
#bit clk = 0x06.0 //RB0
#bit latch = 0x06.3 //RB3

// Bo nho dem man hinh hien thi
int8 buff_disp[17]; //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
Bài tập lớn VXL Bảng thông tin điện tử
Giảng viên hớng dẫn:Hàn Huy Dũng ĐHBKHN

Thực hiện :nhóm ĐT 1+2 K48 5/6/2006
24

//=========KHAI_BAO_CAC_CHUONG_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);

//=============================================
//===========Chuong trinh chinh================
void main() {
int8 i,j;
#bit update_flag = 0x06.4
char const a[119]=" TRUONG DHBKHN KHOA DTVT BANG THONG
TIN DIEN TU DUNG PIC16F88 CHUC THANH CONG DT 1+2 :K48 ";//
Chuỗi hiển thị bảng mạch điện tử
char const adc[6] = " ADC="; 1
//===========================================
TRISA=0x10; // Thiet lap chan vao ra
TRISB=0b00100100;
setup_adc_ports(sAN4); //Chon kenh AN4 nhung ko hieu sao can
them phan khai bao
setup_adc(ADC_CLOCK_INTERNAL);// ben duoi dechon dung kenh
AN4 cho no chay dung
//Chon kenh AN4 clear cac bit tai thang ghi ADCON1 (chs0 : 2)
chs0=0; //Clear bit 1f.3

chs1=0; //Clear bit 1f.4
chs2=1; //Clear bit 1f.5
delay_ms(10);
//===========================================
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
//=======BEGIN DISPLAY FUNCTION==============
//Doanchuong trinh nay se hien thi noi dung ban tin luu trong EEPROM
while(1){
for (i=0;i<=16;i++) // Clear RAM of buff_disp
Bµi tËp lín VXL – B¶ng th«ng tin ®iÖn tö
Gi¶ng viªn h−íng dÉn:Hµn Huy Dòng §HBKHN
Thùc hiÖn :nhãm §T 1+2 K48 5/6/2006
25
buff_disp[i]=0xff;
if(update_flag==1) //Kiem tra cong tac cap nhat du lieu
update_eeprom(); //Goi chuong trinh con cap nhat(giao tiep qua
cong COM)
// time = read_adc()/10; //Cap nhat bien quy dinh toc do chu chay tren
man hinh
for (i=0;i<=max_char;i++) // Begin of text
{
j=read_eeprom(i)-32; //Lay gia tri ASCII cua ky tu
//if(j==51) copy_2_ram1(51);
if(j < 51)
copy_2_ram1(j);
else

{
j=j-51;
copy_2_ram2(j);
}
}
j=read_adc();
convert_bcd(j);
for(i=0;i<8;++i)
{
j = doc_eeprom(0xf0 + i)-32;
copy_2_ram1(j);
}
}
}
//========= 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;

×