求飞思卡尔智能车程序

/*

***********************************************************************************

* Test.c

* Description: This file includes I/ O function for test, the PWM outputs function for test, function

* testing sensors.

* (c) Copyright 2006,Zhao Cheng

* All Rights Reserved

*

* By : Zhao Cheng

* Note : Don't change this file if possible.

**********************************************************************************/

#include <hidef.h>

#include <mc9s12dg128.h>

#define HIGHSPEED 8000

#define LOWSPEED 11000 /* 速度变量,0-24000 数值越大,速度越慢 */

void PWMout(int, int);

/* 24000-20000 */

void IOtest(void)

{

static unsigned char i=0,j=0x01,k;

DDRB = DDRA = 0xFF;

PORTB = 0xf0;

for(;;)

{

k=(~j)&0x7f;

PORTA = PORTB = k;

while (TCNT != 0x0000);

while (TCNT == 0x0000)

{

if(i>9)

{

j=j<<1;

i=0;

}

i++;

}

if(j>=0x80)

j=0x01;

}

}

void PWMtest(void)

{

int counter=-4500;

DDRB = 0xff;

PORTB = 0xff;

TSCR1 = 0x80; /* enable timer TCNT */

TSCR2 = 0x00; /* TCNT prescaler setup */

for(;;)

{

while (TCNT != 0x0000);

while (TCNT == 0x0000);

counter=counter+30;

if(counter >= 3000)

{

counter = 0;

PWMout(4500, LOWSPEED);

}

if(counter == 1500)

{

PWMout(-4500, LOWSPEED);

}

PORTB = (char)(counter/100);

}

}

void SignalTest(void)

{

unsigned char signal;

int Direction, Velocity;

Direction = 0;

Velocity = LOWSPEED;

DDRA = 0x00;

DDRB = 0xff;

signal = PORTA;

PORTB = ~signal;

switch(signal)

{

case 0x08: /* 0001 1000 */

case 0x10:

Direction = 800;

Velocity = HIGHSPEED;

break;

case 0x04: /* 0010 0100 */

case 0x20:

Direction = 1500;

Velocity = HIGHSPEED;

break;

case 0x02: /* 0100 0010 */

case 0x40:

Direction = 2800;

Velocity = HIGHSPEED;

break;

case 0x01: /* 1000 0001 */

case 0x80:

Direction = 4000;

Velocity = LOWSPEED;

break;

case 0x3c: /* 0011 1100 over start line */

case 0xff: /* 1111 1111 over crossing line */

case 0x00: /* 0000 0000 go straight not need changed state */

default:

break;

}

if(signal > 0x0f)

Direction = -Direction;

PWMout(Direction, LOWSPEED);

}

/*

***********************************************************************************

* LCD1620.c

* ICC-AVR application builder : 2006-1-8 21:43:48

* Target : M8

* Crystal: 4.0000Mhz

*

* Note : Don't change this file if possible.

**********************************************************************************/

#define CMD_CLEAR 0x01

#define CMD_RESET 0x02

#include <iom8v.h>

#include <macros.h>

#define LCD_DATA 0xff

#define LCD_EN 0x01 //PORTC 0

#define LCD_RS 0x02 //PORTC 1

#define LCD_RW 0x04 //PORTC 2

#define LCD_DATAPORT PORTB

#define LCD_ENPORT PORTA

#define LCD_RSPORT PORTA

#define LCD_RWPORT PORTA

void lcd_init(void);

void lcd_write_cmd(unsigned cmd,unsigned data);

void lcd_setxy(unsigned char x,unsigned char y);

void lcd_write_string(unsigned char X,unsigned char Y,unsigned char *str);

void delay_nus(unsigned int n);

void delay_nms(unsigned int n);

void lcd_init(void)

{

DDRB |= LCD_DATA;

DDRA |= LCD_EN | LCD_RS | LCD_RW;

LCD_RWPORT&=~LCD_RW;

LCD_DATAPORT=0x30; //控制字规则:5:8bit,4:16x2,3:5x7

LCD_ENPORT|=LCD_EN;

delay_nus(1);

LCD_ENPORT&=~LCD_EN;

delay_nus(40);

lcd_write_cmd(0,0x38); //8bit test

lcd_write_cmd(0,0x0c); //显示开

lcd_write_cmd(0,0x01); //显示清屏

lcd_write_cmd(0,0x06); //显示光标移动设置

}

void lcd_write_cmd(unsigned cmd,unsigned data)

{

if(cmd==0)

LCD_RSPORT&=~LCD_RS;

else

LCD_RSPORT|=LCD_RS;

LCD_DATAPORT&=0x00;

LCD_DATAPORT=data;

LCD_ENPORT|=LCD_EN;

delay_nus(10);

LCD_ENPORT&=~LCD_EN;

delay_nus(10);

}

