(完整版)基于单片机的遥控直升飞机系统设计(毕业论文) 下载本文

使用STC89C51单片机,12MHZ晶振,

#include \ 遥控输入

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; ==1); ==0) {

_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); =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

附录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计数