新手上路
- 积分
- 43
- 金钱
- 43
- 注册时间
- 2011-11-12
- 在线时间
- 1 小时
|
5金钱
#define uchar unsigned char
#include <reg51.h>
//PT2262發出訊號,PT2274L4接收D0-D3
//D0-D3連接8051 P2.0-P2.3
//收到P2.0 -P2.3的4位組合 P2.4或P2.5輸出=0 / 1
//P0 控制7劃管出字,P1控制位選,出0亮
sbit P24=P2^4; //8051 輸出
sbit P25=P2^5; //8051 輸出
sbit PUL=P2^6; //頻率
sbit DIR=P2^7; //方向
sbit EN=P3^7;
/*******************************共陽LED段碼表*******************************/
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
/*********************************端口定義**********************************/
char dat; //接收到的數據
//int Num; //步進數
/*********************************時間控制**********************************/
/*********************************延時控制**********************************/
void delay(unsigned int count) /*定義延遲函數*/
{
unsigned int m,n;
for(m=0;m<count;m++)
for(n=0;n<9;n++);
}
/*********************************步數控制**********************************/
void Move(void)
{
PUL=1;
delay(5);
PUL=0;
delay(5);
}
void Forward (void)
{
int i;
DIR=1;
for(i=0;i<100;i++) //
Move();
}
void Backward (void)
{
int i;
DIR=0;
for(i=0;i<98;i++) //
Move();
}
/******************************主程序**************************************/
void main(void)
{
P1=0x00; //端口初始化
P0=0x00; //端口初始化
P2=0xff; //置輸入狀態
while(1)
{
dat=(P2&0x0f); //00001111
if(dat==0x08) //先按A 顯示1 燈亮 通道 開 0000 1000
{
P0=tab[1]; //數碼顯示
P1=0xfe; //1111 1110
P24=0; //燈亮
Forward();
while (P2&0x08)
{
}
}
if(dat==0x04) //再按B建 顯示2 燈滅 通道 關 0000 0100
{
P0=tab[2]; //數碼顯示
P1=0xfd; //1111 1101
P24=1; //關燈
Backward();
while (P2&0x04)
{
}
}
if(dat==0x02) //按C鍵 顯示3 燈亮 通道 開 0000 0010
{
P0=tab[3]; //數碼顯示
P1=0xfb; //1111 1011
P25=0; //燈亮
Forward();
delay(1000);
Backward();
while(P2&0x02);
{
}
}
if(dat==0x01) //再按D鍵 顯示4 通道 關 0000 0001
{
P0=tab[4];
P1=0xf7; //1111 0111
P25=1; //關燈
Forward();
delay(5000);
delay(5000);
delay(5000);
delay(5000);
Backward();
while(P2&0x01);
{
}
}
}
} |
|