intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

439
lượt xem
231
download
 
  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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
5=>2