vixuli
/* 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: AzTruyen.Top