单片机课程设计-基于单片机的数字秒表设计.doc_第1页
单片机课程设计-基于单片机的数字秒表设计.doc_第2页
单片机课程设计-基于单片机的数字秒表设计.doc_第3页
单片机课程设计-基于单片机的数字秒表设计.doc_第4页
单片机课程设计-基于单片机的数字秒表设计.doc_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 引言1.1 单片机的发展概况单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。管脚图如图1.1所示。图1.1 at89c52单片机引脚图(1) 电源地组vcc和vss;vcc(40)脚接+5v电压;vss(20)脚接地(2) 时钟电路组xtal1和xtal2(3) 控制信号组rst/ale/psen和ea(4) i/o端口p0, p1, p2和p3近来,单片机的发展尤为迅猛,并且趋于高智能化、存储器大量化、更多的外围电路内装化以及工艺上的多元化等方向,广泛应用于单机应用领域、多机应用领域、自动控制领域和智能化控制领域等。单片机应用系统的结构通常分为三个层次,即单片机、单片机系统和单片机应用系统。单片机通常指应用系统主处理机,即所选择的单片机器件等。单片机系统指按照单片机的技术要求和嵌入对象的资源要求而构成的基本系统。时钟电路、复位电路和扩展存储器等与单片机共同构成了单片机系统。单片机应用系统指能满足嵌入对象要求的全部电路系统。在单片机系统的基础上加上面向对象的接口电路,如前向通道、后向通道、人机交互通道(键盘、显示器、打印机等)和串行通信口(rs232)以及应用程序等。单片机应用系统层次关系如图1.2所示。单片机向后通道单片机系统单片机应用系统向前通道人机交互通道应用程序串行通信口图1.2 单片机应用系统三个层次的关系1.2 数字秒表的描述与分析1.21问题描述设计一个秒表,第一次按键,开始计数,数码管显示从00.00每10毫秒自动加1;第两二次按键,系统暂停计数,数码管显示当前的计数;第三次按键系统清零,数码管显示00.00 。1.22设计要求1使用四位数码管显示,显示时间00.0099.99秒;2正常计数时,每10毫秒自动加1;3一个按键(包括开始、暂停、清零),一个复位按键;4实现计数、复位、清零功能;5单片机通电后,首先初始化。第一次按键用来控制秒表工作的开始;第二次按键用来暂停程序的运行;第三次按键用来进行显示器清零;复位键是用来对程序复位用的,当程序出现死循环或想从00.00开始重新计时,按下复位键可返回程序开始,重新执行。 2 设计目的及要求2.1 设计目的1建立数字电子电路系统的基本概念;2通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。3掌握定时器、外部中断的设置和编程原理。4通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 2.2 设计要求设计一个数字电子秒表,该秒表具有显示功能和清零、开始计时、停止计时等功能。设计的要求如下:1.以10毫秒为最小单位进行显示;2.秒表可显示00.0099.99秒的量程;3.该秒表具有清零、开始计时、停止计时功能;3 系统硬件电路设计3.1数字秒表电路设计数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计时与显示电路和回零、启动等。主控制器采用单片机at89c52,显示电路采用四位共阳极led数码管显示计时时间。由于本实验有四位数码管,如果采用静态显示要占用全部的i/o端口,所以本次试验采用静态显示,共使用12个引脚,即简化了电路又节省了原料。本设计利用at89c52单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始和复位的功能。p2口输出段码数据,74hc573用作驱动输出,p1.0口接一个按钮开关,分别实现开始、暂停、清零功能。电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。秒表原理图如图3.1所示。图3.1秒表原理图3.2 电源电路电源电路是系统的最基本部分,任何部分都离不开电源部分,单片机系统也不例外,而且我们应该高度重视电源部分,不能因为电源部分电路比较简单而有所疏忽,其实有一半的故障或制作失败都和电源有关,电源部分做好才能保证电路的正常工作。3.3 单片机晶振电路at89c52单片机内部的振荡电路是一个增益反相放大器,引线xyal1和xtal2分别为反相放大器的输入和内部时钟电路输入和来自反相放大器的输出,该反相放大器可以配置为片内振荡器。单片机内部虽然有震荡电路,但要形成时钟,外部还需要附加电路石晶振荡和陶瓷振荡均可采用,有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,单必须保证脉冲的高低电平要求的宽度。晶振电路如图3.2、3.3所示。 图3.2 内部晶振电路 图3.3 外部晶振电路单片机的时钟产生方式有两种,分别为:内部时钟方式和外部时钟方式。利用其内部的震荡电路xtal1和xtal2外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到xtal2的输出时钟信号。在at89c52中通常用内部时钟方式,也就是在xtal1和xtal2之间连接晶体振荡器与电容构成稳定的自激震荡器。晶体和电容决定了单片机的工作精度为1微秒,晶体可在1.2-12mhz之间选择。单片机在通常情况下,使用震荡频率为12mhz的石英晶体,而12mhz频率主要是在高速串行通信情况才使用,在这里我们用的是12mhz的石英晶体。对电容无严格要求,但它在取值对震荡频率的输出的稳定性、大小及震荡电路起震荡速度有点影响。c1和c2可在10-100pf之间取值,一般情况下取30pf。外部时钟方式是把外部震荡信号源直接接入xtal1或xtal2。由于xtal2的逻辑电平不是ttl,所以还要接上拉电阻。3.4 单片机复位电路单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。上电自动复位通过电容c1充电来实现和限流电阻r2。手动按键复位是通过按键将电阻r1与vcc接通来实现。r1作为上拉电阻,当复位键按下是产生一个触发脉冲,进行复位操作。rst引脚是复位信号输入端,复位信号为高电平有效,其有效时间应持续24个振荡周期以上才能完成复位操作,若使用6mhz晶振,则需持续4s以上才能完成复位操作。如图中在通电瞬间,由于rc的充电过程,在 rst端出现一定宽度的正脉冲,只要该正脉冲保持10ms以上,就能使单片机自动复位。图3.4 复位电路图3.5数码管显示系统电路3.51 数码管的介绍微机化测控系统中常用的测量数据的显示器有发光二极管显示器(简称led或数码管)和液晶显示器(简称lcd)。这两种显示器都具有线路简单、耗电少、成本低、寿命长等优点,本系统输出结果选用2个led显示。led数码管的外形结构如图2-4,外部有10个引脚,其中3, 8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字(0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。led有共阴极和共阳极两种。如图2-4所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5v的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段led不被损坏,需外加限流电阻。共阴极 共阳极图 3.5 led数码管结构原理图图3.6 led数码管引脚图数码管显示器有两种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需要解决多位led数码管的“段控”和“位控”问题,本电路的通过p1口实现:而每一位的公共端,即led数码管的“位控”,则由p3口控制。这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过pnp三极管的导通与截止来控制,即三极管处于“开头”状态。使用led显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为led显示器提供的编码正好是一个字节。tx实验板用共阴led显示器,根据电路连接图显示16进制数的编码已列在下表。表3.1 led字形显示代码表字型共阳极段共阴极段字型共阳极段共阴极段0c0h3fh990h6fh1f9h06ha88h77h2a4h5bhb83h7ch3b0h4fhcc6h39h499h66hda1h5eh592h6dhe86h79h682h7dhf84h71h7f8h07h空白ffh00h880h7fhp8ch73h 3.52 四位数码管的介绍数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。四位数码管阳=阴极连接在一起,阳极分开有各自的位选,动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。图3.7四位数码管原理图图3.8四位数码管接线图4 软件设计4.1编程环境的介绍keilsoftware公司推出的uvision3是一款可用于多种8051mcu的集成开发环境(ide),该ide同时也是pk51及其它开发套件的一个重要组件。除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uvision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。此外其内置的仿真器可模拟目标mcu,包括指令集、片上外围设备及外部信号等。uvision3提供逻辑分析器,可监控基于mcui/o引脚和外设状态变化下的程序变量。uvision3提供对多种最新的8051类微处理器的支持,包括analogdevices的aduc83x和aduc84x,以及infineon的xc866等4.11keil工程的建立首先启动keil软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击 uvision 的图标以启动该软件。uvison 启动后,程序窗口的左边有一个工程管理窗口,该窗口有3个标签,分别是files、regs、和books,这三个标签页分别显示当前项目的文件结构、cpu的寄存器及部份特殊功能寄存器的值(调试时才出现)和所选cpu的附加说明文件,如果是第一次启动 keil,那么这三个标签页全是空的。4.12源文件的建立使用菜单“file-new ”或者点击工具栏的新建文件按 钮,即可在项目窗口的右侧打开一个新的文本编缉窗口, 在该窗口中输入本实验c语言源程序。 保存该文件,注意必须加上扩展名,这里假定将文件保存为text1.c。4.13建立工程文件在项目开发中,并不是仅有一个源程序就行了,还要为这个项目选择 cpu(keil 支持数百种cpu,而这些cpu的特性并不完全相同),指定调试的方式,有一些项目还会有多个文件组成等,为管理和使用方便,keil使用工程(project)这一概念,将这些参数设置和所需的所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译和连接等操作,下面我们就一步一步地来建立工程。图4.1选择目标cpu点击“project-new project ”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字,不需要扩展名。点击“保存”按钮,出现第二个对话框,如图 2所示,这个对话框要求选择目标cpu(即你所用芯片的型号),keil 支持的cpu很多,我们选择atmel公司的89c51芯 片。点击atmel前面的“+”号,展开该层,点击其中的89c52,然后再点击“确定”按钮,回到主界面,此时,在 工程窗口的文件页中,出现了“target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“source group1”,这时的工程还是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“source group1”使 其反白显示,然后,点击鼠标右键,出现一个下 拉菜单,如图3所示。选中其中的“add file to group”source group1”,出现一个对话框,要求 寻找源文件,注意,该对话框下面的“文件类型”默认为c source file(*.c),也就是以c为扩展名的文件。双击text1.c文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其它文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如图4.2所示的对话框,提 示你所选文件已在列表中,此时应点击“确定”,返回前一对话框,然后点击“close”即可返回主界面,返回后,点击“source group 1”前的加号,会发现text1.c文件已在其中。双击文件名,即打开该源程序。图4.2加入文件图4.3重复加入文件的错误工程建立好以后,还要对工程进行进一步的设置,以满足要求。首先点击左边project窗口的 target1,然后使用菜单“project-option for targettarget1”即出现对工程设置的对话框,这个对话框可谓非常复杂,共有8个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了。图4.4对目标进行设置设置对话框中的target页面,如图4.4所示,xtal后面的数值是晶振频率值,默认值是所选目标cpu的最高可用频率值,对于我们所选的at89c52而言是12m,该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设,这里设置为12。设置对话框中的output页面,如图4.5所示,这里面也有多个选择项,其中creat hex file 用于生成可执行代码文件(可以用编程器写入单片机芯片的hex格式文件,文件的扩展名为.hex),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。选中debug information 将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。browse information是产生浏览信息,该信息可以用菜单view-browse 来查看,这里取默认值。按钮select folder for objects”是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。name of executable用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两 项一般不需要更改。工程设置对话框中的其它各页面与c51编译选项、a51的汇编选项、bl51连接器的连接选项等用法有关,这里均取默认值,不作任何修改。以下仅对一些有关页面中常用的选项作一个简单介绍。图4.5对输出进行控制listing标签页用于调整生成的列表文件选项。在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是“c compile listing”下的“assamble code”项,选中该项可以在列表文件中生成c语言源程序所对应的汇编代码。图4.6代码生成控制c51标签页用于对keil的c51编译器的编译过程进行控制,其中比较常用的是“code optimization”组,如图7所示,该组中level是优化等级,c51在对源程序进行编译时,可以对代码多至9级优化,默认使用第8级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别试一试。emphasis是选择编译优先方式,第一项是代码量优化(最终生成的代码量小);第二项是速度优先(最终生成的代码速度快);第三项是缺省。默认的是速度优先,可根据需要更改。设置完成后按确认返回主界面,工程文件建立、设置完毕。4.14编译、连接图4.7有关编译、连接、项目设置的工具条在设置好工程后,即可进行编译、连接。选择菜单project-build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择rebuild all target files将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而translate .项则仅对该文件进行编译,不进行连接。以上操作也可以通过工具栏按钮直接进行。图 8 是有关编译、设置的工具栏按钮,从左到右分别是:编译、编译连接、全部重建、停止编译和对工程进 行设置。编译过程中的信息将出现在输出窗口中的build页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如图4.8所示的结果,提示获得了名为text1.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于keil的仿真与调试,这时可以进入下一步调试的工作。图4.8正确编译、连接之后的结果4.2设计思想本设计采用了c语言编写,由于c语言编程灵活,可移植性强。在一定程度上简化了编程过程。模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。4.3主程序设计 本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的联系。系统(上电)复位后,进入主程序,主程序流程图如图8所示。当外部中断有请求则去执行外部中断服务程序。并在执行完后返回主程序。k=1temp+图4.9主程序流程图开始程序初始化temp=0k=2temp=tempk=0temp=0显示数据4.4外部中断程序设计中断的概念cpu在处理某一事件a时,发生了另一事件b请求cpu迅速去处理(中断发生);cpu暂时中断当前的工作,转去处理事件b(中断响应和中断服务);待cpu将事件b处理完毕后,再回到原来事件a被中断的地方继续处理事件a(中断返回),这一过程称为中断 。图4.10 中断程序子流程图否k=2是k+int0中断k=04.5 定时中断程序设计4.51定时/计数器的结构 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。tmod是定时/计数器的工作方式寄存器,确定工作方式和功能;tcon是控制寄存器,控制t0、t1的启动和停止及设置溢出标志。4.52定时/计数器的原理加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是t0或t1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使tcon中tf0或tf1置1,向cpu发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。 可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。否是中断返回定时器t0入口地址调用数码显示子程序temp加1置初值定时器溢出中断图4.11定时器t0子程序流程图4.6实验程序at89c52显示00.0099.99汇编语言程序。要实现四位数码管显示00.0099.99依次循环的秒表设计,必须得将at89c52芯片写入程序,只有将程序写进at89c52芯片,才能实现其秒表的原理功能。4.61主函数设计void main()init();/初始化子程序while(1)if(k=0)init();/初始化子程序wela=1;/初始设置显示00.00p2=0xff;wela=0;p0=0xc0; if(k=1)/第二次按键开始计数if(temp=9999)/当计数超过99.99秒时清零 temp=0; qian=temp/1000;/计算数码管第一位bai=temp%1000/100;/计算数码管第二位shi=temp%1000%100/10;/计算数码管第三位ge=temp%10;/计算数码管第四位display(qian,bai,shi,ge);/显示时间else/第二次按键时停止qian=temp/1000;bai=temp%1000/100;shi=temp%1000%100/10;ge=temp%10;display(qian,bai,shi,ge); if(k=3)/第三次按键时清零k=0; 4.62中断子程序设计void time0() interrupt 0/中断子程序k+;4.63延时子函数设计void delay(uint z)/延时子函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);4.64显示子程序设计void display(uint qian,uint bai,uint shi,uint ge)/显示子函数wela=1;/显示数码管第一位p2=0x01;wela=0;p0=tableqian;delay(1); wela=1;/显示数码管第二位p2=0x02;wela=0;p0=table1bai;delay(1);wela=1;/显示数码管第三位p2=0x04;wela=0;p0=tableshi;delay(1);wela=1;/显示数码管第四位p2=0x08;wela=0;p0=tablege;delay(1);4.65初始化子程序设计void init()/初始化子程序wela=0;temp=0;tmod=0x01; /设置定时器0为工作方式1th0=0xc8;tl0=0xf0;ea=1;/开总中断et0=1; /开定时器0中断tr0=1; /启动定时器0ex0=1;it0=1;4.7 仿真结果仿真环境proteus 是英国labcenter公司开发的电路分析与实物仿真软件。它运行于windows操作系统上,可以仿真、分析(spice)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和spice电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、rs232动态仿真、i2c调试器、spi调试器、键盘和lcd系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:arm7(lpc21xx)、 8051/52系列、avr系列、pic10/12/16/18系列、hc11系列以及多种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论