• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-24
  • 语言: 其他
  • 标签:

资源简介

对于运用C51作为控制器的自动循迹小车的开发程序,分享给大家!程序中运用的接口,还有中断这些需要自己读懂就知道了!

资源截图

代码片段和文件信息

#include 
#include 
#include 
#define uchar unsigned char
#define uint unsigned int
#define c 20
uchar code DIS_SEG7[10]={0xc00xf90xa40xb00x990x920x820xf80x800x90};
uchar code DIS_SEG8[10]={0x400x790x240x300x190x120x020x780x000x10};
/*uchar code DIS_BIT[6]={0xfe0xfd0xfb0xf70xef0xdf};*/ 
uint count; //计数变量
/*uint r=2;//车轮半径
uint c;//轮周长*/
uint n;//圈数
uint sum=0;//总圈数
uint m=0;//上次圈数
uint v;//速度
uint t=0;//时间
uint s;//位移
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
/*****************子函数声明**********************/
void display(void);
void initial(void);
void delay(uint k) //延时
{ uchar data ij; 
 for(i=0;i {for(j=0;j<121;j++)
 {;}}
  }
/****************初始化函数*******************/
void initial(void)
{   TMOD=0x11;
    TH0=-(50000/256); //1s钟产生10个脉冲(定时50ms)
TL0=-(50000%256);
TH1=-(20000/256);//定时扫描(20ms)
TL1=-(20000%256);
IE=0x8f; //允许中断
IP=0x02;
IT0=1; //外部中断边沿触发
IT1=1; 
TR0=1; //T0开始计数
TR1=1; //T1开始计数
P1_4=1; //电机1(左边)正转
P1_5=0;
P1_6=1; //电机2(右边)正转
P1_7=0;
P2_6=1; //PWM波输出口
    P2_7=1;
}
/***********************************/
void display(void)
{    P0=DIS_SEG7[v%10]; //右边第一位显示速度的个位(单位是cm/s)
 P2=0xdf;
 delay(1);
 P0=DIS_SEG7[v/10]; //右边第二位显示速度的十位
 P2=0xef;
 delay(1);
 P0=DIS_SEG7[(s%100)/10]; //右边第三位显示位移的小数第一位(单位是:米)
     P2=0xf7;
 delay(1);
 P0=DIS_SEG8[s/100]; //右边第四位显示位移的整数部分
 P

评论

共有 条评论

相关资源