1. Trang chủ
  2. » Thể loại khác

ĐỀ bài CHẠY CHỮ TRÊN MA TRẬN LED

18 341 0

Đ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

Định dạng
Số trang 18
Dung lượng 1,07 MB
File đính kèm mach va code.rar (67 KB)

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

Nội dung

Các led đơn trong cùng một hàng thì được nối chung anot catot còn trong cùng một cột thì được nối chung catot anot.. • Tại một thời điểm ta không thể hiển thị một kí tự với trên 2 hàng 2

Trang 1

ĐẠI HỌC QUỐC GIA TPHCM

1 Hoàng Đình Trung 21204123

ĐỀ BÀI: CHẠY CHỮ TRÊN MA TRẬN LED

GVHD: THẦY ĐOÀN THẾ THẢO

SVTH:

Trang 2

I Tổng quan:

 Với sự phát triển rất nhanh của công nghệ ngày nay, việc lập trình

vi điều khiển trong các ứng dụng cuộc sống ngày càng phổ biến.

 Dòng vi điều khiển PIC sản xuất bởi Microchip có nhiều tính năng đặc biệt, tốc độ cao, ổn định và nhiều công cụ cũng như nhiều thư viện hổ trợ

 PIC được ứng dụng trong các dự án điều khiển tự động trong dân dụng, sản xuất, nghiên cứu và đo lường.

 Ứng dụng PIC chạy chữ trên led ma trận rất phổ biến trong cuộc sống như làm biển quảng cáo, biển báo hay có thể dung làm trang trí.

Trang 3

II Hiện chữ trên LED 3

• Led ma trận gồm các led xếp thành hàng và cột Các led đơn trong cùng một hàng thì được nối chung anot (catot) còn trong cùng một cột thì được nối chung catot (anot).

• Tại một thời điểm ta không thể hiển thị một kí tự (với trên 2 hàng 2 cột) trên ma trận Do đó để có thể hiển thị một kí tự trên led ma

trận thì ta phải lợi dụng hiện tượng lưu ảnh trên võng mạc Ta phải

để cho từng hàng (cột) của kí tự lần lượt kiện thị trên led ma trận với tần số cao

• Ta xác định mức logic rồi cấp nguồn cho hàng (cột) và cột (hàng) tương ứng đề led sáng theo mức logic ta xác định từ trước.

1 Nguyên tắc quét LED

Trang 4

II Phương án quét led 4

• Trong bài tập lớn này chọn quét led theo cột.

• Led ma trận dùng là 8x8 vì vậy mỗi cột có 8 led Để mã hóa dữ liệu cho 1 cột ta dùng 1 byte.

• Ta lưu dữ liệu đã mã hóa vào 1 file để dùng khi lập trình.

• Độ rộng mỗi kí tự là 5 cột và byte cuối cùng là byte dữ liệu trống

để tạo khoảng cách giữa 2 kí tự Vậy có 6 byte để lưu dữ liệu xuất cho 1 kí tự

• Ta sử dụng IC 74HC595 để dịch bit.

2 Chọn phương án quét LED

Trang 5

3 Lưu đồ giải thuật: 5

Lấy mẫu dữ liệu

i = 1

Xuất dữ liệu của cả cột i ra 74HC595

i = i+1

i>8

B1: Lấy mẫu dữ liệu : lấy các dữ liệu

về mức logic cần cấp cho các cột

(hàng) của ma trận

B2: Bắt đầu với cột i=1.

B3: Cấp nguồn cho cột i

B4: Xuất dữ liệu tương ứng với cột

đó ( đã được lấy mẫu từ trước) để

cấp nguồn cho các hàng của ma

trận

B5: i=i+1 ; quay lại bước 2 nếu i>8

,nếu không thì quay lại bước 3

Trang 6

III Giới thiệu dụng cụ:

 Led ma trận bao gồm các led đơn

được xếp thành hàng và cột Các

led đơn trong cùng một hàng thì

được nối chung anot (catot) còn

trong cùng một cột thì được nối

chung catot (anot).

 Để các led có thể sáng ta phải cấp

nguồn cho led như sau : cấp mức

cao (thấp) cho hàng và mức thấp

(cao) cho cột.

Trang 7

III Giới thiệu dụng cụ:

 Với cách sắp xếp như trên tại một

thời điểm ta không thể hiển thị một

kí tự (với trên 2 hàng 2 cột) trên ma

trận Do đó để có thể hiển thị một kí

tự trên led ma trận thì ta phải lợi

dụng hiện tượng lưu ảnh trên võng

mạc.

 Ta phải để cho từng hàng (cột) của

kí tự lần lượt kiện thị trên led ma

trận với tần số cao

Trang 8

2 IC74HC595: 8

 IC 74HC595 là ic ghi dịch kết hợp chốt dữ liệu, đầu

vào nối tiếp đầu ra song song.

 Chân Q0 tới Q7: đầu ra dữ liệu song song.

 Chân DS: chân đầu vào dữ liệu nối tiếp.

 Chân VCC và GND: 2 chân cấp nguồn.

 Chân OE (13): chân cho phép tích cực ở mức thấp

