9 chuong 8 nguyen ly hoat dong

13 111 0
9 chuong 8 nguyen ly hoat dong

Đ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

QUANG BÁO MA TRẬN GIAO TIẾP MÁY TÍNH Chương CHƯƠNG NGUYÊN HOẠT ĐỘNG VÀ LƯU ĐỒ GIẢI THUẬT 8.1 NGUYÊN HOẠT ĐỘNG CỦA MẠCH QUANG BÁO Khi khởi động mạch quang báo, vi điều khiển đọc thông tin lưu trước ROM tốc độ chạy chữ, kiểu chạy chữ (trái sang phải, phải sang trái…), kích thước hiển thị, nội dung tin Sau vi điều khiển đối chiếu kí tự nội dung tin để copy font tương ứng vào RAM chương trình hiển thị, gọi chương trình hiển thị để hiển thị nội dung bảng quang báo Khi chương trình quản lí máy tính yêu cầu cập nhật tin cho bảng quang báo, vi điều khiển ngừng việc hiển thị để chờ nhận liệu từ máy tính Sau lưu nội dung vừa nhận vào ROM để phục vụ cho việc hiển thị bảng quang báo 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 hàng cần hiển thị tần số quét nhỏ cho chu kỳ cần khoảng 25Hz (40ms) nhằm bảo đảm cho mắt thấy led sáng không nhấp nháy Dữ liệu font chữ đổ qua cột Khi quét hết 128 cột hình Khi chạy chữ cần hiển thị hình khác dịch cột 8.2 LƯU ĐỒ GIẢI THUẬT VÀ CODE CHƯƠNG TRÌNH 8.2.1 LƯU ĐỒ GIẢI THUẬT 8.2.1.1 LƯU ĐỒ GIẢI THUẬT CỦA HỆ THỐNG Trang 57 QUANG BÁO MA TRẬN GIAO TIẾP MÁY TÍNH Chương Trang 58 QUANG BÁO MA TRẬN GIAO TIẾP MÁY TÍNH Chương Hình 8.1.Lưu đồ giải thuật hệ thống 8.2.1.2 Lưu đồ giải thuật chương trình BEGIN KHAI BÁO BIẾN KHAI BÁO CHƯƠNG TRÌNH CON GỌI CHƯƠNG TRÌNH COPY FONT VÀO RAM NGẮT NHẬN DỮ LIỆU Đ S GỌI CHƯƠNG TRÌNH HIỂN THỊ END Trang 59 QUANG BÁO MA TRẬN GIAO TIẾP MÁY TÍNH Chương Hình 8.2.Lưu đồ giải thuật chương trình 8.2.1.3 Chương trình hiển thị BEGIN KHAI BAO BIEN i, j So hang quet = Dich font tu RAM vao 595 Đủ liệu 16 bytes? Đủ 16 hàng ? END Trang 60 QUANG BÁO MA TRẬN GIAO TIẾP MÁY TÍNH Chương Hình 8.3.Lưu đồ giải thuật chương trình hiển thị 8.2.1.4 Chương trình copy font vào RAM BEGIN GIẢI MÃ ĐỊA CHỈ MẢNG FONT COPY FONT VAO RAM ĐỦ 16 BYTES? TĂNG ĐỊA CHỈ RAM LÊN 16 ĐƠN VỊ END Trang 61 QUANG BÁO MA TRẬN GIAO TIẾP MÁY TÍNH Chương Hình 8.4.Lưu đồ giải thuật chương trình hiển thị Trang 62 QUANG BÁO MA TRẬN GIAO TIẾP MÁY TÍNH Chương 8.2.1.5 Lưu đồ giải thuật chương trình ghi liệu vàoRAM BEGIN XUẤT BIT CAO CỦA ĐỊA CHỈ XUẤT BIT THẤP CỦA ĐỊA CHỈ GHI DỮ LIỆU VÀO RAM END Hình 8.4.Lưu đồ giải thuật chương trình ghi liệu vàoRAM 8.2.1.6 Lưu đồ giải thuật chương trình đọc liệu từ RAM BEGIN XUẤT BIT CAO CỦA ĐỊA CHỈ XUẤT BIT THẤP CỦA ĐỊA CHỈ ĐỌC DỮ LIỆU TỪ RAM END Hình 8.5.Lưu đồ giải thuật chương trình đọc liệu từ RAM Trang 63 8.2.2 CODE CHƯƠNG TRÌNH 8.2.2.1 Chương trình vi điều khiển //file thu vien dieu khien 16f877a #include //khai bao cau hinh cho 16f877a #fuses xt,nowdt //su dung thach anh 4MHz #use delay(clock=4000000) #use fast_io(a) #include //dinh kem file module_EXTRAM.c #include //dinh kem file module_display.c //#include //dinh kem file 2404.c //khai bao su dung giao tiep may tinh thong qua RS232 #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stop= 1) #include //khai bao cac bien su dng chuong trinh // Khai bao bien -int8 counter; int8 max_char; int1 update_ram; char info[25]; // // -Khai bao cac chuong trinh //Chuong trinh giai ma dia chi int32 add_char_rom(int8 index_char); //Chuong trinh copy ma font vao RAM void copy2ram(); //Chuong trinh hien thi void display(); // //Chuong trinh ngat nhan du lieu #INT_RDA void Receive_isr() { Char c; if (kbhit()) { c = getc(); if (c==':') counter=0; info[counter]=c; counter++; update_ram=1; putc(c); } } //Chuong trinh chinh bat dau tai day void main() { ENABLE_INTERRUPTS(INT_RDA); enable_interrupts(global); set_tris_a(0); output_a(0); update_ram=0; //cho phep ngat RAD //cho phep ngat toan cuc //chon port A mode output //Xoa du lieu cua port a //Xoa co cap nhat ram init_595(); //thiet lap cac chan //dk quet hang,xuat data //Goi ham copy font vao ram copy2ram(); while (true) { if (update_ram==1) { copy2ram(); update_ram=0; } display(); }//end of while }//end of main //goi hien thi // Cac chuong trinh // -Ham lay dia chi bat dau cua day font ROM -int32 add_char_rom(int8 index_char) { int32 index_add; switch (info[index_char]) { case '0':index_add = 0;//No.0 break; case '1':index_add = 16;//No.1 break; case '2':index_add = 32;//No.2 break; case '3':index_add = 48;//No.3 break; case '4':index_add = 64;//No.4 break; case '5':index_add = 80;//No.5 break; case '6':index_add = 96;//No.6 break; case '7':index_add = 112;//No.7 break; case '8':index_add = 128;//No.8 break; case '9':index_add = 144;//No.9 break; case 'a':index_add = 160;//a break; case 'b':index_add = 176;//b break; case 'c':index_add = 192;//c break; case 'd':index_add = 208;//d break; case 'e':index_add = 224;//e break; case 'f':index_add = 256;//f break; case 'g':index_add = 272;//g break; case 'h':index_add = 288;//h break; case 'i':index_add = 304;//i break; case 'j':index_add = 320;//j break; case 'k':index_add = 336;//k break; case 'l':index_add = 352;//l break; case 'm':index_add = 368;//m break; case 'n':index_add = 384;//n break; case 'o':index_add = 400;//o break; case 'p':index_add = 416;//p break; case 'q':index_add = 432;//q break; case 'r':index_add = 448;//r break; case 's':index_add = 464;//s break; case 't':index_add = 480;//t break; case 'u':index_add = 496;//u break; case 'v':index_add = 512;//v break; case 'w':index_add = 528;//w break; case 'x':index_add = 544;//x break; case 'y':index_add = 560;//y break; case 'z':index_add = 576;//z break; default : index_add= 592;//space break; }//end of switch return(index_add);//ham tra ve gia tri cua index_char } // -ket thuc cua ham - // Ham copy ma font vao RAM chuong trinh -void copy2ram() { int8 i,j; int32 base_rom_add; day font int32 base_ram_add; base_ram_add=0x00; //max_char=counter-5; //khai bao dia chi bat dau cua //khai bao dia chi goc cho RAM for(i=4;i

Ngày đăng: 06/09/2017, 23:22

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan