飞思卡尔车模竞赛基础Word格式文档下载.docx
《飞思卡尔车模竞赛基础Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《飞思卡尔车模竞赛基础Word格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。
相应的定时器设置参考xs128技术手册,然后在同学或是。
(3)先进行基本的波特率和一些必要的设置;
主要过程是对SCI0SR1_TDRE的监测和判断,当空的时候SCI0SR1_TDRE=1,当接受传输数据未结束时SCI0SR1_TDRE=0。
中断法不同于查询法的地方时,前者不同于后者一直在占用内存执行查询,前者只是中断的时候执行查询程序。
同时我们可以比较在相同的时间里完成中断然后进行从1的自加。
比较这两种方法的效率,中断法较好。
(4)N5110D的部件的应用需要了解部件的初始化,对其进行一些一些基本的初始化,然后加上一些自己定义的函数,然后加载到程序的主要步骤中。
(5)PWM波的产生方法科协的学长给我们上过课,范例也给了,应用到这里基本不用改变多少语句。
如何将PWM波的波形显示到5110上是通过对占空比的控制实现的。
(6)通过串口选择,我们可以提高速度,达到实时性要求,目前达到1兆每秒数据存储。
4.程序清单
每一个子程序上面都要有详细说明
里面代码注释。
。
#include<
hidef.h>
/*commondefinesandmacros*/
#include"
derivative.h"
/*derivative-specificdefinitions*/
5110.h"
key.h"
LCDshow.H"
byteflag=0;
byteWidth=20;
voidmain(void)
{
N5110_Init();
for(;
;
)
{
LCD_show();
Key_Init();
}
}
说明:
P1口产生周期为5毫秒的PWM波
#ifndef_PWM_H_
#define_PWM_H_
voidPWM_Init(void);
#endif
PWM.h"
voidPWM_Init(void)
PWME_PWME0=0;
//禁止要设置的通道,因为要级联,该通道被屏蔽即使打开也没波形
PWME_PWME1=0;
//禁止要设置的通道
PWMCTL_CON01=1;
//合并通道0和1形成16位PWM通道,通道0和通道0的设置被屏蔽
PWMPOL_PPOL1=1;
//设置通道极性,起始输出高电平,占空比就是高电平
PWMCAE_CAE1=0;
//设置对其方式,左对齐方式
PWMCLK_PCLK1=0;
//设置参考时钟,A时钟为参考时钟
PWMPRCLK_PCKA=0;
//设置A时钟的分频系数
PWMPER01=40000;
//设置周期计数值
PWMDTY01=20000;
//设置占空比,初始为0
PWME_PWME1=1;
//使能通道3,即开启PWM
}
#ifndef_KEY_H_
#define_KEY_H_
voidKey_Init(void);
externbyteflag;
externbyteWidth;
voidKey_Init(void)
DDRB=0X00;
//检测B口所以设置B口的输出
PORTB=0XFF;
DDRT=0Xff;
PTT=0XFE;
if(flag>
2)
flag=0;
if(PORTB_PB4==0)
while(PORTB_PB4==0);
N5110_Clean_Screen();
flag++;
elseif(PORTB_PB5==0)
while(PORTB_PB5==0);
flag--;
elseif(PORTB_PB6==0)
while(PORTB_PB6==0);
Width++;
elseif(PORTB_PB7==0)
while(PORTB_PB7==0);
Width--;
}
#ifndef_LCDSHOW_H_
#define_LCDSHOW_H_
voidLCD_show(void);
#include"
voidLCD_show(void)
bytei,j;
if(flag==0)
{
for(i=0;
i*Width<
84;
i++)
N5110_Write_Coord(i*Width,2);
N5110_Write_Data('
D'
0xff);
N5110_Write_Coord(i*Width,3);
for(j=Width*i+1;
j<
Width*(i+1);
j++)
if(i%2==0)
N5110_Write_Coord(j,2);
0x01);
else
N5110_Write_Coord(j,3);
0x80);
elseif(flag==1)
N5110_Write_Coord(i*Width,1);
N5110_Write_Coord(i*Width,4);
N5110_Write_Coord(j,1);
N5110_Write_Coord(j,4);
elseif(flag==2)
N5110_Write_Coord(i*Width,0);
N5110_Write_Coord(i*Width,5);
N5110_Write_Coord(j,0);
N5110_Write_Coord(j,5);
#ifndef_5110_H_
#define_5110_H_
#defineRET_5110_HPORTE_PE7=1
#defineRET_5110_LPORTE_PE7=0
#defineCE_5110_HPTM_PTM0=1
#defineCE_5110_LPTM_PTM0=0
#defineDC_5110_DPTJ_PTJ7=1
#defineDC_5110_CPTJ_PTJ7=0
#defineSDIN_5110_HPTM_PTM4=1
#defineSDIN_5110_LPTM_PTM4=0
#defineSCLK_5110_HPTM_PTM5=1
#defineSCLK_5110_LPTM_PTM5=0
voidN5110_Init(void);
voidN5110_Write_Data(byteDC,byteData);
voidN5110_Write_Coord(byteCoord_X,byteCoord_Y);
voidN5110_Clean_Screen(void);
voidN5110_Write_Char(charascii);
voidMenu_Write_String(char*string);
//N5110初始化函数
voidN5110_Init(void)
PORTE_PE7=0;
PTM=0x00;
PTT_PTT7=0;
DDRM|=(1<
<
0)|(1<
4)|(1<
5);
//M口方向寄存器
DDRE_DDRE7=1;
//E口方向寄存器
DDRJ_DDRJ7=1;
//J口方向寄存器
RET_5110_L;
//N5110芯片复位
RET_5110_H;
CE_5110_L;
//初始不选通N5110芯片,仅在需要写入数据的时候选通芯片
C'
0x21);
//设置功能设置寄存器,芯片活动,水平寻址,使用扩展命令
0xbf);
//设置液晶偏置电压
0x06);
//温度校正
0x13);
//设置偏置系统1:
48
0x20);
//使用基本指令集
0x0c);
//设置显示模式为普通模式
//清屏
//N5110同步串行函数
voidN5110_Write_Data(byteDC,byteData)
bytei;
//片选芯片使得数据可以写入
if(DC=='
)//区分数据类型
DC_5110_D;
else
DC_5110_C;
for(i=0;
i<
8;
i++)//同步串行发送数据
SCLK_5110_L;
//时钟信号拉低
if((Data&
0x80)!
=0)//每一次判断第八位数据来确定数据引脚的状态,通过左移数据位到第八位实现八位输出
{
SDIN_5110_H;
}
SDIN_5110_L;
}
SCLK_5110_H;
//时钟信号拉高,上升沿写入数据
Data<
=1;
//把要发送的数据左移到第八位用于判断
CE_5110_H;
//不选通芯片
//N5110设置坐标函数
voidN5110_Write_Coord(byteCoord_X,byteCoord_Y)
Coord_X|0x80);
//设置X坐标,X坐标命令字要求第八位为1所以与上0x80
Coord_Y|0x40);
//设置Y坐标,X坐标命令字要求第五位为1所以与上0x40
//N5110清屏函数
voidN5110_Clean_Screen(void)
wordi;
N5110_Write_Coord(0,0);
//设置初始坐标为0,0
504;
i++)//写84*6组0x00数据完成清屏
0x00);
//N5110写一个字符函数
voidN5110_Write_Char(charascii)
wordcoord=(ascii-'
'
)*5;
//计算该字符的模在ASCII码表的位置
5;
i++)//依次写入模值
ascii_dot[coord+i]);
//N5110写一个字符串函数
voidMenu_Write_String(char*string)
{
while(*string!
=0x00)//输出直到遇到0x00
N5110_Write_Char(*string);
string++;
5.期末总结
车模竞赛基础课,既然说明了这是一个基础课,所以我们不太依靠在课堂的那么多时间,因为每周两节课90分钟,再加上有时候实验课,显然课上的讲解并不能让我们很好的解决问题。
科普讲解让我们对飞思卡尔智能车有了个大概的认识与了解,对智能车各个部分的组件都进行了讲解。
也许我们需要的是自己的求知的欲望,我们可以询问学长,XX搜索,请教老师。
这将不仅仅培养了我们的自学能力,同时也加强了同学间的沟通与合作,信息共享提高效率。
只是很遗憾的说,我并没有很好地顿悟,没有投入百分百的精力去做这个,然后只剩下了遗憾。