Khi chân này ở mức cao tất cả các đầu ra trở về trạng

thái cao trở.

Trang 9

2 IC74HC595:

9

 Chân Q7’: chân dữ liệu nối tiếp.

 Chân SH_CP: chân vào xung clock Khi có xung tích

cực sườn dương thì 1 bit được dịch vào ic.

 Chân ST_CP: chân xung clock chốt dữ liệu Khi có

xung tích cực sườn dương thì xuất dữ liệu lên các

chân output

 Chân MR: khi chân này xuống mức 0 thì dữ liệu trên

ic bị xóa

Trang 10

IV Lưu đồ giải thuật:

10

Start

Xuất giá trị 32 cột bắt đầu từ next

Interrupts timer0

Next > độ dài chuổi

Đ

S

Next

Next =0

Next ++

Start

Giá trị cần xuất

Xuất mức cao hoặc mức thấp IC1 chạy

Xuất giá trị cho IC2 cấp mức điện dáp cho từng hàng

1

Chương

trình

chính:

2

Chương trình

con:

Trang 11

V Code chương trình: 11

#include <16F877A.h>

#include <def_877a.h>

#device *=16 adc=10

#FUSES NOWDT, HS, NOPUT,

NOPROTECT, NODEBUG,

NOBROWNOUT,NOLVP, NOCPD,

NOWRT

#use delay(clock=20000000)

#include "font.c"

#include <trung.h>

#define ic595_sck1 PIN_B0

#define ic595_data1 PIN_B1

#define ic595_lcl1 PIN_B2

#define ic595_sck2 PIN_B3

#define ic595_data2 PIN_B4

#define ic595_lcl2 PIN_B5

unsigned int8 next=0,lengh_STR;

unsigned char count=0;

unsigned char welcome[]=" DHBK CK12CD Trung Ngu Sang Thien ";

unsigned char *str;

#int_timer0 void ngat_time0() {

set_timer0(0);

count++;

if(count==25){

count=0;

next++;

if(next>lengh_STR) next=0;

} }

Trang 12

IV Code chương trình: 12

void Ic74595_Write(char data,char ic,char

bits) {

signed char count;

if(ic==1)

{

for(count=bits-1;count>=0;count )

{

if((( data>>count) & 0x01) ==1)

output_HIGH(ic595_data1);

else

output_LOW(ic595_data1);

output_high(ic595_sck1);

output_low(ic595_sck1);

}

output_high(ic595_lcl1);

output_low(ic595_lcl1);

}

if(ic==2) {

for(count=bits-1;count>=0;count ) {

if((( data>>count) & 0x01) ==1) output_HIGH(ic595_data2);

else output_LOW(ic595_data2);

output_high(ic595_sck2);

output_low(ic595_sck2);

} output_high(ic595_lcl2);

output_low(ic595_lcl2);

} }

Trang 13

V Code chương trình: 13

void chaychu()

{

lengh_str=strlen(str)*6;

unsigned char j,temp_font;

Ic74595_Write(1,1,1);

for(j=next;j<32+next;j++)

{

Temp_font=font[str[(j%lengh_STR)/With_of_font]

-32][j%With_of_font];

Ic74595_Write(temp_font,2,8);

delay_us(500);

Ic74595_Write(0,1,1);

}

}

void main (){

TRISB=0x00;

enable_interrupts(int_timer0);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); enable_interrupts(global);

set_timer0(0);

str=welcome;

while(true){

chaychu();

} }

Trang 14

VI: Mã hóa các chữ trong bài:

14

• #define With_of_font 6

