单片机课设报告.docx
《单片机课设报告.docx》由会员分享,可在线阅读,更多相关《单片机课设报告.docx(37页珍藏版)》请在冰豆网上搜索。
![单片机课设报告.docx](https://file1.bdocx.com/fileroot1/2022-12/29/81e7bb8e-e30d-4d5d-ab0a-7bcae20104c6/81e7bb8e-e30d-4d5d-ab0a-7bcae20104c61.gif)
单片机课设报告
序号(学号):
学生实习报告书
实习类别
单片机应用实习
实习地址
武汉理工大学信息工程学院
学院
信息工程
专业
通信工程
班级
姓名
指导教师
郭志强
2014
年
1
月
10
日
实习执行大纲
一、实习目的
1、巩固《单片机原理与应用》理论课的理论知识;
2、熟悉单片机应用系统的硬件设计及软件设计的基本方法;
3、将《单片机原理与应用》理论课的理论知识应用于实际的应用系统中;
4、训练单片机应用技术,锻炼实际动手能力。
二、实习纪律与要求
1、实习纪律
1)参加实习的学生必须按照实习大纲的要求,在指导教师的指导下,全面完成实习任务;
2)听从指导教师安排,严格遵守实习纪律;
3)因故在实习期间缺勤累计超过规定时间的三分之一,不得参加本次实习考核,但可在补足所缺天数后再给予考核并评定实习成绩。
2、基本要求
1)利用PROTEL等软件进行硬件设计;
2)利用KeiluV2软件完成应用系统软件设计;
3)利用PROTEUS软件进行仿真设计;
4)完成单片机最小系统和应用系统电路板的焊接;
5)对电路进行调试;
6)利用stc-isp软件完成在系统编程、下载,并完成系统软件调试;
7)题目由指导教师提供;
8)要求每个学生单独完成硬件软件设计、仿真、焊接、调试任务;
9)写出实习报告,实习报告主要包括以下内容:
目录、摘要、关键词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论、参考文献等;
10)实习完成后通过答辩;
11)答辩时交实习报告电子文档,通过答辩后根据修改意见修改并打印、装订成册。
三、实习地点
武汉理工大学信息工程学院通信实验室(鉴主15楼)。
四、实习时间
2013年12月30日---2013年1月12日。
实习单位:
武汉理工大学信息工程学院
参观考察单位:
(1)武汉理工大学信息工程学院国创课题小组
(2)武汉理工大学信息工程学院开放实验室
(3)武汉理工大学电工电子实习中心
(4)
(5)
实习开始时间:
2013年12月16日,实习时间共14天。
完成实习报告时间:
2013年1月9日。
5、实习内容
1)利用上述材料完成包含如下系统功能组件的单片机最小系统的设计、焊接、调试
(1)键盘
一个4X4的矩阵键盘,其中,10个按键是0~9数字键;另外6个是功能键,用于功能选择和控制,如“数据输入”、“数据显示”、“串行通信”功能选择键,以及“回车”、“清除”、控制键。
(2)显示电路
由6个7段LED数码管组成的显示电路。
(3)串口串行通信
利用51的串口实现串行通信接口电路。
2)完成ISP下载电路的设计、焊接
3)完成系统软件的设计,包括程序结构设计、流程图绘制、程序设计,实现如下功能
(1)功能选择
通过功能选择键,使得单片机处于不同的工作状态并通过LED显示相应的内容;可选择的功能包括:
数据输入;数据显示;串口通信
(2)数据输入
通过功能选择键选择“数据输入”后,可分次输入10个4位十进制数据,并将输入的数据保存在内部RAM中。
数据输入要求:
1)第一步输入序号0~9,表明输入的是第几个4位十进制数据;
2)第二步按下回车键,完成序号输入;
3)第三步输入最多4位的十进制数据;
4)第四步按下回车键,完成数据输入;
5)重复第一步,开始新数据的输入;
6)输入数据的显示格式是:
最左边是序号,然后是空格,之后是从右到左的最多4位十进制数;
7)若在输入过程中(第一步或第三步)出现错误,按“清除”键,重新从第一步开始输入数据。
或者,自己设计10个十进制数的输入及显示方式。
(3)数据显示
通过功能选择键选择“数据显示”后,可显示之前输入的10个4位十进制数据中的任一个,要求:
1)第一步输入序号0~9,表明显示的是第几个4位十进制数据;
2)第二步显示相应的数据;
3)重复第一步、第二步,显示其他的数据;
4)数据的显示格式是:
最左边是序号,然后是空格,之后是要显示的数据,从右到左最多4位十进制数。
或者,自己设计数据的显示方式。
(4)数据通信
将两个单片机最小系统通过串口连接起来,其中一个作为主系统,另一个作为辅系统。
当通过功能选择键选择“串行通信”后,当在主系统上按下数字键后主系统的LED按从左向右移东的方式显示按键输入的数字,同时辅系统的LED上显示与主系统同样的内容。
4)利用仿真软件完成系统仿真工作
5)在单片机最小系统硬件上实现任务3中规定的功能
实习任务书
学生姓名:
专业班级:
指导教师:
郭志强工作单位:
信息工程学院
题目:
单片机应用实习报告
初始条件:
单片机最小系统、下载电路、扩展电路、软件(PROTEUS等)、万用表、电烙铁等工具
要求完成的主要任务:
1)完成单片机最小系统的设计、焊接、调试
2)完成ISP下载电路的设计、焊接
3)完成系统软件的设计,包括程序结构设计、流程图绘制、程序设计
4)利用仿真软件完成系统仿真工作
5)在单片机最小系统硬件上实现任务3中规定的功能
时间安排:
阶段内容
所需时间
方案设计
2天
硬件设计
2天
软件设计
3天
系统仿真
1天
电路板焊接
2天
系统调试
3天
答辩
1天
合计
14天
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
单片计算机即单片微型计算机。
由RAM,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本次课程设计包括STC89S52单片机最小系统包括复位和时钟电路及供电系统、4×4矩阵键盘、独立6个8段LED数码管显示电路。
利用相关设计软件进行原理图设计即利用Keil软件编程以及Proteus软件仿真来巩固单片机应用、模拟电路、数字电路课程及学会各种工程软件的使用。
关键字:
单片机最小系统、串行通信、数码管
Abstract
Singlechipcomputeristhesinglechipcomputer.ByRAM,ROM,CPUconstitute,time,countandmultipleinterfaceintheintegrationofmicrocontroller.Itssmallsize,lowcost,thefunctionisstrong,widelyusedinintelligentindustryandindustrialautomation.And51seriesmicrocontrolleristhemosttypicalandvariousmicrocontrollermostrepresentativeone.Thiscurriculumdesignthroughtoitsstudy,application,thusachievedthestudy,design,development,softandhardability.
Thecurriculumdesign,includingSTC89S52MCUminimumsystem(includingaresetandclockcircuitandpowersupplysystem),4x4matrixkeyboard,theindependent6LEDdigitaltubedisplaycircuit.Usingcircuitdesignsoftwareschematicdesign,usingKeilsoftwareandProtuessoftwaresimulation,weconsolidatetheMCUapplication,analogcircuit,digitalcircuitcourseandlearnallkindsofengineeringsoftwareuse.
KeyWords:
Keywords:
singlechipmicrocomputerminimumsystem,serialcommunication,digitaltube
1MCS-51单片机内部结构
1.1MCS-51单片机组成
MCS-51单片机是在一块芯片中集成了CPU,RAM,ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件。
MCS-51单片机内包含下列几个部件:
◆一个8位CPU;
◆一个片内振荡器及时钟电路;
◆4K字节ROM程序存储器;
◆128字节RAM数据存储器;
◆两个16位定时器/计数器;
◆可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;
◆32条可编程的I/O线(四个8位并行I/O端口);
◆一个可编程全双工串行口;
◆具有五个中断源、两个优先级嵌套中断结构。
频率基准源计数器
串行串行
中断控制并行I/O口输入输出
图1-18051单片机框图
1、CPU
CPU是单片机的核心部件。
它由运算器和控制器等部件组成。
运算器的功能是进行算术运算和逻辑运算。
定时与控制部件有时钟电路
8051片内设有一个由反向放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入和输出端,时钟可以由内部方式产生或外部方式产生。
内部方式时钟电路如图2-2所示。
在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶振可以在1.2MHz到12MHz之间选择,电容值在5-30PF之间选择,电容的大小可起频率微调作用。
图1-2内部方式时钟电路
外部方式的时钟很少用,若要用时,只要将XTAL1接地,XTAL2接外部振荡器就行。
对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。
时钟发生器把振荡频率两分频,产生一个两相时钟信号P1和P2供单片机使用。
P1在每一个状态S的前半部分有效,P2在每个状态的后半部分有效。
2、存储器
MCS-51单片机的程序存储器和数据存储器空间是互相独立的,物理结构也不同。
程序存储器为只读存储器(ROM)。
数据存储器为随机存取存储器(RAM)。
单片机的存储器编址方式采用与工作寄存器、I/O口锁存器统一编址的方式。
有关存储器的内容将在下一节中详述。
3、I/O端口
I/O端口又称为I/O接口,也叫做I/O通道或I/O通路,I/O端口是MCS-51单片机对外部实现控制和信息交换的必经之路,I/O端口有串行和并行之分,串行I/O端口一次只能传送一位二进制信息,并行I/O端口一次能传送一组二进制信息。
4、总线
MCS-51单片机属总线型结构,通过地址/数据总线可以与存储器(RAM、EPROM)、并行I/O接口芯片相连接。
在访问外部存储器时,P2口输出高8位地址,P0口输出低8位地址,由ALE(地址锁存允许)信号将P0口(地址/数据总线)上的低8位锁存到外部地址锁存器中,从而为P0口接受数据作准备。
在访问外部程序存储器(即执行MOVX)指令时,PSEN(外部程序存储器选通)信号有效,在访问外部数据存储器(即执行MOVX)指令时,由P3口自动产生读/写(
/
)信号,通过P0口对外部数据存储器单元进行读/写操作。
1.2MCS-51单片机引脚功能
MCS单片机都采用40引脚的双列直插封装方式。
图1-3为引脚排列图,40条引脚说明如下:
图1-38051引脚排列图
1、主电源引脚Vss和Vcc;
2、外接晶振引脚XTAL1和XTAL2;
3、控制或与其它电源复用引脚RST/VPD,ALE/
,
和
/Vpp;
4、输入/输出引脚P0.0-P0.7,P1.0-P1.7,P2.0-P2.7,P3.0-P3.7。
2设计方案
2.1硬件电路
2.1.1单片机最小系统
单片机的最小系统原理如下图所示:
图2-1单片机最小系统
该部分包括芯片的电源、复位以及时钟电路。
51单片机最小系统复位电路的极性电容的大小直接影响单片机的复位时间,一般采用10到30uF,51单片机最小系统容值越大需要的复位时间越短。
最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
51单片机有两种振荡方式,为内部振荡和外部振荡,内部振荡方式所得到时钟信号比较稳定,在实际电路中,一般是选用内部振荡方式。
2.1.2矩阵键盘
矩阵键盘采用16个点触开关进行4*4排列,电路连接方式如图2-2所示:
图2-2矩阵键盘电路
一个4X4的矩阵键盘,其中,10个按键是0~9数字键;另外6个是功能键,用于功能选择和控制,如“数据输入”、“数据显示”、“串行通信”功能选择键,以及“回车”、“清除”、控制键。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
确定矩阵式键盘上何键被按下用“行扫描法”。
行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,第一步:
判断键盘中有无键按下,将全部行线置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
第二步:
判断闭合键所在的位置,在确认有键按下后,依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
对矩阵键盘还要消除按键在闭合和断开时的抖动。
可采用延时方式软件消除抖动。
2.1.3数码显示
数码管显示电路采用两个3位共阴数码管组合成6位显示,由于单片机的I/O口输出电流较小,不能驱动数码管,所以需要使用驱动芯片,本次设计使用两片74HC537锁存器作为段选和位选,且作为数码管的驱动。
使用两个锁存器可以实现I/O口复用,节省单片机接口资源。
由于要实现串口通信,需要两个这样的数码显示。
如下图所示:
图2-3数码显示电路
2.1.4串行通信电路
单片机串行通信方式介绍:
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。
串行通信的特点:
传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
51单片机内部有一个全双工串行接口。
一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。
SBUF寄存器:
它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。
从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。
串行口控制寄存器SCON(见表1)
表1串行口控制寄存器SCON
表中各位(从左至右为从高位到低位)含义如下。
SM0和SM1:
串行口工作方式控制位,其定义如表2所示。
表2串行口工作方式控制位
源控制寄存器PCON(见表3)。
表3PCON寄存器
表中各位(从左至右为从高位到低位)含义如下。
SMOD:
波特率加倍位。
SMOD=1,当串行口工作于方式1、2、3时,波特率加倍。
SMOD=0,波特率不变。
利用51的串口实现串行通信接口电路。
其电路如下图所示:
图2-4串口通信电路
2.2软件设计
2.2.1矩阵键盘的识别
每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。
键盘处理程序的任务是:
确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。
两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
程序流程图如下图,代码见附录。
图2-5矩阵键盘识别流程图
2.2.2数码管显示
要使多个数码管能同时显示内容,一般采用动态扫描法,动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。
本设计在数码管的段端口和位端口都接了锁存器,所以只需一个接口就能实现上述功能。
在进行数码显示的时候,要对显示单元开辟6个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。
对于显示的字形码数据我们采用查表方法来完成。
程序流程图如图2-6所示,程序代码见附录。
否
是
图2-6数码管动态扫描
2.2.3串口通信
串口通信采用方式1,方式1是10位数据的异步通信口。
TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图2-7所示。
其中1位起始位,8位数据位,1位停止位。
图2-7传送一帧数据的格式
用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。
接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。
当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中
断。
串口通信发送程序的流程图如图2-8所示,代码见附录。
图2-8串口通信发送流程图
接收程序流程图如图2-9所示,代码见附录。
图2-9串口通信接收流程图
3软件仿真
3.1总电路图
图3-1总电路图
3.2数据输入及显示
1)按下仿真运行按钮,开始仿真;
2)按下键盘上的“输入”按钮,然后按下0~9中任意一个按键选择之后输入数组的组别,完成后按“回车”键结束组别输入;
3)之后依次输入4位十进制数,再按“回车”键完成数组输入(在此期间如果发现输入出错,可以按“清除”键从新输入);
仿真结果如下:
4位十进制数组输入
数据组别
图3-2数据输入
在完成数据输入之后,按下“显示”按钮,输入想显示的组别即可输出之前对应输入的数组,(如输入6,就显示之前输入的数组“2145”)仿真结果如下:
4位十进制数组输入
数据组别
图3-3数据显示
3.3数据串行通信
按下键盘上的“通信”按钮,输入0~9当中的任意数字,可以发现在主显示屏和副显示屏上依次出现输入的数字,从而实现了串行通信的功能。
仿真结果如下:
图3-4数据串行输入
按下“桌面”按键,清除主显示屏上的所有内容,如下所示:
图3-5主显示屏恢复初始状态图
通过上述仿真测试结果可以看出此次设计基本符合课程设计的要求,仿真达到了预期的效果,设计成功!
4实物焊接及测试
图4-1数据输入
图4-2数据输入时进行串口通信
从以上实物调试拍摄图可知,本次设计的板子能够实现要求的所有功能,设计方案是正确可行的。
5总结
通过这次课程设计,加强了我们动手、思考和解决问题的能力。
在设计过程中,经常会遇到这样那样的情况,就是心里想着这样的程序可以行得通,但实际接上总是实现不了,因此耗费在这上面的时间用去很多。
我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。
平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
比如一些程序的调用,通过动手实践让我们对调用映象深刻。
所以这个课程设计对我们的作用是非常大的。
设计程序时,我发现只有细心才能做到完美,首先是参数设置,还有结果显示部分的设置,兼顾到方方面面去考虑是很需要的,否则只是一纸空话。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
参考文献
[1]谢自美.电子线路设计·实验·测试(第三版).武汉:
华中科技大学出版社
[2]李群芳.单片微型计算机与接口技术(第3版).电子工业出版社,2008
[3]刘教瑜.单片机原理及应用.武汉理工大学出版社,2011
[4]张东亮.单片机原理与应用.人民邮电出版社,2009
[5]郭天祥.51单片机C语言教程.电子工业出版社,2009
附录
主程序
#include"reg52.h"
voiddelay(unsignedchars);
voidkeyscan(void);
voidkeydown(void);
voidinput(void);
voidscreen(intsmode);
inttest=0;
unsignedcharint_on=0;//用于刚进入通信模式时的初始化只有在通信模式下需要打开中断1为中断已开化
unsignedchartemp;//读按键用的测试变量
unsignedcharkey;//按键序号
unsignedcharMODE=3;//模式选择,0为输入模式,1为显示模式,2为串口通信模式
unsignedcharFUNC=0;//功能选择,1为回车,2为清除
unsignedcharreg[10][4];//输