Màn hình quảng cáo ở chế độ văn bản sử dụng ma trận LED 5x7 có điều khiển bằng máy tính, chương 10 ppt

20 353 1
Màn hình quảng cáo ở chế độ văn bản sử dụng ma trận LED 5x7 có điều khiển bằng máy tính, chương 10 ppt

Đ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

ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 36 Chương 10: m· nguån //Chuong trinh dieu khien bang quang cao dung ma tran LED 5x7 // (Do an mon hoc: Thiet ke mach Logic) //Nguoi viet: Le Minh Hung // Nguyen Duc Linh // Lop DT6-K43-DHBKHN #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <dos.h> #define DataReg 0x378 #define StatusReg 0x379 #define ControlReg 0x37A void Initialize(); void Interfacing(); void Print_Code(int code); void ItoSofB(int i,char up[],char down[]); void Print_Character(int column,int row,int code); void Print_Column(int column); void Print_Row(int row); void Print_Cell(int column,int row,char value); void Print_Matrix(int code); int Out_Char(int column,int row,int code); void Reset(); ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 37 void Power(); // int character[64][6]={ //character[x][0-4]: code of character'column //character[x][5]: ASCII code {126,17,17,17,126,65}, // 0-A {127,73,73,73,54,66}, // 1-B {62,65,65,65,34,67}, // 2-C {127,65,65,34,28,68}, // 3-D {127,73,73,73,65,69}, // 4-E {127,9,9,9,1,70}, // 5-F {62,65,73,73,58,71}, // 6-G {127,8,8,8,127,72}, // 7-H {0,65,127,65,0,73}, // 8-I {32,64,65,63,1,74}, // 9-J {127,8,20,34,65,75}, //10-K {127,64,64,64,64,76}, //11-L {127,2,12,2,127,77}, //12-M {127,4,8,16,127,78}, //13-N {62,65,65,65,62,79}, //14-O {127,9,9,9,6,80}, //15-P {62,65,81,33,94,81}, //16-Q {127,9,25,41,70,82}, //17-R {38,73,73,73,50,83}, //18-S {1,1,127,1,1,84}, //19-T {63,64,64,64,63,85}, //20-U {31,32,64,32,31,86}, //21-V {63,64,48,64,63,87}, //22-W {99,20,8,20,99,88}, //23-X {7,8,120,8,7,89}, //24-Y {97,81,73,69,67,90}, //25-Z {62,81,73,69,62,48}, //26-0 {0,66,127,64,0,49}, //27-1 ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 38 {66,97,81,73,70,50}, //28-2 {33,65,69,75,49,51}, //29-3 {24,20,18,127,16,52}, //30-4 {39,69,69,69,57,53}, //31-5 {60,74,73,73,48,54}, //32-6 {1,113,9,5,3,55}, //33-7 {54,73,73,73,54,56}, //34-8 {6,73,73,41,30,57}, //35-9 {8,8,62,8,8,43}, //36-+ {8,8,8,8,8,45}, //37 {20,8,62,8,20,42}, //38-* {32,16,8,4,2,47}, //39-/ {20,20,20,20,20,61}, //40-= {0,65,34,20,8,62}, //41-> {8,20,34,65,0,60}, //42-< {0,96,96,0,0,46}, //43 {0,80,48,0,0,44}, //44-, {0,54,54,0,0,58}, //45-: {0,86,54,0,0,59}, //46-; {0,5,3,0,0,39}, //47-' {0,3,0,3,0,34}, //48-" {0,28,34,65,0,40}, //49-( {0,65,34,28,0,41}, //50-) {0,127,65,65,0,91}, //51-[ {0,65,65,127,0,93}, //52-] {0,0,95,0,0,33}, //53-! {2,1,81,9,6,63}, //54-? {50,73,121,65,62,64}, //55-@ {20,62,20,62,20,35}, //56-# {36,42,127,42,18,36}, //57-$ {35,19,8,100,98,37}, //58-% {4,2,1,2,4,94}, //59-^ {54,73,85,34,80,38}, //60-& {2,4,8,16,32,92}, //61-\ {0,0,127,0,0,124}, //62-| ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 39 {0,0,0,0,0,32}, //63- }; int matrix[128]; int power; // void main() { int column=0,row=0,pos=0,i; char scan,ch; Interfacing(); Initialize(); for(i=0;i<128;i++) matrix[i]=63; for(;;) { Print_Column(column); Print_Row(row); Print_Matrix(matrix[pos]); Print_Code(matrix[pos]); window(5+column*2,2+row*2,5+column*2,2+row*2); if((scan=getch())==0) { ch=getch(); switch(ch) { case 59: //F1 Power(); break; case 60: //F2 if(power==1) Reset(); break; case 75: //Left Arrow ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 40 if(power==1) { if(pos>0) pos ; if(column==0) { if(row>0) { column=16; row ; } else column=1; } column ; } break; case 77: //Right Arrow if(power==1) { if(pos<127) pos++; column++; if(column>15) { if(row<7) { column=0; row++; } else column=15; } } break; case 72: //Up Arrow if(power==1) { if(row>0) ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 41 { pos=pos-16; row ; } } break; case 80: //Down Arrow if(power==1) { if(row<7) { pos=pos+16; row++; } } break; } // for switch(ch) } // for if((scan=getch())==0) else { ch=scan; switch(ch) { case 27: //ESC //Dua ra tin hieu tat mach ngoai (chan 17,bit3=1) outportb(ControlReg,8); // 8 = 00001000b return; case 13: //Enter if((row<7)&&(power==1)) { pos=pos+(16-column); row++; ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 42 column=0; } break; default: if((isprint(ch))&&(power==1)) { ch=toupper(ch); for(i=0;i<64;i++) if(character[i][5]==ch) { Print_Character(column,row,ch); if(Out_Char(column,row,i)==0) { textbackground(LIGHTGRAY); textcolor(RED); window(4,25,30,25);clrscr(); cprintf("Khong gui duoc ky tu !"); } else { textbackground(LIGHTGRAY); window(4,25,30,25);clrscr(); } matrix[pos]=i; break; } if(pos<127) pos++; if(column==15) { if(row<7) { column=-1; row++; } ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 43 else column=14; } column++; } // for if(isprint(ch)) break; } // for switch(ch) } // for else } } // void Initialize() { //Dong mach ngoai: chan 17,bit3=1 outportb(ControlReg,8); // 8 = 00001000b power=0; //Chua cho phep chuong trinh hoat dong textbackground(BLACK); textcolor(WHITE); window(16,20,18,20);clrscr(); printf("OFF"); } // void Power() { unsigned char result; if(power==0) { //Kiem tra xem chan 13 co o muc cao (bit4=1) result=inportb(StatusReg); if(result&16 !=0) // 16=10000b { //Neu bit4=1 (mach ngoai da duoc cap nguon) ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 44 power=1; //Cho phep chuong trinh hoat dong textbackground(RED); textcolor(WHITE); window(16,20,18,20);clrscr(); printf("ON"); //Dua ra tin hieu dong mach ngoai (chan 17,bit3=0) //va thiet lap trang thai ban dau: dong bo dem 74244(chan //1,bit0=0),khong cho phep ghi vao RAM(chan 14,bit1=1) outportb(ControlReg,2); // 2 = 00000010b } else { textbackground(LIGHTGRAY); textcolor(RED); window(4,25,30,25);clrscr(); cprintf("Chua dong nguon cho mach!"); } } else { //Khong cho phep chuong trinh hoat dong power=0; textbackground(BLACK); textcolor(WHITE); window(16,20,18,20);clrscr(); printf("OFF"); //Dua ra tin hieu tat mach ngoai (chan 17,bit3=1) outportb(ControlReg,8); // 8 = 00001000b } } ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 45 // void Interfacing() { textmode(C40); textbackground(BLUE);window(0,0,40,25);clrscr( ); textbackground(BLACK);window(5,2,37,25);clrscr (); textcolor(BLUE); textbackground(LIGHTGRAY);window(4,1,36,17);cl rscr(); textcolor(LIGHTGRAY); textbackground(BLACK);window(5,2,35,17);clrscr (); cprintf(" ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ "); cprintf("ÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ"); cprintf(" ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ "); cprintf("ÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ"); cprintf(" ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ "); cprintf("ÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ"); cprintf(" ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ "); cprintf("ÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ"); [...]... III: Phần mềm điều khiển ch-ơng III: H-ớng dẫn sử dụng ch-ơng trình Ch-ơng trình điều khiển chỉ chứa trong một file tên là: Quangcao.exe, chạy trong môi tr-ờng MSDOS Khi kích hoạt file đó thì giao diện của ch-ơng trình sẽ xuất hiện nh- hình III.1 Hình III.1 Giao diện của ch-ơng trình điều khiển 52 Thiết kế mạch logic số Phần III: Phần mềm điều khiển Phần chính của giao diện là một ma trận các ô gồm... hiện + Code (mã): chỉ mã của ký tự (theo bảng mã qui -ớc của chúng tôi đã đ-ợc đ-a ra ở ch-ơng I của phần này) xuất hiện tại vị trí con trỏ màn hình Bên cạnh đó là ma trận 5x7 các ô vuông biểu thị các bit 1 (đèn LED sáng) và bit 0 (đèn LED tắt) của ma trận 5x7 LED ứng với ký tự hiển thị ở góc d-ới bên trái giao diện là bảng chỉ dẫn các phím chức năng: + F1 Power: Bật / tắt ch-ơng trình Lúc này, ch-ơng... phỏng ma trận đèn quảng cáo của mạch thực Mỗi ô là nơi để hiển thị ký tự mà ng-ời dùng nhập vào ở góc d-ới bên phải giao diện là các thông số của ô chữ tại vị trí con trỏ màn hình xuất hiện gồm có: + Column (cột): chỉ số thứ tự của cột (từ 0 đến 15) mà con trỏ màn hình xuất hiện + Row (hàng): chỉ số thứ tự của hàng (từ 0 đến 7) mà con trỏ màn hình xuất hiện + Code (mã): chỉ mã của ký tự (theo bảng mã... -void Reset() { int i; //Dua ra tin hieu dong mach (chan 17, bit3=1) outportb(ControlReg ,10) ; // 10 = 000 0101 0b delay(500); // Tre 0.5s //Thiet lap lai trang thai ban dau: bit0=0(dong bo dem 74244), //bit1=1(khong cho ghi vao RAM), bit3=0(mo mach) outportb(ControlReg,2); // 2 = 00000010b for(i=0;i . sẽ xuất hiện nh- hình III.1. Hình III.1 Giao diện của ch-ơng trình điều khiển Thiết kế mạch logic số Phần III: Phần mềm điều khiển 53 Phần chính của giao diện là một ma trận các ô gồm 8 hàng. tự (theo bảng mã qui -ớc của chúng tôi đã đ-ợc đ-a ra ở ch-ơng I của phần này) xuất hiện tại vị trí con trỏ màn hình. Bên cạnh đó là ma trận 5x7 các ô vuông biểu thị các bit 1 (đèn LED sáng). mô phỏng ma trận đèn quảng cáo của mạch thực. Mỗi ô là nơi để hiển thị ký tự mà ng-ời dùng nhập vào. ở góc d-ới bên phải giao diện là các thông số của ô chữ tại vị trí con trỏ màn hình xuất

Ngày đăng: 07/07/2014, 00:20

Từ khóa liên quan

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

Tài liệu liên quan