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

Chia sẻ: Nguyen Van Luong | Ngày: | Loại File: PDF | Số trang:20

0
405
lượt xem
229
download

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

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Phần chính của giao diện là một ma trận các ô gồm 8 hàng x 16 cột 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 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...

Chủ đề:
Lưu

Nội dung Text: 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

  1. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 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 #include #include #include #include #include #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(); 36
  2. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 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 37
  3. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn {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-| 38
  4. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn {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
  5. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 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(pos15) { if(row0) 40
  6. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn { pos=pos-16; row--; } } break; case 80: //Down Arrow if(power==1) { if(row
  7. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn column=0; } break; default: if((isprint(ch))&&(power==1)) { ch=toupper(ch); for(i=0;i
  8. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 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) 43
  9. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn 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 } } 44
  10. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn //-------------------------------------------- --------------------- 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("ÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ"); 45
  11. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn cprintf(" ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ "); cprintf("ÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ"); cprintf(" ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ "); cprintf("ÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ"); cprintf(" ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ "); cprintf("ÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ"); cprintf(" ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ \r"); textbackground(LIGHTGRAY);window(5,17,35,17);c lrscr(); window(19,18,36,25);clrscr(); textbackground(BLACK);window(31,18,35,24);clrs cr(); textcolor(BLUE);textbackground(LIGHTGRAY); window(20,19,30,19);clrscr();cprintf("Column:" ); window(20,21,30,21);clrscr();cprintf("Row:"); window(20,23,30,23);clrscr();cprintf("Code:"); window(4,19,17,23);clrscr(); window(4,25,30,25);clrscr(); window(6,20,17,21);clrscr();cprintf("F1 - Power"); window(6,21,17,22);clrscr();cprintf("F2 - Reset"); 46
  12. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn window(5,22,17,23);clrscr();cprintf("ESC - Exit"); } //-------------------------------------------- --------------------- void ItoSofB(int i,char up[],char down[])//Chuyen so nguyen // sang chuoi cac so nhi phan { int j=0,k=0; do { if(i%2==0) up[j]='0'; else up[j]='1'; j++; i=i/2; } while(i!=0); up[j]='\0'; do { down[k]=up[j-1]; k++;j--; } while(j>=0); down[k-1]='\0'; } //-------------------------------------------- --------------------- void Print_Code(int code) { char up[7]; char down[7]; textcolor(RED);textbackground(LIGHTGRAY); window(27,23,30,23);clrscr(); itoa(code,up,10);cprintf("%s",up); 47
  13. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn window(22,24,30,24);clrscr(); ItoSofB(code,up,down);cprintf("%sB",down); } //-------------------------------------------- --------------------- void Print_Column(int column) { char up[7],down[7]; textcolor(RED);textbackground(LIGHTGRAY); window(27,19,30,19);clrscr(); itoa(column,up,10);cprintf("%s",up); window(22,20,30,20);clrscr(); ItoSofB(column,up,down);cprintf("%sB",down); } //-------------------------------------------- --------------------- void Print_Row(int row) { char up[7],down[7]; textcolor(RED);textbackground(LIGHTGRAY); window(27,21,30,21);clrscr(); itoa(row,up,10);cprintf("%s",up); window(22,22,30,22);clrscr(); ItoSofB(row,up,down);cprintf("%sB",down); } //-------------------------------------------- --------------------- void Print_Cell(int column,int row,char value) { if(value=='0') textbackground(BLACK); else textbackground(RED); textcolor(WHITE); 48
  14. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn window(31+column,18+row,31+column,18+row);clrs cr(); printf("%c",value); } //-------------------------------------------- --------------------- void Print_Matrix(int code) { int i,j,k,len; char up[9]; char down[9]; for(i=0;i
  15. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn printf("%c",code); } //-------------------------------------------- --------------------- int Out_Char(int column,int row,int code) //Dua ky tu co ma // code ra cong song song { int i; unsigned char result; int add; row=row
  16. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn outportb(ControlReg,1); // 1 = 00000001b //Dua ra tin hieu dong bo dem 74244 (bit0=0) // va khong cho ghi vao RAM (bit1=1) outportb(ControlReg,2); // 2 = 00000010b return 1; // Ket thuc ghi vao RAM } } return 0; } //-------------------------------------------- --------------------- void Reset() { int i; //Dua ra tin hieu dong mach (chan 17, bit3=1) outportb(ControlReg,10); // 10 = 00001010b 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
  17. ThiÕt kÕ m¹ch logic sè PhÇn 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
  18. 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 8 hµng x 16 cét 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 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· 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 tr×nh ch-a ®-îc bËt nªn bªn c¹nh ®ã lµ ch÷ OFF (t¾t). Khi nhÊn F1, ch-¬ng tr×nh sÏ kiÓm tra qua cæng song song xem m¹ch ngoµi ®· ®-îc cÊp nguån hay ch-a. NÕu m¹ch ngoµi ®· ®-îc cÊp nguån th× ch-¬ng tr×nh sÏ göi tÝn hiÖu ra cæng song song cho phÐp m¹ch ngoµi ho¹t ®éng, ®ång thêi cho phÐp ch-¬ng tr×nh ho¹t ®éng. Lóc ®ã, ch÷ OFF sÏ chuyÓn thµnh ON. NÕu m¹ch ngoµi ch-a ®-îc cÊp nguån th× ch-¬ng tr×nh sÏ hiÖn ra th«ng b¸o lµ: "Ch-a ®ãng nguån cho m¹ch ngoµi !". Khi ch-¬ng tr×nh ®ang ®-îc bËt mµ nhÊn F1 th× ch-¬ng tr×nh sÏ göi tÝn 53
  19. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn hiÖu ra cæng song song kh«ng cho phÐp m¹ch ngoµi ho¹t ®éng, ®ång thêi t¾t ch-¬ng tr×nh. + F2 – Reset: ThiÕt lËp l¹i. Khi ch-¬ng tr×nh ®ang ®-îc bËt mµ nhÊn F2 th× ch-¬ng tr×nh sÏ göi tÝn hiÖu ra cæng song song c¾t nguån cÊp cho m¹ch ngoµi kho¶ng 0.5 s, sau ®ã ®ãng l¹i nh»m thiÕt lËp l¹i hÖ thèng trë vÒ tr¹ng th¸i ban ®Çu. §ång thêi sÏ xo¸ toµn bé ma trËn c¸c « ký tù thµnh ký tù tr¾ng (m· 63). + ESC – exit: Tho¸t. Khi nhÊn phÝm ESC sÏ tho¸t khái ch-¬ng tr×nh ®iÒu khiÓn. Tr-íc khi tho¸t, ch-¬ng tr×nh sÏ göi tÝn hiÖu ra cæng song song ®Ó c¾t c¾t nguån cÊp cho m¹ch ngoµi. Khi ch-¬ng tr×nh ®· ®-îc bËt, ta cã thÓ dïng c¸c phÝm mòi tªn (, , , ) ®Ó di chuyÓn con trá ®Õn vÞ trÝ bÊt kú trªn trang mµn h×nh ®Ó nhËp ký tù cÇn hiÓn thÞ. Khi ký tù ®-îc nhËp vµo, nã hiÓn thÞ t¹i vÞ trÝ con trá mµn h×nh võa ®øng, sau ®ã, con trá tù ®éng nh¶y sang vÞ trÝ bªn c¹nh. Ch-¬ng tr×nh sÏ göi th«ng tin vÒ ký tù võa nhËp ra cæng song song ®Ó m¹ch ngoµi hiÓn thÞ, nÕu kh«ng thµnh c«ng th× sÏ cã th«ng b¸o: "Kh«ng göi ®-îc ký tù !". H×nh III.2 lµ h×nh ¶nh cña ch-¬ng tr×nh khi ®· ®-îc bËt vµ nhËp c¸c ký tù. Lóc nµy, con trá mµn h×nh ®· ®-îc dÞch chuyÓn ®Õn cét 2, hµng 2, ký tù t¹i « nµy lµ "L", cã m· lµ 11. Th«ng tin cña ký tù ®ã cã thÓ thÊy ë gãc d-íi bªn ph¶i b»ng c¶ sè thËp ph©n vµ sè nhÞ ph©n. 54
  20. ThiÕt kÕ m¹ch logic sè PhÇn III: PhÇn mÒm ®iÒu khiÓn H×nh III.2 – H×nh ¶nh cña ch-¬ng tr×nh khi ®-îc bËt 55

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản