智能车制作
标题:
简单漂移!自己写的。自己是一个菜鸟,刚刚会让车跑起来,喜欢玩飞车,
[打印本页]
作者:
王其奇
时间:
2010-11-12 21:33
标题:
简单漂移!自己写的。自己是一个菜鸟,刚刚会让车跑起来,喜欢玩飞车,
本帖最后由 王其奇 于 2010-11-12 21:35 编辑
#include <hidef.h> /* common defines and macros *///有的注释是前期的了,会有一些错误,但是还是能明白的
#include <MC9S12XS128.h> /* derivative information */
#include "derivative.h" /* derivative-specific definitions */
#define uchar unsigned char
#define uint unsigned int
#define SCE PTT_PTT0
#define RST PTT_PTT1
#define DC PTT_PTT2
#define DIN PTT_PTT3
#define CLK PTT_PTT4
#define LED PTT_PTT5
//字库太长就删了
unsigned char Ton[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
};
void pwm_init(void) {
PWMPRCLK=0x44; //通道时钟预分频, 16分频
PWMSCLA=0x09; //时钟A分频 , 50分频
PWMSCLB=0x19; //时钟B分频 , 50分频
PWMCLK=0xFF; //PCLK1选择ClockSA,PCLK选择ClockSB
PWMPOL=0xFF; //起始输出高电平
PWMCAE=0x00; //PWM输出左对齐
PWMCTL=0xF0; //通8道01级联,通道23级联
PWMPER0=0x0A;
PWMPER1=0X9DA;
PWMPER2=0x00; //级联通道23的周期高字节
PWMPER3=0x09; //级联通道23的周期低字节
PWMPER4=0x00;
PWMPER5=0x09;
PWMPER6=0x0A;
PWMPER7=0x9DA;
PWMDTY0=0x00; //级联通道01的占空比高字节
PWMDTY1=200; //级联通道01的占空比低字节
PWMDTY2=0x00; //级联通道01的占空比高字节
PWMDTY3=Ton[0]; //级联通道01的占空比低字节
PWMDTY4=0x00;
PWMDTY5=Ton[0];
PWMDTY6=0x00;
PWMDTY7=0xB0;
PWME=0xFF;
}
//锁相环寄存器初始化
void Pll_Init(void)
{
REFDV = 129; // 设置REFDV寄存器
SYNR =196; // 选择时钟频率,在.h里选SYNR_SET的值
asm nop // 等待PLL 稳定
asm nop
asm nop
asm nop
while ((CRGFLG&0x08) == 0); // 等待PLL频率锁定
CLKSEL |= 0x80; // PLL向系统总线输出时钟
}
void delay_1ms(void)//1ms 延时函数
{
uint i;
for (i=0;i<600;i++);
}
void delay_nms(uint n) //N ms 延时函数
{
uint i=0;
for (i=0;i<n;i++)
delay_1ms();
}
void LCD_write_byte(unsigned char dt, unsigned char command)
{
unsigned char i;
SCE=0;
DC=command;
for(i=0;i<8;i++)
{
if(dt&0x80)
DIN=1;
else
DIN=0;
dt=dt<<1;
CLK=0;
CLK=1;
}
DC=1;
SCE=1;
DIN=1;
}
void LCD_init(void)
{
DDRT=0Xff;
RST=0;
delay_1ms();
RST=1;
LCD_write_byte(0x21,0);//初始化 Lcd,功能设定使用扩充指令 LCD_write_byte(0xd0,0);//设定液晶偏置电压
LCD_write_byte(0xd0,0);
LCD_write_byte(0x20,0);//使用基本指令
LCD_write_byte(0x0C,0);//设定显示模式,正常显示
}
void LCD_set_XY(unsigned char X, unsigned char Y)
{
LCD_write_byte(0x40 | Y, 0);// column
LCD_write_byte(0x80 | X, 0);// row
}
void LCD_clear(void)
{
unsigned char t;
unsigned char k;
LCD_set_XY(0,0);
for(t=0;t<6;t++)
{
for(k=0;k<84;k++)
{
LCD_write_byte(0x00,1);
}
}
}
void LCD_write_shu(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页
//dd:字符
{
unsigned char i;
LCD_set_XY(row*4, page);// 列,页
for(i=0; i<8;i++)
{
LCD_write_byte(shuzi[c*16+i],1);
}
LCD_set_XY(row*4, page+1);// 列,页
for(i=8; i<16;i++)
{
LCD_write_byte(shuzi[c*16+i],1);
}
}
void main(void)
{
uint a,c,i,j,k,l,m,dj,kz;
l=3;
kz=0;
Pll_Init();
pwm_init();
LCD_init(); //初始化 LCD 模块
LCD_clear(); //清屏幕
DDRT=0xFF;
i=0,j=0,m=0;
LED=1;
delay_nms(300);
LED=0;
delay_nms(1000);
LED=1;
EnableInterrupts;
//PWMDTY1=0xC5;
delay_nms(500);
PWMDTY7=0xB0;
delay_nms(500);
for(dj=195;dj<196;dj++){
PWMDTY1=197;
//if(kz%2==0)
delay_nms(10000); //舵机从173到223,居中为197(跑试)
PWMDTY3=Ton[3];
// else
// PWMDTY5=Ton[3];
for(k=0;k<1;k++){
a=PWMDTY1/100;
c=(PWMDTY1-a*100)/10;
i=PWMDTY1-a*100-c*10;
LCD_write_shu(j,0,13); //舵机速度显示
j+=2;
LCD_write_shu(j,0,28);
j+=2;
LCD_write_shu(j,0,50);
j+=2;
LCD_write_shu(j,0,a);
delay_nms(500);
j+=2;
LCD_write_shu(j,0,c);
delay_nms(500);
j+=2;
LCD_write_shu(j,0,i);
delay_nms(500);
j=0; //
LCD_write_shu(m,2,22); //MOTOR速度显示
m+=2;
LCD_write_shu(m,2,28);
m+=2;
LCD_write_shu(m,2,50);
m+=2;
LCD_write_shu(m,2,3);
m+=2;
delay_nms(500);
LCD_write_shu(m,2,13);
delay_nms(500); //
m=0;
}
delay_nms(20000);
PWMDTY3=Ton[0];
PWMDTY1=215;
delay_nms(500);
PWMDTY3=Ton[4];
delay_nms(5000);
PWMDTY3=Ton[0];
PWMDTY5=Ton[3];
delay_nms(2000);
PWMDTY5=Ton[0] ;
PWMDTY1=197;
PWMDTY3=Ton[3];
delay_nms(20000);
PWMDTY3=Ton[0];
}
}
作者:
Mousekeys
时间:
2010-11-14 10:22
好东东~~~谢谢楼主分享!
作者:
wp1989
时间:
2010-11-14 11:22
兄弟 啊 你们确实很强啊!这么早开始玩车啦!
作者:
kinggwangg
时间:
2010-11-16 18:03
太给力了
作者:
ly466098850
时间:
2010-11-16 18:48
飘逸效果怎么样,给个视频看看
作者:
askeil
时间:
2010-11-16 21:01
給力
作者:
王其奇
时间:
2010-11-17 13:54
回复
5#
ly466098850
180度急转后回来,持续大概8秒,地方太小了,限制
作者:
王其奇
时间:
2010-11-17 13:56
回复
2#
Mousekeys
是自己在寝室呆着无聊就找老师,求了半天总算进来了。
我是机械工地比较好,家里都是机械,从小玩机械到初二
作者:
毛毛628
时间:
2010-12-8 19:33
感谢楼主!太有才了!
作者:
tutufanfan
时间:
2011-1-13 13:50
給力
作者:
tutufanfan
时间:
2011-1-13 13:50
作者:
tutufanfan
时间:
2011-1-13 13:50
作者:
tutufanfan
时间:
2011-1-13 13:50
作者:
tutufanfan
时间:
2011-1-13 13:53
作者:
a7335562
时间:
2011-3-2 17:06
强,参考参考
作者:
chilong1212
时间:
2011-3-3 17:07
LZ液晶用的是什么型号?
作者:
supper大毛
时间:
2011-3-4 16:13
顶你,好好学习
作者:
转角踩到屎
时间:
2011-3-4 16:41
先顶了再说。不知道是不是正确
作者:
瞬风
时间:
2011-4-23 12:27
刻苦啊谢谢;额
作者:
laoniuxxj
时间:
2011-4-23 17:24
赞
作者:
zsshiwo1
时间:
2011-4-25 17:05
额。。貌似没写什么舵机的吧!没什么用!!
作者:
杀虫剂
时间:
2011-11-14 18:45
强的一塌糊涂
作者:
longhunlanxue
时间:
2011-11-20 15:54
给力
作者:
lrbdh
时间:
2011-11-30 01:53
作者:
清明
时间:
2011-12-1 20:54
不错。
作者:
shadowowen
时间:
2011-12-13 01:11
飘移会不会造成车子英年早逝啊
作者:
guichuqing
时间:
2011-12-29 22:02
求视频,瞅瞅
作者:
370255785
时间:
2012-2-15 16:49
作者:
csycaiyan
时间:
2012-2-18 13:08
顶一个吧
作者:
ぷ无雨κiζs
时间:
2013-4-26 19:39
作者:
石秋燕子
时间:
2013-7-14 15:14
有才
作者:
哆啦A梦cyou
时间:
2014-1-17 08:31
给力
作者:
光【宅、、’
时间:
2014-3-21 19:52
PWMDTY0=0x00; //级联通道01的占空比高字节
PWMDTY1=200; //级联通道01的占空比低字节
PWMDTY2=0x00; //级联通道01的占空比高字节
PWMDTY3=Ton[0]; //级联通道01的占空比低字节
这里为什么不直接用PWMDTY01=xxxx?
作者:
光【宅、、’
时间:
2014-3-23 16:24
楼主能大概说下原理么?
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2