电子系统工程实习报告.docx
- 文档编号:24299680
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:26
- 大小:242.82KB
电子系统工程实习报告.docx
《电子系统工程实习报告.docx》由会员分享,可在线阅读,更多相关《电子系统工程实习报告.docx(26页珍藏版)》请在冰豆网上搜索。
电子系统工程实习报告
电子系统工程实习报告
—基于MSP430单片机的超声波测距彩屏显示系统设计
目录
一、实习题目-1-
二、实习目的与要求-1-
三、实习内容-1-
四、实习原理-1-
4.1、实验所用编程环境:
-1-
4.2、总体方案-2-
4.3、总体方案设计图-3-
五、系统硬件电路设计与程序流程设计-6-
5.1、MSP430芯片介绍-6-
5.2、各个模块介绍-6-
5.3、端口连接表-10-
六、系统调试-10-
七、实习结论与分析-17-
7.1、分析-17-
7.2、结论-17-
八、实习心得-17-
九、参考文献-18-
附录-19-
顶层文件代码-20-
1、实习题目
基于MSP430单片机超声波测距彩屏显示系统
二、实习目的与要求
1.熟悉掌握电子系统设计的典型软、硬件平台使用方法;
2.熟悉电子CAD制图与PCB板的制作方法;
3.掌握常用电子仪器设备的使用方法;
4.亲自动手完成一个电子系统的设计制作一调试;
5.实习过程中必须严格遵守实验室安全制度、注意安全、防触电;
三、实习内容
1.使用MSP430单片机彩屏可实时显示障碍物距离信息,距离单位为cm,精确到小数点后1位。
2.可设定报警上下限,当距离超过上限或下限时报警,有明显现象。
3.系统应具备测距启动功能,或系统报警后,可以通过复位系统,使其重新开始测距。
四、实习原理
4.1、实验所用编程环境:
嵌入式IAREmbeddedWorkbench®是一个非常有效的集成开发环境(IDE),它使用户充分有效地开发并管理嵌入式应用工程。
作为一个开发平台,它具备任何在用户每天的工作地方所想要的特性。
嵌入式IAREmbeddedWorkbenchIDE提供一个框架,任何可用的工具都可以完整地嵌入其中,这些工具包括:
1.高度优化的IARAVRC/C++编译器;
2.AVRIAR汇编器;
3.通用IARXLINKLinker;
4.IARXAR库创建器和IARXLIBLibrarian;
5.一个强大的编辑器;
6.一个工程管理器;
7.IARC-SPYTM调试器,一个具有世界先进水平的高级语言调器。
嵌入式IAREmbeddedWorkbench适用于大量8位、16位以及32位的微处理器和微控制器,使用户在开发新的项目时也能在所熟悉的开发环境中进行。
它为用户提供一个易学和具有最大量代码继承能力的开发环境,以及对大多数和特殊目标的支持。
嵌入式IAREmbeddedWorkbench有效提高用户的工作效率,通过IAR工具,用户可以大大节省工作时间。
4.2、总体方案
使用MSP430单片机作为中央处理器,使用超声波测定距离返回信息送入中央处理器中,使用128128彩屏显示距离信息,通过按键设定报警上下限,通过LED和蜂鸣器产生报警。
4.3、总体方案设计图
图1总体方案设计图
五、系统硬件电路设计与程序流程设计
5.1、MSP430芯片介绍
MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗的混合信号处理器(MixedSignalProcessor)。
MSP430系列单片机是一个16位的单片机,采用了精简指令(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。
这些特点保证了可编制出高效率的源程序。
MSP430系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。
16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如FFT等)。
图2芯片引脚图
5.2、各个模块介绍
5.2.1、128*128彩色液晶模块
128×128分辨率彩色液晶模块,16位65K真彩屏,工作电压3.3V,控制器是S6B33B6X。
8位并口通信方式,接口方式兼容12864液晶,但和12864相比图像更逼真,画面更清晰,比12864强很多,可以显示汉字、单色图片、彩色图片。
提供测试代码,使用我们提供的接口显示函数对彩屏的操作非常简单。
引脚说明如下:
序号
名称
功能
备注
1
VSS
地
2
VDD
电源(注意:
工作电压是3.3V)
3
NC
没有使用
4
RS/A0
数据或命令选择RS;RS=1表明输入的是显示数据,RS=0表明输入的是控制命令
RS或者叫A0
5
WR
写信号
6
RD
读信号
7-14
D0-D7
8位并行数据接口
15
RST
复位引脚
16
CS
LCD片选引脚
17
NC
没有使用
18
NC
没有使用
19
NC
没有使用
20
NC
没有使用
表1
图3彩屏实物图
5.2.2、超声波模块
1.工作原理
HC-SR04超声波测距模块可提供2cm-4m的非接触式距离感测功能,测距精度可达到3mm;模块包括超声波发射器、接受器与控制电路。
基本工作原理:
(1)采用IO口TRIG触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
测试距离=(高电平时间*声速(340m/s))/2;
2.实物图
如下图,VCC供5V电源,GND为地线,TRIG触发控制信号输入,ECHO回响信号输出等四支线。
图4超声波实物图
3.电气参数
表2
4.超声波时序图
图5超声波时序图
5.实物规格
图6实物规格图
5.2.3、蜂鸣器LED模块
报警电路较为简单,其中蜂鸣器采用三极管来增加驱动能力,FM
为声音的方波的输出口;LED_OUT为发光二极管的连接引脚。
图7蜂鸣器报警电路
图8蜂鸣器实物图
图9LED报警电路图
图10LED实物图
5.2.3、4*1按键模块
4*1按键模块如图所示,采用5.1K欧上拉电阻。
图11按键电路图
图12按键实物图
5.1、端口连接表
5.1.1、彩屏端口连接表
序号
名称
功能
备注
1
VSS
地
2
VDD
电源(注意:
工作电压是3.3V)
3
NC
没有使用
4
RS
P3.0
5
WR
P3.1
6
RD
P3.2
7-14
D0-D7
P5.0~P5.7
15
RST
P3.3
16
CS
P3.4
17
NC
没有使用
18
NC
没有使用
19
NC
没有使用
20
NC
没有使用
表3
5.1.2、超声波端口连接表
序号
名称
功能
备注
1
GND
地
2
VDD
电源(注意:
工作电压是5V)
3
Trig
P1.0
4
Echo
P1.1
表4
5.1.3、蜂鸣器端口连接表
序号
名称
功能
备注
1
GND
地
2
VDD
电源(注意:
工作电压是5V)
3
信号电平端
P2.0
表5
5.1.4、按键端口连接表
序号
名称
功能
备注
1
GND
地
2
VDD
电源(注意:
工作电压是3.3V)
3
端口1~4
P1.4~P1.7
表6
注:
MSP单片机通过下载端口供电或者使用3.3V稳压电源供电。
六、系统调试
按照上面端口连接表连接好电路,下载程序供电,以下是调试实物图:
图13整体实物图
图14彩色液晶显示图
图15超声波与障碍物
注:
具体调试过程可见附件调试视频。
七、实习结论与分析
7.1、结论
表7测量距离与实际距离比较
图16关系图
6.2、分析
可以看出距离在一定范围内误差较小,距离越大误差越大。
八、实习心得
作为一名电子信息工程的学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的,在已度过的大学时间里,我们大多数接触的是专业课。
在课本上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业理论运用到实践中?
我想这次课程设计提供了良好的平台。
在做本次课程设计的过程中,我感触最深的当属于实物制作和调试的过程,为了让设计更完善,我们查阅了大量的资料,经过多次方案设计,修改程序,不断调试,终于初见成果。
在这期间,我一度感到沮丧,因为在我的设想中能实现的功能放到实物中往往会遇到各种问题,为了解决这些问题,花费大量的经历和时间,从中我也学到了我们一切都要有据可依,不切实际的构想无法升级为设计。
通过这次的课程设计的制作让我对单片机的理论有了更加深入的了解,同时在具体制作实物的过程中,我发现书本上的知识与实际应用存在着差距,书本上的知识很多都是理想化的结论,忽略了很多实际因素或者问题,这让我们无法根据书本上的理论就轻易得到预想中的结果。
通过这次实践使我更深刻的体会到了理论联系实际的重要性,以及我们实物制作的动手能力。
我们在今后的学习工作中会更加的注重实际,避免成为只会纸上谈兵的赵括。
从中我也学会了凡事要耐心和坚持。
最后,我在此要感谢老师,是老师使我的调试技巧又有了进一步的提高,再次表示感谢。
九、参考文献
[1]张谦琳.超声波检测原理和方法.北京中国科技大学出版社,1993.10
[2]路锦正,王建勤.超声波测距仪的设计[M].成都:
成都理工大学,1999年
[3]基于单片机智能系统的设计与实现[M].北京:
人民邮电出版社,2005年
[4]沈建华.MSP430系列16位超低功耗单片机原理与实践[M].北京航空航天大学出版社,2008:
202-208.
[5]靳达.单片机应用系统开发实例导航[M].北京:
人民邮电出版社,2003:
110-112
[6]沈建华,杨艳琴,翟晓曙.MSP430系列16位超低功耗单片机原理与应用[M].北京:
清华大学出版社,2004:
420-421.
附录
顶层文件代码
#include
unsignedcharRevBuffer[256];
#include"font.c"
#include"c128128.c"
#include"C128128.h"
#definekeyin(P1IN&0xF0)
unsignedcharkeyval=0,temp;
unsignedintx_x,s_x;
unsignedintdN[4];
unsignedintdQ[4];
unsignedintdW[4];
#defineRISE1
#defineFALL0
unsignedintTA_Overflow_Cnt;//TA溢出次数存放变量
unsignedlongintPeriod;//脉宽存放结果变量
unsignedlongintS;
unsignedintdistance;
unsignedintRiseCapVal;//上升沿时刻捕获值存放变量
unsignedcharEdge=1;//当前触发沿
unsignedchardisbuff[4]="0.00";
/*******************************************
函数名称:
Delay_1ms
功能:
延时约1ms的时间
参数:
无
返回值:
无
********************************************/
voidDelay_1ms(void)
{
unsignedchari;
for(i=150;i>0;i--)_NOP();
}
/*******************************************
函数名称:
Delay_Nms
功能:
延时N个1ms的时间
参数:
n--延时长度
返回值:
无
********************************************/
voidDelay_Nms(unsignedintn)
{
unsignedinti;
for(i=n;i>0;i--)Delay_1ms();
}
voidDelaylong(unsignedintt)
{
unsignedinti,j;
for(i=0;i { for(j=0;j<100;j++); } } //初始化系统时钟函数 voidinit_clk() { unsignedchari; BCSCTL1&=~XT2OFF;//打开XT振荡器 do { IFG1&=~OFIFG;//清除振荡错误标志 for(i=0;i<0xff;i++)_NOP();//延时等待 } while((IFG1&OFIFG)! =0);//如果标志为1继续循环等待 BCSCTL2|=SELM_2+SELS;//MCLK8MandSMCLK8M } //初始化定时器A函数 voidinit_timerA() { TACTL|=TASSEL_2+MC_2+ID_3;//SMCLK,连续计数,中断允许,计数器清零 TBCTL|=TBSSEL_2+MC_2+ID_3; TACCTL0|=CAP+CM_1+CCIS_0+SCS+CCIE;//捕获模式,上升沿捕获,CCI0B输入,同步捕获,中断允许 } //初始化端口函数u voidinit_IO() { P1DIR|=BIT0;//P1.0输出 P1DIR&=~(BIT1+BIT4+BIT5+BIT6+BIT7);//P1.1输入 P1SEL=BIT1;//P1.1第二功能,捕获输入 P1OUT&=~BIT0; Delay_Nms(1000); } voidCheck_Key1(void) { if(keyin! =0xF0)//如果有键被按下 { Delayus(1000);//延时消抖 if(keyin! =0xF0)//再次检测按键状态 { temp=keyin; while(keyin! =0xF0);//等待按键被放开 switch(temp)//转换键值 { case0xE0: s_x+=1;break; case0xD0: s_x-=1;break; case0xB0: x_x+=1;break; case0x70: x_x-=1;break; //default: keyval=0;break; } } } } voidmain() { /*下面六行程序关闭所有的IO口*/ P1DIR=0XFF;P1OUT=0XFF; P2DIR=0XFF;P2OUT=0XFF; P3DIR=0XFF;P3OUT=0XFF; P4DIR=0XFF;P4OUT=0XFF; P5DIR=0XFF;P5OUT=0XFF; P6DIR=0XFF;P6OUT=0XFF; WDTCTL=WDTPW+WDTHOLD;//关狗 P6DIR|=BIT2;P6OUT|=BIT2;//关闭电平转换 P3DIR|=0xff;//P4.0output P5DIR|=0xff;//P5.4output P2DIR|=0xff; //P2OUT=BIT0; //P6DIR|=BIT0;//背光灯 //P6OUT|=BIT0; //P6OUT&=~BIT0;//关闭LCD背光 init_clk(); Init_S6B33B();//LCD初始化 LCD_Clr(white);//清屏,white是白色的背景 Delaylong(100);//等待 init_IO(); init_timerA(); Disp_Chinese(0,0,0x001f,dang); Disp_Chinese(0,2,0x001f,qian); Disp_Chinese(0,4,0x001f,ju); Disp_Chinese(0,6,0x001f,li); Disp_Chinese(0,8,0x001f,wei); Disp_Chinese(2,12,0x0000,li1); Disp_Chinese(2,14,0x0000,mi); Disp_Chinese(3,0,0x001f,bao); Disp_Chinese(3,2,0x001f,jing); Disp_Chinese(3,4,0x001f,shang); Disp_Chinese(3,6,0x001f,xian); Disp_Chinese(3,8,0x001f,wei); Disp_Chinese(5,0,0x001f,bao); Disp_Chinese(5,2,0x001f,jing); Disp_Chinese(5,4,0x001f,xia); Disp_Chinese(5,6,0x001f,xian); Disp_Chinese(5,8,0x001f,wei); s_x=180; x_x=100; TACCTL0|=CM_1+SCS+CCIS_0+CAP+CCIE;//改为上升沿捕获 _EINT(); while (1) { P1OUT|=BIT0; Delay_Nms(10); P1OUT&=~BIT0; Delay_Nms(80); dN[0]=S%10; dN[1]=S%100/10; dN[2]=S%1000/100; dN[3]=S%10000/1000; dQ[0]=s_x%10; dQ[1]=s_x%100/10; dQ[2]=s_x%1000/100; dW[3]=s_x%10000/1000; dW[0]=x_x%10; dW[1]=x_x%100/10; dW[2]=x_x%1000/100; dW[3]=x_x%10000/1000; if(S { P2OUT|=BIT0; } else { P2OUT&=~BIT0; } Delaylong(100); DisplayDigit(2,5,0xF800,shuzi,16*dN[3]); DisplayDigit(2,6,0xF800,shuzi,16*dN[2]); DisplayDigit(2,7,0xF800,shuzi,16*dN[1]); DisplayDigit(2,8,0xF800,shuzi,16*10); DisplayDigit(2,9,0xF800,shuzi,16*dN[0]); DisplayDigit(4,5,0xF800,shuzi,16*dQ[3]); DisplayDigit(4,6,0xF800,shuzi,16*dQ[2]); DisplayDigit(4,7,0xF800,shuzi,16*dQ[1]); DisplayDigit(4,8,0xF800,shuzi,16*10); DisplayDigit(4,9,0xF800,shuzi,16*dQ[0]); DisplayDigit(6,5,0xF800,shuzi,16*dW[3]); DisplayDigit(6,6,0xF800,shuzi,16*dW[2]); DisplayDigit(6,7,0xF800,shuzi,16*dW[1]); DisplayDigit(6,8,0xF800,shuzi,16*10); DisplayDigit(6,9,0xF800,shuzi,16*dW[0]); Check_Key1(); } } //定时器A服务程序 #pragmavector=TIMERA0_VECTOR __interruptvoidTimer_A(void) { switch(TAIV) { case0: if(Edge==RISE) { RiseCapVal=TACCR0; TACCTL0|=CAP+CM_2+CCIS_0+SCS+CCIE;//改为下降沿捕获 Edge=FALL;//下降沿捕获标志 } else { _DINT(); Period=TACCR0-RiseCapVal; S=((Period*10)/78+50); TACCR0=0; TACCTL0|=CAP+CM_1+CCIS_0+SCS+CCIE;//改为上升沿捕获 Edge=RISE;//上升沿捕获标志 _EINT(); } break; case10: TA_Overflow_Cnt++;_EINT(); break; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 系统工程 实习 报告