简易数字电压表-单片机课程设计-毕业论文

上传人:树美 文档编号:144608336 上传时间:2022-08-27 格式:DOC 页数:18 大小:660.50KB
返回 下载 相关 举报
简易数字电压表-单片机课程设计-毕业论文_第1页
第1页 / 共18页
简易数字电压表-单片机课程设计-毕业论文_第2页
第2页 / 共18页
简易数字电压表-单片机课程设计-毕业论文_第3页
第3页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机课程设计课题: 简易数字电压表系 别: 电气与电子工程系 专 业: 电气工程及其自动化 姓 名: 学 号: 指导老师: xx城建学院2013年01月10日成绩评定一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。课程设计成绩评定班级 姓名 学号 综合成绩: 指导教师签字 年 月 日一、 设计目的1. 运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到PCB制版,再到软件编程以及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解,并灵活运用,将各门知识综合应用。2. 能够上网查询器件资料,培养对新知识,新技术的独立的学习能力和应用能力。3. 能够独立完成一个小的系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,为今后的毕业设计及科研工作奠定良好的基础。二、 设计要求1、利用ADC0809设计一简易数字电压表,要求可以测量05V之间8路输 入电压值、电压值由四位LED数码管显示,并在数码管上轮流显示或单路选择显示;2、测量最小分辨率为0.019V,测量误差约为0.02V。三、总体设计AT89S51单片机复位电路 显示电路时钟电路 A/D转换电路3.1 工作原理 本题目本质上是以单片机为控制器,ADC0809为ADC器件的AD转换电路,设计要求的电压显示,是对ADC采集所得信号的进一步处理。 为得到可读的电压值,需根据ADC的原理,对采集所得的信号进行计算,并显示在LED上。本项目中ADC0809的参考电压为+5V,根据定义,采集所得的二进制信号所指代的电压值为: 而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以100),其计算的数值为:将小数点显示在第二位数码管上,即为实际的电压3.2 主程序框图 初始化中主要对AT89S51,ADC0809的管脚和数码管的位选进行初始化设置。准备工作做好后便启动ADC0809对IN0脚输入进的05V电压模拟信号进行数据采集并转换成相对应的0255十进制数字量。 主程序就是在A/D转换和显示子程序之间循环执行。主程序流程图如下所示: 开始 初始化 调用A/D转换子程序 调用显示子程序 图1-1 主程序流程图3.3 A/D转换子程序设计 A/D转换子程序的功能是采集数据,在启动ADC0809对模拟量输入信号进行转换时,通过判断EOC(P2.6引脚)来确定转换是否完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,将转换完成的数据读取即P2.7=1时指向下个通道,存储数据。其流程图如下: 开始 启动测试(TESTART)EOC=1?N指向下个通道存储数据 图1-2 A/D转换流程图3.3 显示子程序设计 设置初始值以后运用标度变换知识,编写算法将0255十进制数字量转换成0.005.00V的数据,公式如下: 开始 接着输出到显示子程序进行显示,其流程图如下所示:设置初始值 标准变换调用显示子程序 延时 图1-3 显示控制子程序流程图 四、 各部分电路设计 4.1 AT89S51最小系统设计 AT89S51芯片,如图所示,各引脚功能如下: VCC:供电电压。 GND:接地。 P0口:为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。P1口:是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接 收输出4TTL门电流。 图1-4 AT89S51设计 P2口:为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高。 P3口:管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。P3口也可作为AT89C51的一些特殊功能口,如所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 4.2 时钟电路 AT89S51的时钟电路如图所示,在单片机的XTAL1和XTAL2两个管脚接一个晶振及两个电容构成了时钟电路电路中电容C1和C2对振荡频率有微调作用,在设计时取30uF。晶振为11.0592MHz,故选择12MHz即可。 图1-5 时钟电路 图1-6 复位电路4.3 复位电路 AT89S51的复位电路如图所示。当单片机一上电,立即复位;另外,如果在运行中,外界干扰等因素使单片机的程序陷入死循环状态,就可以通过按键手动使其复位。复位也是使单片机退出低功耗工作方式而进入正常状态的一种操作。电容C3和电阻R10实现上电自动复位。增加按键开关S1和电阻R9又可实现按键手动复位功能。R9的作用是在S1按下的时候,防止电容C3放电电流过大烧坏开关S1的触点。4.4 A/D转换(ADC0809)电路设计 ADC0809芯片有28条引脚,各引脚功能如下: IN0IN7:8路模拟量输入端。 D0D8:8位数字量输出端。 ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START: AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC: AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、REF(-):基准电压。 Vcc:电源,单一5V。 GND:地。 ADC0809的工作过程如下:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线。 表3-1 ADC0809通道选择表C(ADDC)B(ADDB)A(ADDA)选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7 图1-7 ADC0809设计4.5 LED显示电路硬件设计 最常用的显示器有发光二极管显示器(LED)和液晶显示器(LCD)。我们设计时主要采用LED数码显示器及其接口电路。四位LED数码管由8个发光二极管组成,其中7个按“8”型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点,还有四个位选端。 共阴极LED电路连接如图1-8所示, 8支发光二极管的阴极共同接到地上,所以叫共阴极LED,在每个发光二极管的阳极接的电阻将起到保护作用。在输入管脚接高电平时,对应的发光二极管将会发光。适当编码后,8支发光二极管组合起来就可以显示数据了。 共阳极LED电路连接如图1-9所示,8支发光二极管的阳极共同接到电源上,所以叫共阳极LED,在每个发光二极管的阳极接的电阻将起到保护作用。在输入管脚接低电平时,对应的发光二极管将会发光。和共阴极LED一样,适当编码后,8支发光二极管组合起来就可以显示数据了。 3-8共阴极接法原理图 3-9共阳极接法原理图 静态显示时,数据是分开送到每一位LED上的;而动态显示时,是数据送到每一个LED上,再根据位选线来确定是哪一位LED显示。静态显示亮度很高,但口线占用较多;动态显示占用口线数目较少,适合用在显示位数较多的场合, 但显示位数的增多,将占用大量的CPU时间。 综上所述,根据共阴极,共阳极和静态显示,动态显示各自的优缺点,我采用的是共阴极,动态显示来完成该显示电路的硬件设计。 图1-10 显示电路设计图六、 仿真及调试 图1-11 零通道单路显示 调试环境 WAVE6000软件在以前的版本基础上做了增加了许多功能,特别是在窗口管理、项目管理和源文件编辑工具上做了较大改进,在WAVE6000环境下的所有窗口均可以放在窗口的同一块区域,各窗口可以直接切换,节省了窗口的面积,使窗口管理更有效。WAVE6000还增强了项目管理和源文件编辑方面的功能,使得项目、文件切换更方便,有效地后退、前进功能使得修改程序更方便。新增加的书签窗口和断点窗口可以有效地管理断点和书签,使得程序员无需在众多的代码和断点中逐行查询,断点信息和书签信息在各自的窗口中显示一目了然。1项目窗口是用户和源程序文件、目标文件和用户设置等的桥梁,通过项目窗口可以建立项目、设置项目、添加源程序到项目、编译项目等项目操作。信息串口显示项目操作和文件操作后的详细信息,例如打开项目、保存项目、项目编译过程以及出错信息等等。在一个项目调试之前,必须经过新建项目、设置项目、添加模块和包含文件、保存项目、编译项目,最后进入调试项目,其中的所有成功和错误信息都会在该窗口中显示,因此用户在调试项目前,需要观察此窗口是否有错误信息,待排除错误后方可正确调试项目。 2观察窗口用于显示项目中的所有变量和用户自定义变量,能显示常量、函数入口地址、数组变量、结构变量、共用体变量、指针变量等多种复杂的数据类型。用户可以添加用户变量、设置变量类型,使用结合影子存储器、时效分析等功能分析用户程序、数据。变量一旦被修改,将一很醒目的显示被修改过;支持直接修改变量的值,以方便程序的局部调试。 图5-1 观察窗口 3.断点窗口通过断点窗口可以管理项目内的断点。可以在断点窗口中直观地看到断点的行号,内容,可以通过断点迅速定位程序所在的位置。 4书签窗口通过书签窗口可以管理项目内的书签,在项目中迅速定位程序位置。 5跟踪窗口显示跟踪器捕捉到的程序执行的轨迹,其中可以看到帧号,时标,反汇编程序,对应的源程序和程序所在的文件名。调试步骤按照说明书,将仿真器通过串行电缆连接计算机上,将仿真头接到仿真器,检查接线否有误,确信没有接错后,接上电源,打开仿真器的电源开关。设置项目,在“仿真器”和“通信设置”栏的下方有“使用伟福软件模拟器”的选择项。将其前面框内的勾去掉。在通信设置中选择正确的串行口。按“好”确认。如果仿真器和仿真头设置正确,并且硬件连接没有错误,就会出现如图的“硬件仿真”的对话框,并显示仿真器、仿真头的型号 在调试时可以采用以下调试方法: 1选择执行 | 跟踪功能或按跟踪快捷图标或按 F7键进行单步跟踪调试程序 。单步跟踪就一条指令一条指令地执行程序,若有子程序调用,也会跟踪到子程序中去。你可以观察程序每步执行的结果,“=”所指的就是下次将要执行的程序指令。 由于条件编译或高级语言优化的原因,不是所有的源程序都能产生机器指令。源程序窗口最左边的“o”代表此行为有效程序,此行产生了可以指行的机器指令。 2要改变单步执行太慢的状况,可以用“执行到光标处”的功能,将光标移到程序想要暂停的地方。选择菜单执行 | 执行到光标处功能或 F4 键或弹出菜单的“执行到光标处”功能。程序全速执行到光标所在行。 如果想下次不想单步调试 “Delay”延时子程序里的内容, 可以按F8键单步执行就可以全速执行子程序调用,而不会一步一步地跟踪子程序。 3如果程序太长,那就设置断点。将光标移到源程序窗口的左边灰色区, 光标变成 “手指圈” ,单击左键设断点,也可以用弹出菜单的“设置/取消断点”功能或用Ctrl+F8组合键设置断点。如果断点有效图标为“红圆绿勾” ,无效断点的图标为“红圆黄叉” 。 断点设置好后,就可以用全速执行的功能,全速执行程序,当程序执行到断点时,会暂停下来,这时你可以观察程序中各变量的值,及各端口的状态,判断程序是否正确。 1. ADDR 0F 地址栏 最上面一行标有ADDR 0 1 F 是地址名称栏, “ADDR” 表示集中在一行中16个存储器(或寄存器)单元的第一个单元的地址, “0F”表示它的下面对应着16个存储单元(或寄存器) , “0”下面对应的2位16进制数,是第一个地址中的内容, “1”下面对应的是第二个地址单元中的内容, “F”下面是第16个存储单元的内容。 2. CODE 程序存贮器 它是为用户观察程序存贮器内部信息而设置的,共有64KB的地址空间,但是,在一般情况下只显示16个单元的信息。 “ADDR”栏下的是以16进制表示的4位地址,地址后的16个数是这个地址及其随后的16个存储单元的内容。如果希望同时看到更多的信息,可用或键选择下一行的16个地址。若用鼠标,可拖动右边的滚动条查看下面的16个单元,或单击右侧的激增框,将窗口放大到满屏幕,同时查看更多的内容。 3. XDATA 数据存储器 它是为用户观察外部数据存贮器的信息而设置的,共有64KB的地址空间。其操作方法与程序窗口”CODE”相同。在仿真87/89系列单片机且P0,P2口作I/O用时,请关闭XDATA窗口。 4. DATA 单片机内部数据存储器它包括单片机内部数据存储器共256字节, 其中通用寄存器32字节(即4组R0R7) , 地址为00H1FH;直接可寻址位16个字节,地址为20H2FH,专用寄存器(SFR)共128字节,地址为80HFFH。其操作方法与程序窗口“CODE”相同。在内部数据窗口中可以看到CPU 内部的数据值,红色的为上一步执行过程中,改变过的值,窗口状态栏中为选中数据的地址,可以在选中的数据上直接修改数据的十六进制值,也可以用弹出菜单的修改功能,修改选中的数据值。弹出菜单:修改:修改选中数据的值,可以输入十进制,十六进制,二进制的值,与直接修改不同的是,用这种方法可以输入多种格式数据,而直接修改只能输入十六进制数据。46(十进制),2EH(十六进制),00101110B(二进制)都是有效的数据格式,调试过程中遇到的问题及解决方法 在调试时经常遇见以问题: 1串口通信经常出错 串口通信出错有几种可能: (1)电路板有问题, 你可以将仿真头从用户板上取下,将晶振跳接至仿真头上。测试不连电路板时仿真器串口通信是否正常。 (2)串口电缆连接有问题。通信时仿真器上的指示灯应闪烁, 若不闪烁, 说明通信电缆连接有问题或串口号选择不对。 (3)串口号和波特率选择不对。一般 PC 机有两个串口:串口1及串口2在调试程序时应正确选择串口: /S1选择串口1, /S2选择串口2。另外波特率选择不对也会引起通信出错。一般情况下你可以不选择波特率,由软件自动选择一个合适的波特率, 但是对有些机器可能选择得不合适, 这时你可以用几个波特率试试,手工选择一个合适的波特率。如可以输入 /S2D 选择串口2降低通信速率。 2仿真调试时是如何“复位”的? 如果仿真系统要求“复位” ,实际上是仿真系统无法工作,出现这种现象的 原因有很多,如晶振跳线位置不正确,用户板上无电源,仿真头接触不良,仿真头的选择和仿真系统内的设置或选项不一致等。如果在使用中出现这种情况,可以先将仿真头从用户板上拔下来,把晶振跳线器放在“1”的位置上,再次进入仿真系统。如果正常,则问题在用户板上,否则问题在仿真器上。 3仿真时工作正常,程序固化后却不能运行? 出现这种情况有下列可能性: (1)电路板的程序片电路有问题:如 PSEN 不通或者接错。使用 AT89S51内部的程序,但 EA 未接高电平等。 (2)电路板晶体振荡电路有问题(3)用户系统内有需要复位的接口电路,还未完成复位时,如果 CPU 就给他们写控制字,可能会造成它们工作的不正常。在这种情况下,CPU 复位后应延时一段时间(如 100ms) ,以确保被完全复位,然后再写控制字。 4调试时为什么不能在源程序上进行?原因是如果源程序文件编译不正确或者链接出错,仿真时就会跳到CPU窗口,出现这种现象,应仔细检查编译和链接是否正确。另外,在PLM语言中,模块文件的头、尾,文件名应相同,比如说,某一模块文件名为ABC.PLM,则该文件的头应有 ABC:d0;结尾应该是END ABC; ,否则也会出现这种现象。 5. 在汇编时出现标号太多怎么办? 可以使用调试软件引入过程伪指令来解决这个问题。使用过程伪指令可使用多达1M 的标号, 且允许同名。七、 设计总结经过将近一周的单片机课程设计,我有了很多的体会和感想。通过本次对简易电压表的设计,我们对单片机这门课程有了更进一步的了解。无论是在其硬件连接方面还是在软件编程方面,都取得了新的收获。本次课程设计采用了AT89S51单片机芯片,通过本次实验及查阅相关资料,我们对其有了一定的认识,在本课题设计报告的硬件介绍部分也对其作了详细的论述。S51在C51的基础上增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。另外,在对单片机编程方面,我们又掌握了一些新的编程思想,使得程序更为简练、易懂,而且更为严谨,程序执行的稳定性得到了提高。 设计中我们还用到了模/数转换芯片ADC0809,以前在学单片机这门课程时只是对其理论知识有了初步的了解。通过本次实验,我们对它的工作原理彻底理解了,对其启动设置、转换结束判断以及输出控制等都基本掌握。电路连接方面,我们对其与单片机的连接也有了更为直观的认识,通过实验的摸索以及必要的理论知识,我们准确的实现了它于单片机的互连。设计过程中,我遇到过许多次失败的考验,比如,自己对单片机编程时遇到了很多阻碍,想要放弃,然而,就在要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。于是,我坚持了下来。我非常感激同组队员对我的的指导和帮助,没有他们的帮助,我还会做很多的无用功。 通过这次设计,这也对我们今后的工作敲响了警钟:要认真的看待每个需要处理的问题,不要认为事情过于简单,不能急于求成,但不要放弃。要保持头脑清醒。单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习。最后感谢老师对我的精心指导和帮助,感谢同学们对我的帮助。八、参考文献 1 魏立峰. 王宝兴.单片机原理及应用技术.北京: 北京大学出版社. 2006 . 2 张毅刚. MCS-51实用汇编子程序设计. 哈尔滨: 哈尔滨工业大学出版社.2003 . 3 张迎新. 单片机应用设计培训教程. 北京: 北京航空航天大学出版社. 4 张毅刚. MCS-51单片机应用与设计. 哈尔滨: 哈尔滨工业大学出版社,2003 . 5 马忠梅. 籍顺心. 张凯. 马岩. 单片机的C语言应用程序设计.北京:北京航空航天大学出版社2003 . 附录:程序清单LED_0EQU 30HLED_1 EQU 31HLED_2 EQU 32H TEMP EQU 43HADCEQU35HCLOCKBITP2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.7 ORG 0000H SJMPSTART ORG0050H LJMPINT_T0START:MOVLED_0,#00H MOVLED_1,#00H MOVLED_2,#00HMOVDPTR,#TABLEMOVTMOD,#02HMOVTH0,#245MOVTL0,#00HMOVIE,#82HSETBTR0MOV R3,#07H CLR P3.0CLR P3.1CLR P3.2WAIT: CLR ST SETB ST CLR ST CLR P3.7 CLR P3.6 JNB EOC,$ SETB OE MOV ADC,P1 CLR OE MOV A,ADC MOV TEMP,AJUD2: MOV A,TEMP MOV B,#51 DIV AB MOV LED_2,A MOV A,B MOV B,#10 MOV TEMP,A SUBB A,#25 JC JUD3 MUL AB SUBB A,#5 MOV B,#51 DIV AB ADD A,#05H SJMP V1JUD3: MOV A,TEMP MUL AB MOV B,#51 DIV AB V1: MOV LED_1,A MOV A,B MOV TEMP,A SUBB A,#25 JC V1_2 MUL AB SUBB A,#5 MOV B,#51 DIV AB ADD A,#05H SJMP V2 V1_2: MOV A,TEMP MUL AB MOV B,#51 DIV AB V2: MOV LED_0,A WERT: LCALL DISP LJMP WAITINT_T0:CPLCLOCK RETI DISP:MOVA,LED_0 MOVCA,A+DPTR CLRP2.3 MOVP0,A LCALLDELAY SETB P2.3 MOVA,LED_1 MOVCA,A+DPTR CLRP2.2 MOVP0,A LCALLDELAY SETBP2.2 MOVA,LED_2 MOVCA,A+DPTR CLRP2.1 ADD A,#0X80 MOVP0,A LCALLDELAY SETBP2.1 RET DELAY:MOVR6,#1 D1:MOVR7,#100 DJNZR7,$ DJNZR6,D1 RETTABLE: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!