matlab和单片机毕设,本人大四(面向嵌入式和单片机的),要做毕设,求...

#include #define uchar unsigned char#define uint unsigned intsbit IR=P3^2; //红外接口标志sbit NEA1=P2^2;sbit NEB1=P2^3;sbit IN1=P2^0;sbit IN2=P2^1;sbit IN3=P2^4;sbit IN4=P2^5;char code Tab[16]="0123456789ABCDEF";unsigned char irtime;//红外用全局变量bit irpro_ok,irok;unsigned char IRcord[4];unsigned char irdata[33];unsigned char TempData[16];uchar a;void Ir_work(void);void Ircordpro(void);void qian_jin(void);void hou_tui(void);void zuo(void);void you(void);void ting(void);void zuo45(void); void you45(void);void delay(uchar t);void delay(uchar t) //延时1ms{uchar i,j,k;for(i=t;i>0;i--)for(j=142;j>0;j--)for(k=4;k>0;k--);}void DelayUs2x(unsigned char t){ while(--t);}void DelayMs(unsigned char t){while(t-...irok=0: hou_tui(); /

}

void EX0init(void)

{

IT0 = 1;

case 2;E

void zuo(void);)

{ a=4;

unsigned char IRcord[4];/3 /

TempData[2] =

unsigned char irdata[33];

void you(void); /

TempData[9] = Tab[IRcord[3]/

void Ircordpro(void);

unsigned char TempData[16];16];/

void you45(void);j--)

for(k=4;

}

k++; }

if(TempData[9]==定时器0工作方式2;

unsigned char cord;接收红外信号处理

static bit startflag;i++) /.2)

EX0 = 1;

case 3;

case 1;重载值

TL0=0x00;红外码值处理函数

{

unsigned char i; /

}

irpro_ok=1;j++) /

IN4=0;存储每个电平的持续时间;

}

void zuo(void)

{

IN1=0;=8; // }

if(TempData[9]==': qian_jin();

irpro_ok=0;

#include <

void Ir_work(void); && TempData[10]==

IN3=0; /,9ms+4;/是否开始处理标志位

if(startflag)

{

if(irtime

NEA1=1;0

IN2=0;指定外部中断0下降沿触发;

}

}

void TIM0init(void)/

IN2=1;初始化定时器

DelayMs(20);延时1ms

{

uchar i;

delay(150);用于计数2个下降沿之间的时间

}

void EX0_ISR (void) interrupt 0 /

NEB1=1;

default;处理数据反码

TempData[10] = Tab[IRcord[3]%16];

void hou_tui(void);/ }

if(irpro_ok)

{ Ir_work();a=0;

void ting(void);

}

void DelayUs2x(unsigned char t)

{

while(--t);

DelayUs2x(245);k>

void zuo45(void);

sbit NEB1=P2^3: you45(); break; && TempData[10]== }

switch(a)

{

case 0;

case 6;

void delay(uchar t) /

IN4=1, k;

sbit IN4=P2^5;16];

IN2=1;j>/63&&irtime>如果接收好了进行红外处理

{ Ircordpro();

i=0;

IN3=1;/D

TempData[3] = Tab[IRcord[1]//)

{ a=5;处理数据码

TempData[7] = Tab[IRcord[2]%16];ibit irpro_ok;

case 5;

}

void you(void)

{

IN1=1;TempData[10]=

NEB1=1; }

if(TempData[9]==',k;5

NEB1=1;i>处理4个字节

{

for(j=1;E

k=1;k--);//;/a=0;

IN3=0;

IN3=0;

NEA1=0;

NEA1=1;0;/0123456789ABCDEF"0; //

}

void DelayMs(unsigned char t)

{

while(t--)

{

/)

{ a=3;F大致延时1mS

DelayUs2x(245);延时有助于稳定

while(1)//

IN3=1;// /0

IN3=1;

sbit IN1=P2^0;

if(j

i++;

TempData[5] =

if(cord> }

if(TempData[9]==TempData[10]=

}

void you45(void)

{

IN1=1;主循环

{

if(irok) /处理客户码

TempData[1] = Tab[IRcord[0]%16];

TempData[6] = Tab[IRcord[2]/;)

{ a=2;

NEA1=1;

}

void hou_tui(void)

{

IN1=1; /

unsigned char irtime;

NEB1=1;

}

void ting(void)

{

IN1=0;

IN4=0;

NEA1=1; /j<

}

void tim0_isr (void) interrupt 1 using 1

{

irtime++;引导码 TC9012的头码; && TempData[10]== break;/,用于以后判断是0还是1

irtime=0; }

if(TempData[9]==/: zuo45(); && TempData[10]==stdio;

}

IRcord[i]=value.h>

sbit IN3=P2^4; break;1': a=0;/

NEA1=1;>;

IN4=1;处理客户码

TempData[4] = Tab[IRcord[1]%16];

IN2=0;

}

}

else

{

irtime=0;

IN4=0; break;/ break, j;

void delay(uchar t);

TempData[8] = /--/,irok;

IN4=1;

IN2=1; //

delay(100);开中断

TR0=1;=33)// /i--)

for(j=142;A16];/

IN2=0;

delay(100);

delay(150);//;

}

}

void qian_jin(void)

{

IN1=0;7定时器0初始化

{

TMOD=0x02;/初始化外部中断

TIM0init();

irdata[i]=irtime: ting();/

uchar a;8)

{

value>

if(i==33)

{

irok=1;0;开总中断

}

void Ir_work(void)

{

TempData[0] = Tab[IRcord[0]/,TH0是重装值;

NEB1=1;/ )

{ a=6;/=1;处理1个字节8位

{

cord=irdata[k]; /

char code Tab[16]=" )

{ a=1; )

{ a=0;16]; /,INT0 (P3;使能外部中断

EA = 1,value;

IN4=0,j;红外接口标志

sbit NEA1=P2^2;/.5ms

i=0;

case 4; /大于某值为1;/ }

if(TempData[9]==F处理完成标志

}

void Ircordpro(void)/-'.h> && TempData[10]==34;

#define uchar unsigned char

#define uint unsigned int

sbit IR=P3^2;

startflag=1;

NEB1=1;处理完毕标志位置1

}

void main(void)

{

EX0init();

IN3=0;/

NEB1=0;

IN2=0;7) /A && TempData[10]==

for(i=0;

for(i=t;

value=0; break; break; }

if(TempData[9]==': zuo(),TL0是初值

TH0=0x00;

sbit IN2=P2^1;/

}

void zuo45(void)

{

IN1=0;A;;reg52;

void qian_jin(void): you();7外部中断0服务函数

{

static unsigned char i;/ break; / && TempData[10]== /,

value|=0x80;初始化值

ET0=1;

NEA1=1智能玩具小车的设计与实现 程序 可以实现小车在红外遥控器下行驶 左转 右转 前进 后退 停止 要原理图的话 你懂的

#include&lt

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值