搜档网
当前位置:搜档网 › 单片机课程设计_哈工大_测速小车结题报告资料

单片机课程设计_哈工大_测速小车结题报告资料

H a r b i n I n s t i t u t e o f T e c h n o l o g y

课程设计说明书(论文)

设计题目:测速小车

院系:电气学院测控系

班级:100102班

设计者:

学号:

指导教师:胡瑞强

设计时间:2013.9.11—2013.9.13

哈尔滨工业大学

课程设计考核表

题目:

学生姓名:班级:学号:

实验部分考核

总结报告评分

总成绩:指导教师签字:

结题报告

一.课题完成情况

1.总体完成情况说明

在为期两周的课程设计过程中,我们完成了测速小车的设计与调试,最终完成了基本任务要求。

在第一周里,我们选定了测速小车的课题,并完成了开题报告,在这一阶段内,我们熟悉并了解了宝贝车机器人的控制原理,单片机主控模块的接线方式,数字编码器的工作原理和硬件连接电路。我们还编制了让小车前进,加速,减速,左右转弯的子程序。在写代码过程中,熟悉了相关软件的使用方法。在第二周里,我们查阅了资料,详细了解并掌握了1602液晶显示模块的工作及控制原理,并编制了四位初始化子函数和显示初始化子函数。在验证显示环节的过程中,还用protues进行了仿真。接下来,我们完成了计数器,定时器的设置,并且对测得的脉冲数进行转换,使其变成速度,并显示在1602上。最后我们设置了小车的运动轨迹,使其可以测量不同的速度,并完成了结题报告。

总的来说,我们完成了测量速度的完整显示,开题报告和结题报告的书写。

2.程序设计

子程序名如下,具体函数见附录

//*---------子函数声明-----------*//

void init_devices(void); //初始化函数

void t0_init(void);

void t1_init(void);

void t2_init(void);

void LCM_init(void);

void init_4bit(void);

//*---------小车运动子函数申明---------*//

void Forward(void);

void Left_90(void);

void Right_90(void);

void Right_180(void);

//*---------功能实现子函数申明---------*//

void Measure_Speed(void); //测速子函数

void Data_Conversion(float speed); //速度数据类型转换函数

void display(uchar x,uchar y,uchar *s); //问候语显示子函数

void Display_List_Char(uchar x,uchar y,uchar *s); //字符显示子函数

void Set_xy_LCM(uchar x,uchar y); //显示位置设置子函数

void Data_Conversion(float speed); //速度转换子函数

//*---------1602数据指令写入函数--------*//

void Write_Data_LCM(uchar dat);

//*----------------延时------------------*//

void delay_nus(unsigned int i);

void delay_1ms(void);

void delay_nms(unsigned int n);

二.问题及解决办法

1.在完成液晶屏初始化后,仿真也可以显示字符,但将程序烧入单片机后不能正常显示。原因:仿真是选择的是1602液晶显示模块的八位显示模式,而实际的液晶屏硬件连接为四位模式。之后,我们重新编制了相应的四位初始化程序,实现了显示功能。

2.根据指导书上硬件图连接后,发现无法显示速度。

原因:硬件连接图上P1.1和P1.0只是一种示例,并不是实际对应的P1.1和P1,0口。实际编码器的脉冲输入口应为P3.4和P3.5,这两个外部计数的输入端口。改变接线后可以正常显示。

3.当全速前进时,左右两轮显示速度不一致。

原因:左右两轮控制脉冲的接入时间不一致,并且传感器在检测过程中可能存在干扰。这是系统误差,无法消除。

4.对于float型的变量,1602无法正常显示。

解决办法:使用一个库函数sprintf 将float转换成字符串型数据并进行显示。

三.心得体会

课程设计是将课本知识运用到实践中的很好机会,在课题的研究过程中,我们遇到问题又会重新回到课本,对基础知识进一步理解和掌握,同时又把知识和实际问题结合起来,对知识的理解上升了一个层次。并且智能车的设计,更能激发我们学习的兴趣,每个人都有一颗年轻的心,在设计过程中,我们不仅掌握了知识,并且也找到了很多乐趣。并且我们小组内两人分工合作,促进我们养成团队协作精神。

当然设计和调试过程并不是一帆风顺,我们遇到一个有一个或大或小的问题,我们通过讨论,请教老师,参考实例,查阅资料也解决了这些问题。任何探索都不会是一马平川,我们肯定会遭遇坎坷,而通过课程设计也培养了我们发现问题,解决问题的习惯。在做工程时遇到问题如何处理,我有了一次切身的体验。在工作时,不管大事还是小事,尤其是一些不起眼的细节,更要保持一丝不苟的作风。

另外,在这两周的单片机课设中,我要十分感谢胡老师的辛苦指导,胡老师从小车原理的介绍到程序的调试,都给予了非常大的帮助。也正是因为胡老师的辛勤监督,才使得我们按要求、认真的完成了两周的课设,顺利完成了测速小车的设计。虽然课设就要结束了,但胡老师教导的严谨的工作作风,“规格严格,功夫到家”的校训,将永远影响

着我以后的学习、研究、工作,让我在做每一件事情时,都认真严格的要求自己,追求卓越。

四.参考文献

[1]胡瑞强,李成伟,周庆东等《单片机原理及应用》课程设计指导书哈尔滨:测控实验中心

[2]张毅刚,彭喜元等单片机原理及应用北京:高等教育出版社

[3]张毅刚基于Proteus的单片机课程的基础实验与课程设计北京;人民邮电出版社

[4]彭伟单片机C语言程序设计实训100例北京:电子工业出版社

[5]苏小红,陈慧鹏等C语言大学实用教程北京:电子工业出版社

[6]李东,黄庆成等计算机组成技术教程北京:电子工业出版社

附录源程序代码

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

//测速小车程序设计1001102班

//1100100420 王斌峰

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

#include

#include

#include

#include

#include

#define uchar unsigned char //宏定义

#define uint unsigned int

sbit right=P1^0; //左右电机引脚定义

sbit left=P1^1;

sbit rw=P2^1; //1602控制端定义

sbit rs=P2^2;

sbit en=P2^0;

float RightSpeed,LeftSpeed; //全局变量左右轮速度

uchar str_temp[10]; //全局变量转化后速度显示数组

uchar time=0; //全局变量中断次数计数变量

//*---------子函数声明-----------*//

void init_devices(void); //初始化函数

void t0_init(void);

void t1_init(void);

void t2_init(void);

void LCM_init(void);

//*---------小车运动子函数申明---------*//

void Forward(void);

void Left_90(void);

void Right_90(void);

void Right_180(void);

//*---------功能实现子函数申明---------*//

void Measure_Speed(void); //测速子函数

void Data_Conversion(float speed); //速度数据类型转换函数void display(uchar x,uchar y,uchar *s); //问候语显示子函数

void Display_List_Char(uchar x,uchar y,uchar *s); //字符显示子函数

void Set_xy_LCM(uchar x,uchar y); //显示位置设置子函数void Data_Conversion(float speed); //速度转换子函数

//*---------1602数据指令写入函数--------*//

void Write_Data_LCM(uchar dat);

void Write_Command_LCM(uchar com);

//*----------------延时------------------*//

void delay_nus(unsigned int i);

void delay_1ms(void);

void delay_nms(unsigned int n);

//*----------定时器2定时中断子程序---------*//

void Timer2(void) interrupt 5

{

TF2=0; //中断标志清零

time++;

if(time==20) //中断20次,计时一秒

{

time=0; //中断指针清零

TR0=TR1=0;

TR2=ET2=0; //计时结束

Measure_Speed(); //测速,转换,并显示

Data_Conversion(RightSpeed);

Display_List_Char(0,0,"Right:");

Display_List_Char(0,6,str_temp);

Display_List_Char(0,10,"cm/s");

Data_Conversion(LeftSpeed);

Display_List_Char(1,0,"Left:");

Display_List_Char(1,6,str_temp);

Display_List_Char(1,10,"cm/s");

TH0=TL0=0; //计数器清零

TH1=TL1=0; //计数器清零

}

TR2=ET2=TR0=TR1=1; //计数开始,开定时器并允许中断

}

//*---------------主函数--------------*//

void main(void)

init_devices(); //器件初始化

delay_nus(800);

Write_Command_LCM(0x0c); //关显示

Write_Command_LCM(0x01); //清屏

display(0,0,"Hi,wellcome to"); //显示问候语

display(1,0,"wbf&zdx Group");

delay_nms(300);

Write_Command_LCM(0x01); //清屏

RightSpeed=0; //速度初始置零

LeftSpeed=0;

EA=1; //开总中断

TR2=ET2=TR0=TR1=1; //定时,计数开始while(1) //小车运动控制

{

Forward();

Left_90();

Forward();

Left_90();

Right_180();

Forward();

}

}

//*---------------子函数-------------*//

void init_devices(void) //初始化子程序

{

t0_init();

t1_init();

t2_init();

LCM_init();

}

void t0_init(void) //T0初始化

{

TMOD = 0x05; //方式一计数

ET0=1;

TH0=TL0=0; //设置计数起点

}

void t1_init(void) //T1初始化

{

TMOD |= 0x50; //方式一计数

ET1=1;

TH1=TL1=0; //设置计数起点

}

void t2_init(void) //T2初始化

RCAP2H=19456/256; //定时一秒,设置计数起点

RCAP2L=19456%256;

}

void LCM_init(void) //LCM初始化

{

rw=0;

en=0;

init_4bit();

Write_Command_LCM(0x28); //8位数据+双行显示+5*10点阵delay_nus(1000);

Write_Command_LCM(0x06); //光标增量方式+不移位

delay_nus(1000);

}

void init_4bit(void)

{

unsigned char rd_four;

rd_four = 0x28;

rw=0;

rs=0;

P0 = rd_four;

delay_nus(1000);

en=1;

delay_nus(2000);

en=0;

}

//*---------1602数据指令写入函数--------*//

void Write_Command_LCM(unsigned char com) //LCM写命令子函数{

unsigned char com_H=0,com_L=0;

rw=0;

rs=0;

com_H=com&0xf0;

com_L=(com<<4)&0xf0;

P0 = com_H;

delay_nus(1000);

en=1;

delay_nus(2000);

en=0;

P0 = com_L;

delay_nus(1000);

en=1;

delay_nus(2000);

en=0;

void Write_Data_LCM(unsigned char dat) //LCM写数据子函数

{

unsigned char dat_H=0,dat_L=0;

rw=0;

rs=1;

dat_H=dat&0xf0;

dat_L=(dat<<4)&0xf0;

P0 = dat_H;

delay_nus(1000);

en=1;

delay_nus(2000);

en=0;

P0 = dat_L;

delay_nus(1000);

en=1;

delay_nus(2000);

en=0;

}

void Set_xy_LCM(unsigned char x,unsigned char y) //光标位置设置

{

if(x==0)

{

Write_Command_LCM(0x80+y); //设置起始地址为0x0y,即确定显示位}

else

{

Write_Command_LCM(0xc0+y); //设置起始地址为0x0y,即确定显示位}

}

void Measure_Speed(void) //测速子程序

{

unsigned char Num_T0,Num_T1;

Num_T0=TH0*256+TL0;

Num_T1=TH1*256+TL1;

RightSpeed=2.54*Num_T0/2;

LeftSpeed=2.54*Num_T1/2;

}

//*------液晶模块指定位置显示子程序--------*//

void Display_List_Char(uchar x,uchar y,uchar *s)

{

uchar length,j;

length=strlen(s);

Set_xy_LCM(x,y);

if(length<=6)

{

for(j=0;j

{

LCM_Data=*s;

Write_Data_LCM(LCM_Data);

s++;

}

}

else

{

for(j=0;j<4;j++)

{

LCM_Data=*s;

Write_Data_LCM(LCM_Data);

s++;

}

}

}

void display(uchar x,uchar y,uchar *s)

{

uchar j,length;

length=strlen(s);

Set_xy_LCM(x,y);

for (j=0;j

{

Write_Data_LCM(*s);

s++;

}

}

void Data_Conversion(float speed) //数据转换,将float转换为uchar形式{

sprintf(str_temp,"%f",speed);

}

//*---------小车运动子函数---------*//

void Forward(void)

{ //小车前进子函数

uchar j;

for(j=0;j<30;j++)

{

right=1;

right=0;

delay_nus(20000);

left=1;

delay_nus(1700);

left=0;

delay_nus(20000);

}

}

void Left_90(void) //左转90度{

uint k;

for(k=0;k<20;k++)

{

right=1;

delay_nus(1300);

right=0;

delay_nus(20000);

left=1;

delay_nus(1300);

left=0;

delay_nus(20000);

}

}

void Right_90(void) //右转90度

{

uint k;

for(k=0;k<20;k++)

{

right=1;

delay_nus(1700);

right=0;

delay_nus(20000);

left=1;

delay_nus(1700);

left=0;

delay_nus(20000);

}

}

void Right_180(void)

{ //右转180度uint k;

for(k=0;k<40;k++)

{

right=1;

delay_nus(1700);

right=0;

delay_nus(20000);

left=1;

delay_nus(1700);

left=0;

delay_nus(20000);

}

}

//*----------------延时------------------*//

void delay_nus(unsigned int i) //Nus延时{

i=i/10;

while(--i);

}

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

unsigned int i;

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

}

void delay_nms(unsigned int n) //Nms延时函数{

unsigned int i=0;

for(i =0;i

delay_1ms();

}

智能小车单片机程序+论文+流程图+管教说明-报告模板

简易智能小汽车 队长:黄洋队员:尹志军梁荣新 赛前辅导老师:臧春华文稿整理辅导老师: 摘要 设计分为5个模块:前轮PWM驱动电路、后轮PWM驱动电路、轨迹探测模块、障碍物探测模块、光源探测模块。前轮PWM驱动电路用于转向控制;后轮PWM驱动电路用于方向和速度控制;探测模块利用三个光感元件,对黑色轨道进行寻迹;障碍物探测模块用于对两个障碍物进行探测;光源探测模块利用三个光敏电阻制成,用于寻光并确定光源角度,以期获得较为精确的转向值。绕障方案利用障碍物较低这个重要条件,在C点出发后,先利用光敏电阻获得光源的方向是本设计的一大特色。 一、方案论证与比较 1.轨迹探测模块设计与比较 方案一、使用简易光电传感器结合外围电路探测。 由于所采用光电传感器实际效果并不理想,对行驶过程中的稳定性要求很高,且误测几率较大、易受光线环境和路面介质影响。在使用过程极易出现问题,而且容易因为该部件造成整个系统的不稳定。故最终未采用该方案。 方案二、利用两只光电开关。 分别置于轨道的两侧,根据其接受到白线的先后来控制小车转向来调整车向,但测试表明,如果两只光电开关之间的距离很小,则约束了速度,如果着重于小车速度的提升,则随着车速的提升,则势必要求两只光电开关之间的距离加大,从而使得小车的行驶路线脱离轨道幅度较大,小车将无法快速完成准确的导向从而有可能导致寻迹失败。 方案三、用三只光电开关。 一只置于轨道中间,两只置于轨道外侧,当小车脱离轨道时,即当置于中间的一只光电开关脱离轨道时,等待外面任一只检测到黑线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线(即回到轨道)再恢复正向行驶。现场实测表明,虽然小车在寻迹过程中有一定的左右摇摆(因为所购小车的内部结构决定了光电开光之间的距离到达不了精确计算值1厘米),但只要控制好行驶速度就可保证车身基本上接近于沿靠轨道行驶。 综合考虑到寻迹准确性和行驶速度的要求,采用方案三。 2.数据存储比较 方案一、采用外接ROM进行存储。 采用外接ROM进行存储是保存实验数据的惯用方法,其特点是在单片机断电之后

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

单片机课程设计 题目: 智能小车设计 专业: 计算机科学与技术 班级: 14级2班 姓名学号组长 成员 成员 成员 成员 2016 年 12 月 23 日

打开命令行终端的快捷方式: ctr+al+t:默认的路径在家目录 ctr+shift+n:默认的路径为上一次终端所处在的路径. linux@ubuntu:~$ linux:当前登录用户名. ubuntu:主机名 :和$之间:当前用户所处在的工作路径. windows下的工作路径如C:\Intel\Logs 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 第一个位置:代表的是文件的类型. linux系统下的文件类型有以下几种. b:块设备文件 c:字符设备文件 d:directory,目录 -:普通文件. l:连接文件. s:套接字文件. p:管道文件. rwxr-xr-x:权限 r:读权限 -:没有相对应的权限 w:写权限 x:可执行权限 修改权限:

chmod u-或者+r/w/x 文件名 chmod g-或者+r/w/x 文件名 chmod o-或者+r/w/x 文件名 第一组:用户权限 第二组:用户组的权限 第三组:其他用户的权限. chmod 三个数(权限) 文件名 首先根据你想要的权限生成二进制数,再根据二进制数转换成十进制的三位数 rwxr-x-wx 111101011 7 5 3 chmod 753 文件名 rwx--xr-x 第二个位置上的数字:对应目录下的子文件个数,如果是非目录,则数字是1 第三个位置:用户名(文件创造者). 第四个位置:用户组的名字(前边的用户所处在的用户组的名字). 第五个位置:对应文件所占的空间大小(单位为b) 第六~八个位置:Dec 4 19:16时间戳(最后一次修改文件的时间) 最后一个位置:文件名 操作文件: 1.创建一个普通文件:touch 文件名 2.删除一个文件:rm(remove) 文件名 3.新建一个目录:mkdir(make directory) 目录名 递归创建目录:mkdir -p 目录1/目录2/目录3 4.删除一个目录:rmdir 目录名.//仅删除一个空目录 rm -rf 目录名//删除一个非空目录 5.切换目录(change directory):cd 路径 linux下的路径分两种 相对路径:以.(当前路径)为起点. 绝对路径:以/(根目录)为起点, 用相对路径的方式进入Music:cd ./Music 用绝对路径的方式进入Desktop:cd /home/linux/Desktop 返回上一级:cd .. 返回加家目录的三种方式 (1).cd

单片机课程设计报告

单 片 机 课 程 设 计 报 告 指导老师:任家富 学生:钟文旭 学号:200906050415

一、目的与意义 《单片微机原理及应用》是一门技术性、应用性很强的学科,实验课教学是它的一个极其重要的环节。不论是硬件扩展、接口应用还是编程方法、程序调试,都离不开实验课教学。如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节,学习与应用脱节的局面。任随书本上单片微机技术介绍得多么重要、多么实用、多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会因此对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。《单片微机课程设计》的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行单片机应用系统的开发设计工作打下一定的基础。 二、硬件电路图 1、主板

2、四位数码管

3、八位LED流水灯 4、蜂鸣器 5、串口

三、程序流程图

五、实现的功能及现象 1、键盘扫描输入 当程序运行时,自动检测是否有按键按下,是哪个按键按下,并且通过返回值,在四位数码管上显示出按下键所对应的数字、字母或执行相应的功能。 2、四位数码管显示 通过四位数码管显示相应的按键值、提示语或者执行相关功能。 3、八位流水灯 程序运行时,当按下“B”功能键,八位流水灯依次循环点亮熄灭。 4、秒表 程序运行时,当按下“C”功能键,数码管清零,从零开始逐秒增加。 5、串口通信 程序运行时,当按下“F”功能键,数码管显示“232C”,提示进行串口输入,当从串口助手中输入控制字符时,八位LED灯得到对应的结果。例如:当输入“00”时,八位灯全亮;当输入“AA”时,八位灯间隔亮。

单片机课程设计报告_单片机课程设计心得8篇

单片机课程设计报告_单片机课程设计心得8篇 单片机课程设计心得体会篇一 课设的选题,方案的设计与确定,元器件的选择,硬件的焊接,这一系列的课设准备工作早在课设开始之前,老师就向我们做了相关的介绍和明确的说明,同时非常友好的提示我们早点着手准备自己的课设项目。但是如此语重心长的话语在当时似乎没有引起所有人的注意,只到有同学拿出已成型的作品时,只到课程设计进入第二周时,只到看到有同学拿着作品去验收时,只到发现自己在规定的时间里无法完成扩展功能是,我们开始醒悟,开始想起老师之前的友情提示,开始意识到课设的准备工作没做好,开始产生恐惧。这样的情形并不只是出现在的课程设计过程中,而是经常出现在我们的生活中。整个课程设计的过程中都显得有些盲目,有些匆忙。 像这样的实训课程,对我们学习自动化的学生来说意义非常重大,它不仅是对单片机这一门课程的理解与运用,同时也涉及到数字电路和模拟电路的领域;这也是一次锻炼我们动手动脑的绝佳机会,能让我们切实感受理论与实际相结合的过程。 设计的过程是枯燥的,程序的调试过程是让人感到乏味的、无奈的、头疼的,但是看到完工的作品却是激动高兴的。对于硬件的焊接,这可能是很多同学都喜欢做的一个环节。但是这次的硬件焊接与上一次实训时的不一样,这次你需要自己设计电路,自己学习理解某些芯片的引脚功能。芯片引脚的接线是我们容易出错的地方,如果接线图或

