资源简介
小车测速程序,51代码,有屏显示,有超声波测距等功能。
代码片段和文件信息
//超声波模块显示程序
#include //包括一个52标准内核的头文件
#include //包含_nop_()函数定义的头文件
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#define DataPort P2
sbit Tx = P3^4; //产生脉冲引脚
sbit Rx = P3^2; //回波引脚
sbit left1=P0^0;
sbit left2=P0^1;
sbit right1=P0^2;
sbit right2=P0^3;
sbit E=P3^5;
sbit RS=P3^7;
sbit RW=P3^6;
sbit RST=P3^0;
sbit PSB=P3^1;
unsigned char code string[ ]= {“右电机转速“};
unsigned char code unit[]={“CM/S“};
unsigned char code digit[ ]={“0123456789.“}; //定义字符数组显示数字
uint distance[4]speed_dat[4]; //测距接收缓冲区
uchar geshibaitempoutcomeHflagoutcomeLiCOUT_2COUT_3;
//自定义寄存器
bit succeed_flag; //测量成功标志
//********函数声明
void conversion(uint temp_data);
void delay_20us();
void pai_xu();
void LMotRun(uchar speed1 uchar speed2);
void LMotBack(uchar speed1 uchar speed2);
void RMotRun(uchar speed1uchar speed2);
void RMotBack(uchar speed1 uchar speed2);
void LMotStop();
void RMotStop();
void AMotRun(uchar speed1 uchar speed2);
void Tracking();
void conversion_1(uint temp_data);
void LCD_Init(void);
void Check_Busy();
void Write_char(bit start uchar temp_data);
void Clr_Scr(void);
void LCD_set_xy( uchar x uchar y );
void LCD_Write_string(uchar Xuchar Yuchar *s);
void LCD_Write_number(uchar s);
void Lcd_Mark2(void);
void Conut(void);
void delay_1(uint i)
{
int j;
for(;i>0;i--)
{
for(j=120;j>0;j--);
}
}
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
void delay1ms()
{
unsigned char ij;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delay(unsigned char n)
{
unsigned char i;
for(i=0;i delay1ms();
}
void main(void) // 主程序
{ uint distance_dataab;
uint total;
uchar CONT_1;
P0=0x7a; //定义变量i指向字符串数组元素
i=0;
flag=0;
EA=1;
Tx=0; //首先拉低脉冲输入引脚
TMOD=0x11; //定时器0,定时器1,16位工作方式
IT0=0;
IT1=1;
EX1=1; //由高电平变低电平,触发外部中断
ET1=1;
TR1=1;
TH1=0;
TL1=0; //打开定时器0中断
EX0=0; //关闭外部中断
Tracking();
LCD_Init(); //设置液晶显示器
Clr_Scr(); //清屏
//从图形显示状态下返回
Lcd_Mark2();
while(1) //程序循环
{
Conut();
EX0=0;
TR0=0;
Tx=1;
delay_20us();
Tx=0; //产生一个20us的脉冲,在Tx引脚
while(Rx==0); //等待Rx回波引脚变高电平
succeed_flag=0; //清测量成功标志
EX0=1; //打开外部中断
TH0=0; //定时器0清零
TL0=0; //定时器0清零
TF0=0; //
TR0=1; //启动定时器0
while(TH0 < 30);//等待测量的结果,周期65.535毫秒(可用中断实现)
TR0=0; //关闭定时器0
EX0=0; //关闭外部中断
if(succeed_flag==1)
{
distance_data=outcomeH;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 445056 2011-06-15 21:13 测速小车\小车循迹+避障+显示测速\HY-SRF05 使用手册明书.pdf
文件 6376 2009-05-07 14:37 测速小车\小车循迹+避障+显示测速\STARTUP.A51
文件 14071 2011-11-14 20:45 测速小车\小车循迹+避障+显示测速\STARTUP.LST
文件 758 2011-11-14 20:45 测速小车\小车循迹+避障+显示测速\STARTUP.OBJ
文件 21454 2011-11-14 20:45 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速
文件 10047 2011-11-22 11:43 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.c
文件 92 2011-11-14 20:45 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.lnp
文件 19559 2011-11-14 20:45 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.LST
文件 31667 2011-11-14 20:45 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.M51
文件 25633 2011-11-14 20:45 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.OBJ
文件 230 2012-08-25 02:34 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.plg
文件 10047 2011-11-22 17:16 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.txt
....... 71405 2012-08-25 02:34 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.uvgui.Administrator
....... 5683 2012-08-25 02:34 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.uvopt
....... 13508 2012-08-25 02:34 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速.uvproj
....... 55739 2011-11-22 11:43 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速_uvopt.bak
....... 13478 2011-11-14 20:45 测速小车\小车循迹+避障+显示测速\小车循迹+避障+显示测速_uvproj.bak
目录 0 2012-08-25 02:34 测速小车\小车循迹+避障+显示测速
目录 0 2012-08-25 02:33 测速小车
----------- --------- ---------- ----- ----
744803 19
- 上一篇:无线充电制作
- 下一篇:计算生成SPWM的占空比的软件
评论
共有 条评论