数字电压表课程设计(含程序、仿真图) .doc_第1页
数字电压表课程设计(含程序、仿真图) .doc_第2页
数字电压表课程设计(含程序、仿真图) .doc_第3页
数字电压表课程设计(含程序、仿真图) .doc_第4页
数字电压表课程设计(含程序、仿真图) .doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计报告单片机课程设计报告 题目:简易数字电压表题目:简易数字电压表 姓 名: 学 号: 专业班级: 指导老师: 所在学院: 2008 年 6 月 10 日 河南理工大学本科课程设计报告 1 摘要摘要 本设计是简易数字电压表,随着电子科学技术的发展,电子测量成为广大 电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压 的测量甚为突出,因为电压的测量最为普遍。本设计在参阅了大量前人设计的 数字电压表的基础上介绍一种基于 89s52 单片机的一种电压测量电路,该电路采 用 icl7135 高精度、双积分 a/d 转换电路,测量范围直流 0-5 伏,使用 lcd 液晶模块显示,可以与 pc 机进行串行通信。正文着重给出了软硬件系统的各部 分电路,介绍了双积分电路的原理,89s52 的特点,icl7135 的功能和应用,lc d1601 的功能和应用。该电路设计新颖、功能强大、可扩展性强。本文首先简 要介绍了设计电压表的主要方式以及单片机系统的优势;然后详细介绍了直流 数字电压表的设计流程,以及硬件系统和软件系统的设计,并给出了硬件电路 的设计细节,包括各部分电路的走向、芯片的选择以及方案的可行性分析等。 通过这一个星期的努力,另外通过同学的帮助,我做成了这个简易数字电压表 ,将程序键入可以显示 0-5 的不同电压值。通过此次课程设计使我对我们所 学的知识有了更深的认识和体会,对自我动手的能力也提高了很多。本论文重 点介绍单片机的数字电压表的工作原理。 河南理工大学本科课程设计报告 2 目录 1 1 概述概述3 1.1 课程设计的目的和意义 3 1.2 课程设计的任务 3 2 2 系统总体方案及硬件设计系统总体方案及硬件设计 4 2.1 课程设计系统环境 4 2.2 设计原 理 4 2.3 设计方框图 4 2.4 硬件电路的设计 5 2.5 电压显示电路 7 3 3 软件设计软件设计 8 3.1 主程序设计 8 3.2 通讯模块设计设计 9 4 4 proteusproteus 软件仿真软件仿真 11 4.1 系统初始状态 11 4.2 系统随机状态 11 5 课程设计体会课程设计体会 14 参考文献参考文献 14 附附 1 1:源程序代码:源程序代码 16 附附 2 2:系统原理图:系统原理图 20 河南理工大学本科课程设计报告 3 1 1 概述概述 1.1 课程设计的目的和意义: 本次课程设计,让我学习和巩固了使用单片机的定时中断、基本的常用的 寄存器的使用方法,还有就是学习常用的外围硬件使用、电路原理图设计、pcb 设计等等。使我对已学过的基础知识有了更深入的理解,独立思考、独立工作 以及应用所学基本理化分析和解决实际问题的能力有了很大的提高。 1.2 课程设计的任务: 数字电压表(digital voltmeter)简称 dvm,它是采用数字化测量技术, 把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示 的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求, 采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便, 还可与 pc 进行实时通信。目前,由各种单片 a/d 转换器构成的数字电压表, 已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量 领域,示出强大的生命力。与此同时,由 dvm 扩展而成的各种通用及专用数字 仪器仪表,也把电量及非电量测量技术提高到崭新水平。本论文重点介绍单片 机的数字电压表的工作原理。 河南理工大学本科课程设计报告 4 2 2 系统原理及基本框图系统原理及基本框图 2.1 课程设计系统环境 (1)proteus 仿真软件 (2)keil c51 软件调试环境或 wave 调试程序 2.2 设计原理 单片机 at89c52 和 adc0832 设计一个数字电压表,能够测量 05v 之间的 直流电压值,两位数码显示。重点负责单片机 at89c52 硬件部分的功能及应用。 at89s52 是一个低功耗,高性能 cmos 8 位单片机,片内含 8k bytes isp(in- system programmable)的可反复擦写 1000 次的 flash 只读程序存储器,器件采 用 atmel 公司的高密度、非易失性存储技术制造,兼容标准 mcs -51 指令系统 及 80c51 引脚结构,芯片内集成了通用 8 位中央处理器和 isp flash 存储单元, 功能强大的微型计算机的 at89s52 可为许多嵌入式控制应用系统提供高性价比 的解决方案。 at89s52 具有如下特点:40 个引脚,8k bytes flash 片内程序存储器,256 bytes 的随机存取数据存储器(ram) ,32 个外部双向输入/输出(i/o)口,5 个中断优先级 2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行 通信口,看门狗(wdt)电路,片内时钟振荡器。 此外,at89s52 设计和配置了振荡频率可为 0hz 并可通过软件设置省电模 式。空闲模式下,cpu 暂停工作,而 ram 定时计数器,串行口,外中断系统可 继续工作,掉电模式冻结振荡器而保存 ram 的数据,停止芯片其它功能直至外 中断激活或硬件复位。同时该芯片还具有 pdip、tqfp 和 plcc 等三种封装形式, 以适应不同产品的需求。 2.3 设计方框图 河南理工大学本科课程设计报告 5 2.4 硬件电路的设计 单片机采用 mcs-51 系列单片机。由 atmel 公司生产的 at89s52 是一种低功 耗、高性能 cmos8 位微控制器,具有 8k 在系统可编程 flash 存储器。使用 atmel 公司高密度非易失性存储器技术制造,与工业 80c51 产品指令和引脚完 全兼容。在单芯片上,拥有灵巧的 8 位 cpu 和在线系统可编程 flash,使得 at89s52 为众多嵌入式控制应用系统提供高灵活、有效的解决方案。at89s52 具 有以下标准功能: 8k 字节 flash,256 字节 ram,32 位 i/o 口线,看门狗定 时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构, 全双工串行口,片内晶振及时钟电路。空闲模式下,cpu 停止工作,允许 ram、 定时器/计数器、串口、中断继续工作。掉电保护方式下,ram 内容被保存,振 荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 at89s52单片机 单片机选用的是atmel公司新推出的at89s52,如图 3.2.1.1所示。该芯片 具有低功耗、高性能的特点,是采用cmos工艺的8位单片机,与at89c51完全兼 容。at89s52还有以下主要特点: 采用了atmel公司的高密度、非易失性存储器(nv-sram)技术; 其片内具有256字节ram,8kb的可在线编程(isp)flash存储器; 单片机 a/d 转 换器 ad574a 电压 显示 器 模 拟 电 压 输 入 量程 控制 电路 系统总框图 河南理工大学本科课程设计报告 6 有2种低功耗节电工作方式:空闲模式和掉电模式 at89s52 有 40 个引脚,32 个外部双向输入/输出(i/o)端口,同时内含 2 个外中断口,2 个 16 位可编程定时计数器,2 个全双工串行通信口,片上 flash 允许程序存储器在系统可编程,亦适于常规编程器。其将通用的微处理器和 flash 存储器结合在一起,特别是可反复擦写的 flash 存储器可有效地降低开 发。 单片机管脚说明 vcc:供电电压。 gnd:接地。 p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门流。当p1口 的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它 可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当 fiash进行校验时,p0输出原码,此时p0外部必须被拉高。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收 输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外 部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校 验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输 出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输 入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部 上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取 时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对 外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2 口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门 电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入, 由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电 平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址 河南理工大学本科课程设计报告 7 的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以 不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对 外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如 果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信 号将不出现。 /ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h- ffffh) ,不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为 reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引 脚也用于施加12v编程电源(vpp) 。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 25 电压显示电路 设计中采用的是 8 段 led 数码管来显示电压值。led 具有耗电低、亮度高、 视角大、线路简单、耐震及寿命长等优点,它由 8 个发光二极管组成,其中 7 个按8字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示 小数点。把 8 个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反, 公共端接低电平的叫共阴极接法,我们采用共阳极接法。当发光二极管导通时, 相应的一段笔画或点就发亮,从而形成不同的发光字符。其 8 段分别命名为 dp g f e d c b a。例如,要显示“0” ,则 dp g f e d c b a 分别为:1100 0000b;要显示“a” ,则 dp g f e d c b a 分别为:0001 0001b(共阳极) 。若 要显示多个数字,只要让若干个数码管的位码循环为低电平就可以了。 根据设计要求,显示电路需要至少 4 位 led 数码管来显示电压值,我们再多加 一位用来显示电压单位“v” ,则有 7 位 led 循环显示。利用单片机的 i/o 口驱 动 led 数码管的亮灭,设计中由 p0 口驱动 led 的段码显示,即显示字符,由 p2 口选择 led 位码,即选择点亮哪位 led 来显示。 河南理工大学本科课程设计报告 8 3 3 系统的软件设计系统的软件设计 3.1 主程序设计 icl7135a/d 与单片机连接电路的软件设 计系统的程序流程图如图所示。主程序一开始 运行则设置堆栈起始地址为 70h,设置中断寄 存器,用来对 icl7135 的中断进行计数,每 5 次后清零,完成一次数据采集工 作,然后设置 icl7135的 stb 端的中断的优先级。紧接着 lcdm1601b 进行一次 清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符。以前 面对 1601b 的介绍,只要将 01h 送到数据总线,使 rs=0,r/w=0,e 有个下降沿 的脉冲就可以完成清屏工作。用以下指令实现 mov p2,#01h ;送到数据 db7-db0,调用子程序 enable,由于下降沿时,内部数据要送到 ram 区,所 以要有一个延时子程序,使这个下降沿持续 2.5 毫秒。内部 ram 有指令代码后 就开始对 ram 进行清零,所以屏幕原有的字符将被清除。接着对 1601 进行功能 的设定。mov p2,#01111000b,按表 3.4.5 来看是设定 显示器按 2 行显示,每行 8 位,57 点阵。 调用一次子程序 enable 程序,写入 cpu 的指令寄存器中。每次向 lcdm 中写入 一个指令,就调用一次 enable,然后再对显示器进行闪烁、光标等功能进行设 定。显示器的 ram 地址按加方法进行读写。再设定第一行字符,也就是 voltage的显示地址 80h。字符voltage的 table 表地址送到 dptr 中, 然后调用远程查表命令,依次把数据送到 p2 口,这时再调用子程序 write3, 使 lcd1601 的 rs=1,r/w=0 使使能端 e 产生一个下降沿脉冲,将数据送入到数 图 4.1.1 主程序流程图 河南理工大学本科课程设计报告 9 据寄存器中,接下来执行子程序 display1,它的主要功能是将 table 表中的字 符输出到 lcd 中去。调定好显示字符数即远程查表的次数,就开始查表了。 例如第一个字符“v”的 ascii 码是 56h,就将这个码送到 p2 口,再调用 使能数据子程序,使 rs=1(数据区使能)写 入显示数据区,r/w=0 表示写,e=来个下降 沿延时 2.5 毫秒,使数据写入 ram 内。完成 table 表输出以后,向指令 ram 中写入第 2 行的起始地址为 och,再调用显示采样数据 的子程序。采样数据存放的数据地址安排如下图所示,首先将 60h 中的数显示在 正负号的位置上,按照 ascii 码表,正号不显示(#20h) ,负号显示“” (#2dh) 。 3.2 通讯模块设计设计 89s52 单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器 (sbuf) ,这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。 但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的 地址为 99h。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可 以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器, 就可方便地构成标准的 rs-232 接口。89s52 的串行口有 4 种工作方式,1 种同 步方式,3 种异步方式。本方式选方式 1,一帧数据有 10 位,包括起始位 0、8 位数据位和 1 位停止位 1。串行口电路在发送时能自动加入起始位和停止位。 在接收时,停止位进入 scon 中的 rb8 位。方式 1 的波特率是可变的,由定时器 1 的溢出率决定。由定时器 1 最好工作在方式 2 上(自动重装载模式) ,这样只 需对 th1 设置一次即可。数据通过 txd 输出,在 8 个位输出完毕后,scon 寄存 器的 ti 位被设为 1,cpu 只要判断 ti 是 1,接着发送下一个字节。 波特率的设定:定时器 t1 工作在方式 2 的初值为: 为了减小误差,时钟振荡频率采用 11.0592mhz,选用定时器 t1 工作在方式 2 作波特率发生器,波特率为 300,设 smod 为 0,依公式(1.1)得初值为: 图 4.1.2 数据地址 (1.1) 河南理工大学本科课程设计报告 10 所以 th1 = tl1 = a0h mov scon ,#50h ;urat 工作在方式 1 上 mov tmod ,#20h ;time1 工作在方式 2 上 mov th1 , #0a0h ;设置波特率为 300 本设计的中断十分重要,为了减少相互间的干扰,保证可靠性,采用查询 方式判断是否发送完毕。 a6: jbc ti , a5 ;如果发送完毕跳,清标志位,跳到 a5。 ajmp a6 ;否则跳到 a6,等待 a5: inc r0 河南理工大学本科课程设计报告 11 4 4 proteusproteus 软件仿真软件仿真 用伟福软件编辑程序,在仿真设置中选择 lab2000p 仿真实验仿真器,选择 8088/86 实验仿真头,选择 8088/86cpu 进行汇编程序编辑,然后进行 proteus 进行仿真,其仿真图如下: 4.1 系统初始状态如图: 河南理工大学本科课程设计报告 12 4.2 系统的随机状态: 电压为 0.50v 时显示如图: 电压为 1.50v 时显示如图: 河南理工大学本科课程设计报告 13 电压为 4.00v 时显示如图: 河南理工大学本科课程设计报告 14 5 5 课程设计体会课程设计体会 通过一周的课程能够设计,使我深刻的认识到单片机的应用已经在工业、 电子等方方面面展示出了它的优越性,利用单片机在设计电路逐渐成了趋势, 它与外围的简单电路再加上优化程序就可以构建任意的产品,使得本设计成为 现实。随着单片机的日益发展,它必将在未来显示出更大的活力,为电子设计 增加更多精彩。 同时我也学到了很多书本上学习不到的东西,不仅使我加深了对单片机理 论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们 的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很 好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自 己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。同时, 更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程, 也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了 挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。 河南理工大学本科课程设计报告 15 这个设计过程中,我遇到过许多次失败的考验,就比如,自己对实际生活 中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在 想要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是 这一整个过程。于是,我坚持了下来。 最后,终于按要求把作品做出来了,虽然看似很简单,但是对我们的实际 动手能力却是很考验的,这也对我们今后的工作敲响了警钟:要认真的看待每 个需要处理的问题,不要认为事情过于简单,不能急于求成,更不要轻易说放 弃,要保持你的头脑清醒。 这次单片机课程设计给我的最大的印象就是努力的动手去做,困难在你的 勇气和毅力下是抬不了头的。从做这个设计开始无论遇到什么困难,我都没有 一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未 知的求知。 希望以后有更多的机会多多参与这样的设计和实习,锻炼我们的动手能力, 为今后的工作和学习奠定基础。 河南理工大学本科课程设计报告 16 参考文献参考文献 1 余发山.单片机原理及应用.徐州:中国矿业大学出版社,2003 2 谭浩强.c 语言设计(第二版).北京:清华大学出版社,2006 3 吴金戌,沈庆阳,郭庭吉.8051 单片机实践与应用m.北京:清华大 学出版社,2002. 4 刘伟,赵俊逸,黄勇, 一种基予 c8051f 单片机的 soc 型数据采录器的设 计与实现 a.天津市计算机学会单片机分会编. 2003 年全国单片机及嵌 如入式系统学术年会论文集(下册) c .北京:北京航空航天大学出版社, 2003 .790-794 5 何立民.单片机应用技术大全.北京:北京航空航天大学出版社, 1994 附 1 源程序代码 org 0000h ajmp main org 000bh ;定时器 t0 的入口 ajmp disp ;显示程序 org 0030h main: mov sp,#5fh ;设置堆栈 mov p1,#0ffh mov p0,#0ffh mov p2,#0ffh ;初始化,所显示器,led 灭 mov tmod,#00000001b ;定时器 t0 工作于模式 1(16 位定时/计数模式) mov th0,#high(65536-2000) mov tl0,#low(65536-2000) setb tr0 ;开定时器 0 setb ea ;开总中断 setb et0 ;开定时器 0 中断 河南理工大学本科课程设计报告 17 mov counter,#0 ;计数器初始化 loop: lcall adc_demo ;调用 ad 子程序 ajmp loop ;/= ;/ 启动 ad 转换 ;/= adc_start: clr ad_cs nop clr ad_wr nop setb ad_wr nop setb ad_cs nop ret ;/= ;/ 读 ad 转换 ;/= adc_read: mov ad_input_port,#0ffh clr ad_cs nop clr ad_rd nop nop mov a,ad_input_port nop setb ad_rd nop setb ad_cs ret ;/= ;/ ad 转换读取延时程序,显示读到的数值 ;/= adc_demo: 河南理工大学本科课程设计报告 18 lcall adc_start lcall delay1ms lcall adc_read mov b,#100 ;ad 转换出的值除 100 商为百位数 div ab ; 取百位数 余数在 b 寄存器 mov dispbuf,a ;把百位存入百位寄存器 dispbuf m

温馨提示

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

评论

0/150

提交评论