void lcd_setxy(unsigned char x,unsigned char y)

{

unsigned char addr;

if(y==0)

addr=x+0x80;

else

addr=x+0xc0;

lcd_write_cmd(0,addr);

}

void lcd_write_string(unsigned char X,unsigned char Y,unsigned char *str)

{

lcd_setxy(X,Y);

while(*str)

{

lcd_write_cmd(1,*str);

str++;

}

}

void delay_1us(void) //1us延时函数

{

asm("nop");

}

void delay_nus(unsigned int n) //N us延时函数

{

unsigned int i=0;

for (i=0;i<n;i++)

delay_1us();

}

void delay_1ms(void) //1ms延时函数

{

unsigned int i;

for (i=0;i<1140;i++);

}

void delay_nms(unsigned int n) //N ms延时函数

{

unsigned int i=0;

for (i=0;i<n;i++)

delay_1ms();

}

//call this routine to initialize all peripherals

void main(void)

{

lcd_init();

while(1)

{

lcd_write_cmd(0,0x01); //清屏

delay_nms(2);

lcd_write_string(0,0,"happy new year");

delay_nms(100);

lcd_write_string(0,1,"LCD successful!");

delay_nms(100);

}

}

/******************************* 程序结束 *********************************/

怎样?

求飞思卡尔智能车摄像头组(k60)今年的完整程序。。。~

今年的没有,我有去年的,可以给你,摄像头组主要还是分为几部分,摄像头采集,图像处理,舵机控制,速度控制,就算我把整套程序给你,在你的车上估计也跑步起来,这程序都是有针对性的,比如前瞻,舵机中值还有以下其他的控制细节,建议你去论坛上看一下,http://www.znczz.com/,看看一些有关的东西,一部分一部分开始,不过人家有今年的程序,又有谁愿意给你呢,慢慢来吧少年!

一般分硬件与软件!
硬件方面,也就是电路设计,关于比赛用到的电路不是特别复杂,需要具备一定的电路基础,模拟电路,数字电路和一些EDA设计的能力,主要还是多看前人的东西,之后再在这些基础上改进创新。无论你主攻哪方面,以下基本电路知识是要知道的。所以现在开始《电路分析》《数字电路》《模拟电路》肯定要学好,这些都是基础,同时《传感器》之类的书也要看看。如果专攻硬件,这些是不够的,要多看一些电路设计方面的书,特别是一个小日本人编的电路设计,什么DXP之类的软件当然要会的一种,设计电路要使用。
软件方面,首先要确定希望做什么方面的小车,根据传感器不同,所需要运用的算法也有所差异的。无论如何,建议提前学《单片机》的知识,掌握汇编语言,学好《C语言程序设计》,再者就是控制算法了,关于自控原理和计算机控制也要有一定的了解,重点是“PID控制算法”!!!!
小车制作需要精力和时间,起步是比较困惑的,要多看资料,资料飞思卡尔官网上有一些,同时也希望能够大胆设计自己的新东西,为智能车的制作增添乐趣。

#19843698197# 飞思卡尔智能车求助,电机反转PWM的初始化 - ******
#汲魏# PWMDTY23是控制电机上的电压占空比的,进而控制电压 ,速度和电压有关啊 要是换向的话,无非就是把电机里相线的通电顺序改为相反啊,实现的话 我觉得不是添加什么程序,而是改一下,将相线的通电顺序改为相反.

#19843698197# 如何开始学习制作飞思卡尔摄像头智能车 - ******
#汲魏# 我也准备做飞思卡尔的摄像头竞赛,对于摄像头,我也是才开始学,关于经验,还是有一些智能车方面的经验.(1)智能车论坛上有最新的今年的技术报告,多看一看.(2)不知道你们组好队了没有,组队也很关键,我觉得要有一人软件比较强,...

#19843698197# 飞思卡尔智能车电磁组k60程序中,为什么初始化2个ftm - pwm波去控制电机的转动 - ******
#汲魏# 51也有这种方式做pwm输出,同样,一个是用定时器0做载频,定时器1做pwm调制,我不知道飞思卡尔单片机有没有专用的pwm口输出,好果没有专用的pwm口输出,那就是我前面说的这样,主要用与调节电机的快慢,

#19843698197# 飞思卡尔电磁智能寻迹小车编程用的什么软件 - ******
#汲魏# keil,CodeWarrior,还有苏大老师编的环境都可以用的

#19843698197# 初学者学习飞思卡尔智能车 - ******
#汲魏# 最近接触了一些飞思卡尔单片机,也算是初学吧,……你会c语言就可以了,首先你得看明白芯片的资料,学习这款芯片的最基本的东西,比如系统时钟该怎么设定,IO口怎么用,以及里面的寄存器该如何设定等等,这些都得弄明白.另外,就是学习模块,如:pwm模块,ECT模块等等,学习时可以看别人的程序,做到看的懂,会用就行.最后,祝你学习快乐.

