欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機智能小車程序
[打印本頁]
作者:
哦哦可
時間:
2019-1-12 00:46
標題:
單片機智能小車程序
#include<stc12c5a.h>
#include <intrins.h>
#include <math.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit S1=P2^4;
sbit S2=P2^5;
sbit S3=P2^6;
sbit S4=P2^7;
//電機pwm輸入接口為P1^3和P1^4 可通過控制2和5控制電機停轉
//sbit P13=P1^3;
//sbit P14=P1^4;
//sbit IN1=P1^2;
//sbit IN2=P1^5;
sbit pwm=P3^5;
#define k10 0xe5
#define k20 0xcc
#define k30 0xb3
#define k35 0xa6
#define k40 0x99
#define k45 0x8c
#define k50 0x80
#define k55 0x73
#define k60 0x66
#define k65 0x59
#define k70 0x4d
#define k75 0x40
#define k80 0x33
#define k85 0x26
#define k90 0x1a
#define k95 0x0d
#define k00 0x00 //控制電機轉速的幾個中斷pwm波的占空比
//控制電機轉速的幾個中斷pwm波的占空比
#define mh00 0xf8 //中間角度初值 //打直第一次出現吧
#define ml00 0xee // 1810*1.09=1.9729 10
#define zh01 0xf8 //高位
#define zl20 0x26 //低位 //2010*1.09=2.1708 9
#define zl19 0x30 //低位 //2000*1.09=2.18 9
#define zl18 0x3a //低位 //1990*1.09=2.1691 9
#define zl17 0x44 //低位 //1980*1.09=2.1582 9
#define zl16 0x4e //低位 //1970*1.09=2.1473 9
#define zl15 0x58 //低位 //1960*1.09=2.1364 9
#define zl14 0x62 //低位 //1950*1.09=2.1255 9
#define zl13 0x6c //低位 //1940*1.09=2.1146 9
#define zl12 0x76 //低位 // 1930*1.09=2.1037 9
#define zl11 0x80 //低位 // 1920*1.09=2.0928 10
#define zl10 0x8a //低位 // 1910*1.09=2.0819 10
#define zl09 0x94 //低位 // 1900*1.09=2.071 10
#define zl08 0x9e //低位 // 1890*1.09=2.0601 10
#define zl07 0xa8 //低位 // 1880*1.09=2.0492 10
#define zl06 0xb2 //低位 // 1870*1.09=2.0383 10
#define zl05 0xbc //低位 // 1860*1.09=2.0274 10
#define zl04 0xc6 //低位 // 1850*1.09=2.0165 10
#define zl03 0xd0 //低位 //1840*1.09=2.0056 10
#define zl02 0xda //低位 // 1820*1.09=1.9838 10 //左轉角度
#define yh00 0xf8 //高位
#define yl01 0xf8 //低位 // 1800*1.09=1.962 10
#define yh01 0xf9 //高位
#define yl02 0x02 //低位 // 1790*1.09=1.9511 10
#define yl03 0x0c //低位 // 1780*1.09=1.9402 10
#define yl04 0x16 //低位 // 1770*1.09=1.9293 10
#define yl05 0x20 //低位 // 1760*1.09=1.9184 10
#define yl06 0x2a //低位 // 1750*1.09=1.9075 10
#define yl07 0x34 //低位 // 1740*1.09= 1.8966 10
#define yl08 0x3e //低位 // 1730*1.09=1.8857 10
#define yl09 0x48 //低位 // 1720*1.09= 1.8748 10
#define yl10 0x52 //低位 // 1710*1.09=1.8639 10
#define yl11 0x5c //低位 // 1700*1.09=1.853 10
#define yl12 0x66 //低位 // 1690*1.09=1.8421 10
#define yl13 0x70 //低位 //1680*1.09=1.8321 10
#define yl14 0x7a //低位 // 1670*1.09=1.8203 11
#define yl15 0x84 //低位 // 1660*1.09=1.8094 11
#define yl16 0x8e //低位 // 1650*1.09=1.7985 11
#define yl17 0x98 //低位 // 1640*1.09=1.7876 11
#define yl18 0xa2 //低位 // 1630*1.09=1.7767 11
#define yl19 0xac //低位 // 1620*1.09=1.7658 11
#define yl20 0xb6 //低位 // 1610*1.09=1.7549 11
#define yl21 0xc0 //低位 // 1600*1.09= 1.7440 11 //右轉角度
uchar h, l;
uchar count2=14, count=0;
uchar loadz,loady, dz,dy,d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;
void pwm_init();
void Time_Init();
void motor();
void delay(uint z);
//*********主函數*****************/
void main ()
{
d2=k45;d3=k50;d5=k60;d7=k70;
P14=0;
delay(10000);
delay(10000);
delay(10000);
Time_Init();
pwm_init() ;
//延時發車
P0=0xff;
P2=0xfa;
h=0xfa;
l=0xe7;
dz=dy=d7; // dz<dy 左轉
while(1) //dy大表示右邊輪子轉的快
{ //左邊輪子接P0^3 //右邊輪子接P0^4
if(P0==0x80) {h=0xfa;l=0x1F; count2=13;dz=d2;dy=d5; }
//if(P0==0xc0) {h=0xfa;l=0x4d;count2=13;dy=d5;dz=d8;}
if(P0==0x40) {h=0xfa;l=0x7D;count2=13;dy=d3;dz=d5;}
//if(P0==0x60) {h=0xfa;l=0x7f;count2=13;dy=d5;dz=d7;}
if(P0==0x20) {h=0xfa;l=0xBD;count2=14;dy=d3;dz=d5;}
//if(P0==0x30) {h=0xfa;l=0xb1a;count2=14;dy=d6;dz=d7;}
if(P0==0x10) {h=0xfa;l=0xD2;count2=14;dy=d7;dz=d7;}
// if(P0==0x00||0xff) {h=0xfa;l=0xfc;count2=14;dz=d8;dy=d8;} //4度 l改變19
if(P0==0x08) {h=0xfA;l=0xFC;count2=15;dy=d7;dz=d7;}
//if(P0==0x0c) {h=0xfb;l=0x47;count2=15;dy=d7;dz=d6;} //15
if(P0==0x04) {h=0xfb;l=0x11;count2=15;dy=d5;dz=d3;}
//if(P0==0x06) {h=0xfb;l=0x79;count2=15;dy=d7;dz=d5;} //50 左轉
if(P0==0x02) {h=0xfb;l=0x51;count2=16;dy=d5;dz=d3;}
//if(P0==0x03) {h=0xfb;l=0xab;count2=16;dy=d8;dz=d5;} /39
if(P0==0x01) {h=0xfb;l=0xAF;count2=16;dy=d5;dz=d2;}
motor();
}
}
/**************定時器初始化數據**********************/
void Time_Init()
{
TMOD = 0x01 ; //定時器0工作方式1,16位定時器
TH0 = h;
TL0 = l;
EA=1;
ET0=1;
TR0 = 1;
}
/***************pwm初始化***********************************
/************************************************************/
void pwm_init()
{
CCON=0; // CR=0;開始不計時,可以省略
CMOD=0X00; //頻率選擇,選系統時鐘/12為PWM輸出頻率
CH=0; //
CL=0; //PCA計數器的計數值
CCAP0H=k00; //初始PWM占空比100%
CCAP0L=k00; //初始PWM占空比100%
CCAP1H=k00; //初始PWM占空比100%
CCAP1L=k00; //初始PWM占空比100%
PCA_PWM0=0X00; //控制占空比的第九位為0
PCA_PWM1=0X00;
CCAPM0=0X42; //工作方式選擇,選擇為PWM輸出工作方式
CCAPM1=0X42; //工作方式選擇,選擇為PWM輸出工作方式
CR=1; //啟動PCA定時器
}
void motor()
{
CCAP0H=dz; //CCAP0L CCAP0H是捕捉/ 比較寄存器, 代表的是調節占空比,CCAP0L= CCAP0H=0x80,占空比輸出為50% 。
CCAP0L=dz; //PWM設置占空比
CCAP1H=dy;
CCAP1L=dy; //PWM設置占空比
}
void delay(uint z) //延時 Z 毫秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*************************定時中斷1輸出pwm波****************************/
void Time0_Int() interrupt 1
{
TH0=h;
TL0=l;
if(count < 1)
pwm = 1;
else
pwm = 0;
count++;
if(count >= count2)
count = 0;
}
復制代碼
作者:
admin
時間:
2019-1-12 02:24
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
作者:
gsdaigdhqwjkqwa
時間:
2019-1-14 16:58
以前做的電磁賽道的
小車控制程序(2018).zip
2019-1-14 16:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
102.52 KB, 下載次數: 7, 下載積分: 黑幣 -5
作者:
celebs0568
時間:
2019-1-14 17:10
看不懂
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1