vixuli

Màu nền
Font chữ
Font size
Chiều cao dòng

/* Chuong trinh mau LMD1 

Hien thi dong thoi chu L va N 

NTL - viet tren Keil C 

*/ 

#include <REGX51.H> 

sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich 

sbit DuLieu = 0x97; 

sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem 

sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang 

char tam; 

char data X1[8]={0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00}; 

char data X2[8]={0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00}; 

char data X3[8]={ 0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00}; 

char data X4[8]={0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81};  

char count=0,dem=5;  

void ISR_T0() interrupt 1 

count=count+1; 

if (count==5) 

{ count=0; 

dem=dem-1; 

if (dem==0) 

dem=5;

}

void main (void) 

{  

char TrungGian; 

int i,j; 

P1 = 0; 

TMOD=0x01; 

TH0=0xc3; 

TL0=0x50; 

EA=1; 

ET0=1;  

TR0=1; 

while (1){ 

DongBo = 1; 

for (i = 0; i <= 7; i++ ) 

{ switch (dem) 

case 1: TrungGian = X1[i];break; 

case 2: TrungGian = X2[i];break; 

case 3: TrungGian = X3[i];break; 

case 4: TrungGian = X4[i];break; 

}  

for (j=0; j<=7; j++)  

DuLieu = TrungGian%2; //phat bit LSB  

TrungGian = TrungGian/2; //dich phai 

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich 

clkIN = 0; 

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang 

clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo 

DongBo = 0; //tat xung dong bo o cac hang sau 

}  

gi?a sang 2 bên : 

#include <REGX51.H> 

sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich 

sbit DuLieu = 0x97; 

sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem 

sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang 

char tam; 

char data X1[8]={0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00}; 

char data X2[8]={0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00}; 

char data X3[8]={ 0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00}; 

char data X4[8]={0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81};  

char count=0,dem=0;  

void ISR_T0() interrupt 1 

count=count+1; 

if (count==10) 

{ count=0; 

dem=dem+1; 

if (dem==5) 

dem=0; 

}

void main (void) 

{  

char TrungGian; 

int i,j; 

P1 = 0; 

TMOD=0x01; 

TH0=0xc3; 

TL0=0x50; 

EA=1; 

ET0=1;  

TR0=1; 

while (1){ 

DongBo = 1; 

for (i = 0; i <= 7; i++ ) 

{ switch (dem) 

case 0: TrungGian = X1[i];break; 

case 1: TrungGian = X2[i];break; 

case 2: TrungGian = X3[i];break; 

case 3: TrungGian = X4[i];break; 

}  

for (j=0; j<=7; j++)  

DuLieu = TrungGian%2; //phat bit LSB  

TrungGian = TrungGian/2; //dich phai 

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich 

clkIN = 0; 

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang 

clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo 

DongBo = 0; //tat xung dong bo o cac hang sau 

}  

/* Chuong trinh mau LMD1 

Hien thi dong thoi chu L va N 

NTL - viet tren Keil C 

*/ 

#include <REGX51.H> 

sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich 

sbit DuLieu = 0x97;// 

sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem 

sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang 

char TrungGian; 

int i,j,count=0,k=24 ; 

char data X[32] = { 

0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00, 

0x00,0x43,0x85,0x89,0x91,0x61,0x00,0x00, 

0x00,0x41,0x81,0x91,0xf9,0x0e,0x00,0x00, 

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; 

//==========================ngat============== 

void ISR_T0(void) interrupt 1 

count=count+1; 

if(count==7) 

count=0; 

k=k-1; 

if(k==0) k=24; 

}  

//==================== 

void main (void){ 

P1 = 0; 

TMOD=0x01; 

TH0=0xc3; 

TL0=0x50; 

EA=1; 

ET0=1; 

TR0=1; 

while (1){ 

DongBo = 1; 

for (i = 0; i<=7; i++ )  

TrungGian=X[i+k]; 

for (j=0; j<=7; j++) 

DuLieu = TrungGian%2; //phat bit LSB  

TrungGian = TrungGian/2; //dich phai 

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich 

clkIN = 0; 

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang 

clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo 

DongBo = 0; //tat xung dong bo o cac hang sau 

}  

* Chuong trinh mau LMD3 

Hien thi mot vong tron do o ngoai va mot o vuong o trong  

*/ 

#include <REGX51.H> 

sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich 

sbit DuLieu = 0x97; 

sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem 

sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang

void main (void){ //do, xanh 

/* char data X[16] = {0x0,0xFF, 

0x7e,0x81, 

0x7e,0x81,  

0x18,0x81, 

0x18,0x81, 

0x18,0x81, 

0x18,0x81, 

0x00,0xFF};*/ 

char data X[16] = {//D .V.X 

0xc0,0x03, 

0xc0,0x03, 

0xc0,0x03, 

0xFC,0x3F, 

0xFC,0x3F, 

0xc0,0x03, 

0xC0,0x03, 

0xC0,0x03}; 

char TrungGian; 

int k,i,j; 

P1 = 0; 

while (1){ 

DongBo = 1; 

for (i = 0; i <= 7; i++ )  

for (k=0;k<2;k++) 

TrungGian = ~X[i*2+k];  

for (j=0; j<=7; j++) { 

DuLieu = TrungGian%2; //phat bit LSB  

TrungGian = TrungGian/2; //dich phai 

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich 

clkIN = 0; 

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang 

clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo 

DongBo = 0; //tat xung dong bo o cac hang sau 

}  

Chuong trinh mau LMD1 

Hien thi dong thoi chu L va N 

NTL - viet tren Keil C 

*/ 

#include <REGX51.H> 

sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich 

sbit DuLieu = 0x97; 

sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem 

sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang 

void delay(void) 

{  

TMOD=0x01; 

TH0=0x3c; 

TL0=0xb0; 

TR0=1; 

while(!TF0); 

TR0=0; 

TF0=0;

void main (void){ 

char data X[8] = {0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };// Ch? L và n 

char TrungGian; 

int i,j; 

P1 = 0; 

while (1){ 

DongBo = 1; 

for (i = 0; i <= 7; i++ ) { 

TrungGian = X[i]; 

delay(); 

X[i+1]=X[i]; 

delay(); 

for (j=0; j<=7; j++) { 

DuLieu = TrungGian%2; //phat bit LSB  

TrungGian = TrungGian/2; //dich phai 

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich 

clkIN = 0; 

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang 

clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo 

DongBo = 0; //tat xung dong bo o cac hang sau 

}  

Chuong trinh mau LMD1 

Hien thi dong thoi chu L va N 

NTL - viet tren Keil C 

*/ 

#include <REGX51.H> 

sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich 

sbit DuLieu = 0x97; 

sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem 

sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang 

/*void delay(void) 

{  

TMOD=0x01; 

TH0=0x3c; 

TL0=0xb0; 

TR0=1; 

while(!TF0); 

TR0=0; 

TF0=0;

} */ 

void main (void){ 

char data X[8] = {0xFF,0x44,0x27,0x94,0xf8,0x84,0x02,0xFF};// Ch? L và n 

char TrungGian; 

int i,j; 

P1 = 0; 

while (1){ 

DongBo = 1; 

for (i = 0; i <= 7; i++ ) { 

TrungGian = X[i]; 

//delay(); 

//X[i+1]=X[i]; 

//delay(); 

for (j=0; j<=7; j++) { 

DuLieu = TrungGian%2; //phat bit LSB  

TrungGian = TrungGian/2; //dich phai 

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich 

clkIN = 0; 

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang 

clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo 

DongBo = 0; //tat xung dong bo o cac hang sau 

}  

chuong trinh thu nghiem lmd5 --- "CHAY TOT !!!" 

dieu khien mach quet led co so do phan cung nhu ... 

dieu khien quet led bang ngat dinh thoi 

moi khi say ra ngat dinh thoi 0 chuong trinh se xuat ra mot hang dua vao bien ChiSo 

va chot giu. cu the viec do la  

- xuat ra lien tuc cac byte cua hang do xe ke xung clkIN 

- sau khi xuat het cac byte thi xuat ra mot xung clkOUT 

ChiSo la bien toan cuc dc khoi tao do chuong trinh chinh  

neu ChiSo bang 0, tuc la hang dau tien dc xuat, khi ay xuat ra DongBo = 1 

neu ChiSo khac 0 thi xuat ra mot ra DongBo = 0 

sau khi xuat het so byte kiem tra neu ChiSo = 63 thi dua tro ve 0  

cong P1 xuat ra song song DuLieu 

cac chan 21, 22, 23 (p20, p21, p22) dieu khien clkIN, clkOUT, DongBo 

mang char dc khai bao o ngoai 

*/ 

#include <reg51.h> 

//cac chan tin hieu dieu khien 

sfr DuLieu = 0x90; //chan 1,2,3,4,5,6,7,8 cong P1 cua 8951 duong dl song song noi den dau vao bo dem ghi dich 

sbit clkIN = 0xB3; //chan 21 8951 tao xung dich vao bo dem ghi dich 

sbit clkOUT = 0xB4; //chan 22 8951 tao xung xuat ra dong thoi cua bo dem 

sbit DongBo = 0xB5; //chan 23 8951 tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang

//cac thanh ghi va bit chuc nang dac biet 

sfr CheDoDinhThoi = 0x89; 

sfr ByteThapDinhThoi0 = 0x8A; 

sfr ByteCaoDinhThoi0 = 0x8C; 

sbit BatDinhThoi0 = 0x8C;

//cac bit cho phep ngat 

sbit Ngat = 0xAF; //EA 

sbit NgatDinhthoi0 = 0xA9;

//DINH NGHIA CAC THAM SO KICH THUOC BANG, THOI GIAN QUET 

#define BeRong 4 //so byte cua mot hang 

#define ChieuCao 16 //so hang 

#define SoByteMang 64 //so byte cua mang hien thi X 

#define SoLanNgat 5 //so lan say ra ngat dinh thoi 

#define SoDemDinhThoi 256 //so xung nhip dinh thoi can dem

// bang du lieu khoi tao 

char data X[SoByteMang] = { 0x00,0x00,0x00,0x00, 

0x00,0x01,0x00,0x00, 

0x80,0x01,0x00,0x00, 

0xc0,0x01,0x00,0x00, 

0xe0,0x01,0x00,0x00, 

0xb0,0xff,0xff,0x3f, 

0x98,0xff,0xff,0x3f, 

0x0c,0x00,0x00,0x30, 

0x0c,0x00,0x00,0x30, 

0x98,0xff,0xff,0x3f, 

0xb0,0xff,0xff,0x3f, 

0xe0,0x01,0x00,0x00, 

0xc0,0x01,0x00,0x00, 

0x80,0x01,0x00,0x00, 

0x00,0x01,0x00,0x00, 

0x00,0x00,0x00,0x00 }; 

/*--------------------------------------------------------------------*/ 

int ChiSo,n;//chi so mang va bien n de dem so lan say ra ngat 

/*--------------------------------------------------------------------*/ 

#pragma NOAREGS // ko su dung cac ky hieu thanh ghi tuyet doi cho cac 

// ham duoc goi tu dich vu ngat 

/*----------------------------------*/ 

static void XuLiNgatDinhThoi0 (void) //xuat ra mot hang thu x 

/*day la chuong chinh con phuc vu ngat dinh thoi 0 

nhiem vu cua chuong trinh con nay la: 

- dem so lan say ra ngat dinh thoi qua bien n 

- khi n < 100 thi tang len 1 ket thuc 

- khi n = 100 thi xuat ra hang ket thuc 

viec xuat ra mot hang dua vao bien ChiSo. 

bien ChiSo ban dau dc main gan la 0, la chi so cua byte dau hang 

+ kietm tra neu la hang dau tien (n==0) thi DongBo=0, nguoc lai =1 

+ su dung vong lap voi so vong la so byte cua hang 

moi chu trinh lap se xuat ra mot byte, va clkIN, tang ChiSo 

+ ket thuc vong lap thi xuat ra mot xung chot clkOUT, va chi so da tro den hang tiep theo 

+ kiem tra neu xuat het mang (chiso=SoByteMang) thi gan lai chiso=0 

*/ 

int k; //bien dem so byte trong mot hang 

if (n==SoLanNgat) //neu ngat SoLanNgat lan thi 

n=0; //dem lai tu 0 voi lan sau 

if (ChiSo==0) {DongBo = 1;}//DongBo=1 o hang dau tien 

else {DongBo = 0;}// =0 cac hang sau 

for (k=1; k<=BeRong; k++) //va xuat ra mot hang 

DuLieu = X[ChiSo]; 

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich 

clkIN = 0; 

ChiSo++; //tang chi so len 1,  

} //ket thuc for chi so se tang len 4 

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang 

clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo 

if (ChiSo > (SoByteMang-1)) {ChiSo=0;} 

else //neu n < 100 thi 

n++;//tiep tuc dem so lan ngat 

#pragma AREGS 

/*--------------------------------------------------------------------*/ 

void NgatDinhThoi0 (void) interrupt 1 using 1 

XuLiNgatDinhThoi0 (); //dich 1 cot tu trai qua phai  

/*--------------------------------------------------------------------*/ 

/*sau day la chuong trinh chinh 

1. NHIEM VU: 

+ khoi tao cac gia tri bien: 

khoi tao bien dieu khien chi so mang ChiSo de phuc vu xuat mang  

khoi tao bien dem n de tinh toc do ngat 

+ thiet lap cac che do ngat va dinh thoi 

cho phep ngat toan cuc 

cho phep ngat dinh thoi 

2. GIAI THUAT

3. Danh sach cac bien, du lieu tac dong 

Bit cho phep ngat toan cuc: Ngat 

Bit cho phep ngat dinh thoi 0: Ngatdinhthoi0 

Bien trung gian xac dinh tri so mang: chiso 

Bien dem so lan say ra ngat: n 

Gia tri thanh ghi dinh thoi 

*/ 

void main (void) 

{ //khoi tao 

ChiSo = 0; //khoi tao chi so cua mang 

n = 0; //khoi tao bien dem so lan ngat 

//thiet lamp che do cho dinh thoi 

CheDoDinhThoi = (CheDoDinhThoi & 0xf0) | 0x02; // thiet lap che do tu dong lap lai 8 bit cho T0 

ByteCaoDinhThoi0 = 256 - SoDemDinhThoi; // nap lai cho TL0 de dem SoDemDinhThoi xung nhip he thong 

ByteThapDinhThoi0 = ByteCaoDinhThoi0; 

//khoi dong he thong 

Ngat = 1; //cho phep ngat toan cuc 

NgatDinhthoi0 = 1;//cho phep ngat dinh thoi 0 

BatDinhThoi0 = 1; // khoi dong dinh thoi 0 

//doi 

while (1); // xong, dech lam gi het, ngoi cho luc nao co ngat den thi no lam 

DTVT 

#include <REGX51.H> 

sfr dulieu = 0x90; 

sbit clkin = 0xB3;  

sbit clkout = 0xB4; 

sbit dongbo = 0xB5; 

unsigned char X1[64]= 

0xc0,0x00,0xc0,0x7f,  

0xc0,0xfc,0xc0,0x7f,  

0xc0,0xfe,0xc0,0x63, 

0xff,0x03,0xff,0xf3, 

0xff,0x03,0xff,0xf3,  

0xc0,0xfe,0xc0,0x63, 

0xc0,0xfc,0xc0,0x7f, 

0xc0,0x00,0xc0,0x7f,

0x00,0x00,0x00,0xc6, 

0x00,0x00,0x00,0xc6, 

0x00,0x00,0x00,0xcc, 

0x00,0x00,0x00,0xd8, 

0x00,0x00,0x00,0xf0, 

0x00,0x00,0x00,0xf8, 

0x00,0x00,0x00,0xcc,  

0x00,0x00,0x00,0xc6};

void main (void) 

int i,j,k; 

dongbo=1; 

for(i=0;i<=15;i++) 

for(j=0;j<=3;j++) 

{  

k=i*4+j; 

dulieu=X1[k]; 

clkin=1; 

clkin=0; 

clkout=1; 

clkout=0; 

dongbo=0; 

}

Bạn đang đọc truyện trên: Truyen2U.Pro

#tranghb