单片机课程设计报告Word格式文档下载.docx
《单片机课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
2、keil简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
因此,本次课程设计的程序都采用keiluvision2调试,编译。
3、设计过程和有关说明:
(1)警情探测:
在该设计中,需采用两路外部中断输入门禁报警和红外报警,分别采用两个小按键模拟。
其中一个按键模拟门禁报警,对应外部中断0;
另一个按键模拟红外报警,对应外部中断1。
(2)报警设计:
正常状态下,数码管不显示,当发生门禁报警时,系统发出声光报警信息并在数码管显示1;
,当发生红外报警时系统发出声光报警信息并在数码管显示2。
只有由主人按下报警接触按钮或系统复位后,才能解除声光报警并将数码管的数字重置为0。
4、硬件电路设计:
本系统是基于51系列单片机的简易安防声光报警系统,主要包括的硬件电路模块有:
单片机最小系统、七段数码管显示模块、安防报警器(点触开关模拟)、声光报警。
1、单片机最小系统简介
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路。
结构图如右图所示:
各部分的功能介绍如下:
复位电路:
由电容串联电阻构成,由图并结合"
电容电压不能突变"
的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.
晶振电路:
典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)
单片机:
一片AT89S51/52或其他51系列兼容单片机。
特别注意:
对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;
当接低电平时,复位后直接从外部ROM的0000H开始执行.
其电路系统框图如下:
图1系统原理框图
特别说明:
由于实验条件有限,本课程设计中所涉及到的报警器装置采用点触开关模拟,具体电路图如图2所示。
当有报警事件发生时,即开关被按下,报警器输出低电平,单片机由此产生一个中断事件,并对其作出相应的处理,图中C53是用于消除点触开关动作时产生的干扰,防止单片机发生误动作。
图2报警器模拟电路
整体的硬件电路图如图3所示。
图3系统硬件电路图
5、程序设计
基于STC89C51单片机的功能特点,并根据系统的要求编写出基于keilC51的程序,首先单片机上电复位,并进行初始化包括寄存器和数码管,当发生报警事件时,单片机驱动声光报警装置并且在数码管上显示相应的报警信息,退出中断时,单片机检测报警解除按钮,当报警解除按钮被按下时单片机关闭声光报警并清除数码管上的报警信息,具体的程序流程如图4所示。
图4主程序流程图
图5中断函数流程图
参考程序如下所示:
#include<
reg51.h>
#defineucunsignedchar
#defineDATAPORTP0//此为数码管段码口如果是P1口则将P0修改为P1
/*********下面的是数码管位选端口
对应自己的板子进行修改
如果跟仿真程序里面一样到就不用改
***************/
sbitSEG0=P2^0;
//第1位数码管
sbitSEG1=P2^1;
//第2位数码管
sbitSEG2=P2^2;
//第3位数码管
sbitSEG3=P2^3;
//第4位数码管
sbitLED1=P3^4;
//报警灯1
sbitLED2=P3^5;
//报警灯2
voidDelay(ints);
//函数声明;
voidKeyScan(void);
//函数声明
voidDisplay(void);
voidInit_all(void);
voidTrans(void);
sbitKEY1=P1^4;
//定义相应的按键端口
sbitKEY2=P1^3;
sbitKEY3=P1^6;
sbitKEY4=P1^7;
unsignedcharconstsegment[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//显示段码值0123456789
unsignedcharSeg[4]={0,0,0,0};
//存放各个数码管显示数字的变量
ucalarm1,alarm2;
voidDelay(ints)//短暂延时函数
{
while(--s);
}
voidKeyScan(void)//函数定义
if(KEY1==0)//如果按钮1按下
{Delay(5000);
//延时去抖
if(KEY1==0)//如果还是按下
;
}
if(KEY2==0)//如果按钮2按下
if(KEY2==0)//如果还是按下
if(KEY3==0)//如果按钮3按下
if(KEY3==0)//如果还是按下
{
alarm1=0;
alarm2=0;
if(KEY4==0)//如果按钮4按下
if(KEY4==0)//如果还是按下
;
voidDisplay(void)//函数定义
SEG0=1;
//选通P2^0
DATAPORT=segment[Seg[0]];
//输出相应显示值
Delay(300);
//显示延时
SEG0=0;
SEG1=1;
//选通P2^1
DATAPORT=segment[Seg[1]];
SEG1=0;
SEG2=1;
DATAPORT=segment[Seg[2]];
SEG2=0;
SEG3=1;
DATAPORT=segment[Seg[3]];
SEG3=0;
voidInit_all()
EX0=1;
EX1=1;
IT0=1;
IT1=1;
EA=1;
voidmain()
Init_all();
P1=0XFF;
LED1=0;
LED2=0;
while
(1){
KeyScan();
if(alarm1)
Seg[0]=1;
Seg[1]=1;
LED1=1;
else
Seg[0]=0;
Seg[1]=0;
if(alarm2)
Seg[2]=1;
Seg[3]=1;
LED2=1;
Seg[2]=0;
Seg[3]=0;
Display();
voidInt0_ISR(void)interrupt0
alarm1=1;
voidInt1_ISR(void)interrupt2
alarm2=1;
四、Proteus仿真
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SP
I调试器、键盘和LCD系统仿真的功能;
有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
③提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;
同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。
④具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
本课程设计在做完方案设计和程序编辑后后就是利用Proteus进行硬件仿真,先把需要的元器件从元件库里面调出来,再按照接线原理图把线连接好,检查线路准确无误后再把用KELL生成的HEX程序文件导入单片机里,一切就绪后开始进行联调,若仿真结果与设计的不同,则先找有无硬件设置错误,再检查程序,不断检查,直至仿真成功。
仿真联调过程如下:
1、KeilC51v7.50软件和Proteus7.0SP软件,分别进行安装。
2、把Proteus安装目录下VDM51.dll(C:
\ProgramFiles\LabcenterElectronics\Proteus6
Professional\MODELS)文件复制到Keil安装目录的\C51\BIN目录中。
3、编辑C51里tools.ini文件,加入TDRV1=BIN\VDM51.DLL("
PROTEUSVSMMONITOR51DRIVER"
)
4、Keil里设置:
project-->
optionsforproject-->
debugtab
5、选中useProteusVSMmonitor51
6、载入Proteus文件
7、KeilC与Proteus连接仿真调试
单击仿真运行开始按钮,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。
在LED显示器上,循环显示1-4。
8、若联调失败,则返回重新检查再进行调试。
五、硬件制作
在软件仿真成功交老师检查后,就可以去领取器件做硬件设计了。
硬件制作所要求的就是细心,再就是经验。
硬件制作过程如下:
1、领取元器件,检查元器件是否是自己所需要的;
2、规划,综合考虑各个器件的引脚及接电源和节点的情况,对接线路径进行规划,尽量避免线路的重叠,要求做的美观、使用;
3、焊接固定座槽,注意不要短路和段路;
4、连接各条线路,不要错漏,也不要重复,这里尤其要小心;
5、接线完毕进行检查,再把芯片装上去;
6、下载程序
7、接通电源,测试
8、测试成功则交老师检查,否则返回5重做。
六、设计心得及程序调试过程
1、现对调试过程中出现的问题做如下说明:
(1)硬件:
这部分没有多大的难题。
主要是在最开始对最小系统的理解和参数的选择上面。
单片机最小系统是指用最少的元件组成的单片机可以工作的系统。
应该包括:
单片机、晶振电路、复位电路等。
由于之前没有这类概念,因此查了很多资料才开始有所理解,并开始动手焊接板子。
而在参数的选择方面,有很多参数都是经典的参数,但我也要求自己认真去分析了一下为什么要这么选择。
有些是因为单片机内部要求,有些是用于上拉电阻,还有些则要通过模电中的相关知识进行计算。
对于这部分现在虽有所了解了,但面对一个很复杂的、完全需要自己搭建系统时,我想现在还远远不够。
所以,尽管课程设计结束了,但对单片机的学习不能结束。
(2)软件:
软件的编程选用C来编程,容易理解和掌握。
但是跟我们所学的汇编又有很多的差异。
首先,我学习了KEIL_C51最基本的使用:
从头文件到中断入口地址的编程,再到如何定义和使用单片机的资源,我学到了很多。
比如最开始,我不知道在编程中P0.0口需写为P0^0口,以及大小写都要注意;
另外,在数字的使用中不要写在最前面等等很多细节要注意。
我想,如果以后编写更大的一个系统,碰到的问题将会更多,也能收获更多。
(3)但是,在整个设计过程中我没有先使用仿真再进行实物的连接,这是一个不好的习惯,以后必须改掉,以免不必要的损失。
2、设计心得
(1)通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题的全面、系统的锻炼。
使我在单片机的编程设计思路技巧的掌握方面向前迈了一大步。
同时这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,而这次的设计正是从人们所需出发,做出一个有实际应用意义的东西,从而真正做到学以致用,为今后的学习指明了方向。
(2)要做好一个课程设计,就必须做到:
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;
在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
(3)而且在焊板子的时候要充分细心,我在做最小系统的时候,检查了很久,但是恁是觉得自己的电路没错,也没搭接在一起,后来还是李渥湘同学给我检查出来的,一般元件都是要跨两个孔的,而那个开关却要只要跨一个孔,而板子一般是三个孔连在一起的,导致了,本来只是对角相连的,却成了四个角都连上了,根本就没要了开关的作用。
最后做扩展的时候,还遇到了一个小问题,本来按下去就要报警,在没有复位之前,按其他键都应该不能是它报警暂停的,可是我那个接触有点不好,而且程序方面之前也是没考虑到这点的,导致有时候工作很正常,有的时候声光报警就突然消失了。
参考文献
[1]杨恢先单片机原理与应用国防科技大学出版社2002.7
[2]张友德MCS-51单片机实验指导复旦大学出版社1993.4
[3]张毅刚MCS-51单片机原理及应用哈尔滨工业大学出版社2004
[4]
刘守义.单片机应用技术.西安:
西安电子科技大学出版社,2002
[5]
胡
键.单片机原理及接口技术实践教程.北京:
机械工业出版社,1998
[6]
张洪润.单片机应用技术.北京:
清华大学出版社,1997