发大家整个电磁智能车的程序
单片机源程序如下:
- #include "includes.h"
- sbit Motor_EN=P2^1;
- sbit LED1=P4^4;
- sbit LED2=P4^5;
- unsigned char a=0;
- extern unsigned int AD0[6]; //保留六次数据
- extern float Speed; //小车转速 在cepin.c中定义
- void delay(unsigned short k) //延时
- {
- unsigned short i,j;
- for(i=0;i<k;i++)
- for(j=0;j<2000;j++);
- }
- void main()
- {
- WDTCN=0XDE; //关闭看门狗
- WDTCN=0XAD;
-
- OSCILLATOR_Init(); //系统时钟初始化,内部时钟的2倍
- GPIO_Init(); //引脚初始化
- TIM0_Init(); //定时器0初始化,产生舵机用的低频PWM
- PCA0_Init(); //产生直流电机用的PWM
- TIM1_Init(); //用于防止小车撞墙
- TIM3_Init(); //定时器3初始化,用于ADC连续测量
- ADC0_Init();
- Init_EXT1(); //检测起跑线
- Frequent_Measure_Init();
- SPI_Init();
- EA=1;
- LCD_Init();
- LCD_Clear_Screen();
- // Motor_Duty(60);
- // DuoJi_Angle(108.9);
- Motor_EN=1;
-
- while(1)
- {
- LCD_Display_Num(1,0,AD0[0]);
- LCD_Display_Num(1,64,AD0[3]);
- LCD_Display_Num(3,0,AD0[1]);
- LCD_Display_Num(3,64,AD0[4]);
- LCD_Display_Num(5,0,AD0[2]);
- LCD_Display_Num(5,64,AD0[5]);
- LCD_Display_Str(7,0,"Speed:");
- LCD_Display_Num(7,48,(unsigned int)Speed);
- if((AD0[0]<300)||(AD0[1]<300)||(AD0[2]<300)||(AD0[3]<300)||(AD0[4]<300)||(AD0[5]<300))
- {
- TR1=1;
- }
- delay(300);
- }
- }
- void TIM1_Init(void)
- {
- char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
- SFRPAGE = TIMER01_PAGE;
-
-
- TMOD=0X10;
-
- CKCON |=0X01; //系统时钟的4分频 //定时器0时钟为外部时钟8分频
-
- TH1=0X10; //5ms初值时间
- TL1=0Xbe;
-
- ET1=1;//打开定时器0中断
- // TR1=1;//打开定时器0
-
- SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
- }
- void TIM1_ISR()interrupt 3
- {
- char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
- SFRPAGE = TIMER01_PAGE;
- a++;
- TH1=0X10; //5ms初值时间
- TL1=0Xbe;
- if(a==400)
- {
- a=0;
- TR1=0;
- if((AD0[0]<300)||(AD0[1]<300)||(AD0[2]<300)||(AD0[3]<300)||(AD0[4]<300)||(AD0[5]<300))
- Motor_EN=0;
- }
- SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
36组源程序.zip
(105.99 KB, 下载次数: 27)
|