版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机及智能仪器实 验 指 导 书杨明亮 梁应选 编适应专业:测控技术与仪器陕西理工学院机械工程学院2012年4月前 言单片机及智能仪器是一门实践性很强的课程。为了使学生更好的理解和掌握这些知识,灵活应用单片机,使学生熟悉单片机实用技术的开发过程,提高汇编语言的编写能力,提高对汇编语言的编辑、汇编、调试运行等技能,设置了软件类、硬件类和综合应用类实验,通过上机及接口实验,熟练地掌握单片机的编程结构、工作模式、指令系统;学会汇编语言程序设计;掌握微机输入/输出接口的基本概念,主要模式和基本工作方法,掌握并行和串行接口的原理,学会并行输入/输出口的扩展,并能够进行基本的接口设计,提高其实践能力;并
2、培养学生实事求是、严谨的科学作风和良好的实验习惯,为今后课程学习以及开发应用打下基础。开设“单片机综合实验”的目的,是总结几年来单片机教学中,用购买的实验箱,虽然功能很齐全,但基本上是黑箱结构,对初学者,不是从最简单的最小系统开始,一步步深入,做完实验后,效果很差,大部分学生对单片机的系统没有感性认识,最后在课程设计和毕业设计中,连最简单的单片机最小系统都不清楚。因此该实验就是想让学生从最简单的系统开始,自己搭建,编程,调试和固化程序,循序渐进,逐步深入。本实验指导书是针对测仪专业单片机与智能仪器课程实验设置的,两个2学时的验证实验和一个6学时的综合实验。 实验一:led显示实验实验学时:2实
3、验类型:验证 实验要求:必做一、实验目的:1、了解mcs51系列单片机汇编语言的设计和调试方法;2、掌握8032单片机通过8155扩展i/o接口时,led显示的连接方法和编程方法。3、了解led动态显示原理及汇编语言编程。二、实验内容:1、观察单片机实验系统(实验箱)结构与原理;2、看懂附录1中的程序,将程序输入并调试;编译、调试、运行该程序,显示结果应为“123456”;3、修改该程序,让led交替显示“123456”和“654321”,注意交替变化中间要有明显的保持时间;也可以显示任意两个六位数字或字符(用七断数码管可以显示的字符,如“h”、“l”等)。三、实验原理:本次实验采用启东计算机
4、总厂生产的“dice系列单片机实验系统”,该系统运行的基本原理与一般的单片机系统是一样的,但作为实验系统,它的程序存储器里面存储的是监控管理程序,实验所编写的程序,在计算机中进行调试,编译,生成可执行文件,然后将实验程序存入实验系统中的扩展数据存储区。所以实验程序在断电后就从实验箱中消失了。在dice系列单片机实验系统中,用8155芯片扩展i/o口,显示用led数码管,系统分配给显示部分的端口:8155a口,连led显示的字位口,地址为ff21h; 8155b口,连led显示的字形口,地址为ff22h。四、实验组织运行:采用集中授课形式,分组进行实验。五、实验条件:1、单片机实验系统一套;2、
5、计算机一台;3、win51仿真软件一套六、实验步骤:1、打开实验箱,查看单片机以及其它芯片的铭牌,记录相关芯片的型号;2、参照教材和实验指导书,找出上述芯片的型号,记录各芯片的作用和引脚功能;3、打开计算机,进入win51仿真软件(执行dice51.exe文件),打开其工作界面;4、检查计算机与单片机是否连接就绪。即查看win51工作界面底边状态栏由“脱机就绪”变成“联机就绪”,说明联机成功。否则对话框提示“单片机未连上”,要检查硬件实际连接情况,在设置菜单下设定com1或com2。5、将自己编写的程序或提供的参考程序输入,然后进行调试,编译,改正错误。一直调到没有错误为止,然后让程序单步运行
6、、连续运行,查看程序运行结果。七、思考题:1、led显示分为动态显示与静态显示,本次实验采用动态还是静态显示,显示的原理是什么?八、实验报告:实验报告内容应包括实验目的、原理和内容以及结果,特别是修改程序的结果,做详细记录。应对实验过程,程序调试中出现的问题及解决方法进行记录,对实验中出现的问题应进行分析。必须对程序全部进行注释。八、附录附录1.1:led显示源程序说明:在led上实现字符显示的方法,是将待显示的字形码,送入8155的字形口(b口)地址ff22h,显示位置送入8155的字位口(a口)地址ff21h。附录2给出了本实验中的字形、字位表。一个字长为8位的二进制,要在两个led上显示
7、,因此程序中有如何将一个字拆分成两个字。输入程序时可以不输注释语句。org 0500hse15: mov sp,#53hled: mov r0,#79h ;将字形存在ram的79h-7ehmov r6,#65h ;输入待显示的字符mov r5,#43hmov r4,#21hmov a,r6 ;调用拆分程序将3个字节拆成6个字节lcall ptdsmov a,r5lcall ptdsmov a,r4lcall ptdslcall sseesjmp led ;循环显示;字节拆分程序ptds: mov r1,a acall ptds1 mov a,r1 swap aptds1: anl a,#0fh
8、mov r0,ainc r0ret;字节显示程序ssee: setb rs1 ;换工作寄存器第三组 mov r5,#05h ;每个字显示5次sse2: mov 30h,#20h ;字位码初值mov 31h,#7eh ;字形码初地址mov r7,#06h ;显示位数sse1: mov r1,#21h ;输入字位码mov a,30hmovx r1,amov r0,31h ;查表、输入字形码mov a,r0mov dptr,#ddffmovc a,a+dptrmov r1,#22h movx r1,a ;字形送入地址22hmov a,30h ;改变字位rr amov 30h,adec 31h ;转换
9、为下一个字形mov a,#0ffh movx r1,a ;关显示djnz r7,sse1 ;6位显示完了吗?djnz r5,sse2 ;5次显示完了吗?clr rs1ret;以下为字形表,见表2。ddff: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hdb 88h,83h,0c6h,0a1h,86h,8eh,0ffh,0ch,89h,0dehend附录1.2:字形、字位表字位表g5g4g3g2g1g0未用未用201008040201字形表代码d7d6d5d4d3d2d1d0字形hhgfedcbac0110000000f9111110011a41
10、01001002b0101100003991001100149210010010582100000106f811111000780100000008901001000098810001000a8310000011bc611000110ca110100001d8610000110e8e10001110fff111111110c00001100p.8910001001h7f01111111.bf10111111-注:低电位亮。实验二 单片机资源应用实验学时:课内 6学时,课外6学时。实验类型:综合实验要求:必做一、实验目的 1、掌握单片机最小系统的设计。 2、了解51系列单片机并行口输出/输入方式
11、的工作原理及编程方法。3、掌握51系列单片机中断的设置方法及编程实现。4、掌握定时器/计数器的设置方法及编程。5、掌握设计简单的单片机系统并在面包板上搭建单片机系统,或在单片机实验板上组建单片机系统。6、用七段数码管进行数据显示。二、实验内容 实验内容按要求分a、b、c、三部分,其中a是必做内容,b是选做内容,c是提高内容。内容a:按实验指导书给出的单片机最小系统和4位七段led数码管动态显示电路,在面包板上搭接,然后用汇编语言编写显示程序,在数码管的任何一位显示要求的数字。该部分主要是熟悉并掌握单片机的最小系统,振荡电路、复位电路,端口的应用,动态显示的电路及编程,程序的调试及固化,掌握用k
12、eil软件调试汇编程序。由于显示是人机交流的窗口,是以后其它功能实验的基础。必须在内容a中很好的掌握。实验电路见附图,还给出数码管引脚图,元器件清单等。电路说明:该电路是一个在单片机最小系统上接了4个数码管,由于at89c51片内有4k的flash memory存储器,故在软件不是很大的情况下,一般不需要扩展片外程序存储器,故单片引脚ea接高电平;复位采用上电复位和人工按钮复位;显示采用七段共阳极数码管,位码采用三极管9014驱动,因为led数码管的电压在1.5-3v,电流在2-20ma,故要加限流电阻。注意该电路图中的总线画法。 内容b:在以下两个内容中选做1个 1、用定时器定时,(定时器t
13、0或t1任选),每过20ms计数1次,并将计数值在led上显示。提示:该部分的主要内容是定时器和中断的性能和编程,要知道晶振的频率,然后根据要求的时间,确定定时器的工作方式,计算定时器的初值,设定定时器与中断,在ram中设定两个单元,永远计数,每中断一次该计数单元的值加1,程序启动后,一直处于动态显示中,直到中断时才处理加1程序。要注意中断程序的地址,定时器不同该地址也不同,具体请查中断服务程序服务入口地址。由于几个中断程序入口地址仅相隔8个单元,如果中断程序较长,一般要转移到后面的单元中。2、由定时器t0计时,对t1口在一定时间内输入的脉冲进行计数并显示。脉冲的产生可以用点动开关,也可以用信
14、号发生器或单片机实验箱中的分频信号,也可以给出分频器,自己设计电路,对单片机ea口输出信号进行分频。该实验较上一个实验难度大,用了两个定时器/计数器。涉及到计数器的设计,由t0定时中断,然后读t1的计数值。内容c:该部分内容属提高内容,供学有余力且感兴趣的学生选做,其他学生不作要求。因此该部分的主导思想是只提要求,提供元件,由学生自己设计电路,编写软件。教师仅作指导。这样可以更好的锻炼学生的能力。1、 串行eprom存储器及按键的电路设计及编程。在智能仪器中,不可避免的要有按键进行功能转换和控制,经常将标定的系数和测量的数据存储起来,希望下一次开机、甚至断电的情况下该数据能长期保留,用at24
15、c02等串行eprom芯片就可以实现该该功能。这个实验的要求,就是用按键进行控制,将一批数据存储在at24c02芯片中,然后又用另一个功能键将该数据取出并进行显示。下面只给出该芯片的资料,自己设计电路,编写软件。2、 rs232串行通信实验。因为串行通信是智能仪器中经常应用的功能,本实验提供max232芯片和电容,由两组同学一起,用串行口实行远距离(5-10m)通信。也可以和计算机进行通信。3、 模拟信号的数据采集实验,该实验提供adc0809芯片,由学生自己完成电路设计,搭建。并进行编程,将一个0-5v的电压信号通过a/d转换后在显示器中显示。 三、实验组织运行要求:采用学生自主训练为主的开
16、放模式组织教学。每4个人一组,共同完成电路设计,搭建,软件编写,调试。四、实验条件:1、实验面包板一块(或单片机实验板);2、at89c51(或相近型号)单片机 1个;3、稳压电源1台;4、电源插座 1只;5、计算机1台;6、其它芯片见下表:(注意:实验未用的元件报告中不能出现)序号名 称型 号1单片机at89c522rs-232收发器max232c3三极管90144模数转换器adc08095晶振24mhz6译码器74ls1387采样保持器lf398n8led数码管sm4205(共阳极)9电阻需要的规格10电容需要的规格11面包板12轻触开关kfc_a06_05说明:其他元件,电路设计后和指导
17、教师商量解决。五、实验步骤:1、实验前先进行实验内容的预习,在课外设计好实验接线图,编写实验要求的汇编程序,并在计算机上进行编译和调试,将调试好的程序转换成*.hex格式存入移动u盘。2、实验时按电路图接好线后,将*.hex程序写入单片机中,进行程序调试。3、观察实验过程,详细记录实验中出现的问题,并分析其原因以及程序的修改过程。六、思考题:1、如何设置定时器和中断?2、显示器的地址如何确定,如何将一个数据进行动态显示。怎样查询要显示的数字。 七、实验报告:1、实验的目的、要求;2、实验电路图的设计,所用元件性能的简单介绍;3、实验程序的编写与调试,并对程序加以详细注释;4、调试过程与调试结果
18、,并对调试中出现的问题进行分析;5、回答本实验相关问题。6、实验的体会与总结。附2.1:单片机最小系统实验原理图附2.2 设计编程注意事项一、 硬件设计1、单片机选用本次实验,单片机采用的是at89c系列或at89s系列,该系列单片机片内都含有闪速程序存储器,可以根据所编写程序代码大小选择有不同片内程序存储器的单片机,一般情况下,课程设计中的程序代码都不是太大,2k或4k的程序存储器都可以满足。数据存储器一般都较小,不进行大量的数据处理,或数组变量中成员不是太多的情况下,片内ram是够用的。2、端口资源分配接口是cpu与外界的连接部件,以实现cpu与外部设备的最佳耦合和匹配。包括键盘、显示、a
19、/d转换、d/a转换和打印机等。根据实验要求,选用外设,并选用合适的外围接口芯片。i/o端口是cpu与i/o设备直接通信的地址。单片机系统对i/o端口是采用端口地址与存储器地址统一编址的方式,即存储器映射方式。而编址技术又分线选法和译码法。在设计单片机系统时,对地址必须有一个清楚的认识,一但硬件确定,则相应的扩展地址也就确定了。3、数据采集单元设计要针对不同的要求,不同的情况设计数据采集电路。设计时要考虑测量范围,显示精度,信号的情况,信号变化缓慢的还是变化很快,信号的质量,确定是否需要放大、滤波、采样保持电路;对于数字信号,也要考虑信号的大小和质量,考虑是否用比较电路、驱动电路和光电隔离等。
20、4、显示单元设计显示是仪器和人交流信息的重要窗口,也是仪器的一个重要组成部分。根据题目要求,确定显示的形式(静态显示还是动态显示;led显示好事lcd显示等),显示的位数,所以必须对要显示的信息做到心中有数,设计的显示单元要满足所有要显示信息的显示要求。由于led显示的控制较为简单,本次实验室提供led指示灯和8段led数码管。5、 按键控制单元设计一个测控系统,总是有许多功能,有些功能可以根据系统的运行状态自己变化,如智能仪表中的量程自动选择;但相当多的功能需要人工控制,如交通灯控制中的各段时间的设定等,所以对于测控系统来讲,一般都要有人工控制信号的输入端口按键或键盘。设计按件或键盘,要对设
21、计对象的功能相当熟悉,才能正确确定按键的数量。如果要输入的数字较大且是随机的,要考虑设计键盘。如果不是很大,或者数字很大但变化范围不大的情况下,尽量使用按键。6、其它功能设计其他功能设计,需要根据题目要求,如串行通信,d/a转换等,因为本次实验时间所限,布置任务时,将一些功能不做要求或作为选择内容,学生可以根据实际情况取舍,进度较快的课题组,还可以自己增加相应内容。7、 硬件设计以后,要求搭建电路,在软件未编写完以前,编写测试软件,先对硬件的各部分进行测试。二、软件设计 本次软件设计必须采用汇编语言,考试考核内容是汇编语言。(在以后学习了单片机c语言以后,可以采用单片机c语言,由于单片机c语言
22、在系统开发中有明显的优越性,掌握单片机c语言对以后可能从事该工作的同学有很大的益处。鼓励同学用单片机c语言编程。)1、对编写软件的要求: 软件结构清晰、简捷、流程合理。各功能程序实现模块化、子程序化。这样,既便于调试、链接,又方便移植、修改。程序存储区、数据存储区分配合理。运行状态实现标志化管理。各个功能程序运行状态、运行结果以及运行要求都设置状态标志(一般用位寻址区的位)以便查询,程序的转移、运行、控制都可以通过状态标志条件来控制。软件抗干扰性能好。2、设计前的准备工作1)定义系统功能,画出流程图系统定义是在软件设计前,把软件承担的任务明确出来。然后对软件进行功能分块。画出流程图,特别注意有
23、中断时,中断流程图和主流程图一定是分开的。这一部分是相当重要的工作,对后面程序编写与调试是否顺利有很多影响,一定要认真对待。软件设计有两种方法:一种是自上而下,逐步细化;另一种是自下而上,先设计出每一个具体的模块(子程序),然后再慢慢扩大,最后组成一个系统。两种方法各有优缺点。自上而下的方法在前期看不到什么具体效果,对于初学者来说,心中总是不踏实。而自下而上的方法一开始就有结果,每设计并测试好一个模块,就能看到实际的效果,给人一步一个足印的感觉,能树立信心。建议两种方法结合运用。主程序采用自上而下的方法,将它分成若干个功能相对独立的较小的程序模块。然后再采用自下而上的方法,设计一个模块,调试一
24、个模块,加入主程序调试;再进行下一个模块设计和调试。所以在这一步骤就是设计主程序的框架。根据问题的定义,确定算法,并绘制程序框图。注意必须确保程序框图的正确性。比如在电脑时钟中,考虑输入“分”的数据的合理性,数据必须小于60,程序框图中就不能忽视等于60如何处理。这是初学者常犯的错误。2)合理选用数据类型数据类型选用,在用单片机c语言编程时特别重要。各种数据类型的定义。是定点数还是浮点数;是有符号数还是无符号数;是十六进制数还是bcd码。如果一个参数的变化范围有限,就可以用定点数来表示,以简化程序设计和加快运行速度。当参数的变化范围太宽时,只好采用浮点数来表示。若要求数据的正负之分,则考虑定义
25、有符号数。对于自然数列,为显示方便,可以采用bcd码,如电脑时钟的时、分、秒。3)合理定义和分配存储空间、定义标志位。资源分配的主要工作是ram资源的分配。片外可扩展ram的容量要比片内ram大,在数据量较大的情况下,要扩展片外ram,通常用来存放批量大的数据,如采集的大量数据的存储。用汇编语言编程,片内ram的分配,是一个相当麻烦,要有一定技巧的工作,那个变量放在那个存储单元,该变量需要长期保存还是保存到某一个阶段,在用单片机汇编语言编程时,不能象编普通的计算机程序那样,否则容易造成ram不够用或者将有用的数据覆盖。注意用单片机c语言编程不存在这个问题。系统上电复位时,自动定义0区为工作寄存
26、器,1区为堆栈,并向2区、3区延伸。如果系统前台程序要用1区、2区作为工作寄存器,就应将堆栈空间重新规划,常将堆栈安放在片内ram的高端,如60h7fh。在工作寄存器的8个单元中,r0和r1具有指针功能,是编程的重要角色,应充分发挥其作用,尽量避免用来做其他事情。20h2fh这16个字节具有位寻址功能,用来存放各种软件标志、逻辑变量、位输入信息、位输出信息副本、状态变量、逻辑运算的中间结果等。当这些项目全部安排好后,保留一两个字节备用,剩下的单元才可改作其他用途。30h7fh为一般通用寄存器,只能存入整字节信息。通常用来存放各种参数、指针、中间结果,或用作数据缓冲区。ram资源规划好后,应列出
27、一张ram资源的详细分配清单,作为编程依据。为了增加可读性,便于修改,一般对分配的存储单元取名。如保存当前时间的时、分、秒取hour、mini、sec,编程时用变量名,编译时只需在前面加hour equ 24h即可(20h为分配给小时的存储单元的地址)。3、编程时注意事项:一定要严格根据框图编程。一定要写注释。通过编译后,只表明语法没错,并不表明逻辑正确,一定要用不同的数据对模块进行测试。完全符合预定结果,方可确认通过。将该模块加到主控模块进行测试,如果与预定结果不符,必须查找原因,进行修改、调试。必须注意随时保存调试通过的副本。以便当新程序出现故障时,随时可返回前面的正确点重新开始。4、软件
28、的调试调试程序一般应经过以下几个步骤:1) 先进行人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的多数错误。而这一步骤往往容易被人忽视。有人总希望把一切推给计算机系统去做,但这样就会多占用机器时间,作为一个程序人员应当养成严谨的科学作风,每一步都要严格把关,不把问题留给后面的程序。2) 在人工检查无误后,才可以上机调试。通过上机发现错误称动态检查。在编译时给出语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。应当注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到
29、错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多,各种错误互有关联,因止要善于分析,找出真正的错误,而不要只从字面意义上找出错信息。如果系统提示的出错信息多,应当从上到下一一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息;有的是少了“”或多了“”有的是书写语句时忘记写“;”或是全角的“;”了,只要加上一个变量定义,或填加“;”就所有错误都消除了。3) 在改正语法错误后,程序经过连接就得到可执行的目标程序。目标程序可以用keil软件进行仿真。对仿真结果要作认真分
30、析。看它是否符合要求。有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以得出容易判断正确与否的结果。可以在计算的输出结果的程序地方加入一段输出到串口的程序,利用串口窗口可以方便看到结果的。4) 运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法:keilc51里的调试运行就很好用的,可以在命令的窗口输入程序中需要的数据和开关量、中断、i/o口的电平等来方便完成程序的运行,使用时要先打开options for targettarget1(工程菜单里的目标target1属性)-点debug-选中左边use simulatorload application at stago till main;按确定后退出到编辑画面,要先对源程序进行编译后没有错误才可以按主
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论