Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
206,52 KB
Nội dung
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