Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
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)
Nội dung
ĐẠI HỌC QUỐC GIA TPHCM TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐỀ BÀI: CHẠY CHỮ TRÊN MA TRẬN LED GVHD: THẦY ĐOÀN THẾ THẢO SVTH: STT Họ tên MSSV Hoàng Đình Trung 21204123 Phạm Đình Ngự 21202484 Phạm Minh Sang 21203102 Phạm Đức Thiện 21203589 I Tổng quan: Với phát triển nhanh công nghệ ngày nay, việc lập trình vi điều khiển ứng dụng sống ngày phổ biến Dòng vi điều khiển PIC sản xuất Microchip có nhiều tính đặc biệt, tốc độ cao, ổn định nhiều công cụ nhiều thư viện hổ trợ PIC ứng dụng dự án điều khiển tự động dân dụng, sản xuất, nghiên cứu đo lường Ứng dụng PIC chạy chữ led ma trận phổ biến sống làm biển quảng cáo, biển báo hay dung làm trang trí II Hiện chữ LED Nguyên tắc quét LED • Led ma trận gồm led xếp thành hàng cột Các led đơn hàng nối chung anot (catot) cột nối chung catot (anot) • Tại thời điểm ta hiển thị kí tự (với hàng cột) ma trận Do để hiển thị kí tự led ma trận ta phải lợi dụng tượng lưu ảnh võng mạc Ta phải hàng (cột) kí tự kiện thị led ma trận với tần số cao • Ta xác định mức logic cấp nguồn cho hàng (cột) cột (hàng) tương ứng đề led sáng theo mức logic ta xác định từ trước II Phương án quét led Chọn phương án quét LED • Trong tập lớn chọn quét led theo cột • Led ma trận dùng 8x8 cột có led Để mã hóa liệu cho cột ta dùng byte • Ta lưu liệu mã hóa vào file để dùng lập trình • Độ rộng kí tự cột byte cuối byte liệu trống để tạo khoảng cách kí tự Vậy có byte để lưu liệu xuất cho kí tự • Ta sử dụng IC 74HC595 để dịch bit II Phương án quét led Start Lưu đồ giải thuật: Lấy mẫu liệu B1: Lấy mẫu liệu : lấy liệu mức logic cần cấp cho cột (hàng) 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 liệu tương ứng với cột ( lấy mẫu từ trước) để cấp nguồn cho hàng ma trận B5: i=i+1 ; quay lại bước i>8 ,nếu không quay lại bước i=1 Xuất liệu cột i 74HC595 i = i+1 i>8 III Giới thiệu dụng cụ: Led ma trận 8x8 Led ma trận bao gồm led đơn xếp thành hàng cột Các led đơn hàng nối chung anot (catot) cột nối chung catot (anot) Để led sáng ta phải cấp nguồn cho led sau : cấp mức cao (thấp) cho hàng mức thấp (cao) cho cột III Giới thiệu dụng cụ: Led ma trận 8x8 Với cách xếp thời điểm ta hiển thị kí tự (với hàng cột) ma trận Do để hiển thị kí tự led ma trận ta phải lợi dụng tượng lưu ảnh võng mạc Ta phải hàng (cột) kí tự kiện thị led ma trận với tần số cao IC74HC595: IC 74HC595 ic ghi dịch kết hợp chốt liệu, đầu vào nối tiếp đầu song song Chân Q0 tới Q7: đầu liệu song song Chân DS: chân đầu vào liệu nối tiếp Chân VCC GND: 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 mức cao tất đầu trở trạng thái cao trở IC74HC595: Chân Q7’: chân 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 bit dịch vào ic Chân ST_CP: chân xung clock chốt liệu Khi có xung tích cực sườn dương xuất liệu lên chân output Chân MR: chân xuống mức liệu ic bị xóa IV Lưu đồ giải thuật: 10 Start Chương trình chính: Chương trình con: Next Xuất giá trị 32 cột next S Next ++ Giá trị cần xuất Xuất mức cao mức thấp IC1 chạy Interrupts timer0 Next > độ dài chuổi Start Đ Next =0 Xuất giá trị cho IC2 cấp mức điện dáp cho hàng V Code chương trình: #include #include #device *=16 adc=10 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #include "font.c" #include #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 11 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; } } IV Code chương trình: 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); } 12 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); } } V Code chương trình: 13 void chaychu() void main (){ { TRISB=0x00; lengh_str=strlen(str)*6; enable_interrupts(int_timer0); unsigned char j,temp_font; Ic74595_Write(1,1,1); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); for(j=next;j 30 VI: Mã hóa chữ bài: 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 15 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 VI: Mã hóa chữ bài: 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 16 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,//[...]... Temp_font=font[str[(j%lengh_STR)/With_of_font] str=welcome; -32][j%With_of_font]; while(true){ Ic74595_Write(temp_font,2,8); chaychu(); delay_us(500); } Ic74595_Write(0,1,1); } } } VI: Mã hóa các chữ trong bài: • • • • • • • • • • • • • • • • • #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... 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 VI: Mã hóa các chữ trong bài: 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... 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 VI: Mã hóa các chữ trong bài: 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... 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); } } V Code chương trình: 13 void chaychu() void main (){ { TRISB=0x00; lengh_str=strlen(str)*6; enable_interrupts(int_timer0); unsigned char j,temp_font; Ic74595_Write(1,1,1); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); for(j=next;j 93 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// ... Ứng dụng PIC chạy chữ led ma trận phổ biến sống làm biển quảng cáo, biển báo hay dung làm trang trí II Hiện chữ LED Nguyên tắc quét LED • Led ma trận gồm led xếp thành hàng cột Các led đơn hàng... (hàng) tương ứng đề led sáng theo mức logic ta xác định từ trước II Phương án quét led Chọn phương án quét LED • Trong tập lớn chọn quét led theo cột • Led ma trận dùng 8x8 cột có led Để mã hóa... nguồn cho hàng ma trận B5: i=i+1 ; quay lại bước i>8 ,nếu không quay lại bước i=1 Xuất liệu cột i 74HC595 i = i+1 i>8 III Giới thiệu dụng cụ: Led ma trận 8x8 Led ma trận bao gồm led đơn xếp thành