• const char font[97][6]={

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//SPACE

• 0xFF,0xFF,0xA0,0xFF,0xFF,0xFF,//! 1

• 0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,//' 2

• 0xEB,0x80,0xEB,0x80,0xEB,0xFF,//# 3

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//$ 4

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//% 5

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//& 6

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,,//' 7

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//( 8

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//) 9

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//* 10

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//+ 11

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//, 12

• 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//- 13

• 0xFF,0x9F,0x9F,0xFF,0xFF,0xFF,//x 14

0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,// / 15 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//0 16 0xBB,0xBD,0x80,0xBF,0xBF,0xFF,//1 17 0x8D,0xB6,0xB6,0xB6,0xB9,0xFF,//2 18 0xB6,0xB6,0xB6,0xB6,0xC9,0xFF,//3 19 0xE7,0xEB,0xED,0x80,0xEF,0xFF,//4 20 0xB0,0xB6,0xB6,0xB6,0xCE,0xFF,//5 21 0xC1,0xB6,0xB6,0xB6,0xCD,0xFF,//6 22 0xBE,0xDE,0xEE,0xF6,0xF8,0xFF,//7 23 0xC9,0xB6,0xB6,0xB6,0xC9,0xFF,//8 24 0xB9,0xB6,0xB6,0xB6,0xC1,0xFF,//9 25 0xFF,0xC9,0xC9,0xFF,0xFF,0xFF,//: 26 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//// 27 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//< 28 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//= 29 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//> 30

Trang 15

VI: Mã hóa các chữ trong bài:

15

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//? 31

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//@ 32

0x83,0xF5,0xF6,0xF5,0x83,0xFF,//A 33

0x80,0xB6,0xB6,0xB6,0xC9,0xFF,//B 34

0xE3,0xDD,0xBE,0xBE,0xDD,0xFF,//C 35

0x80,0xBE,0xBE,0xBE,0xC1,0xFF,//D 36

0x80,0xB6,0xB6,0xB6,0xB6,0xFF,//E 37

0x80,0xF6,0xF6,0xF6,0xF6,0xFF,//F 38

0xC1,0xBE,0xBE,0xAE,0x8D,0xFF,//G 39

0x80,0xF7,0xF7,0xF7,0x80,0xFF,//H 40

0xBE,0xBE,0x80,0xBE,0xBE,0xFF,//I 41

0xBE,0xBE,0xC0,0xFE,0xFE,0xFF,//J 42

0x80,0xF7,0xEB,0xDD,0xBE,0xFF,//K 43

0x80,0xBF,0xBF,0xBF,0xBF,0xFF,//L 44

0x80,0xFD,0xFB,0xFD,0x80,0xFF,//M 45

0x80,0xFD,0xFB,0xF7,0x80,0xFF,//N 46

0xC1,0xBE,0xBE,0xBE,0xC1,0xFF,//O 47

0x80,0xF6,0xF6,0xF6,0xF9,0xFF,//P 48 0xC1,0xBE,0xAE,0x9E,0x81,0xFF,//Q 49 0x80,0xF6,0xE6,0xD6,0xB9,0xFF,//R 50 0xB9,0xB6,0xB6,0xB6,0xCE,0xFF,//S 51 0xFE,0xFE,0x80,0xFE,0xFE,0xFF,//T 52 0xC0,0xBF,0xBF,0xBF,0xC0,0xFF,//U 53 0xE0,0xDF,0xBF,0xDF,0xE0,0xFF,//V 54 0x80,0xDF,0xEF,0xDF,0x80,0xFF,//W 55 0x9C,0xEB,0xF7,0xEB,0x9C,0xFF,//X 56 0xFC,0xFB,0x87,0xFB,0xFC,0xFF,//Y 57 0x9E,0xAE,0xB6,0xBA,0xBC,0xFF,//Z 58 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//[ 59 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//\ 60 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//] 61 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//^ 62 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//_ 63

Trang 16

VI: Mã hóa các chữ trong bài:

16

0xC7,0xBB,0xBB,0xD7,0x83,0xFF,//a 65

0x81,0xB7,0xB7,0xB7,0xCF,0xFF,//b 66

0xFF,0xC7,0xBB,0xBB,0xBB,0xFF,//c 67

0xCF,0xB7,0xB7,0xB7,0x81,0xFF,//d 68

0xC7,0xAB,0xAB,0xAB,0xF7,0xFF,//e 69

0xFF,0xF7,0x83,0xF5,0xFF,0xFF,//f 70

0xF7,0xAB,0xAB,0xAB,0xC3,0xFF,//g 71

0x80,0xF7,0xFB,0xFB,0x87,0xFF,//h 72

0xFF,0xBB,0x82,0xBF,0xFF,0xFF,//i 73

0xFF,0xBF,0xBF,0xC2,0xFF,0xFF,//j 74

0xFF,0x80,0xE7,0xDB,0xBD,0xFF,//k 75

0xFF,0xFF,0x80,0xFF,0xFF,0xFF,//l 76

0x83,0xFB,0x87,0xFB,0x87,0xFF,//m 77

0x83,0xF7,0xFB,0xFB,0x87,0xFF,//n 78

0xC7,0xBB,0xBB,0xBB,0xC7,0xFF,//o 79

0x83,0xEB,0xEB,0xEB,0xF7,0xFF,//p 80

0xF7,0xEB,0xEB,0xEB,0x87,0xFF,//q 81

0x83,0xF7,0xFB,0xFB,0xF7,0xFF,//r 82 0xB7,0xAB,0xAB,0xAB,0xDB,0xFF,//s 83 0xFF,0xFB,0xC0,0xBB,0xBB,0xFF,//t 84 0xC3,0xBF,0xBF,0xDF,0x83,0xFF,//u 85 0xE3,0xDF,0xBF,0xDF,0xE3,0xFF,//v 86 0xC3,0xBF,0xCF,0xBF,0xC3,0xFF,//w 87 0xBB,0xD7,0xEF,0xD7,0xBB,0xFF,//x 88 0xBB,0xD7,0xEF,0xF7,0xFB,0xFF,//y 89 0xBB,0x9B,0xAB,0xB3,0xBB,0xFF,//z 90 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//^ 62 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//-> 93 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//<- 94 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// 95 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//BLANK CHAR 96};

Trang 17

VI Mô phỏng proteus: 17

Trang 18

VII Chạy 18

Ngày đăng: 07/01/2016, 16:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm