智能小车单片机课程设计报告

时间:2019-05-13 23:51:34下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《智能小车单片机课程设计报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《智能小车单片机课程设计报告》。

第一篇:智能小车单片机课程设计报告

单片机课程设计

题 目: 专 业: 班 级: 组长 成员 成员 成员 成员

智能小车设计 计算机科学与技术

14级2班

姓名 学号

年 12 月 23 日

2016

打开命令行终端的快捷方式: ctr+al+t:默认的路径在家目录

ctr+shift+n:默认的路径为上一次终端所处在的路径.linux@ubuntu:~$ linux:当前登录用户名.ubuntu:主机名

:和$之间:当前用户所处在的工作路径.windows下的工作路径如C:IntelLogs linux下的工作路径是:/.../..../ ~:代表的是/home/linux这个路径.(家目录).ls(list):列出当前路径下的文件名和目录名.ls-a(all):列出当前路径下的所有文件和目录名,包括了隐藏文件..:当前路径..:上一级路径

ls-l:以横排的方式列出文件的详细信息

total 269464(当前这个路径总计所占空间的大小,单位是K)drwxr-xr-x 3 linux linux 4096 Dec 4 19:16 Desktop

chmod u-或者+r/w/x 文件名 chmod g-或者+r/w/x 文件名 chmod o-或者+r/w/x 文件名(3).cd /home/linux 进入到1目录里并创建一个2普通文件,再退回上一级,并且删除1目录 6.拷贝文件.cp(copy)路径1/源文件 路径2:把路径1下的文件拷贝到路径2下

cp 路径1/源文件 路径2/目标文件:把路径1下的文件拷贝到路径2下并且重命名位目标文件.cp(copy)-r 路径1/目录名 路径2:把路径1下的目录拷贝到路径2下 7.剪切文件

mv(move)路径1/源文件 路径2:把路径1下的文件剪切到路径2下

mv 路径1/源文件 路径2/目标文件:把路径1下的文件剪切到路径2下并且重命名位目标文件

mv 源文件 目标文件:重命名文件

mv 路径1/目录名 路径2:把路径1下的目录剪切到路径2下 8.clear:清屏 9.exit 退出终端 vi编辑器.vi 文件名:如果文件不存在则创建并打开 如果文件已存在,则直接打开

VI编辑器的三种模式

1.命令行模式:刚进入编辑器的时候,默认处在这种模式下

2.编辑模式(插入模式):输入a/i/o即可进入,按下esc键退回命令行模式,再输入冒号 ,即可进入底行模式.3.底行模式下:w(保存),q(退出),wq(保存并退出),q!(强制退出不保存)按下退格键,删除冒号,即可进入命令行模式.终极保存法;w!sudo tee %d回车再回车即可

命令行模式下的快捷操作: 1.整行复制:光标移动想要复制的那一行,输入yy即可,再把光标移动到你想要粘贴位置的上一行,输入p即可

2.多行复制:光标移动想要复制的那几行的 6.多行剪切:光标移动想要剪切的那几行的 再编译一个c应用程序,在程序中来调用库里实现的函数

gcc 应用程序名-l库名(注意是去掉lib和.so的库名)

文件IO linux系统下一切设备皆文件

操作文件: open():打开一个文件

read()://从文件里边读出数据 write()//向文件里写入数据 close()//关闭文件

man手册: man 2 函数名

open: 头文件

#include #include #include

1.int open(const char *pathname, int flags);//仅限于打开一个已存在文件

参数1:文件的路径 参数2:打开方式的标志

O_RDONLY,//只读方式打开

O_WRONLY,//只写方式打开

O_RDWR.//可读可写方式打开 返回值: 打开成功:返回一个正数(文件描述符)打开失败:-1

2.int open(const char *pathname, int flags, mode_t mode);//可以打开一个不存在的文件 参数1:文件的路径 参数2:打开方式的标志

O_RDONLY,//只读方式打开

O_WRONLY,//只写方式打开

O_RDWR.//可读可写方式打开

如果文件不存在必须|O_CRAET,创建该文件 参数3:权限 数 比如:0666

返回值: 打开成功:返回一个正数(文件描述符)打开失败:-1

write: 头文件: #include

typedef int ssize_t

ssize_t write(int fd, const void *buf, size_t count);参数1:就是open函数的返回值,文件描述符 参数2:你想要写入的数据

参数3:你想要写入的数据的字节大小

返回值: 写入成功:返回的是写入的字节大小 写入失败:-1

strlen:实际长度 sizeof:数组的大小

arduino viod setup(){ 端口的配置;}

void loop(){ 任务的执行;

}

arduino之呼吸灯实验: int led=13;void setup(){ pinMode(led,OUTPUT);} void loop(){ digitalWrite(led,HIGH);delay(1000);digitalWrite(led,LOW);delay(1000);} 渐变灯: 暗->亮->暗

PWM波:可调脉冲宽度波.3,5,6,9,10,11这几个端口可以输出pwm波 analogWrite(pin, value)//输出pwm波 pin:管脚号:3,5,6,9,10,11中的任意一个 value:0~255中的任何一个数: 0:占空比为0% 255:占空比位100%

远程视频监控步骤: 1.将jpegsrc.v8b.tar.gz(图片库)和mjpg-streamer-code-182.tar.gz(视频查看软件)拷贝到ubuntu的家目录

2.解压缩

tar xvf jpegsrc.v8b.tar.gz 3.cd jpeg-8b 4../configure //创建Makefile文件 5.make 6.sudo make install //安装

程序运行时,默认寻找的头文件的路径在/usr/include,库文件的路径/lib

cd /usr/local/include sudo cp * /usr/include cd /usr/local/lib

sudo cp libjpeg* /lib

7.切换到家目录:cd 移植查看视频的软件:

tar xvf mjpg-streamer-code-182.tar.gz cd mjpg-streamer-code-182 cd mjpg-streamer make clean //清除已经编译过的程序

make

运行查看视频的软件:sudo./start.sh 打开火狐浏览器

在地址栏输入127.0.0.1:8080 若发现视频绿屏

先强制结束程序运行:ctl+c.解决方法:

修改start.sh

将 要对uboot环境信息进行设置

首先把拨码开关拨到0000位置.选择uboot的启动方式.uboot从外存启动.1.找到自己的COM端口号;打开putty 2.选中Serial,把波特率改为115200,端口号改为自己的端口号,Flow contrlo选择none 3.开启电源,会出现一个倒计时,在倒计时完成之前,随便敲一个键盘.4.输入命令print可以显示uboot的打印信息

确保: ipaddr=192.168.1.100//代表开发板的ip地址 serverip=192.168.1.200//代表ubuntu的IP地址 bootargs=root=nfs nfsroot=192.168.1.200:/source/rootfs ip=192.168.1.100 init=/linuxrc console=ttySAC0,115200//

打开虚拟机: 1.进入到/tftpboot目录下.把zImage拖到虚拟机,前加cp ,后加./ 使用ls查看一下是否出现zImage 2.cd /source 把rootfs这个压缩包拖到虚拟机,前加cp ,后加./ 使用ls查看一下是否出现rootfs.tgz 3.解压命令: sudo tar-xvf rootfs.tgz 要让你输入密码;输入1回车即可,密码是不可见的.再用ls查看是否多了一个蓝色的文件rootfs.4.修改ubuntu的ip地址.找到wiffi图标,点击选中edit connection->IPV4 seting->manual->add ip netmask gateway 192.168.1.200 255.255.255.0 192.168.1.1 点击保存.关闭窗口.再打开图标选中wired connection1 再看ip是否改回来了.5.网线连接开发板和电脑

在putty界面输入:ping 192.168.1.200 如果host 192.168.1.200 is alive,这是挂载系统很好的征兆.not alive的话需要关闭电脑的无线网

输入boot或者重启开发板不要再按下任何键了,如果出现

####很快就要挂载成功了 如果出现TTTTTTTTTTTTTT 在ubuntu输入命令:sudo service tftpd-hpa restart 其中sudo的作用是暂时将用户的权限提升到超级用户(root)的权限.如果出现Please press Enter to activate this console.代表系统挂载成功.通过gcc编译生成的程序不能在开发板上运行.通过命令file a.out看到文件的格式为intel 30386,说明这是X86格式的程序,只能PC上运行

而不能在arm板上运行,解决措施,使用交叉编译器来编译.交叉编译器的配置: 将arm-cortex_a8-linux-gnueabi.tar.bz2拖到ubuntu的家目录

解压命令tar-xvf arm-cor+tab键自动补齐,用ls查看是否生成arm-cortex_a8个目录.配置交叉编译器: sudo vi /etc/bash.bashrc文件

在最后一行添加export PATH=$PATH:/home/linux/arm-cortex_a8/bin 保存并退出文件

保存完成后重启文件:source /etc/bash.bashrc

重启成功后输入arm-cor+tab键会自动补齐成arm-cortex_a8-linux-gnueabi-代表交叉编译器配置成功.利用交叉编译器编译程序: arm-cortex_a8-linux-gnueabi-gcc 文件名,并将生成的可执行程序拷贝到/source/rootfs下

然后再到putty上执行./a.out就可以在开发板上运行程序了.

相关代码

Che.c

#include “cgic.h” #include #include #include #include #include

void zigbee_serial_init(int fd){ struct termios options;

tcgetattr(fd, &options);options.c_cflag |=(CLOCAL | CREAD);options.c_cflag &= ~CSIZE;options.c_cflag &= ~CRTSCTS;options.c_cflag |= CS8;options.c_cflag &= ~CSTOPB;options.c_iflag |= IGNPAR;options.c_iflag &= ~(BRKINT | INPCK | ISTRIP | ICRNL | IXON);

//options.c_cc[VTIME] = 2;options.c_cc[VMIN] = 12;

options.c_oflag = 0;options.c_lflag = 0;

cfsetispeed(&options, B115200);cfsetospeed(&options, B115200);

tcsetattr(fd,TCSANOW,&options);

} int cgiMain(){ int fd;char a='1';cgiHeaderContentType(“text/htmlnn”);fprintf(cgiOut,“n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“n”);

fprintf(cgiOut,“n”);fprintf(cgiOut,“SMART CARn”);fprintf(cgiOut,“n”);fprintf(cgiOut,“”);fprintf(cgiOut,“n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“

n”);fprintf(cgiOut,“



n”);fprintf(cgiOut,“
n”);fprintf(cgiOut,“

n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“    n”);fprintf(cgiOut,“”);fprintf(cgiOut,“    n”);fprintf(cgiOut,“

n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“
n”);

fd=open(“/dev/ttyUSB0”,O_RDWR);if(-1==fd)

fprintf(cgiOut,“open usart failedn”);

}

zigbee_serial_init(fd);if(cgiFormSuccess==cgiFormSubmitClicked(“up”)){ a='2';write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“down”)){ a='1';write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“right”)){ a='4';write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“left”)){ a='3';write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“stop”)){ a='0';write(fd,&a,1);} fprintf(cgiOut,"

第二篇:单片机课程设计报告——智能数字频率计

单片机原理课程设计报告

题目:智能数字频率计设计

专业: 信息工程 班级:信息111 学号:*** 姓名:*** 指导教师:***

北京工商大学计算机与信息工程学院

1、设计目的

(1)了解和掌握一个完整的电子线路设计方法和概念;

(2)通过电子线路设计、仿真、安装和调试,了解和掌握电子系统研发产品的一个基本流程。

(3)了解和掌握一些常见的单元电路设计方法和在电子系统中的应用: 包括放大器、滤波器、比较器、计数和显示电路等。

(4)通过编写设计文档与报告,进一步提高学生撰写科技文档的能力。

2、设计要求

(1)基本要求

设计指标:

1.频率测量:0~250KHz; 2.周期测量:4mS~10S; 3.闸门时间:0.1S,1S;

4.测量分辨率:5位/0.1S,6位/1S; 5.用图形液晶显示状态、单位等。

充分利用单片机软、硬件资源,在其控制和管理下,完成数据的采集、处理和显示等工作,实现频率、周期的等精度测量方案。在方案设计中,要充分估计各种误差的影响,以获得较高的测量精度。

(2)扩展要求

用语音装置来实现频率、周期报数。

(3)误差测试

调试无误后,可用数字示波器与其进行比对,记录测量结果,进行误差分析。

(4)实际完成的要求及效果

1.测量范围:0.1Hz~4MHz,周期、频率测量可调; 2.闸门时间:0.05s~10s可调; 3.测量分辨率:5位/0.01S,6位/0.1S; 4.用图形液晶显示状态、单位(Hz/KHz/MHz)等。

3、硬件电路设计

(1)总体设计思路 本次设计的智能数字频率计可测量矩形波、锯齿波、三角波、方波等信号的频率。系统共设计包括五大模块: 主芯片控制模块、整形模块、分频模块、档位选择模块、和显示模块。设计的总的思想是以AT89S52单片机为核心,将被测信号送到以LM324N为核心的过零比较器,被测信号转化为方波信号,然后方波经过由74LS161构成的分频模块进行分频,再由74LS153构成的四选一选择电路控制档位,各部分的控制信号以及频率的测量主要由单片机计数及控制,最终将测得的信号频率经LCD1602显示。

各模块作用如下: 1.主芯片控制模块: 单片机AT89S52 内部具有2个16位定时/计数器T0、T1,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。利用单片机的计数器和定时器的功能对被测信号进行计数。以AT89S52 单片机为控制核心,来完成对各种被测信号的精确计数、显示以及对分频比的控制。利用其内部的定时/计数器完成待测信号周期/频率的测量。

2.整形模块:整形电路是将一些不是方波的待测信号转化成方波信号,便于测量。本设计使用运放器LM324连接成过零比较器作为整形电路。

3.分频模块: 考虑单片机利用晶振计数,使用11.0592MHz 时钟时,最大计数速率将近500 kHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。本设计使用的分频芯片是74LS161实现4分频及16分频。

4.档位选择模块:控制74LS161不分频、4分频 或者 16分频,控制芯片是74LS153。5.显示模块:编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示,本设计选用LCD1602。

(2)测频基本设计原理

所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T(右图3-1所示)。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。利用单片机的定时/计数T0、T1的定时、计数功能产生周期为1s的时间脉冲信号,则门控电路的输出信号持 图3-1 续时间亦准确地等于1s。闸门电路由标准的秒脉冲信号进行控制,当秒脉冲信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒脉冲信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。

(2)系统框图

本智能数字频率计系统框图如图3-2所示

图3-2智能数字频率计系统框图

(3)单片机部分

P0口经上拉后做LCD数据接口 P2.1~P2.3作为LCD控制端口 P2.4~P2.5作为分频选择端口 P3.5作为被测信号输入端口

P3.2~P3.4作为开关控制端口(对应电路图中K1,K2,SET)

图3-3 89D52单片机部分电路

(4)分频部分

74HC161与74ls161功能兼容,是常用的四位二进制可预置的同步加法计数器,他可以灵活的运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能。

其管脚图如图3-4所示:

图3-4 74HC161 图3-5 74HC153管脚图

74HC153是一个双4选1数据选择器,其管脚图如图3-5所示:

74LS161对整形后的防波信号进行分频,Q1为四分频输出,Q3为16分频输出。未经分频、经过四分频和经过16分频的三路信号作为74LS153的一个4选1数据选择器低三位输入,由单片机控制选择分频数,然后再送单片机内部计数器T1(如图3-6)。

图3-6 分频、选择分频档位电路图

(5)LCD显示部分

LCD显示,1602的八位数据I/O口与单片机的P0口相连,读写控制端接P2.0-P2.2口。三个按键中,设置键接P3.2单片机按外部中断0接口,当按键按下后,置P3.2口低电平,单片机中断。S1、S2为频率/周期、闸门时间加/减选择按键(如图3-7)。

图3-7 LCD显示部分电路图

4、软件设计

(1)主程序流程图设计

本次程序设计采用的是C语言程序设计,其设计流程图4-1所示:

图4-1主程序流程图

(2)子程序流程图设计

<1>显示程序:

LCD显示程序设计流程如图4-2所示:

图4-2显示程序流程图 <2>频率测量程序框图:

频率测量程序的整体架构如图4-3所示:

图4-3频率测量框架图

(3)中断服务流程图

INT0中断流程图如图4-4所示:

图4-4INT0中断流程图

(4)程序代码

#include #include #include #include float f;

//频率 float p;

//周期 float sj;

//闸门时间 char idata buff[20];char flag=0;

//频率、周期选择标志位

char xs=0;//设置闸门时间结束后是否显示结果的标志位

unsigned char m=0,n=0,yichu=0,fenpin;

//m定时中断次数 n计数中断次数 yichu判断是定时

//器还是计数器溢出

#define Key_Set P3 #define K1 0xf7

//11110111

P33 #define K2 0xef

//11101111

P34 #define NO_Set 0xff #define Freq 0 #define Peri 1

sbit B153=P2^4;sbit A153=P2^3;sbit P17=P3^4;sbit P16=P3^3;sbit P35=P3^5;sbit Set=P3^2;unsigned char LCD_Wait(void);void LCD_Write(bit style, unsigned char input);void LCD_SetDisplay(unsigned char DisplayMode);void LCD_SetInput(unsigned char InputMode);void LCD_Initial();void GotoXY(unsigned char x, unsigned char y);void Print(unsigned char *str);void C52_Initial();void Delay(unsigned int t);void display(float f);void cepin();void panduan();void timedisplay(float sj);void Time_Set1();void Time_Set2();void t0();void t1();

/*****模块名称 LCD1602显示程序******/

/***********************端口定义 ***********************************/

sbit LcdRs= P2^0;sbit LcdRw= P2^1;sbit LcdEn= P2^2;sfr DBPort= 0x80;

//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 /************************内部等待函数********************************/

unsigned char LCD_Wait(void){

LcdRs=0;

//寄存器选择输入端 1:数据 0:指令

LcdRw=1;

_nop_();//RW:为0:写状态;为1:读状态;

LcdEn=1;

_nop_();

//使能输入端,读状态,高电平有效;写状态,下降沿有效

LcdEn=0;

return DBPort;

} /**********************向LCD写入命令或数据***************************/

#define LCD_COMMAND 0

// Command #define LCD_DATA 1

// Data #define LCD_CLEAR_SCREEN

0x01

// 清屏 #define LCD_HOMING

0x02

// 光标返回原点 void LCD_Write(bit style, unsigned char input){

LcdEn=0;

LcdRs=style;

LcdRw=0;

_nop_();

DBPort=input;

_nop_();//注意顺序

LcdEn=1;

_nop_();//注意顺序

LcdEn=0;

_nop_();

LCD_Wait();} /********************设置显示模式*********************************/

#define LCD_SHOW

0x04

//显示开 #define LCD_HIDE

0x00

//显示关

#define LCD_CURSOR

0x02

//显示光标

#define LCD_NO_CURSOR

0x00

//无光标

#define LCD_FLASH

0x01

//光标闪动 #define LCD_NO_FLASH

0x00

//光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode){

LCD_Write(LCD_COMMAND, 0x08|DisplayMode);

} /*********************设置输入模式***********************************/ #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00

// default #define LCD_MOVE 0x01

// 画面可平移 #define LCD_NO_MOVE 0x00

//default void LCD_SetInput(unsigned char InputMode){

LCD_Write(LCD_COMMAND, 0x04|InputMode);} /******************初始化LCD**************************************/

void LCD_Initial(){

LcdEn=0;

LCD_Write(LCD_COMMAND,0x38);

//8位数据端口,2行显示,5*7点阵

LCD_Write(LCD_COMMAND,0x38);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);

//开启显示, 无光标

LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);

//清屏

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);

//AC递增, 画面不动 }

/************************************************************************/ void GotoXY(unsigned char x, unsigned char y){ if(y==0)

LCD_Write(LCD_COMMAND,0x80|x);if(y==1)

LCD_Write(LCD_COMMAND,0x80|(x-0x40));} void Print(unsigned char *str){

while(*str!='')

{

LCD_Write(LCD_DATA,*str);

str++;

} }

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

模块名称:

频率测量程序

* *

测量范围:0.1Hz~4MHz,闸门时间:0.05s~10s可调。

* ***************************************************************************/ /***************************89c52初始化************************************/ void C52_Initial(){ sj=1000000.00;Key_Set=0xff;TMOD=0x51;

// 01010001 T1为计数器,T0为定时器

EA=1;ET0=1;ET1=1;EX0=1;

PX0=1;

//外部中断0设置为高优先级

IT0=0;

//电平触发方式 } /**************************延时子程序**************************************/ void Delay(unsigned int t)

//t随着数值越大,误差趋于平衡.{

unsigned char i;

while(t--)

{

for(i=0;i<123;i++){;}

} } /*************************计数中*********************************/ void t1(void)interrupt 3

//计数器1溢出,yichu=1 { n++;yichu=1;TH1=0;TL1=0;} /***********************定时中断****************************/ void t0(void)interrupt 1

{ m++;yichu=2;

//定时器0溢出,yichu=2 TH0=0x3c;

//定时50ms TL0=0xb0;} /***********************频率显示*****************************/ void Fdisplay(float f){

if(f>999400.00)

{

if(f<4000400.00)

{sprintf(buff,“ F=%2.4fmHz ”,(f/1000000.00));}

}

else

{

if(f>1040.00)

{sprintf(buff,“ F=%4.2fkHz ”,(f/1000.00));}

else

{

if(f>0.06)

{sprintf(buff,“ F=%3.2fHz

”,f);}

}

}

GotoXY(0,1);

Print(buff);} /***********************周期显示**********************************/ void Pdisplay(float p){

if(p>999400.00)

{

if(p<10004000.00)

{sprintf(buff,“ Cycle:%2.4fs ”,(p/1000000.00));}

else

{sprintf(buff,“error(Time or F)”,p);}

}

else

{

if(p>9950.00)

{sprintf(buff,“ Cycle:%4.2fms ”,(p/1000.00));}

else

{

if(p>0.248)

{sprintf(buff,“ Cycle:%3.3fus ”,p);}

else

{sprintf(buff,“error(Time or F)”,p);}

}

}

GotoXY(0,1);

Print(buff);}

/*********************测试频率**************************/ void cepin(){ unsigned char a;unsigned long js;m=0;n=0;TMOD=0x51;TH0=0x3c;

//定时50ms TL0=0xb0;TH1=0;TL1=0;a=sj/50000.00;TCON=0x50;

//启动定时器和计数器 while(m!=a);TCON=0;js=TH1*256+n*65536+TL1;f=(js/(sj/1000000.00))*fenpin;p=sj/(js*fenpin);if(xs==0)

//设置结束后第一次不显示结果 { if(flag==Freq)Fdisplay(f);else Pdisplay(p);} }

/*********************判断频率******************************/ void panduan(){ xs=0;

//设置结束后第二次循环显示结果 B153=1;

//选择16分频 A153=0;yichu=0;TMOD=0x51;

TH0=0xff;

TL0=0x38;TH1=0xff;

TL1=0x9c;TR0=1;

TR1=1;while(yichu==0);

TR0=0;

TR1=0;

if(yichu==1)

(f>500khz)

{fenpin=16;

cepin();} else

频数

{

yichu=0;

B153=0;

A153=1;

TH0=0xfc;

TL0=0x18;

TH1=0xff;

TL1=0x9c;

TR0=1;

TR1=1;

while(yichu==0);

TR0=0;

TR1=0;

if(yichu==1)

(1khz

{fenpin=4;

//定时器0

200us

//计数器1

100脉冲

//启动定时器0和计数器1

//如果没有溢出一直循环

//已经溢出关闭定时器0和计数器1

//计数器先溢出:在200ms内测得的脉冲过多,说明频率较高

//转为测16分频后的频率 //定时器先溢出:100个脉冲的时间比较短,即频率较低,可以减少分

//定时器0

1ms

//计数器1

100个脉冲

//启动定时器0和计数器1

//如果没溢出一直循环

//已经溢出关闭定时器0和计数器1

//计数器先溢出:在1ms内测得的脉冲过多,说明频率较高

//转为测4分频后测频率

cepin();}

else

//定时器先溢出:100个脉冲的时间比较短,即频率较低

{ fenpin=1;

B153=0;

A153=0;

cepin();}

} } /*************************显示闸门时间***********************************/

void timedisplay(float GTime){ sprintf(buff,“GTime=%7.0fus ”,GTime);GotoXY(0,1);Print(buff);Delay(50);} /***************************减按键*******************************/ void Time_Set2(){ Delay(1000);if(P17==1)

{ sj=sj-50000.00;

if(sj>50000.00)timedisplay(sj);

else

{sj=50000.00;

timedisplay(sj);}

} else {while(P17==0)

{ Delay(500);

sj=sj-500000.00;

if(sj>50000.00)timedisplay(sj);

else

{sj=50000.00;

timedisplay(sj);}

} }

} /***************************加按键**********************************/

void Time_Set1(){ Delay(1000)if(P16==1)

{

sj=sj+50000.00;

if(sj<10000000.00)timedisplay(sj);

else

{sj=10000000.00;

timedisplay(sj);}

} else {while(P16==0)

{ Delay(500);

sj=sj+500000.00;

if(sj<10000000.00)timedisplay(sj);

else

{sj=10000000.00;

timedisplay(sj);}

//按住1s快加0.5s

} }

} /************************闸门时间设置***********************************/ void Time_Set()interrupt 0 { EA=0;

//防止无限中断

Delay(100);if(Set==0)

{

Delay(1000);

//判断处于哪种设置状态

if(Set==1)

{

GotoXY(0,1);

Print(“ Press Button ”);

GotoXY(0,0);

Print(“

T Settings

”);

while(Set==1)

{

switch(Key_Set)

{

case K1: Time_Set1();break;

case K2: Time_Set2();break;

default: break;

}

}

}

else

//选择测试频率或周期

{

GotoXY(0,1);

Print(“ 1.Freq 2.Cycle”);

GotoXY(0,0);

Print(“

Select ”);

while(Set==0);

//等待设置按键松开

while(Set==1)

{

switch(Key_Set)

{

case K1: flag=Freq;GotoXY(0,1);Print(“

---Freq---

case K2: flag=Peri;GotoXY(0,1);Print(”

---Cycle---

default: break;

}

}

}

} GotoXY(0,0);Print(“---Cymometer---”);

GotoXY(0,1);Print(“

Waiting...”);while(Set==0);

//防止再次进入中断

EA=1;xs=1;

//不显示此次结果.} /**************************主程序****************************/ void main(){

LCD_Initial();

//LCD初始化 GotoXY(0,0);Print(“---Cymometer---”);GotoXY(0,1);Print(“ Huixi && Xia”);Delay(1000);GotoXY(0,1);Print(“

Waiting...”);

“);break;”);break;

C52_Initial();

//89c52初始化 while(1)

{

panduan();

} }

5、调试过程

程序的设计及调试过程中离不开89C52的开发系统板电路图,起初忽视了开发板上的K3键用到的P35引脚也是定时器T1的信号输入引脚。后来在其他管脚的分配也曾出现错误,不过通过调试、修改都一一改正。仿真的时候默认晶振是12MHz,故程序编写的时候按12MHz设计的定时,以至于在实体时候测量不是很准确,后通过重新计算、修改程序达到了较高的准确率。但最终在实体系统演示中犯了一个极其幼稚的错误,未拿掉短接帽,以至于起初LCD未任何显示,浪费了不少时间去找程序的问题,还是自己不够认真细心。

6、实验结果

(1)最终实物图

最终实体电路系统如图6-1。

图6-1最终实物图

该课程设计验收时结果符合设计要求,可测量矩形波,方波,三角波,锯齿波等信号的频率;测量范围为0.1Hz~4MHz;闸门时间为0.05s~10s可调。

(2)电路仿真分析

由于实物演示不方便,这里用仿真图进行说明: 如下图,开关K1、K2、SET分别代表实物单片机最小系统上的开关K5、K4、K6。SET为确认键,K1可以选择频率输出,K2可以选择周期输出。K1、K2配合还可以调节阀门时间。

下图为开关仿真图和结果显示图:

开关K1,K2选择测周、测频及闸门时间的增减,SET键用于功能切换及确认

初始显示

选择测频率或测周期

频率显示

周期显示

改变阀门时间

7、总结与感悟

本设计通过运用单片机AT89S52,Proteus 仿真软件以及Kell 仿真软件的相关知识,成功地实现了数字频率计的设计。综合调试结果表明,本文提出的设计与传统测频系统相比,具有体积小、成本低、低功耗、精度高等优点,适用于各种测量电路。

本次设计的低频测量部分及高频测量部分分别采用测频、测周的测量方法,并通过计算精确计数,故测量误差很小,再加上智能分频使单片机的测量带宽提高了一千倍以上,仅用几个芯片搭成的低成本简单电路,使该频率计拥有了不错的性价比,且完全可以满足一般的测量需求。本次课程设计由前期自己查资料、想设计思路、写代码及画电路图,然后在实验室多半天基本完成。总体来说还算顺利,所以前期做足准备工作很重要。通过本次课设,我们复习了老师所讲的C51知识,通过将所学的课本知识用于实践,即体会到了知识运用所得成果的快乐,又加深了我对知识的理解,印象更加深刻。通过参加竞赛及此次课设,我深刻体会到无论设计什么,首先要分析需求,根据所学设计构思,只要思路出来了编程的大致方向确定,问题就解决一半。另外,很多东西都是有前人经验的,并不是要我们只会盲目埋头自己苦干,要学会搜集资料,总结前人经验教训用于自己的设计,达到事半功倍的效果。在电路设计及编程、仿真以及最后的搭建实体电路系统中,任何一个环节中细节都不容忽视,比如焊接前外围电路板的排版布局,拿到新的洞洞板要先看构造,综合考虑电路需要,想好布局再焊,尽量避免错误焊接,吸掉重焊。这样既影响美观,又可能损坏电路板。另外,仿真只是初步的检验设计构思是否满足设计需要,仿真效果完美在实体系统调试运行中还是会遇到各种各样的问题亟待解决。总的来说,做任何设计要有清楚的头脑,做好准备工作,还要有耐心、细心,以及团队合作意识。每次的动手设计都能让我学到很多,有知识有心态,实践中的学习总会印象深刻!

第三篇:智能小车课程设计

智能循迹小车

【摘要】

本课题是基于低功耗单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以单片机为系统控制处器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。

一、实验目的

这次设计智能小车的目的是为了掌握电路设计的方法和技巧。如何将学习到的理论知识运用到实际当中去,怎样能够活学活用,深入的了解电子元器件的使用方法,了解各种元器件的基本用途和方法,能够灵活敏捷的判断电路中出现的故障,学会独立设计电路,积累更多的设计经验,加强焊接能力和技巧,完成基本的要求。并能完美的完成这次实训。

根据老师给的控制要求,和自己的发挥扩充能力,独立的,大胆的去实践,开拓创新,能够将自己的想法体现到实际电路当中去。

二、设计方案

该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片发出控制命令,控制电机的工作状态以实现对小车姿态的控制。

三、各芯片说明 W981216BH-6 一种髙速度同步动态随机存取存储器(SDRAM), 具有 1M 字(words)*4 层(banks)*16 位(bits)的存储结构组织.传输数据带宽最高达 166M 字/秒(-6)。对SDRAM是否访问是突发导向。在一个页面连续的内存位置可在一个1, 2, 4, 8或整页突发访问时长和行选择组由活动命令。列地址自动生成的SDRAM的内部计数器在突发运作。随机栏也可以通过阅读在每个时钟周期提供其地址。该多组特性使交织在内部银行隐藏预充电时间。通过让一个可编程的模式寄存器,该系统可以改变突发长度,延时周期,交错或连续突发最大限度地发挥其性能。W981216BH是在理想的主内存高性能应用。特征:

1、.3V±0.3V电源

2、截至143 MHz时钟频率 3、2,097,152字×4层×16 位组织

4、自动刷新和自刷新

5、CAS 延时:2和3

6、突发长度:1, 2, 4, 8,和整页

7、突发读,写单人模式

8、自动预充电和预充电控制 9、4K刷新周期/ 64 ms

TE28F160C3BD70(快闪记忆体)该设备提供高性能异步的包兼容密度读取与16位数据总线。

该器件提供三种低功耗节电功能:自动节能待机(APS),,模式和深度掉电模式,这三个功率节省功耗的功能显着增强灵活性

特点:

1、柔性Smart Voltage技术 2.7 V– 3.6 V读/编程/擦除2、1.65 V–2.5 V或2.7 V–3.6 V / O选项 降低整体系统功耗

3、优化架构的代码,数据存储

4、柔性块锁定 锁定/解锁任何座,保护上电

5、低功耗 6、128-bit保护寄存器

SN74LVC1G14 施密特触发器是一种特殊的门电路,与普通的门电路不同,施密特触发器有两个阀值电压,分别称为正向阀值电压和负向阀值电压。这种单一的施密特触发器逆变器是专为1.65-V到5.5-V VCC运作。该器件包含一个SN74LVC1G14逆变器和执行布尔函数Y = A。

施密特触发器也有两个稳定状态,但与一般触发器不同的是,施密特触发器采用电位触发方式,其状态由输入信号电位维持;对于负向递减和正向递增两种不同变化方向的输入信号,施密特触发器有不同的阀值电压。

利用施密特触发器状态转换过程中的正反馈作用,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。输入的信号只要幅度大于vt+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。施密特触发器的应用:

1、波形变换:可将三角波、正弦波等变换成矩形波

2、脉冲波的整形:数字系统中,矩形脉冲在传输中经常发生波形畸变,出现上升沿和下降沿出现不够理想的情况,可用施密特触发器整形后,获得较理想的矩形脉冲

3、脉冲鉴幅:幅度不同、不规则的脉冲信号时加到施密特触发器的输入端时,能选择幅度大于欲设值的脉冲信号进行输出。

晶振作用:给单片机正常工作提供稳定的时钟信号。

MAX3221 MAX3221由一条线驱动器,一条线接收器和一个带有±15-kVESD保护的双电荷泵。该器件可满足TIA/EIA-232-F要求,并在一个异步通信控制器和串行端口连接器之间提供接口。电荷泵和四个小型外接电容器可在3V到5.5V电源电压下工作。这些器件在数据信号率达到250 kbit / s和最高的30-V/µs 驱动输出回转率时工作。应用:

1、电池供电,手持,和便携式设备

2、PDAs和掌上PCs

3、笔记本,Subnotebooks和笔记本电脑

4、数码相机

5、移动电话和无线设备

RS232

RS-232是现在主流的串行通信接口之一。

MAX809R 是功能单一的MAX809/MAX810微处理器复位芯片。用于监测微处理器和其它逻辑供应电压系统.它可以在上电、掉电、和节电情况下向微控制器提供复位信号。当电源电压低于预设的门槛电压时,器件会发出复位信号,直到在一段时间内电源电压又恢复到高于门槛电压为止。

MAX809有低电平有效的复位输出,而MAX810有高电平有效的复位输出。典型值是17uA的低电平电流时MAX809/MAX810能理想地用于便携式,电池供电的设备,它们使用3管脚的SOT23封装。

应用:嵌入式控制器、电池供电系统、无线通信系统、PDA和手持式设备

LED FOR DEBUG(LED调试)

LED:发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光

CD4066 CD4066是四双向模拟开关,主要用作模拟或数字信号的多路传输。引出端排列与CC4016一致,但具有比较低的导通阻抗。另外,导通阻抗在整个输入信号范围内基本不变。CD4066由四个相互独立的双向开关组成,每个开关有一个控制信号,开关中的p和n器件在控制信号作用下同时开关。这种结构消除了开关晶体管阀值电压随输入信号的变化,因此在整个工作信号范围内导通阻抗比较低。与单通道开关相比,具有输入信号峰值电压范围等于电源电压以及在输入信号范围内导通阻抗比较稳定等优点。应用:

(1)模拟信号开关/多路复用:信号选通、调制器、静噪控制、解调器、削波器、换向开关

(2)数字信号开关/多路复用

3、传输门逻辑实现

4、模拟到数字及数模转换

5、数字控制频率,阻抗,相位和Analog Signal Gain

VS2576 VS2576系列电压调节器是单片集成电路,提供了所有转换开关调节器的有效功能,在极好的线路和负载调解下具有3A的驱动能力。这种器件适合于3.3V,5V,12V,15V的固定电压,和可调的输出形式。

只需最少数量的外围器件,调节器就会被使用,内部包含有频率补偿和一个固定频率的振荡器。

VS2576系列提供了一个高效的,比较流行的三端线性调节器,他从根根上降低了半导体散热片的尺寸,在许多情况下不需要散热。

现在几个不同的生产商已经生产了由VS2576优化制作的标准的电感器系列,这个特性大大简化了功耗开关模式的设计。

其他特性还包括在指定的输入电压和输出负载条件下,保证±4%输出电压的误差和±10%振荡器频率的误差。还包括外围关闭电路,典型值为50uA备用电流。输出转换还包括在出错条件下,环路电流限制和出于芯片保护热敏关闭电路。主要特点: 1、3.3V,5V,12V,15V的固定电压和可调节的输出形式

2、可调节形式输出电压的范围在1.23V到37V之间(对于高压系列为57V),误差范围±4%

3、保证3A的输出电流

4、输入电压范围,对于高压系列为40V到60V

5、仅仅需要四个外围器件

6、内部振荡器为52kHz的固定频率

7、TTL关断电路能力,低功耗等待模式

8、高效

C39:稳压器二极管

特点:总功耗:

1、最大.1.3 W;

2、工作电压范围:标称3.3 V到75 V(E24范围)

IN5822:3.0安培垒肖特基整流器 RED:交流线路频率分频器

P89LPC938FDH(微控制器(MCU))

8-bit微控制器,带有加速two-clock 80C51核心8 kb的3 V byte-erasable闪光10-bit A/D转换器

该P89LPC938是一种单芯片微控制器,低成本封装,基于一个高性能的处理器结构,指令执行在2到4个时钟周期的指令,六倍标准80C51器件。许多系统级的功能已被纳入P89LPC938,从而减少元件数量,电路板空间。主要特点: 1、256-byte RAM数据存储器和辅助512-byte片上RAM

2、CCU提供PWM,输入捕捉,输出比较功能

3、准确度的内部RC振荡器时不需要外部振荡器的操作组件。该RC振荡器选项可选,并fine可调4、8-input复10-bit的A / D转换器.两个可选择的模拟比较器输入和参考源 功能:

1、一个高性能80C51 CPU提供111 ns指令周期222 ns所有除乘法和除法指令时,在18 MHz。执行,这是六倍的标准80C51性能运行在相同的时钟频率.较低的时钟频率相同的性能结果,降低功耗EMI。

2、串行Flash ICP允许简单的生产与商用EPROM编码程序员。闪光安全 bits防止读数敏感的应用程序。

3、串行Flash ISP允许编码,而该设备是安装在最终应用。

4、在应用中的Flash程序存储器的编程.这允许改变代码在程序运行。

5、看门狗有独立的片内振荡器,无需外部元件。看门狗预分频器有8种选择

AMS1084-3.3 可调和固定的电压调节器AMS1084系列旨在提供5A输出电流和操作到1V input-to-output差距。该装置的漏失电压为保证在最大输出的最大1.5V当前,减少在低负载电流。片上微调调节参考电压1%.电流限制也修剪,超负荷的压力下最小同时在条件稳压器和电源电路。

该AMS1084设备的引脚与老式三端稳压器兼容,并在3铅TO-220 包装,3提供和2铅TO-263(塑胶DD)和TO-252(D PAK)包装。特征:

1、三端可调或固定1.5V, 2.5V, 2.85V, 3.0V, 3.3V, 3.5V和5.0V

2、电流输出5A

3、操作低至1V 漏失

4、线路调整:0.015%

5、负载调整率:0.1%

6、TO-220, TO-263和TO-252封装 应用:

1、高效率线性稳压器

2、用于开关电源的后稳压器

3、微处理器供应

4、电池充电器

5、恒流稳压器

6、笔记本电脑/个人电脑耗材

AMS1117_2.5 AMS1117系列稳压器有可调版与多种固定电压版,设计用于提供1A输出电流且工作压差可低至1V。在最大输出电流时,AMS1117器件的压差保证最大不超过1.3V,并随负载电流的减小而逐渐降低。

AMS1117的片上微调把基准电压调整到1.5%的误差以内,而且电流限制也得到了调整,以尽量减少因稳压器和电源电路超载而造成的压力。

AMS1117器件引脚上兼容其他三端SCSI稳压器,提供适用贴片安装的SOT-223,8引脚SOIC,和TO-252(DPAK)塑料封装。应用: 高效率线性稳压器、用于开关电源的后稳压器、5V到3.3V线性稳压器、电池充电器、积极SCSI终结者、笔记本电脑的电源管理、电池供电的仪器

IN4148是一种小型的高速开关二极管,开关比较迅速,广泛用于信号频率较高的电路进行单向导通隔离,以及通讯、电脑板、电视机电路及工业控制电路中

CORE 双核芯片,即在一枚芯片上封装入两个处理器。

HEADER 5 X 2 5 X2的接插件,用于接线。

复位电路

复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。单片机复位电路主要有四种类型:(1)微分型复位电路;(2)积分型复位电路;(3)比较器型复位电路;(4)看门狗型复位电路。

复位电路工作原理:VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。

DS1232LPS 该DS1232LP/LPS芯片低功耗MicroMonitor监视微处理器三个重要条件:电源供应器,软件执行和外部过骑.引脚说明:

PBRST–按键复位输入 TD–延时设置

TOL–选择5%或10% V CC检测 GND–地面

RST–复位输出(高)

RST–复位输出(低电平有效,开漏)意法半导体–选通输入 VCC–+5伏电源

SKP1:扬声器

PDIUSBP11AD PDIUSBP11A是一个通用的USB收发器芯片。USB接口主要用于传输数据。

74HCT541 为八进制非反相缓冲器/线路驱动器与三态输出 特征:

1、非反相输出

2、输出能力:总线 驱动器

3、ICC类别:MSI

四、实验小结

计算机的发展日新月异,其技术也突飞猛进,嵌入式系统是近年来发展很快的计算机方面的学科方向,并迅速渗透到控制、自动化、仪器仪表等学科。

根据本次课程设计要求,我们系统地阅读了大量的资料,并认真分析了设计课题的需求,还系统学习了ARM系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。

虽然条件艰苦,但经过不懈钻研和努力,研究所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,本系统能够基本满足设计要求,能够较快较平稳的使小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方,有待于进一步的完善与改进。

通过本次课程设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。本次课程设计使我们对一个项目的整体设计有了初步认识,还认识了几种传感器,并能独立设计出其接口电路,极大的锻炼了我们的思考和分析问题的能力,并对嵌入式系统有了一个更深的认识。

总之,在课程设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。

第四篇:基于单片机设计智能小车的参考文献

参考文献

[1] 赵海兰.基于单片机的红外遥控智能小车的设计[J].无线互联科技, 2011年3期.[2] 何立民.单片机技术的现状与未来[J].中国计算机报, 2012年 No:30.[3] 姚培等.基于单片机控制的智能循迹避障小车[J].机电信息,2010年12期.[4] 赵振德.多功能遥控智能小车的制作[J].电子制作, 2011年4期.[5] 李瀚霖等.智能小车研究与设计[J].科技致富向导,2011年26期.[6] 周淑娟.基于单片机智能寻迹小车的设计方案[J].工业技术与职业教育,2011年6月第9卷第2期.[7] 黄杰.基于模糊控制的智能车辆设计[J].中国科技信息,2010.20.[8] 陈铁军.智能控制理论及应用[M].北京:清华大学出版社,2009.1.[9] 张毅刚,彭喜元,彭宇.单片机原理及应用[M],高等教育出版社,2010.5.[10] 刘南平.电子产品设计与制作技术[J].科学出版社,2008.[11] 杨刚.电子系统设计与实践[J].电子工业出版社,2009.3.[12] 寸晓非.基于飞恩卡尔的智能循迹车设计.荆楚学院报,2012.04.[13] 隋研.基于数字PID的智能小车控制[J].杂志商店,2012.06 [14] 张友德.单片机原理与应用技术.机械工业出版社,2004 [15] 吴黎明.数字控制技术.科学出版社,2009.11.

第五篇:基于89C51单片机的智能小车设计

湖北轻工职业技术学院

单片机实训报告

专 目:基于STC89C52的智能小车设计 名:刘

象 号:20110302113 业:电子信息工程技术

指导老师:何

俐 日

期:2013-01-06

信息工程系电信教研室

目录

引言...............................................................................................................................3 一 整体方案设计.........................................................................................................4 1.1整体方案设计的思路............................................4 1.2整体方案的流程图..............................................4 二 智能小车系统概况.................................................................................................4 2.1恒压恒流桥式2A驱动芯片L298N...................................................................4 2.2直流电机简介..................................................5 2.3显示模块的综合概括............................................7 三 模块方案比较与论证:.........................................................................................9 3.1 电机模块的选择..............................................9 3.2 电机驱动模块的选择..........................................9 3.3 控制器模块的选择............................................9 四 系统硬件电路设计...............................................................................................11 4.1 显示模块的设计.............................................11 4.2 直流电机的驱动模块.........................................12 五 软件的简单介绍...................................................................................................14 5.1 KEIL的简介..................................................14 5.2 PROTUES的简介................................................14 5.3 STC_ISP_V483的简介.........................................15 六 结论.......................................................................................................................18 七 致谢.......................................................................................................................18 参考文献.....................................................................................................................19 附录一:实物图.........................................................................................................20 图1实物图.................................................................................................................20 图2实物图.................................................................................................................21 附录二:总程序.........................................................................................................21

第 1 2 页

湖北轻工职业技术学院

引言

随科学技术的进步,智能化和自动化技术越来越普及,也广泛应用于机器人玩具制造领域,使智能机器人越来越多样化。智能机器人是一个多种高新技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,涉及到当今许多前沿领域的技术。而随着社会的不断发展,智能设备的不断出现,无线遥控的运用也越来越广泛。无线遥控器由于控制距离远,抗干扰性强,已越来越多的出现在生活的各个方面。本文使用了一款通用的无线遥控电路,基于STC89C52作为控制核心,采用专用编码解码电路,由于其体积小、功能强大,因此可非常方便的移植到遥控机器人、遥控小车上等,并实现远距离控制。在早期,遥控小车并不少见,但大多产品制造简单,实现的功能少,往往只有一些简单的功能,例如左转右转,前进后退等,大多采用红外控制,外加一些复杂的电路组合而成。遥控小车的使用者针对的是小孩子,但笨重的设备和昂贵的价格往往让许多小孩的甜美梦想落空。在现在,用单片机进行无线遥控小车的方案,利用较少的外设实现了基本的功能。其较强的抗干扰性使得该遥控器具有很好的通用性其功能也日趋完善。其中包括防撞防爆系统和基本的方向控制,另外在行进中可以尽享柔美的音乐,看美丽的灯光随音律而闪烁,让孩子玩得更开心!此外,电路的简化,材料的减少使得价格也降低了不少,真的是物美价廉,可以为孩子的童年再添一些笑语。

第 3 1 页

湖北轻工职业技术学院

一 整体方案设计

1.1整体方案设计的思路

利用红外线传感器发射和接收信号模块来控制单片机,让单片机翻译传输指令,从而实现相应的功能。具体的过程如下:四路红外传感器,每一路发射一个信号,检测接收到的信号,若出现高电平,则说明该方向前方有障碍物,则单片机控制电机正转和反转,从而实现绕开障碍物继续前行。同时还增加一个无线发射和无线接收模块控制单片机,让单片机翻译传输指令,从而实现相应的功能。无线发射模块发出指令,无线接收模块接收信号后,传递给单片机,单片机翻译接收到信号后,传输给驱动电路驱动电机旋转,从而实现让小车的前进、后退、左转和右转。1.2整体方案的流程图

基于单片机STC89C52整体设计的智能小车,根据原来设计的思路上画出了相对应的流程路,由于是整体结构图,就只是画出了大致的结构流程,而细节将在后面做出介绍。

图1整体方案的流程图 二 智能小车系统概况

2.1恒压恒流桥式2A驱动芯片L298N L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO

第 4 页

湖北轻工职业技术学院

口提供信号;而且电路简单,使用比较方便。

L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7 V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46 V。输出电流可达2.5A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB连接控制使能端,控制电机的停转。表1是L298N功能逻辑图。In3,In4的逻辑图与表1相同。由表1可知EnA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。同为低电平电机停止,同为高电平电机刹停。等。

图2单片机利用L298控制电机的原理图

15脚是输出电流反馈引脚,其它与L298相同。在通常使用中这两个引脚也可以直接接地。上图是其与51单片机连接的电路图 2.2直流电机简介 2.2.1直流电机的应用

电动机简称电机,是使机械能与电能相互转换的机械,直流电机把直流电能变为机械能。作为机电执行元部件,直流电机内部有一个闭合的主磁路。主磁通在主磁路中流动,同时与两个电路交联,其中一个电路是用以产生磁通的,称为激磁电路;另一个电路是用来传递功率的,称为功率回路或电驱回路。现行的直流电机都是旋转电驱式,也就是说,激磁绕组及其所包围的铁芯组成的磁极为定子,带换向单元的电驱绕组和电驱铁芯结合构成直流电机的转子。直流电机有以下4方面的优点:

1)调速范围广,且易于平滑调节。

第 5 页

湖北轻工职业技术学院

2)3)4)过载、启动、制动转矩大。易于控制,可靠性高。调速时的能量损耗较小。

所以,在调速要求高的场所,如轧钢机、轮船推进器、电机、电气铁道牵引、高炉送料、造纸、纺织、拖动、吊车、挖掘机械、卷扬机拖动等方面,直流电机均得到广泛的应用。

2.2.2直流电机的基本工作原理

直流电机工作原理:当电刷A,B接在电压为U的直流电源上时,若电刷A是正电位,B是负电位,在N极范围内的导体ab中的电流是从a流向b,在S极范围内的导体cd中的电流是从c流向d。载流导体在磁场中要受到电磁力的作用,因此ab与cd两导体都受到电磁力的作用。根据磁场方向和导体中的电流方向,利用电机左手定则判断,ab边受力的方向是向左的,而cd边则是向右的。由于磁场是均匀的,导体中流过的又是相同的电流,所以ab边和cd边所受电磁力的大小相等。这样,线圈上就受到了电磁力的作用而按逆时针转动。当线圈转到磁极的中性面上时,线圈中的电流等于零,电磁力等于零,但是由于惯性的作用,线圈继续转动。线圈转过半周之后,虽然ab与cd的位置调换了,ab边转到S极范围内,cd边转到N极范围内,但是由于换向片和电刷的作用,转到N极下的cd边中电流方向也变了,是从d流向c,在s极下的ab边中的电流则是从b流向a。因此电磁力的方向仍然不变,线圈仍然受力按逆时针方向转动。可见,分别处在N,S极范围内的导体中电流方向总是不变的,因此线圈两个边的受力方向也不变,这样线圈就可以按照受力方向不停地旋转,通过齿轮或皮带等机构的传动,便可以带动其他机械工作。

从以上分析可以看到,要使线圈按照一定的方向旋转,关键问题是当导体从一个磁极范围转到另一个异性磁极范围时(也就是导体经过中性面后),导体中电流的方向也要同时改变,换向器和电刷就是完成这一任务的装置。在直流电机中,换向器和电刷把输入的直流电变为线圈中的交流电。可见,换向器和电刷是直流电机中不可缺少的关键部件。

当然,在实际的直流电机中,不只有一个线圈,而是有许多线圈牢固地嵌在转子铁芯槽中,当导体中通过电流在磁场中因受力而转动时,就带动整个转子旋转,这就是直流电机的基本工作原理。2.2.3直流电机的参数

转矩-电机得以旋转的力矩,单位为㎏•m或N•m。

转矩系数-电机所产生转矩的比例系数,一般表示每安培电驱电流所产生的转矩大小。

摩擦转矩-电刷、轴承、换向单元等因摩擦而引起的转矩损失。

第 6 页

湖北轻工职业技术学院

启动转矩-电机启动时所产生的旋转力矩。

转速-电机旋转的速度,工程单位为r/min,即转每分。在国际单位制中为rad/s,即弧度每秒。

电枢电阻-电枢内部的电阻,在有刷电机里一般包括电刷与换向器之间的接触电阻,由于电阻中流过电流时会发热,因此总希望电枢电阻尽量小。

电枢电感-因为电枢绕组由金属线圈构成,必然存在电感,从改善电机运行性能的角度来说,电枢电感越小越好。

电气时间常数-电枢电流从零开始达到稳定值的63.2%时所经历的时间。测定电气时间常数时,电机应处于堵转的状态并施加阶跃性质的驱动电压。工程上,常常利用电动机转子的转动惯量J、电枢电阻Ra、电机反电动势系数Ke和转矩系数Kt求出机械时间常数:

Tm(J*Ra)(/Ke*Kt)„1-1 转动惯量-具有质量的物体维持其固有运动状态的一种性质。

反电动势系数-电机旋转时,电枢绕组内部切割磁力线所感应的电动势相对于转速的比例系数,也称发电系数或感应电动势系数。

功率密度-电机每单位质量所能获得的输出功率值。功率密度越大,电机的有效材料的利用率就越高。

转子-rotor;定子-stator;电枢-armature;励磁-excitation。2.3显示模块的综合概括

显示模块包括:LCD1602,温度传感器DS18B20,时钟芯片DS1302三个部分组成。

2.3.1LCD1602的简介

1602B可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。该模块也可以只用D4-D7作为四位数据分两次传送。这样的话可以节省MCU的I/O口资源。1602B引脚说明如下:

表2.3 LCD液晶显示器各引脚功能及结构

编号 1 2 3 4 符号 VSS VDD VL RS

引脚说明 电源地 电源正极 对比度调节 数据/命令选择

编号 9 10 11 12

符号 D2 D3 D4 D5

引脚说明 双向数据口 双向数据口 双向数据口 双向数据口

第 7 页

湖北轻工职业技术学院 6 7 8 R/W E D0 D1

读/写选择 模块使能端 双向数据口 双向数据口 14 15 16

D6 D7 BLK BLA

双向数据口 双向数据口 背光源地 背光源正极

注意事项:从该模块的正面看,引脚排列从右向左为:15脚、16脚,然后才是1-14脚(线路板上已经标明): VDD:电源正极,4.5-5.5V,通常使用5V电压;

VL:LCD对比度调节端,电压调节范围为0-5V。接电源的正极时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;

RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;

R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据; E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0-D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。本充电器就是采用4位数据传送方式;

BLA:LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;

BLK:LED背光地端。

第 8 页

湖北轻工职业技术学院

三 模块方案比较与论证:

3.1 电机模块的选择

方案1:采用步进电机作为该系统的驱动电机。由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统。经综合比较考虑,我们放弃了此方案。

方案 2:直流电机:直流电机的控制方法比较简单,只需给电机的两根控制线加上适当的电压即可使电机转动起来,电压越高则电机转速越高。对于直流电机的速度调节,可以采用改变电压的方法,也可采用PWM调速方法。PWM调速就是使加在直流电机两端的电压为方波形式,通过改变方波的占空比实现对电机转速的调节。

基于以上分析,我们选择了方案二,使用直流电机作为电动车的驱动电机。3.2 电机驱动模块的选择

方案 1:采用SM6135W电机遥控驱动模块。SM6135W是专为遥控车设计的大规模集成电路。能实现前进、后退、向右、向左、加速五个功能,但是其采用的是编码输入控制,而不是电平控制,这样在程序中实现比较麻烦,而且该电机模块价格比较高。

方案 2:采用电机驱动芯片L298N。L298N为单块集成电路,高电压,高电流,四通道驱动,可直接的对电机进行控制,无须隔离电路。通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进行正反转,停止的操作,非常方便,亦能满足直流减速电机的大电流要求。调试时在依照上表,用程序输入对应的码值,能够实现对应的动作。表1是其使能、输入引脚和输出引脚的逻辑关系。

表3.2 L298N的引脚和输出引脚的逻辑关系

EN A(B)

H H H L

IN1(IN3)

H L 同IN2(IN4)

X

IN2(IN4)

L H 同IN2(IN4)

X

电机运行情况

正转 反转 快速停止 停止

基于以上分析,我们选择了方案二,用L298N来作为电机的驱动芯片。3.3 控制器模块的选择

方案1:采用凌阳的SPCE061A小板作为主控制芯片,而且可以采用凌阳的小车模组,可以很快的完成其基本功能,当是用该小板存在一定的局限性,较难

第 9 页

湖北轻工职业技术学院

扩张功能,而且各个模块的拼凑,没有比集成在一块板的稳定性高。

方案2:采用STC89C52作为主控制芯片,该芯片有足够的存储空间,可以方便的在线ISP下载程序,能够满足该系统软件的需要,该芯片提供了两个计数器中断,对于本作品系统已经足够,采用该芯片可以比较灵活的选择各个模块控制芯片,能够准确的计算出时间,有很好的实时性。

基于以上分析,我们选择了方案二,用STC89C52作为电机的主控制芯片。

第 10 页

湖北轻工职业技术学院

四 系统硬件电路设计

系统采用存储空间较大的STC89C52作为主控制芯片,电动车电机驱动芯片采用L298N;并利用直流电机驱动小车,能较有效的控制其在特定位置转弯及行驶出错处理,该系统无论在结构和技术上都具有较好的科学性。4.1 显示模块的设计

4.1.1 显示模块的仿真图

显示模块中主要考虑的是显示什么,综合考虑后,我想到的首先是时间的显示,于是我采用时钟芯片DS1302来实现时间的显示,单纯的显示时间似乎很无趣,于是我加入了温度的显示,温度传感器DS18B20结构完善,连接简单,功能齐全,易于控制。合并以上的思路,我确定出了显示的模块,具体的仿真图如下:

图3 显示模块的电路原理图

4.1.2 显示模块的流程

显示模块是智能小车额外增加的功能,但它仍然是重要的组成部分,显示模块是如何工作的呢?其实,先是由按键控制时钟芯片DS1302,进行时间的调节,在调节的过程中,信号传递给STC89C52,单片机将其翻译后发送信号给时钟芯片DS1302,时钟芯片DS1302会将时间的改变显示在LCD1602上,同样的道理,温度传感器DS18B20也是先将检测到的信号传递给单片机,单片机再传递给LCD1602

第 11 页

湖北轻工职业技术学院

4.2 直流电机的驱动模块

4.2.1 直流电机驱动模块的仿真图

图4 直流电机驱动模块的仿真图

4.2.2 直流电机驱动模块的流程图

电机驱动模块的核心是电机的驱动芯片及电机,电机选择了直流电机,这样可以方便控制,而电机的驱动芯片L298可以同时控制两个直流电机,其中芯片中连接单片机的5引脚和7引脚用于控制直流电机1,而芯片中的10引脚和12引脚用于控制直流电机2.电机1接的是小车的左轮,电机2接的是小车的右轮,当两个电机一起正向转动时,小车前进;当两个电机一起反向转动时,小车后退;当电机1正转,电机2反转时,小车右转;当电机1反转,电机2正转时,小车左转。由于无线模块只能控制锁存的4条线路,不能将功能都进行有效控制,只能控制前进和后退,所以额外采用按键来控制左转和右转。

第 12 页

湖北轻工职业技术学院

图5 直流电机驱动模块的流程图

第 13 页

湖北轻工职业技术学院

五 软件的简单介绍

在这次研究中,主要用到了keil,protues,proter和STC_ISP_V480等软件 5.1 Keil的简介

单片机开发中除必要的硬件外,同样离不开软件,我们写的C语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。5.2 protues的简介

Protues软件是英国Lab center electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Protues软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:(1)原理布图(2)PCB自动或人工布线(3)SPICE电路仿真。

支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。软件仿真功能如下:1)提供软件调试功能 2)提供丰富的外围接口器件及其仿真RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。这样很接近实际。在训练学生时,可以选择不同的方案,这样更利于培养学生。3)提供丰富的虚拟仪器,利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。4)具有强大的原理图绘制功能。电路功能仿真特点如下:在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。PROTUES 是单片机课堂教学的先进助手。PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

第 14 页

湖北轻工职业技术学院

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTUES提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。

随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTUES也能获得愈来愈广泛的应用。

软件缺点:器件库溃乏,库中缺少很多重要芯片,严重影响电路仿真软件出错或乱码,此时仿真效果不及硬件仿真。5.3 STC_ISP_V483的简介

在运行STC_ISP_V483下载软件之前,应该先给出ISP的C程序源代码ISP.C.要注意的是:此程序是在Keil-C中要建立工程文件,包含IAP.C函数,并且在IAP.C和ISP.C中都要保留STC的定义.传入用户代码时,需要与计算机进行通信,一般采用RS232串行通信,数据协议采用简单协议。具体的使用方法:

一、先把学习实验板和计算机连接好(接好串口线和电源)

二、打开STC-ISP v483,在MCU Type栏目下选中单片机,如STC89C52RC:根据您的9针的数据线连接情况选中COM端口,最好把波特率适当下调一些,按图示选中各项:

第 15 页

湖北轻工职业技术学院

图6STC-ISP v483的界面图

三、先确认硬件连接正确,按下图点击“打开文件”并在对话框内找到您要下载的HEX文件:

四、选中两个条件项,这样可以使您在每次编译KEIL时HEX代码能自动加载到STC-ISP,点击“Download/下载”:

五、手动按下电源开关便即可把可执行文件HEX写入到单片机内,下图是正在写入程序截图:

第 16 页

湖北轻工职业技术学院

图7 单片机程序下载截图

第 17 页

湖北轻工职业技术学院

六 结论

根据本次设计要求,我们认真分析了设计课题的需求,还系统学习了51系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。

虽然条件艰苦,但经过不懈钻研和努力,购买到了所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。

通过本次课题设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。本次毕业设计使我们对一个项目的整体设计有了初步认识,还认识了几种传感器。本次毕业设计使我们意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。还有以前对程序只是一个很模糊的概念,通过这次的课题设计使我对程序完全有了一个新的认识,并能使用Keil软件熟练的进行编程了。通过本次课题设计,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。

总之,在课题设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。

七 致谢

本设计能够顺利完成,还承蒙何老师以及身边的组队同学的指导和帮助。在设计过程中,何老师给予了悉心的指导,最重要的是给了我们组队解决问题的思路和方法,并且在设计环境和器材方面给予了大力的帮助和支持,在此,我对何老师表示最真挚的感谢!同时感谢所有帮助过我的同学!

第 18 页

湖北轻工职业技术学院

参考文献

[1]康华光.电子技术基础模拟部分[M].(第四版).北京:高等教育出版社,1999.[2]康华光.电子技术基础数字部分[M].(第四版).北京:高等教育出版社,2000.[3]陈大钦.电子技术基础实验[M].(第二版).北京:高等教育出版社,2000.[4]谢自美.电子线路设计•实验•测试[M].(第三版).武汉:华中科技大学出版社,2006.[5]胡乾斌 李光斌 李玲等.单片微型计算机原理与应用[M].(第二版).武汉:华中科技大学出版社,2006.[6]郭天祥.新概念51单片机C语言教程[M].电子工业出版社,2009.[7]谭浩强.C语言设计[M].(第三版).清华大学出版社,2005.[8]崔炳哲.电子控制入门[M].北京:科学出版社,2003.[9]樊昌信 曹丽娜.通信原理[M].(第六版).北京:国防工业出版社,2009.[10]全国大学生电子设计竞赛组委会编.全国大学生电子设计竞赛[M].北京理工大学出版社,1999.[11]郭强.液晶显示应用技术[M].北京:电子工业出版社,2003.[12]郁有文 常健 程继红.传感器原理及工程应用[M].(第二版).武汉:西安电子科技大学出版社,2006.[13]许纪倩.机械工人速成识图[M].(第二版).北京:机械工业出版社,2009.[14]高军.电动智能小车[D].http://www.xiexiebang.com/ [15]Zhi-HongJiang.51MCU technology and application development case selection[M].Tsinghua University Press 2008.第 19 页

湖北轻工职业技术学院

附录一:实物图

图1实物图

第 20 页

湖北轻工职业技术学院

图2实物图

附录二:总程序

}

void dianji1(){

for(j=10;j--;j>0)left2=0;#include #define uchar unsigned char #define uint unsigned int uchar num=1,num1=1,m,m1,i,j;sbit zxun=P0^0;sbit yxun=P0^1;sbit left=P1^5;sbit right=P1^6;sbit left1=P3^0;sbit left2=P3^1;sbit left3=P3^2;sbit left4=P3^3;void dianji2(){ for(i=10;i--;i>0){

if(num>=10)

num=0;

else

{

if(num<=m1)

left=1;

else if(num<10)

left=0;

}

}

{

}

}

void run(){ m=2;

m1=2;left1=1;

left3=1;left4=0;

}

void zuo(){

m=0;m1=1;left1=1;left2=0;left3=1;}

left4=0;void you()

第 21 页

if(num1>=10)num1=0;else {

if(num1<=m)

right=1;else if(num1<10)

right=0;

}

湖北轻工职业技术学院

{ m=1;m1=0;left1=1;left2=0;left3=1;left4=0;} void timer0()interrupt 1 { TH0=0XF8;//1ms定时

TL0=0X30;num++;num1++;dianji2();dianji1();} void main(){ TMOD=0X01;TH0= 0XF8;//1ms定时

TL0= 0X30;TR0= 1;ET0= 1;EA = 1;while(1){

switch(P0&0x03){

case 0x00:

// 全部没有压线,直转

run();

break;

case 0x01:

// 右压线,左转

zuo();

break;

case 0x02:

// 左压线,右转

you();

break;} } }

第 22 页

下载智能小车单片机课程设计报告word格式文档
下载智能小车单片机课程设计报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    基于单片机的智能循迹小车外文翻译

    摘要:本次设计的智能循迹小车是以单片机89c51为主控制器。运用反射式红外传感器来进行路径检测和速度监测模块。将检测数据传回单片机进行处理,同时,用单片机产生PWM波来控制小......

    基于51单片机的智能小车设计(精选5篇)

    智能小车的设计与制作 摘要:本课题组设计制作了一款具有智能判断功能的小车,功能强大。小车具有以下几个功能:自动避障功能;寻迹功能(按路面的黑色轨道行驶);趋光功能(寻找前方的点......

    单片机课程设计报告格式

    《单片机课程设计》报告格式 一、 封面(注明:单片机课程设计报告、课题名称、班级、姓名、指导教师、日期) 二、 摘要(课题简要说明) 三、 课题设计目标(功能、性能指标)、方案论证......

    单片机课程设计报告格式

    单片机课程设计报告格式要求统一的A4纸打印。每页约44行,每行约34字;打印正文用宋体小四号字;版面页边距上空2.5cm,下空2cm,左空2.5cm,右空2cm;页码用小五号字,底端居中。A、封面;B、......

    单片机课程设计报告

    《单片机原理与接口技术》 课程设计报告 设计题目: 基于80C51单片机系统实验板的制作 与程序设计专业:应用电子专业班级: 11应电班姓名: 丁文俊指导教师: 余静老师2013 年 5 月2......

    单片机课程设计报告

    课程设计报告 题 目: 自动滴灌系统设计 课程名称: 单片机原理及应用 学 院: 信息工程学院专 业: 计算机科学与技术 班 级: 2014 级计本 1 班学生姓名: *** 学 号: 201403031......

    单片机课程设计报告

    单片机课程设计报告题目:小直流电机调速实验教学单位: 机 电 工 程 系专业: 机械设计制造及其自动化班级: 0803班学号: 0811050342姓名: 程怀虎2011 年 11月(以下内容用宋体,五号,单......

    单片机课程设计报告(范文)

    片 机 课 程 设 计 报学号、姓名:年级、专业:培养层次:课程名称:授课学时学分:考试成绩:授课或主讲教师签字:单 告1 单片机最小系统功能说明单片机的最小系统是由组成单片机系统必......