者焊接有问题,这将对对芯片有很大的危害。硬件完工后,是软件的调试。我认为程序的调试是课设全过程中最难得部分,原因是我这块的功底非常薄弱。很坦诚的讲,以自己现有的能力,没法写出设计中的程序,我和同学只能借鉴高手的程序,努力地去修改源程序,使其能够实现想要的功能。软件的调试不像硬件焊接那么容易,调试过程中,我们必须考虑硬件与程序相匹配。在比如在这个环节中,很感谢我的同学,因为他能够非常耐心的为我讲解C语言中一些语句的用法和功能。 这次实训还有一重大收获是学会写一份正式的科技论文。报告的书写与软硬件同等重要,我们应遵守论文的格式要求,这也是对思维严谨性的一种锻炼。 完成一个出色的作品,单靠一个人的力量是不行的,小组成员之间必须相互配合,相互支持,相互团结,所以这也是一次锻炼我们团队合作精神的机会。 虽然本次实训结束了,但是实训留给我们思考的地方还很多,需要我们学习的地方还很多。无论在现在的学习中还是在以后的工作中,我们都应养成多学习,理解、多思考、多合作,多实践的好习惯,重视理论与实践相结合。 大学本科生单片机课程设计实训心得体会篇二 很多人说,学单片机最好先学汇编语言,以我的经验告诉大家,绝对没有这个必要,初学者一开始就直接用C语言为单片机编程,既省时间,学起来又容易,进步速度会很快。

单片机课程设计报告

单片机课程设计实验报告设计题目:基于单片机的多功能综合应用系统的设计 专业:电子信息工程 班级: 姓名: 指导老师:

目录 第一章设计说明 1.1 设计目的 (3) 1.2 设计内容及要求 (3) 第二章硬件电路仿真实现 2.1 硬件结构分析 (5) 2.2基本功能仿真电图 (6) 2.3扩展功能仿真电路图 (10) 2.4 实物电路图 (15) 第三章软件设计实现 3.1软件程序内容 (16) 3.2模块分析 (16) 3.3 程序流程图 (17) 第四章系统测试 4.1 软件调试 (19) 4.2硬件调试 (19) 第五章心得体会 (20) 第六章参考文献 (21) 附录 (21)

第一章设计说明 1.1 设计目的 单片机在许多领域使用十分广泛,如智能仪器仪表、实时工控、通讯设备、导航系统、家用电器等。各科任老师们经常说“学好单片机,工作就不成问题了。”可见学好单片意义之重大。单片机作为一门基础学科,既是对前期学习C语言的综合运用,也是理论与实践相结合的一大体现。本次课程设计通过基础部分,拓展功能以及整体电路的实现能很好地锻炼我们的动手及编程能力。 1.2 设计内容及要求 内容: 1.设计并实现具有复位功能的单片机小系统。 2.利用单片机进行灯光的场景开关控制、循环点亮控制、花样变化控制及速度变化控制(如:左右循环、扩散收缩式移动、流星雨、舞台灯光综合效果、名曲名句跟随显示等。至少应做两项:前两项选一并有速度变化控制功能,后三项选一或自创特色花样)。 3. 炫彩音乐显示(依据3秒以上某名曲名句,模拟高、中、低音三分频,彩色LED随音频变化而起伏显示的效果,进一步地,LED 亮度跟随音乐响度闪烁)。 4.利用单片机进行灯光的色彩连续变化效果控制。 5.利用单片机进行灯光的三色联动定时控制(以交通灯为例)。 (说明:3、4中二选一,1、2、5必选) 6. 配合2至5项中功能,实现液晶屏输出功能或状态信息。

单片机课程设计报告

摘要 单片机课程设计主要是让我们增进对c51单片机的感性认识,加深对理论方面的理解。了解软硬件之间的有关知识,并掌握软硬件的设计过程、方法及实现,为以后的设计和实现应用系统打下良好基础。本次课程设计主要完成跑马灯及闪烁灯的实验设计。首先通过Protel 99 SE 或proteus ISIS 画好原理图,然后将绘制好的原理图在PCB 面板上制线,通过导入Keil C 的设计好的汇编语言程序,完成模拟和仿真,最后将所模拟的程序导入已做好的AT89C51芯片上完成功能演示整个过程。最终根据要求完成所有步骤,实现了预期演示跑马灯、流水灯、闪烁灯任务。 关键词: 单片机、软件、硬件、跑马灯、流水灯、闪烁灯、印制板图、程序、数码管 Abstract SCM curriculum design is mainly let us enhance perceptions of the C51 microcontroller, to deepen theoretical understanding. Understanding of relevant knowledge between hardware and software, and master the design process of hardware and software, and the method of realization, and lay a good foundation for the design and implementation of application system. The experimental design of this course design mainly completes the marquee and flashing lights. Through the first Protel 99 SE or Proteus ISIS drawing principle diagram, and then draw principle of good business line in the PCB panel design, through the introduction of Keil C good assembly language program to complete the simulation, finally Complete the whole process of AT89C51 chip demo program to import the simulation done. Finally according to the requirements to complete all the steps to achieve the desired presentation marquees, lights, flashing lights. Keyword: SCM, software, hardware, marquees, lights, flashing lights, printed circuit board diagram, program, digital tube —————————————————————————装 订 线 ————————————————————————————————

基于单片机的智能小车设计报告

本人保证自写文档,文档不足之处请谅解 目录 一、设计的目的 ---------- 1 二、设计的模块 ---------- 1 三、程序的流程 ---------- 6 四、元器件清单----------- 8 五、成品的制作----------- 8 六、注意事项------------ 9 七、设计的总结----------- 9 设计的目的 智能遥控车地目的主要突出在智能与遥控上,遥控意思明显就是通过某种控制手段使得小车能够实现由控制者控制前进后退等操作;智能可以体现为功能上的智能化。本作的目的是实现控制小车移动时对前方所存在的威胁进行报警提醒。 设计的模块 此次设计的硬件电路模块大致为五大类,分别是51 单片机最小系统模块、电源模块、电机工作驱动模块、超声波报警系统模块、无线控制发射接收模块。 下图为硬件电路框图: 1、单片机最小系统 此模块式是本设计的控制核心模块,单片机最小系统由三部分组成:STC89C52芯片部分、复位部分(由按键开关、极性电容、10K电阻组成)、晶振部

分(由12M石英晶振、两个30PF的瓷片电容组成)。主要起程序的输入与控制、程序的复位、时间频率控制的作用。 2、无线控制模块 本设计的无线控制模块是由编码芯片PT2262和解码芯片PT2272组成的电路模块组成,工作方式是编码芯片PT2262 发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272 接收到信号后,其地址码经过两次比较核对 后,VT 脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。 3、电机驱动模块 本设计是采用了L298N电机驱动模块来驱动减速电机工作;L298N是ST 公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作 电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。 4、超声波测距报警模块 超声波是一种频率比较高的声音, 指向性强. 超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。本设计的超声波测距模块是专为智能小车设计的,适合小范围,小空间,封闭空间的场合。 5、电源模块 本设计的电源供给需要三组电源,无线遥控需要一组5V左右的电源供给; 小车分两组供电,一为单片机供电所需5V电源(与无线遥控器的电源值一致), 二为L298N电机驱动模块供电所需9V电源。单片机有正负极排针,左

哈工大单片机原理及应用实验报告

微处理器原理与应用 实验报告 姓名:李声勇 同组人:袁钟达,张秋实 学号:1080510123 班级:0805101 指导教师:张云 院系:电子与信息工程学院

1 实验一简单I/O口扩展实验(一) 交通灯控制实验 1.1实验要求 扩展实验箱上的74LS273作为输出口,控制八个发光二极管燃灭,模拟交通灯管理。 1.2实验目的 1.学习在单片机系统中扩展简单I/O接口的方法 2.学习数据输出程序的设计方法 3.学习模拟交通灯控制的实现方法 1.3实验原理 要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。不妨将L1、L3、L5作为东西方向的指示灯,将L2、L4、L6作为南北方向的指示灯。而交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。各发光二极管共阳极,阴极接有与非门,因此使其点亮应使相应输入端为高电平。 1.4 实验内容(包括实验电路和程序流程图)

1.5 实验结果 成功模拟交通灯管制系统,红绿灯方向指示正常,黄灯闪烁正常1.6 实验结果讨论分析 实验中发现交通灯在黄灯和红绿灯切换的时候有抖动和延时,初步估计是单片机定时系统不稳定以及程序的延时冗余没有添加所导致。 1.7 实验程序代码 变量说明:R1、R2、R3用来做延时控制变量。 EW段表示东西导通南北截止; SNBY是SN STAND BY的缩写,表示南北准备; SN段表示南北导通东西截止。 延时控制由若干延时控制单元组合而成(参考了一下老师的程

《单片机课程设计》报告

机械与车辆学院 课程设计题目: 姓名: 学号: 班级: 指导老师: 时间: 成绩:水塔水位控制系统 职称:

《单片机课程设计》考查评分表 、出勤率:□全勤□缺勤较少□缺勤较多□全缺(20%) 2、进度:□较快□正常□较慢□没有按时完成 布局焊接:□合理(20%) □错误较多□较合理 □原则性错误 □基本合理 1、程序编写框架:□合理□较合理□基本合理 (20%) (10%) (15%) (15%) □原则性错误 □基本正确 □错漏较多 系统调试结果:□实现□基本实现□不能实现 1、硬件设计: 2、软件设计: 3、联调结果: 4、过程体味: □合理 □合理 □正确 □属实 □较合理 □较合理 □较正确 □较属实 □基本合理 □基本合理 □基本正确 □基本属实 □不合理 □不合理 □错漏较多 □不属实□思路清晰,内容正确 □思路基本清晰,内容基本正确 指导教师:吴明友 2022 年 1 月 3 日 □错误较多 2、程序编写过程:□正确□较正确 □思路较清晰,内容较正确 □思路较混乱,内容错漏较多

一、课程设计性质和目的 (4) 二、课程设计的内容及要求 (4) 1、硬件设计 (4) 2、软件设计 (5) 3 、功能要求: (5) 三、课程设计的进度及安排 (5) 四、设计所需设备及材料 (6) 五、设计思路及原理分析 (7) 六、流程图及程序编写 (7) (1)根据功能要求画出控制程序流程图。 (8) (2)根据控制程序流程图编写C51 程序 (8) 七、调试运行 (10) 1 、软件测试: (10) 2、硬件测试: (11) 八、结果及分析 (12) 九、心得体味 (13) 十、参考文献 (14) 十一、致谢 (14) 十二、附录 (15) 【1】整流器protel 防真原理图: (15) 【2】数字时钟 (16)

单片机课程设计 报告

《单片机应用设计报告》 系别电子信息与电气工程系 专业自动化 班级 09 级 (1) 班 姓名王杰王典 老师储忠 完成时间 2012年5月18日

单片机原理及接口技术课程设计报告 摘要: 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 MCS-51单片机是使用极为广泛的一款8位单片机,在此次实训中所用的单片机是美国Atmel公司生产的以8031为内核的AT89S52单片机。实训分别以构建单片机最小系统版、74HC138流水灯、8255交通灯、8253方波、6N137光耦控制继电器等几个实验 关键词:AT89S52 74HC138 8255A 8253 6N137 交通灯

目录 单片机原理及接口技术课程设计报告 (1) 实验一构建单片机最小系统和实验环境熟悉 (3) 1.1单片机的工作原理 (3) 1.1.1单片机最小系统图 (3) 1.1.2运算器简介 (4) 1.1.3控制器简介 (5) 1.1.4实验解析与总结 (7) 实验二跑马灯实验及74HC138译码器 (7) 2.1实验内容 (7) 2.1.1实验原理 (8) 2.1.2实验原理图 (8) 2.1.3实验程序流程图 (9) 2.1.4实验程序代码 (9) 2.1.5完成后的效果图 (10) 2.2实验总结 (10) 实验三8255控制交通灯实验 (11) 3.1实验内容 (11) 3.1.3实验原理 (11) 3.1.2实验原理电路图 (12) 3.1.3程序流程图 (13) 3.1.4实验程序代码 (13) 3.1.5系统实现图 (15) 3.2 8255A寻址原理 (15) 3.3实验总结 (16) 实验四8253方波实验 (17) 4.1实验内容 (17) 4.1.1实验原理图 (17) 4.1.2实验原理电路图 (17) 4.1.3程序流程图 (18) 4.1.4程序流程代码 (19) 4.1.4系统仿真 (20) 4.2实验总结 (21) 实训总结 (21) 附录 (22) 1 实验源程序 (22) 2仿真系统电路原理图 (27) 3硬件实物照片 (27)

基于单片机自行车测速系统设计报告

基于单片机自行车测速系统设计报告 一、研究意义 自行车被发明及使用到现在已有两百多年的历史,这两百年间人类在不断的尝试与研发过程中,将玩具式的木马车转换到今日各式新颖休闲运动自行车,自行车发展的目的也从最早的交通代步的工具转换成休闲娱乐运动的用途。随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。因此,人们希望自行车的功用更强大,能给人们带来更多的方便。自行车里程速度表作为自行车的一大辅助工具也正是随着这个要求而迅速发展的,其功能也逐渐从单一的里程显示发展到速度、时间显示,甚至有的还具有测量骑车人的心跳、显示骑车人热量消耗等功能。本设计采用了MCS-51系列单片机设计一种体积小、操作简单的便携式自行车的速度里程表,它能自动地显示当前自行车行走的距离及运行的速度。 二、主要任务 本课题主要任务是利用霍尔元件、单片机等部件设计一个可用LED数码管实时显示里程和速度的自行车的速度里程表。本文主要介绍了自行车的速度里程表的设计思想、电路原理、方案论证以及元件的选择等内容,整体上分为硬件部分设计和软件部分设计。本文首先扼要对该课题的任务进行方案论证,包括硬件方案和软件方案的设计;继而具体介绍了自行车的速度里程表的硬件设计,包括传感器的选择、单片机的选择、显示电路的设计;然后阐述了该自行车的速度里程表的软件设计,包括数据处理子程序的设计、显示子程序的设计;最后针对仿真过程遇到的问题进行了具体说明与分析,对本次设计进行了系统的总结。具体的硬件电路包括AT89C52单片机的外围电路以及LED显示电路等。软件设计包括:芯片的初始化程序、定时中断采样子程序、显示子程序等,软件采用汇编语言编写,软件设计的思想主要是自顶向下,模块化设计,各个子模块逐一设计。三、硬件方案设计 测速,首先要解决是采样的问题。使用单片机进行测速,可以使用简单的脉冲计数法。只要转轴每旋转一周,产生一个或固定的多个脉冲,将脉冲送入单片机中进行计算,即可获得转速的信息。常用的测速元件有霍尔传感器、光电传感

单片机课程设计报告

单片机课程设计报告 单片机课程设计报告 一、设计目标: 本次课程设计旨在培养学生的单片机编程能力和电路设计能力,同时加深对单片机工作原理的理解。设计目标是通过单片机控制一个电子系统的运行,实现特定的功能。 二、设计内容: 设计一个温度控制系统,通过单片机控制温度传感器获取温度数据,并根据设定的温度值,控制电动风扇的开关。当温度高于设定值时,风扇自动启动,降低温度;当温度低于设定值时,风扇自动关闭,保持温度稳定。 三、设计步骤: 1. 硬件设计: a. 使用温度传感器DS18B20作为温度检测模块,通过单片 机的引脚连接传感器。 b. 使用单片机的PWM输出功能来控制电动风扇的电流大小,通过一个三极管来放大电流。 c. 设计一个驱动电路来驱动电动风扇,使其能够正确运行。 2. 软件设计: a. 配置单片机的IO引脚,将温度传感器连接到合适的引脚上,并配置PWM输出引脚和风扇控制引脚。 b. 编写初始化函数,对单片机进行初始化设置,包括时钟、IO口和PWM等配置。

c. 编写温度检测函数,通过读取温度传感器的数据,将温度值转换为摄氏度并保存。 d. 编写温度控制函数,根据设定的温度值,判断当前温度是高于还是低于设定值,并控制风扇的开关。 e. 编写主程序逻辑,循环执行温度检测和温度控制函数。 四、实施结果: 经过硬件和软件设计后,成功地实现了温度控制系统。当温度高于设定值时,风扇会自动启动;当温度低于设定值时,风扇会自动关闭,保持温度稳定。 五、总结与展望: 本次课程设计使我对单片机的应用有了更深入的理解,通过实践锻炼了单片机编程能力和电路设计能力。在今后的学习和工作中,我会进一步探索和应用单片机技术,不断提升自己的能力。

基于单片机自行车测速仪的设计毕业设计

基于单片机自行车测速仪的设计 摘要 本设计主要阐述一种基于单片机与霍尔传感器等元件的测速仪设计。以AT89C51单片机为核心,实现对自行车里程、速度、时间、温度等参数的测量,并能简单的将里程及速度用LCD实时显示。在本文中详细介绍了测速仪的硬件电路和软件设计。硬件部分利用霍尔传感器将每秒内的脉冲数传入单片机系统,然后经单片机系统计算处理并将过处理结果送LCD显示。软件的设计采用模块化结构,使程序的逻辑关系更加简洁。使硬件在软件的控制下协调运作。仿真,所设计的硬件电路及软件程序是正确的,实际的硬件电路中也基本上能够满足设计要求。 关键词:里程/速度,时间,温度,霍尔元件,单片机,LCD

Abstract This design mainly elaborated based on MCU and Hall element of speed instrument design. Take STC MCU as the core, Hall element speed, realizes to the bicycle mileage, speed, time, temperature measurement, and a simple bicycle mileage and speed with the LCD real time display. The hardware part using the Hall element will bike per second pulse number of incoming MCU system, and then by the single chip microcomputer system calculation processing and processing result to the LCD display. Program design in order to facilitate the expansion and the change, the software design uses the modular structure, make the logic relations more concise. Make hardware tocoordinatethe operation under the software control. Simulation experiments show that the designed hardware circuit and software program are correct, practical hardware circuit also basically can satisfy the design requirement, but due to the knowledge, in practice there are still some problems in the hardware circuit. Keywords: Mileage / speed,time, temperature, Hall element, MCU,LCD

基于单片机电动智能小车设计报告

基于单片机电动智能小车设计报告 一、研究意义 随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义很大。本设计就是在这样的背景下提出的,指导教师已经有充分的准备。本题目是结合科研项目而确定的设计类课题。设计的智能电动小车应该能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功能,可程控行驶速度、准确定位停车。本设计就采用了比较先进的80C51为控制核心,80C51采用CHOMS工艺,功耗很低。该设计具有实际意义,可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景;在考古方面也应用到了超声波传感器进行检测。所以本设计与实际相结合,现实意义很强。 二、硬件设计 简易智能电动车采用单片机进行智能控制。开始由手动启动小车,并复位,当经过规定的起始黑线,由超声波传感器和红外光电传感器检测,通过单片机控制小车开始记数显示并避障、调速;系统的自动避障功能通过超声波传感器正前方检测和红外光电传感器左右侧检测,由单片机控制实现;在电动车进驶过程中,采用双极式H型PWM脉宽调制技术,以提高系统的静动态性能;采用动态共阴显示行驶时间和里程。

系统原理图如图所示: 三、软件设计 在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。 程序流程图如下:

毕业设计-单片机电动车测速系统设计[管理资料]

摘要 随着科技的迅速发展,单片机的应用也越来越广泛,并带动传统控制检测技术不断更新。现在的车速表大多是电子式的,用LED数码管或LCD 即时显示,显示更加直观。电子式车速表采用接触车速传感器代替软轴传动,可使车速表的安装位置不受距离限制,进一步有效地克服了机械式车速表中的诸多不足。 本次设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示所测速度的设计方案,以及串口数据存储电路和系统软件。 该方案由于使用了数码管显示模块和E2PROM,以及高效快速算法,因而可在节约系统资源和简化程序设计的基础上保证测量精度和系统实时性。其中信号预处理电路包含信号放大、波形变换和波形整形:信号预处理电路中的放大器用于对待测信号进行放大,以降低对待测信号的幅度要求;波形变换和波形整形电路则用来将放大的信号转换成可与单片机接口的TTL 信号。通过单片机的设置可使INT0 引脚能够对内部定时器T0 的工作进行控制,这样能精确地测出加到INT0 引脚的正脉冲宽度(即测出脉冲信号的期) 。速度显示部分采用数码显示, 所得的数据采用I2C 总线, 并通过E2PROM来存储, 因而节省了所需单片机的口线和外围器件, 同时也简化了显示部分的软件编程。 本方案实现了电动车速度即时显示,并可通过控制两个按键显示速度或里程,同时加入了超速语音报警功能,使之更加人性化。 关键词:单片机;霍尔传感器;数码显示;语音报警;DC/DC变换器

Abstract With the rapid development of technology, more and more widespread application of microcomputer, and promote the traditional control detection technology constantly updated. Most of the current electronic speedometer, and with the LED digital tube or LCD display real-time, display more intuitive. Electronic speedometer flexible shaft using the contact speed sensor instead of driving, speed tables can be installed without distance limitations, and further to effectively overcome the mechanical disadvantages of speed in the table. The AT89C2051 is designed to give the core of computing and the use of microcomputer control, and adopting a systematic LED display module shows the measured real-time speed design, and the serial data storage circuits and system software. The program due to the use of the digital display module and E2PROM, and efficient fast algorithm, thus saving resources and simplifying programming system based on the system to ensure accuracy and real-time. Signal pre-processing circuit which includes signal amplification, wave conversion and waveform shaping: signal pre-processing circuit in the amplifier for the amplified signal could be to reduce the requirements on signal amplitude; wave transformation and wave-shaping circuitry is used to enlarge the signal converted into TTL signals with the microcontroller interface. Set by MCU enables INT0 pin to the work of the internal timer T0 control, so to accurately measure the INT0 pin is added to the pulse width (ie measured pulse signal period). Speed display part of a digital display, the data collected using I2C bus, and through E2PROM to store, thus saving the need microcontroller port lines and peripheral devices, but also simplifies the display part of the software programming. The program achieved the speed of real-time electric vehicle revealed two buttons can be displayed by controlling the speed or mileage, while adding a speed voice alarm function, make it more humane. Key words: microcomputer;Hall sensor;digital display;voice alarm;DC / DC converter

相关主题