#19843698197# 我是飞思卡尔智能车初学者 不知道怎么入门 那位大侠能告诉我 - ******
#汲魏# 硬件方面,也就是电路设计,关于比赛用到的电路不是特别复杂,需要具备一定的电路基础,模拟电路,数字电路和一些EDA设计的能力,主要还是多看前人的东西,看懂了再发展自己的,想创新的空间存在但是不是很大. 软件方面,首先要...

#19843698197# 大家好,我想问一下各位前辈,做飞思卡尔智能车时那么长的程序代码都是自己写的还是网上下载下来直接用, - ******
#汲魏# 先参考并消化前人的程序,然后自己学着写,加入自己的思想,而且要软硬件完美结合,才会有好成绩!

#19843698197# 求飞思卡尔智能车CCD摄像头程序 - ******
#汲魏# Main.c #include <hidef.h> /* common defines and macros */ #include <mc9s12db128.h> /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12db128b" #include "define.h" #include "init.h" // variable used in video process ...

#19843698197# 飞思卡尔智能车刚开始怎么弄? - ******
#汲魏# 一步一步来,先要讨论好方案,把小车分成模块,电源,驱动,传感器,单片机等几部分,然后再循序渐进的来,先做硬件部分电源,驱动,传感器这些,这些是车能跑出什么速度的基础,一定要保证可靠性,然后再来单片机,这部分是控制 硬件是基础,控制是发挥,多看看做得好的车,能借鉴到很多东西

#19843698197# 求飞思卡尔智能车的电机方面编程 - ******
#汲魏# 展开1全部 这要看用的是PWM哪个通道来控制了.下面用PWM2和PWM3来控制.#include <hidef.h> /* common defines and macros */#include <mc9s12dg128.h> /* derivative information */#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"...

  • 求助飞思卡尔智能车
  • 答:无法打开USB设备?!换个软件版本 用5.00吧

  • 求飞思卡尔智能车竞赛的完整的技术报告
  • 答:“飞思卡尔”杯全国大学生智能汽车竞赛比赛规则 参赛选手须使用竞赛秘书处统一指定并负责采购竞赛车模,采用飞思卡尔16位微控制器MC9S12DG128作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动...

  • 如何开始学习制作飞思卡尔摄像头智能车
  • 答:我也准备做飞思卡尔的摄像头竞赛,对于摄像头,我也是才开始学,关于经验,还是有一些智能车方面的经验。(1)智能车论坛上有最新的今年的技术报告,多看一看。(2)不知道你们组好队了没有,组队也很关键,我觉得要有一人...

  • 飞思卡尔智能车,舵机反应太快了导致车跑起来左右晃动的厉害是什么回事...
  • 答:最大问题还是程序有问题,舵机只是负责执行的,机械的不足一般可通过程序弥补。

  • 飞思卡尔智能车的核心算法是什么
  • 答:总的来说就是闭环控制了,具体一些,现在比较主流的就是借用工业控制中的PID算法--模糊自整定PID算法

  • 飞思卡尔采样转弯程序
  • 答:同学,个人觉得你这个思想不好. 我觉得每个传感器状态对应一个舵机转角还有电机速度这样 车跑起来才会考普. 你说的弯道出去可能是PID没有调好导致速度没有减下来. 这方面我以前做过很多也调过很多.也拿过好名次.哈哈 ...

  • 关于飞思卡尔智能车,当电机的 速度提高后,摄像头采集的数据无法实时的传...
  • 答:是你的处理程序太慢了,摄像头的数据不一定都要读取进行计算的,可以适当减少一下。

  • 飞思卡尔智能车竞赛需要学些什么啊?新手提问
  • 答:需要很多方面的知识,因为他分电磁组、光电组和摄像头组,看你要报哪个组,主要是自动化专业方面的知识,如果你是本科生,最好找一个研究生或导师带你,它涉及的只是特别广,如:1、C语言 2、单片机 3、电路原理 4、...

  • 飞思卡尔智能车大赛规则的资料!
  • 答:1、初赛规则 比赛场中有两个相同的赛道。参赛队通过抽签平均分为两组,并以抽签形式决定组内比赛次序。比赛分为两轮,两组同时在两个赛道上进行比赛,一轮比赛完毕后,两组交换场地,再进行第二轮比赛。在每轮比赛中,每...

  • 找高手帮我做一个霍尔测速程序和电路
  • 答:本文将从该智能车总体方案、路径识别方案选择、转向和驱动控制及路径记忆算法等方面进行介绍。 智能车总体方案 智能车系统以飞思卡尔公司的MC68S912DP256为核心,由电源模块、传感器模块、直流电机驱动模块、转向电机控制模块、控制参数选择...

    为传递更多家电数码信息,若有事情请联系
    数码大全网