|
接收机在下载程序时 请务必选择内部晶振频率为6MHz.
所有资料51hei提供下载:
- #include"A_LCD.H"
- #include"A_DISPLAY.H"
- #include"A_NRF2401.H"
- #include"A_ADC.H"
- #include"A_EEPROM.H"
- #include"a_keyscan.h"
- #include"a_desktop.h"
- #include"stc12c5.h"
- #include"a_delay.h"
- sbit SPEAKER=P4^4;
- sbit PPM=P2^6; //未使用
- sbit CH8=P2^7;
- extern unsigned int poweroff;
- extern char code boot[];
- extern unsigned code hnist[];
- extern char x,y,x4;
- extern unsigned char BAT;
- extern char databuf;
- extern char canshu[10][5][5];
- unsigned char value_ch[6];
- int value_adc[6];
- int value_adc1[6];
- unsigned char bdata sta1;
- sbit RX_DR1 =sta1^6;
- sbit TX_DS1 =sta1^5;
- sbit MAX_RT1 =sta1^4;
- // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
- int time[18]={8000,610, 900, 610, 900, 610,900, 610, 900, 610, 900, 610, 900,610,900, 610,900,610};
- // 头 一通道 二通道 三通道 四通道 五通道 六通道 七通道 八通道
- unsigned char ppm;
- char TxBuf[32]={
- 0xaa,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
- 0x04,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
- 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
- };
- int TxBuf1[32]={0};
- unsigned char lose=0 ,sendtime=0,signal;
- unsigned int timeset=0;
- unsigned char write_flag=0;
- unsigned char s_time;//蜂鸣器鸣叫相关计数变量
- unsigned char s_mode;//蜂鸣器鸣叫方式
- unsigned char code chacha[]=
- {
- /*-- 调入了一幅图像:这是您新建的图像 --*/
- /*-- 宽度x高度=8x8 --*/
- 0x00,0x82,0x44,0x28,0x10,0x28,0x44,0x82
- };
- void ADC2TXBUF();
- void main()
- {
- unsigned char i;
-
- P4SW=0xff;
- delay_ms(10);
- read_all();
- delay_ms(1000);
- LcmInit();
- adcinit();
- init_NRF24L01() ; //这里已经设置好了为接收!
- SPI_RW(0xe1); //先将发送缓存器里的数据清除
-
- delay_ms(1000);
- TMOD=0X11;
- TH0=0;
- TL0=0;
- TH1=0;
- TL1=0;
- EA=1;
- //ET0=1;
- //ET1=1;
- TR0=1;
- TR1=1;
- for(i=120;i>0;i--)
- {
- PUTbmp(0,i,boot,0);
- }
- delay_ms(50000);
- delay_ms(50000);
-
-
- while(1)
- {
- LcmClear();
- timeset=0;
- while(y>0)
- {
- write_flag=1;
- menu_dis1();
- menu_dis11();
- menu_dis12();
- menu_dis13();
- menu_dis14();
- menu_dis15();
- menu_dis151();
- menu_dis152();
- menu_dis153();
- keyscan();
- if(timeset>500)
- y=0;
- }
- PUTbmp(0,0,hnist,0);
- write_all();
- if(canshu[databuf][2][2]==0)
- {
- ET0=1;
- ET1=0;
- }
- else
- {
- ET0=0;
- ET1=1;
- }
- while(y==0)
- {
- if(write_flag==1)
- {
-
- write_flag=0;
- }
- if(canshu[databuf][2][2]==0)
- number8x8_put(signal,0,19,5,3);
- else
- PUTchar8x8(0,12,1,chacha);
-
- keyscan();
-
- desk_display();
- }
- }
- }
- void adc_senddata() interrupt 1
- {
-
-
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(canshu[databuf][2][2]==0)
- {
- sta1=SPI_Read(0x07);
- SPI_Write_Reg(0x20 +0x07,0xFF); //这步很重要
- if(MAX_RT1==1)
- {
- if(lose<20)
- lose++;
- }
- if(sendtime<20)
- sendtime++;
-
- if(sendtime>19)
- {
- signal=(sendtime-lose)/2;
- sendtime=0;
- lose=0;
- }
- if(signal<7) s_mode=2;
-
- ADC2TXBUF();//数据采集与整理并汇入到TxBuf
- nRF24L01_TxPacket(TxBuf);
-
- timeset++;
-
- s_time++;
- if(s_mode==1)
- {
- if(s_time>5)
- {
- SPEAKER=0;
- }
- if(s_time>10)
- {
- s_time=0;
- SPEAKER=1;
- }
- }
-
- if(s_mode==2)
- {
- if(s_time>35&canshu[databuf][2][3]==0&signal<7&canshu[databuf][2][2]==0)
- {
- SPEAKER=0;
- }
- if(s_time>40)
- {
- s_time=0;
- SPEAKER=1;
- }
- }
- if(s_mode==0)
- {
- s_time=0;
- SPEAKER=1;
- }
- }
-
- }
- void SPEAKER_WARNING() interrupt 3
- {
-
- unsigned char h;
- if(canshu[databuf][2][2]==1)
- {
- TH1=(65536-time[ppm])/256;
- TL1=(65536-time[ppm])%256;
- if(ppm%2==1)
- PPM=0;
- else
- PPM=1;
- ppm++;
- if(ppm==14)
- {
- ppm=0;
- time[0]=36400-(time[1]+time[2]+time[3]+time[4]+time[5]+time[6]+time[7]+time[8]+time[9]+time[10]+time[11]+time[12]+time[13]);//36400
- }
- if(ppm==0)
- ADC2TXBUF();//数据采集与整理并汇入到TxBuf
-
- }
- }
- void ADC2TXBUF()
- {
- unsigned char i,j,k,h;
- int hk1,hk2;
- for(i=0;i<6;i++)
- {
- value_adc[i]=adc(i)+canshu[databuf][4][i];
- value_ch[i]=value_adc[i];
- value_adc[i]=value_adc[i]-128;
- }
- /*********************************************/
- BAT=adc(7);
- if(BAT<189)
- BAT=0; //电池电压采集
- else
- BAT=(BAT-189)/10;
- /********************************************/
- if(canshu[databuf][2][0]==1)//副翼襟翼混控设置
- {
- hk1=value_adc[4]-value_adc[0];
- hk2=value_adc[4]+value_adc[0];
- value_adc[0]=hk1;
- value_adc[4]=hk2;
- }
-
- if(canshu[databuf][2][0]==2)//副翼升降混控设置
- {
- hk1=value_adc[1]-value_adc[0];
- hk2=value_adc[1]+value_adc[0];
- value_adc[0]=hk1;
- value_adc[1]=hk2;
- }
- if(canshu[databuf][2][1]==1&canshu[databuf][2][0]!=2)//升降尾舵混控设置(V尾混控)
- {
- hk1=value_adc[3]-value_adc[1];
- hk2=value_adc[3]+value_adc[1];
- value_adc[1]=hk1;
- value_adc[3]=hk2;
- }
-
- for(j=0;j<6;j++) //通道反向以及防止溢出
- {
- if(canshu[databuf][0][j]==1)
- value_adc[j]=0-value_adc[j];
- if(value_adc[j]>127) value_adc[j]=127;
- if(value_adc[j]<-127) value_adc[j]=-127;
- TxBuf[j+1]=value_adc[j];
- }
- if(CH8==1) TxBuf[8]=127;
- else TxBuf[8]=-127;
- for(k=0;k<4;k++)
- {
- TxBuf[k+9]=canshu[databuf][1][k];
- }
- for(h=1;h<7;h++)
- {
- time[2*h]=2000+TxBuf[h]*8;
- }
-
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
|
-
-
发射和接收机原理图.rar
23.33 KB, 下载次数: 166, 下载积分: 黑币 -5
-
-
发射机Keil C工程.rar
135.36 KB, 下载次数: 137, 下载积分: 黑币 -5
-
-
发射机固件.rar
154.84 KB, 下载次数: 127, 下载积分: 黑币 -5
-
-
固件更新 .rar
176.16 KB, 下载次数: 132, 下载积分: 黑币 -5
-
-
接收机.rar
51.14 KB, 下载次数: 171, 下载积分: 黑币 -5
-
-
新建文件夹.rar
1.24 KB, 下载次数: 123, 下载积分: 黑币 -5
评分
-
查看全部评分
|