基于单片机的遥控直升飞机系统设计(论文) - 图文 联系客服

发布时间 : 星期二 文章基于单片机的遥控直升飞机系统设计(论文) - 图文更新完毕开始阅读7384d9c38bd63186bcebbc4d

东北石油大学本科生毕业设计(论文)

附录2 接收程序

/***********主程序函数***************/ main() {

clearmen(); incept.c; while(1) {

interrupt0 } }

/*****************结束*******************/

/***********初始化函数**********/ clearmen() {

studylamp=1; lamp=1; remoteout=0; remotein=1;

for(i=0;i<206;i++) {

remotedata[i]=0x00; } IE=0x00; IP=0x01; TMOD=0x22; PCON=0X00; TH1=0xf3; TL1=0xf3; IT0=1; EX0=1;

37

//初始化 //遥控接收处理器 //中断接收函数

东北石油大学本科生毕业设计(论文)

EA=1; }

/******************************************************************/

incept.c遥控接收处理器 /******************************************************************/ //使用STC89C51单片机,12MHZ晶振, #include \#include \ #define uchar unsigned char #define uint unsigned int

sbit remotein=P3.2; // 遥控输入

sbit sin=P3^0; //基准正弦波相位输入

sbit AA=P0^0; sbit BB=P0^1; uint i,j,m,n,k,s=1;

uint keyvol; /************外中断遥控接收函数**************/ //外中断0

void intt0(void) interrupt 0 {

ET1=0;TR1=0;EX0=0;EA=0; head=0;

while(studykey==0); studylamp=0;lamp=1;

while(remotein==1); head=0; while(remotein==0) {

_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); head++; }

38

东北石油大学本科生毕业设计(论文)

n=0;remdata=0x0000; while(1) {

while(remotein==1) {

_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); remdata++; }

if(remdata>m) //高电平>2毫秒退出 {remotedata[n]=0x00;EX0=1;EA=1;goto end;} remotedata[n]=remdata;n++; remdata=0x0000; while(remotein==0) {

_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); remdata++; } remotedata[n]=remdata; n++;

remdata=0x00; }

end: lamp=0;studylamp=0; }

/*********1毫秒延时程序**********/ delay1ms(uint t) {

for(i=0;i

39

东北石油大学本科生毕业设计(论文)

附录3 PWM信号(产生移位脉冲)

K1 BIT P0.1 ;K1控制高脉宽的增加

K2 BIT P0.2 ;K2控制高脉冲复位 K3 BIT P0.3;K3控制高脉宽的减小 OUT BIT P0.4 ;OUT输出PWM信号

KEY EQU 30H ;高脉冲指针,指示高脉冲的个数 DJH EQU 31H ;高脉冲个数上限 DJL EQU 32H ;高脉冲个数下限 DJBZ EQU 33H ;高脉冲标准个数

COUNTER EQU 34H ;计数指针:指示1个周期内,对高脉冲计数 ZQH EQU 35H ;一个周期的脉冲数高位

;============================================================ ORG 0000H LJMP MAIN

ORG 001BH ;用到,定时器T1 LJMP DJT1

ORG 0030H ;主程开始 ;初始化设置:

MAIN: MOV TMOD,#21H ;定时设置,定时器T1工作于方式2 MOV TH1,#156 ;定时器T1,定时设置: MOV TL1,#156

SETB TR1 ;开启:T1计数 SETB ET1 ;允许:定时器T1中断 SETB EA ;允许:中断允许总控位 LCALL QNC ;清内存 ;寄存器初值设置:

MOV ZQH,#200 ;周期脉冲数:200,即周期:20ms MOV DJBZ,#15 ;标准高脉冲:1.5MS MOV DJL,#9 ;最小高脉冲:0.9MS MOV DJH,#21 ;最大高脉冲:2.1MS MOV COUNTER,#00H;高脉冲计数指针:清零

40