课程设计报告书
课程名称: 《单片机原理及系统设计》
课题名称: 电子密码锁 系部名称: 机电工程系
专业班级: 机电13X班
姓 名: XX
学 号:
130212403
2015年06月22日
目 录
摘 要 .................................................................. 1 第一章 绪 论 ........................................................... 1 第二章 方案论证与设计 ................................................ 2 2.1 设计目标和实现方法 ............................................... 2 2.2方案论证与设计 ................................................... 2 第三章 硬件模块介绍 .................................................... 4 3.1 运算模块 .......................................................... 4 3.2 单片机(ATC51) ................................................... 5 3.2.1 单片机(ATS51)的引脚功能 ..................................... 5 3.3.2 引脚介绍 ...................................................... 6 3.3 74ls245芯片 ................................................... 10 74ls245芯片如图3-7所示 ............................................. 10 3.4 输入模块 ........................................................ 10 3.4.1 键盘介绍 .................................................... 11 3.5 显示模块 ......................................................... 12 3.5 .1 数码 ........................................................ 13 3.5.2 数码管的分类 ................................................. 13 第四章 软件设计 ....................................................... 15 4.1 LED显示程序流程图设计 ........................................... 15 4.2 读键输入程序流程图设计 ........................................... 15 4.3 主程序流程图设计 ................................................. 16 第五章 仿真及调试 .................................................... 18 总 结 ................................................................. 19
附 录1 仿真电路设计图 ............................................... 20
第1页
摘 要
计算器在人们的日常中是比较的常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的八位计算器。该设计系统是以ATC51为单片机,用74LS245为显示位控制, P1口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,并外接驱动电路,系统采用LED数码管作为显示器,软件程序采用均采用C语言编写,便于移植与升级。报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。计算器将完成的功能有整数的加,减,乘,除等功能。
关键字 计算器 数码管 74LS245
第1页
第一章 绪 论
随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了, 单片机的应用已经越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。 近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。
本设计采用80S51 芯片,实现了利用单片机进行了一个简单计算器设计。允许对输入数据进行加减乘除运算及LED 显示。如果设计对象是更为复杂的计算器系统,其实际原理与方法与本设计基本相同。另外,实例所设计的计算器是用LED 数码管显示的,当然也可以用其他的器件显示,如LED 显示屏,这样就可以显示出更多的字符,在此基础上,还可以编写更加完善的程序来实现更多的计算功能。设计的关键所在,必须非常熟悉单片机的原理与结构,同时还要对整个设计流程有很好的把握,将单片机和其他模块完整的衔接。
第2页
第二章 方案论证与设计
2.1 设计目标和实现方法
为了满足计算器的基本要求,可以基本的运算(加减乘除),数据归零和出错警告提示,我们采用基于单片机设计计算器,并用LED 数码管显示数据,4*4 的矩阵键盘实现数据输入。设计仿真和调试要用到Protues 、Keil等软件。
2.2方案论证与设计
根据功能和指标要求,本系统选用MCS 51 单片机为主控机。通过扩展必要的外围接口
电路,实现对计算器的设计。具体设计考虑如下:
①由于要设计的是简单的计算器,可以进行四则运算,对数字的大小范围要求不高故
我们采用可以进行四位数字的运算,选用8 个LED 数码管显示数据和结果。
②另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可。 系统模块图:
第3页
图2-1 系统模块图
根据需要我们可以采用自上而下的程序设计方法,此方法先从主程序开始设计,然后再编制各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。这种方法比较符合人们的日常思维,缺点是一级的程序错误会对整个程序产生影响。程序流程图如图2-2所示:
图2-2 程序流程图
第4页
第三章 硬件模块介绍
3.1 运算模块
MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能,如图2-1所示:
图3-1 单片机芯片
第5页
3.2 单片机(ATC51)
单片机是我们电子产品实现自动化、智能化必不可少的电子元器件,它的外观如图3-2所示:
图3-2 单片机外观图
3.2.1 单片机(ATS51)的引脚功能
51系列单片机8031、8051及c51/s51均采用40Pin封装的双列直接DIP结构。上图是它们的引脚配置:40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用,如图3-3所示:
第6页
图3-3 引脚图
3.3.2 引脚介绍
3.3.2.1 电源引脚
Vcc 40脚 正电源脚,工作电压为5V,另有ATLV51工作电压则是2.7-6V, 引脚功能一样。
GND 20脚 接地端。 3.3.2.2 外接晶体引脚
外接晶体引脚如图3-4所示:
图3-4 外接晶体管引脚
Pin19:时钟XTAL1脚, Pin18:时钟XTAL2脚,XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。 型号同样为ATC51的芯片,在其后面还有频率编号,有12,16,20,24MHz可选。大家在购买和选用时要注意了。如ATC51 24PC就是最高振荡频率为24MHz,40P6封装的普通商用芯片。 3.3.2.3 复位
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的0000H处开始运行程序。常用的复位电路如下
第7页
图3-5所示。
图3-5 复位电路图
复位操作不会对内部RAM有所影响。当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。什么叫复位?复位是单片机重新执行程序代码的意思。8051的复位方式可以是自动复位,也可以是手动复位,如图3-6所示。此外,RESET/Vpd还是一复用脚,Vcc掉电期间,此脚可接上备用电源, 以保证单片机内部RAM的数据不丢失。
图3-6 复位方式
3.3.2.4 输入输出(I/O)引脚:
P39-P32为P0.0-P0.7输入输出脚,称为P0口,是一个8位漏极开路型双向I/O口。内部不带上拉电阻,当外接上拉电阻时,P0口能以吸收电流的方式驱动八个LSTTL负载电路。通常在使用时外接上拉电阻,用来驱动多个数码管。 在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,不需要外接上拉电阻。P1-P8为P1.0-P1.7输入输出脚,称为P1口,是一个带内部上拉电阻的8位双向
第8页
I/0口。P1口能驱动4个LSTTL负载。 通常在使用时外不需要外接上拉电阻,就可以直接驱动发光二极管。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
P21-P28为P2.0-P2.7输入输出脚,称为P2口,是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
P10-P17为P3.0-P3.7输入输出脚,称为P3口,是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载,这8个引脚还用于专门的第二功能。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
P1-P3端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。除此之外P3端口还用于一些专门功能,具体请看下表3-1:
第9页
P3引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 兼用功能 串行通讯输入(RXD) 串行通讯输出(TXD) 外部中断0( INT0) 外部中断1(INT1) 定时器0输入(T0) 定时器1输入(T1) 外部数据存储器写选通WR 外部数据存储器写选通RD 表3-1 P3口功能表
3.3.2.5 其它的控制或复用引脚
(1) ALE/PROG 30 访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存储器时,出现一个ALE脉冲。对Flash存储器编程时,这个引脚用于输入编程脉冲PROG
(2) PSEN 29 该引是外部程序存储器的选通信号输出端。当ATC51由外部程序存储器取指令或常数时,每个机器周期输出2个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。
(3) EA/Vpp 31 外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使ATS51只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必须保持低电平。对Flash存储器编程时,用于施加Vpp编程电压。
第10页
3.3 74ls245芯片
74ls245芯片如图3-7所示:
U1234567191A0A1A2A3A4A5A6A7CEAB/BA74LS245B0B1B2B3B4B5B6B71817161514131211 图3-7 驱动电路
74ls245是我们常见的芯片,在这里它用来驱动LED,它是8路同相三态双向总线
收发器,可以双向传送数据。
74ls245还具有双向三态功能,既可以输出,也可以输入数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须介入74L245等 总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收) *DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。
3.4 输入模块
计算器输入数字和其他功能按键要用到很多按键,如果采用按键的方式,在
这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式。为此,我们引入了矩阵键盘的应用,采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上
第11页
按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率,如图3-8所示:
图3-8 键盘按键
3.4.1 键盘介绍
每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
当无按键闭合时,P10~P13 与P14~P17 之间开路;当有键闭合时,与闭合键相连的两条I/O 口线之间短路。判断有无按键按下的方法是:第一步,置列线P14~P17 为输入状态,从行线P10~P13 输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P14~P17 读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。
第12页
8520963=/*_+ 图3-9 键盘电路 3.5 显示模块
发光二极管LED 是单片机应用系统中的一宗简单而常用的输出设备,其在系统中的主要作用是显示单片机的输出数据、状态等。因而作为典型的外围器件,LED 显示单元是反映系统输出和操作输入的有效器件。LED 具备数字接口可以方便的和大年纪系统连接;它的优点是价格低,寿命长,对电压电流的要求低及容易实现多路等,因而在单片机应用系统中获得了广泛的应用,所以在此设计中我首先选用了LED作为显示器件。如图3-10所示:
图3-10 数码显示管
第13页
3.5 .1 数码
数码管是一种半导体发光器 件,其基本单元是发光二极管。如 图右所示: 3.5.2 数码管的分类
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示器,器排列形状如下图所示:
第14页
图3-11 LED段码
为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阴极字形代码如下表3-1所示:
显示字型 0 1 2 3 4 5 6 7 8 9 g 0 0 1 1 1 1 1 0 1 1 f 1 0 0 0 1 1 1 0 1 1 e 1 0 1 0 0 0 1 0 1 0 d 1 0 1 1 0 1 1 0 1 1 c 1 1 0 1 1 1 1 1 1 1 B 1 1 1 1 1 0 0 1 1 1 a 1 0 1 1 0 1 1 1 1 1 段码 3fh 06h 5bh 4fh 66h 6dh 7dh 07h 7fh 6fh 表3-1 0~9七段数码管共阴级字形代码
第15页
第四章 软件设计
4.1 LED显示程序流程图设计
6位LED显示的程序框图如图4-1所示:
图4-1 LED显示流程图
4.2 读键输入程序流程图设计
为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。列扫描信号进行读入行的信号判断该列是否有列的输出——是则进行按照行列计算键盘的值,查表
第16页
取得键码并返回——若否则进行再次扫描。其程序框图如下:
图4-2 程序框图
4.3 主程序流程图设计
运算主程序设计
首先初始化参数,送LED低位显示“0”,高位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、清零键还是功能键(“+”“-”“*”“/”“=” ),是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。运算主程序框图如3-4所示:
第17页
图4-4 运算主程序框图
第18页
第五章 仿真及调试
在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对的程序模块,各模块可以单独设计、编程和调试,然后组合起来。这种方法便于设计和调试,容易实现多个程序共存,但各个模块之间的连接有一定的难度。根据需要我们可以采用自上而下的程序设计方法,此方法先从主程序开始设计,然后再编制各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。这种方法比较符合人们的日常思维,缺点是一级的程序错误会对整个程序产生影响。
功能和操作:加减乘除运算和显示。 ①上电后,屏幕初始化。
②计算。按下数字键,屏幕显示要运算的第一个数字,再按下符号键,然后再按下 数字键,屏幕显示要运算的第二个数字,最后按下“﹦”号键,屏幕上显示出计算结果。 ③如果要再次计算,可以按下“ON/C”键清零,或者按下单片机的复位键,重新初始化。
第19页
总 结
经过近两个月的努力,终于顺利完成了毕业设计。刚开始,我们头绪不是很清楚,不知道从哪里入手,但通过老师的耐心指导并和同学认真研究设计课题,跑图书馆查资料、确定基本设计方案、对所用芯片功能进行查找、调试、上机仿真等,经历了一次次的困难,却积累了很多宝贵的经验。在整个设计的过程中遇到的问题主要有以下三点,第一:基础知识掌握的不牢固,主要表现在一些常用的电路的形式和功能不清楚,对书本上的内容理解不够透彻。第二:对一些常用的应用软件缺少应用,体现在画电路图和系统的仿真的时候,对这些软件的操作不熟练,浪费了很多时间。第三:相关知识掌握的不够全面,缺少系统设计的经验。
这次设计进一步端了我的学习态度,学会了实事求是,严谨的作风,对自己要严格要求,不能够一知半解,要力求明明白白。急于求成是不好的,我有所感受。如果省略了那些必要的步骤,急于求成,不仅会浪费时间,还会适得其反。我觉得动手之前,头脑里必须清楚该怎么做,这一点是很重要的。就目前来说,我的动手能力虽然差一点,但我想,通过我的不懈努力,在这方面,我总会得到提高。这一点,我坚信。因为别人能做到的,我也一定能做到。
在此次的毕业设计中我最大的体会就是进一步认识到了理论联系实践的重要性。一份耕耘,一份收获。通过这段时间的设计,让我明白科学的思维方法和学习方法是多么重要,只有这样才能够有很高的效率,才能够让自己的工作更完美。总而言之,此次毕业设计让我学到了好多平时在课堂上学不到的东西,增加了我的知识运用能力,增强我的实际操作能力。谢谢老师给我们提供这么好的机会,为我们之后走向社会奠定了一个好的基础。
本次毕业设计让我学到了很多,也学会到了要怎么样去面对困难,不要对知识一知半截,要有的求实的能力,通过老师的帮助我学到了很多在平时的没有注意到的动东西及知识,更美没有深入的的去理解,通过这次我要更加的明确自己。更要注重自己在各方面的锻炼能力,把握机会。这次的设计非常的感谢老师们。
第20页
附 录1 仿真电路设计图
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务