




已阅读5页,还剩105页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,附录A一个单片机的应用项目自动打铃机的设计,A.1项目任务A.2硬件设计A.3软件设计A.4项目实验A.5项目仿真,END,2,A.1项目任务,A.1.0设计要求A.1.1基本要求A.1.2强化要求,3,A.1.0设计要求,项目的任务是利用单片机作为核心控制电路,设计一个自动打铃机。基本要求如下:(1)要求所设计的单片机自动打铃机具有准确的计时功能,能够像电子钟一样按时、分、秒格式显示实时时间。(2)能根据用户要求的时间点自动按时打铃,该项目以大学的自动打铃控制为例,除要求自动打铃外,还要求能自动播放音乐和早操、课间操节目。具体控制时间如作息时间表所示(见表A.1)。(3)设置两个时间调校(校时和校分)按键,分别用来调校时和分,以保证自动打铃机的时间与标准时间相符。,4,表A.1大学作息时间表,5,A.1.1基本要求,如果读者只是把这个项目作为单片机课程的综合实训的话,只要求能在单片机开发装置(或单片机实验箱)上按设计要求成功完成实验则可。对于没有单片机开发设备的读者,只要求能利用仿真软件(Proteus)成功完成仿真即可。,6,A.1.2强化要求,如果读者有兴趣把这个项目做成一个实际样机的话,则要求读者在能成功完成实训或仿真调试的基础上,再增加电源电路、实际的驱动电路、机壳等,设计出印刷电路板PCB,并完成PBC的制作和元器件安装,用带有FPROM且与MCS-51系列兼容的单片机(如AT89C52)代替实验用的单片机,并用编程器将源程序写入单片机的FPROM中,与其他元件一起安装到电路板上,配上机壳,构成独立的自动打铃机,达到可以投入实际应用的目的。,7,A.2硬件设计,A.2.1总体设计A.2.2实时时钟电路设计A.2.3显示电路设计A.2.4控制电路设计,8,A.2.1总体设计,首先需要利用单片机设计一个实时时钟,然后根据控制时间(即作息时间)建立一个数据区作为控制字码表,存放在ROM中。在此基础上,设计控制程序,在时钟每计时1秒钟时查看一遍数据区,检查数据区中所设置的时间是否与需要控制打铃或广播的时间点相同,若相同,则通过单片机的I/O端口输出控制信号。,9,A.2.2实时时钟电路设计,选择通过MCS-51内部定时器T0产生中断来实现计时。设定定时器T0工作在定时工作方式1,每100ms(0.1s)产生一次中断,每产生一次T0中断,就利用软件将基准0.1s时间计数单元进行累加计数一次。当定时器T0产生10次中断时,就获得了1s信号,这时秒计数单元加1,同理,由软件对分计数单元和时计数单元进行时间计数,从而得到秒、分、时的时间值,并通过LED数码管显示电路显示出来。,10,定时器初值的确定,选择单片机的晶振频率为fosc=6MHz,则时钟周期为1/6s,机器周期为2s。所以定时器T0工作在方式1下产生0.1s的定时,所需的定时器初值为3CB0H,为了确保T0能准确定时0.1s,在T0中断服务程序中重装定时器初值时,修正为3CBDH,在运行中可根据误差情况进一步调整。,11,A.2.3显示电路设计,为了按时、分、秒的格式显示实时时间,需要使用6只LED数码显示管(本项目采用共阴极LED数码管)。为了减少硬件开销,提高系统可靠性和降低成本,选择LED数码管的显示方式为动态扫描显示。由于驱动LED数码管需要一个字形口和一个字位口,为此,采用并行I/O接口芯片8155对单片机进行I/O口扩展。,12,选择8155的B口作为字形口,将B口经74LS07和所有LED的a、b、c、d、e、f、g、h引线相连;8155的A口作为字位口,其中的6个引脚经74LS07分别和6个LED的控制端G相连。单片机工作时通过8155的B口输出字形码,再通过A口输出字位码以控制被选中的一个LED点亮。当与时、分、秒对应的字形码轮流输出时,相应的字位码从左到右轮流选中LED,打铃机的实时时间就可以逐次在LED上动态显示。,13,A.2.4控制电路设计,1时间调校电路2输出控制电路3自动打铃机硬件接线图4自动打铃机硬件接线图说明5图A.1中8155的端口地址分析,14,1时间调校电路,选择采用外部中断请求来进行时间调校。将“校时”按键和“校分”按键分别接到单片机的(P3.3)和(P3.2)引脚,每当用户按下一次时间调校按键,便会产生一次外部中断请求,单片机响应中断后,在中断服务程序中对相应的计时单元进行加1。若加至超过计时基制,通过程序控制计时单元清0,这样只用加1控制就可以进行校时。,15,2输出控制电路,选取单片机的P1.0引脚用于连接电铃驱动电路,P1.4引脚用于连接广播设备驱动电路。在项目实验调试阶段,电铃和广播设备用发光二极管代替,将发光二极管的负端与输出引脚连接,使用低电平驱动。连接P1.0的发光二极管(绿色)亮表示打铃,灭则表示不打铃。连接P1.4的发光二极管(红色)亮表示打开广播设备,灭则表示停止广播。,16,3自动打铃机硬件接线图,图A.1自动打铃机硬件接线图,17,4自动打铃机硬件接线图说明,在图A.1中,所用的单片机型号为8031,因为采用单片机开发实验装置进行试验时,所加载的源程序是存放在实验装置的RAM存储器中的,无需用到单片机的片内ROM,所以在项目设计实验阶段只要使用无ROM型的8031单片机即可。实验成功后,需要做成实用的打铃机时,若仍采用8031,则需要给8031扩展片外ROM,现在由于具有片内ROM(EPROM、E2PROM或FPEROM)的单片机价格不高,因此,实际应用时,通常直接选用与MCS-51兼容的具有片内FPROM的单片机(如AT89C51、AT89C52等)。,18,5图A.1中8155的端口地址分析,当IO/=1时,单片机选择8155作为I/O口,8155的端口地址为:,8000H命令/状态口8001HA口(字位口)8002HB口(字形口)8003HC口(未使用)8004H定时器/计数器低字节(未使用)8005H定时器/计数器高字节(未使用)8008HFFFDH8155重叠I/O地址,19,5图A.1中8155的端口地址分析,当IO/=0时,单片机选择8155中的RAM存储器工作,RAM的地址为:,0000H00FFH8155基本RAM地址0100H7FFFH8155重叠RAM地址,在该应用项目中,只用到8155其中的命令/状态口、A口和B口。未使用8155中的RAM存储器。,20,A.3软件设计,A.3.1程序的总体设计A.3.2程序流程图设计A.3.3源程序设计,21,A.3.1程序的总体设计,程序的总体设计主要是根据通过硬件设计所确定的硬件电路以及编程需要,进行单片机的资源分配、引脚定义以及设计出控制字、控制码等。包括如下内容:,1设计时间控制字2ROM资源分配3RAM资源分配,22,1设计时间控制字,为了能在控制程序中识别出应在何时进行何种控制,时间控制字可采用如图A.2所示的格式。,图A.2时间控制字的格式,每个控制字的字长为4个字节,以每两个控制字为一组,每组需要占用8个ROM存储单元。控制字中的时、分、秒为需要做出控制(启动或关闭装置)的时间点,控制码则用于指示该做何种控制。,23,由于在硬件设计时,选取单片机的P1.0用作电铃的开启和关闭,P1.4用作广播的开启和关闭,电铃和广播用发光二极管代替,而且使用低电平驱动,所以只要从P1.0引脚输出低电平0,就可以开启电铃;输出高电平1,就可以关闭电铃。于是启动电铃和关闭电铃的控制码可以分别设计为FEH(11111110B)和FFH(11111111B)。同理,启动广播设备和关闭广播设备的控制码可以分别设计为EFH(11101111B)和FFH(11111111B),如表A.2所示。,控制码的设计,24,表A.2控制码的定义及其功能,25,根据作息时间表(见表A.1)的具体控制时间,按图A.2的格式和表A.2的定义,编出所有的控制字,并依照控制时间的先后为顺序依次存入ROM的数据区中,构成由控制字组成的控制字码表,控制码为00H时,表示数据区的结束。,时间控制字的设计,例如:“6:20起床,启动电铃持续响铃15秒”的时间控制字为:FE062000FF062015,26,2ROM资源分配,由于单片机初始或复位时,程序计数器PC的内容为0000H,所以ROM的0000H应作为主程序的入口地址。又由于项目中需用到外部中断0、外部中断1和T0中断,因此,需要将ROM的0003H、0013H和000BH留作相应的中断入口。为此,主程序安排跳转到ROM的0050H以后的单元。数据区的入口地址,可以在整个程序编写完成,并进行汇编后,再视已经占用多少ROM单元而定。对于本应用项目,估计不含数据区的程序空间小于1000H,因此,将数据区的起始地址设定为1010H。如若不然,再根据实际情况加以调整。,27,2ROM资源分配,对于本应用项目,估计不含数据区的程序空间小于1000H,因此,将数据区的起始地址设定为1010H。如若不然,再根据实际情况加以调整。按照表A.1及表A.2编写出的数据表以及数据区在ROM中所分配的地址如表A.3所示。,28,表A.3时间控制字数据区,29,表A.3时间控制字数据区(续),30,3RAM资源分配,程序中所用到的单片机片内RAM数据存储单元分配如下。,26H:0.1s计数单元27H:秒计数单元28H:分计数单元29H:时计数单元2AH:计时单元指针初值2BH:存放秒计数基制2CH:存放分计数基制2DH:存放时计数基制2EH:数据区地址暂存单元3AH:控制码存储单元3BH、3CH:数据暂存单元4AH4FH:显示缓冲区5AH:堆栈栈底,31,A.3.2程序流程图设计,1主程序流程图2中断服务程序流程图3显示子程序流程图4T0中断服务程序流程图5控制子程序流程图,32,1主程序流程图,图A.3主程序流程图,33,主程序中主要完成的初始化工作,(1)8155初始化:主要是向8155写入命令字,将8155的A口、B口的工作方式设置为基本I/O口,并将它们均设置为输出,因此,需要写入8155的命令字为03H。(2)设置堆栈指针:单片机堆栈指针的初始值为07H,如果不作改变,堆栈将占用第1组工作寄存器的区域,为了方便编程时使用该组工作寄存器,并且避免与位寻址区和已经分配了的RAM单元冲突,决定将堆栈指针初始值设为5AH。,34,(3)设置定时器工作方式:在实时时钟设计时,已选定定时器T0为工作方式1,所以应写入定时器工作方式寄存器TMOD的控制字为01H。(4)设置定时器初值及启动定时器:根据前面的分析,定时器初值为3CB0H。在主程序中只要将3CH送入TH0,B0H送入TL0则可。送完定时初值后,只要令定时器控制寄存器TCON中的TR0位为1,便可以启动T0工作。,主程序中主要完成的初始化工作,35,(5)设置中断允许方式:在本项目中用到T0中断和、这两个外部中断,为了开放它们,应向中断允许控制寄存器写入的控制字为87H。、用于通过“校时”按键和“校分”按键进行时间调校,因此,中断方式应选择为电平触发方式。由于位于中断标志寄存器TCON中的中断触发方式控制位的缺省值为0,即已选择为电平触发方式,所以无需改变TCON的内容。,主程序中主要完成的初始化工作,36,、,图A.4、中断服务程序流程图,2中断服务程序流程图,37,设计中断服务程序的注意事项:,(1)由于、的中断入口地址分别为0003H和0013H,它们之间的空间无法放下相应的中断服务程序,所以编程时需要在上述地址安排长转移指令跳转到各自的中断服务程序实际存放地址。,38,(2)进入中断服务程序后,首先需要关中断,目的是保证用户每按一次时间调校按键,相应计时单元的计时值只递增一次而不是多次。这是因为、这两个外部中断的中断方式选择为电平触发方式,在此方式下,CPU响应中断后,如果外部中断源不能及时撤除它在或上的低电平,就会使相应中断标志位IE0或IE1保持为1,从而导致CPU错误地重复响应中断,因此,进入中断服务程序时,需要先暂时关闭中断。,设计中断服务程序的注意事项:,39,(3)消除按键抖动的目的是为了准确识别用户的按键动作,确认用户按下并释放按键后,才算是一次按键动作,如果用户按住按键不放,就一直等待。由于“校时”和“校分”按键是与单片机的P3.3和P3.2引脚连接的,所以编程时,可使用如下指令实现等待按键释放:JNBP3.3,$或JNBP3.2,$,设计中断服务程序的注意事项:,40,(4)程序在完成对相应计时单元进行加1或加至超过计时基制对相应的计时单元清0的工作后,及时调用显示子程序的目的是使用户能即时看到校时的结果。(5)程序在中断返回前开中断是为了把进入中断服务程序时,关中断了的或中断重新打开,为响应用户下一次的时间调校做准备。,设计中断服务程序的注意事项:,41,3显示子程序流程图,图A.5显示子程序流程图,42,设计显示子程序需要考虑的问题,(1)需要显示的实时时间数值,存放在29H(时计数单元)、28H(分计数单元)和27H(秒计数单元)3个计时单元中,每个计时单元为两个BCD数。为了便于显示时读取这些数据,显示子程序首先需要将3个计时单元中的BCD数逐一分开,并按时、分、秒的顺序分别存入4AH4FH共6个单元中的显示缓冲区中。,43,(2)本项目使用共阴极LED数码管,为了将待显示的时间值转换为相应的字形码,需要事先在ROM中建立好一个共阴LED字形码表。从显示缓冲区读出的待显示数据通过查表指令转换成字形码。,设计显示子程序需要考虑的问题,44,(3)采用动态显示方式。显示一遍时、分、秒的过程是:按4AH4FH的顺序逐一读出显示缓冲区中的数据,转换成字形码后,逐个从8155的字形口(B口)送至LED的字形码输入脚,每送出一个字形码便从8155的字位口(A口)送出相应的字位码,于是被字位码选中的LED就会显示出相应的字形。字位码设计成从左到右轮流选中LED数码管,这样便可以将时、分、秒从左到右显示在6个LED数码管上。每个的显示控制过程相同,因此,在程序中采用循环结构来编程。,设计显示子程序需要考虑的问题,45,(4)由于各个LED数码管是逐位轮流点亮的,如果轮流点亮的过程太快,人眼无法看清。所以每点亮一个LED数码管,都需要适当延时一小段时间才行,程序中选择的延时时间为1ms。,设计显示子程序需要考虑的问题,46,(5)考虑到6个LED的字形码输入脚是一一对应并接在一起的,所以当第1个LED显示完后,在送第二个字形码但尚未送出第二个字位码时,会导致该字形码在第1个LED上显示。为了避免发生这种现象,保证显示的准确性,在每个LED显示之前都进行“关显示”操作。,设计显示子程序需要考虑的问题,47,4T0中断服务程序流程图,图A.6T0中断服务程序流程图,48,设计T0中断服务程序注意事项,(1)进入T0中断服务程序时必须首先进行现场保护,对主程序中的累加器和有关的工作寄存器的内容加以保护,在中断返回时,再予以恢复。(2)由于T0中断服务程序是因为T0产生计数溢出才执行的,因此,为了保证T0能不断产生0.1S基准时间信号,每次进入T0中断服务程序时,都要重装T0的定时初值,而且这时重装的应是修正过的初值,如前所述,在本项目中,此值为3CBDH。(3)每当计时1s,就要调用一次控制子程序,以实现每隔1s就通过控制子程序查看一遍由时间控制字组成的数据区,使打铃控制误差不会超过1s。,49,5控制子程序流程图,图A.7控制子程序流程图,控制子程序的主要功能是每调用一次,就查看一遍存放时间控制字的数据区,检查每个控制字所设置的时间是否与现行时间相同,若相同,则通过P1口输出控制信号。,50,A.3.3源程序设计,起始程序主程序中断服务程序中断服务程序显示子程序T0中断服务程序控制子程序字形码表控制字码码表,51,起始程序,;起始程序:;编号指令注释1ORG0000H2LJMPMAIN;转主程序3ORG0003H4LJMPBREAK0;转中断5ORG000BH6LJMPCLOCK;转定时器T0中断7ORG0013H8LJMPBREAK1;转中断,注:其中的编号是为了便于书中引用说明而加,编译源程序时应把它们去掉。,52,主程序,;主程序:9ORG0050H10MAIN:MOVA,#03H;8155初始化命令字11MOVDPTR,#8000H;8155命令口地址12MOVXDPTR,A;向8155写入命令字13MOVSP,#5AH;栈底移至5AH14MOV2BH,#60H;秒计数基制15MOV2CH,#60H;分计数基制16MOV2DH,#24H;时计数基制17MOVTMOD,#01H;定时器工作方式118MOVTH0,#3CH;置T0初值19MOVTL0,#0B0H20MOVIE,#87H;允许中断21SETBTR0;启动定时器T022LOOP:LCALLDISP;调用显示子程序23LJMPLOOP;循环,53,中断服务程序,;中断服务程序:24BREAK0:CLREX0;关闭中断25JNBP3.2,$;消除按键抖动,等待按键释放26INC28H;分单元加127MOVA,28H;十进制调整28ADDA,#00H29DAA30MOV28H,A31SUBBA,#60H;不等于计数基制转NEXT132JCNEXT133MOV28H,#00H;相等,分单元清034NEXT1:LCALLDISP;调用显示子程序35SETBEX0;开放中断36RETI;中断返回,54,中断服务程序,;中断服务程序:37BREAKl:CLREXl;关闭中断38JNBP3.3,$;消除按键抖动,等待按键释放39INC29H;时单元加140MOVA,29H;十进制调整41ADDA,#00H42DAA43MOV29H,A44SUBBA,#24H;不等于计数基制转NEXT245JCNEXT246MOV29H,#00H;相等,时单元清047NEXT2:LCALLDISP;调用显示子程序48SETBEXl;开放中断49RETI;中断返回,55,显示子程序,;显示子程序:50DISP:MOVR0,#4FH;准备向缓冲区放数51MOVA,27H;取秒值52ACALLPUTT;放秒值53MOVA,28H;取分值54ACALLPUTT;放分值55MOVA,29H;取小时值56ACALLPUTT;放小时值57MOVR0,#4AH;指向显示缓冲区首地址58MOVR2,#0DFH;从左边第一位开始显示59DISP1:MOVDPTR,#8002H;字形口地址60MOVA,#00H;熄灭码61MOVXDPTR,A;关显示,56,显示子程序,60MOVA,#00H;熄灭码61MOVXDPTR,A;关显示62MOVA,R0;取显示缓冲区中的数63MOVDPTR,#SEGTAB;指向字形码表首64MOVCA,A+DPTR;查表,找字形码65MOVDPTR,#8002H;字形口地址66MOVXDPTR,A;送出字形码67MOVA,R2;取字位码68MOVDPTR,#8001H;字位口地址69MOVXDPTR,A;显示一位数字70MOVR3,#00H;计数延时初值71DISP2:DJNZR3,DISP2;延时一段时间(1ms),57,显示子程序,71DISP2:DJNZR3,DISP2;延时一段时间(1ms)72INCR0;修改显示缓冲区指针73RRA;为显示下一位做准备74MOVR2,A;存字位码75JBACC.7,DISPl;不到最后一位,则继续76RET;显示完6位,返回77PUTT:MOVRl,A;暂存78ACALLPUTTl;低4位先放入缓冲区79MOVA,R1;取出原数80SWAPA;高4位放入低4位中81PUTT1:ANLA,#0FH;屏蔽高4位82MOVR0,A;放进显示缓冲区83DECR0;缓冲区地址指针减184RET,58,T0中断服务程序,;T0中断服务程序:85CLOCK:PUSHPSW;保护现场86PUSHACC87SETBRS0;选择工作寄存器组188MOVTH0,#3CH;重装定时器T0初值89MOVTL0,#0BDH90INC26H;0.1s单元加191MOVA,26H;取0.1s单元内容92CJNEA,#0AH,DONE1;不等于10,转DONE193MOV26H,#00H;等于10,则清094MOVR0,#27H;指向秒计数单元95MOVR1,#2BH;指向秒计数基制单元96MOVR3,#03H;循环3次(秒、分、时)97CLOCK1:MOVA,R0;取计时单元的值,59,T0中断服务程序,97CLOCK1:MOVA,R0;取计时单元的值98ADDA,#01H;计时单元加199DAA;十进制调整100MOVR0,A;送回计时单元101MOV3BH,Rl;取计时基制102CJNEA,3BH,NEXT3;不等于计时基制,转出103MOVR0,#00H;相等,则计时单元清0104INCR0;计时单元指针加1105INCR1;时间基制单元指针加1106DJNZR3,CLOCK1;秒、分、时共3次循环107NEXT3:ACALLCTRL;调用控制子程序108DONE1:POPACC;恢复现场109POPPSW110RETI;中断返回,60,控制子程序,;控制子程序111CTRL:MOVDPTR,#100CH;指向控制字码表首址前4单元112MOV2EH,DPL;暂存指针低8位地址113CTRL1:MOVDPL,2EH;取出指针低8位地址114MOVR3,#04H;控制字码表指针加1次数115CTRL2:INCDPTR;控制字码表指针加1116DJNZR3,CTRL2;指针指向下一个控制字117MOV2EH,DPL;暂存指针低8位118MOVR3,#03H;核对时、分、秒共3次119CLRA120MOVCA,A+DPTR;取控制码121JZDONE2;若A0,则数据区结束122MOV3AH,A;保护控制码123MOVR1,#2AH;设置计时单元指针124CTRL3:INCDPTR;修改控制字码表指针,61,控制子程序,124CTRL3:INCDPTR;修改控制字码表指针125DECR1;修改计时单元指针126CLRA;准备查表127MOVCA,A+DPTR;读取控制字时间值128MOV3CH,A;暂存129MOVA,R1;读取计时单元时间值130CJNEA,3CH,CTRL1;比较时间值是否相等131DJNZR3,CTRL3;3次循环132MOVA,3AH;3次比较相等,恢复控制码133MOVP1,A;由Pl口输出,执行控制134DONE2:RET;子程序返回,62,字形码表,;字形码表:SEGTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH136DB07H,7FH,6FH,63,控制字码码表,;控制字码表:137ORG1010H138DB0FEH,06H,20H,00H,0FFH,06H,20H,15H139DB0EFH,06H,25H,00H,0FFH,06H,40H,00H140DB0FEH,07H,20H,00H,0FFH,07H,20H,10H141DB0FEH,07H,40H,00H,0FFH,07H,40H,15H142DB0FEH,07H,50H,00H,0FFH,07H,50H,10H143DB0FEH,08H,35H,00H,0FFH,08H,35H,10H144DB0FEH,08H,45H,00H,0FFH,08H,45H,10H145DB0FEH,09H,30H,00H,0FFH,09H,30H,10H146DB0EFH,09H,35H,00H,0FFH,09H,40H,00H,64,控制字码码表,146DB0EFH,09H,35H,00H,0FFH,09H,40H,00H147DB0FEH,09H,45H,00H,0FFH,09H,45H,15H148DB0FEH,09H,50H,00H,0FFH,09H,50H,10H149DB0FEH,10H,35H,00H,0FFH,10H,35H,10H150DB0FEH,10H,45H,00H,0FFH,10H,45H,10H151DB0FEH,11H,30H,00H,0FFH,11H,30H,10H152DB0FEH,14H,15H,00H,0FFH,14H,15H,15H153DB0EFH,14H,16H,00H,0FFH,14H,20H,00H154DB0FEH,14H,25H,00H,0FFH,14H,25H,15H155DB0FEH,14H,30H,00H,0FFH,14H,30H,10H156DB0FEH,15H,15H,00H,0FFH,15H,15H,10H,65,控制字码码表,156DB0FEH,15H,15H,00H,0FFH,15H,15H,10H157DB0FEH,15H,25H,00H,0FFH,15H,25H,10H158DB0FEH,16H,10H,00H,0FFH,16H,10H,10H159DB0FEH,16H,20H,00H,0FFH,16H,20H,10H160DB0FEH,17H,05H,00H,0FFH,17H,05H,10H161DB0EFH,17H,15H,00H,0FFH,17H,15H,10H162DB0FEH,18H,00H,00H,0FFH,18H,00H,10H163DB0FEH,19H,20H,00H,0FFH,19H,20H,15H164DB0FEH,19H,30H,00H,0FFH,19H,30H,10H165DB0FEH,21H,30H,00H,0FFH,21H,30H,10H166DB0FEH,23H,00H,00H,0FFH,23H,00H,15H167DB00H168END,66,A.4项目实验,A.4.1实验器材A.4.2实验步骤,67,A.4.1实验器材,进行项目实验所需要的实验器材包括:单片机开发装置一台,配套计算机1台,连接导线若干。若进行按强化要求实现项目的实验,则需另外增加强化要求所用到的全部元器件以及制板、焊接、固化程序等的设备和工具。,68,A.4.2实验步骤,项目实验的步骤因采用不同的单片机开发装置而有所不同,但归纳起来,这个阶段所要完成的工作主要包括硬件调试和软件调试两个方面,具体的实验步骤如下。1在单片机开发装置上搭建已设计好的应用项目实验电路(见图A.1)。2将实验系统与PC微机相连,开启实验系统和PC机,运行实验系统提供的软件,进入系统实验平台。,69,实验步骤,3选择“编辑”功能,进入文本编辑界面,输入已设计好的应用项目源程序,编辑好后,以“*ASM”为扩展名存盘(文件名“*”由用户自己命名)。4退出文本编辑界面,进入调试界面。5选择“汇编”功能,按提示输入已存盘的文件名,实验平台的汇编程序自动对源程序进行汇编,生成浮动目标文件、错误信息文件以及列表文件。,70,实验步骤,6汇编完成后,选择“链接”功能,汇编程序自动对汇编生成的浮动目标文件进行链接,生成相应的*HEX文件及链接信息报告文件。7选择“装载”功能,按提示输入已生成于磁盘中的*HEX文件名,PC机将由应用项目源程序生成的可执行文件从磁盘装入实验系统内存。,71,实验步骤,8装载结束后,利用“反汇编”命令,进行反汇编,目的是检验装入实验系统内存的可执行文件是否正确。如果装载正确,则可以使用“无断点连续运行”命令,在已搭建好的硬件电路上运行装载的程序。如果达到预期效果,则完成了项目实验。否则,可利用“单步运行”命令,进行单步调试,或利用“断点设置”命令设置合适的断点,再利用“带断点连续运行”命令进行调试,并仔细检查软件和硬件,排除故障。反复实验,直至成功。,72,反汇编程序清单,为了便于读者在实验时进行核对,书中给出了该项目的反汇编程序清单。(详见P.229234),73,A.5项目仿真,A.5.1仿真软件A.5.2仿真步骤,74,A.5.1仿真软件,用于项目仿真的软件,可采用目前日趋流行的单片机软硬件可视化仿真开发工具软件Proteus,该软件集成了高级原理图布图、混合模式电路仿真、PCB设计以及自动布线功能,构成了一个完整的电子设计系统,通过它的虚拟仿真技术(VSM),用户可以对基于微处理器的系统连同所有的外围接口电子器件一起进行仿真,配合系统提供的虚拟仪器(如电压表、电流表、示波器等)可以测量仿真的波形及记录仿真数据。,75,仿真软件,对于那些暂不具备单片机实验条件的学校或没有单片机开发装置但已有PC机的读者,只要利用Proteus软件便可以实现应用项目的仿真调试。Proteus软件主要由ISIS和ARES两个软件构成,其中,ISIS为电子系统仿真软件。ARES为布线编辑软件。本应用项目的仿真主要应用ISIS进行,对于需要按强化要求实现项目的读者,可以使用ARES来设计PCB印刷电路板。,76,A.5.2仿真步骤,由于本教材的篇幅有限,这里只给出使用Proteus软件对应用项目进行仿真的步骤以及简要说明,对于没有用过该仿真软件的读者,应先参考介绍Proteus软件的有关书籍,首先熟悉Proteus软件的使用,再按如下步骤进行项目仿真。,77,1运行ISIS,在安装有Proteus软件的PC机上运行ISIS软件,进入ISIS界面:,图A.8ISIS界面,78,2挑选元件,单击挑选元件按钮P,进入元件挑选界面,如图A.9所示。,图A.9元件挑选界面,79,2挑选元件,在图A.9的关键字框(Keywords)中输入应用项目所需元件的名称,再在搜索结果框(Results)中选中需要的元件,然后单击OK按钮确定。重复这一过程,把应用项目所需用到的元件全部挑选到元件列表窗口中,如图A.10所示。,图A.10元件列表窗口,80,3放置元件,把构成应用项目硬件电路所需的元器件放置到原理图绘制窗口中的适当位置,具体的步骤如下:(1)单击元件列表窗口中的元件,该元件的形状便会在预览窗口中显示出来,通过方向工具栏的按钮对元件进行旋转和镜像调整。(2)在原理图编辑窗口中单击,所选元件便会出现在编辑窗口并可随鼠标一起移动,移到适当位置再单击,便可放置一个元件。在单击前,鼠标右键单击可取消元件放置。(3)需要改变元件放置的位置时,可用鼠标右键单击元件,选择快捷菜单中的拖动对象命令(DragObject),即可拖动元件。连续在元件上单击两次鼠标右键则会删除该元件。,81,放置元件,(4)用鼠标右键逐一单击放置好的元件,选择快捷菜单中的元件属性编辑命令(EditProperties),对元件标号、数值、封装等属性进行编辑,不同的元件需要指定不同的属性,对于单片机还要指定时钟频率,本项目设为6MHz,如图A.11:,图A.11编辑元件属性,82,放置并完成属性编辑后的所有元件,如图A.12所示。,图A.12放置完成的所有元件,放置元件,83,4布线绘图,(1)ISIS的原理图编辑窗口与常规的Windows应用程序窗口有较大的区别,它是没有滚动条的。用户可通过如下方法选择原理图的显示区域。移动鼠标指针至需要显示的地方,滚动鼠标滚轮缩放原理图,ISIS就会自动以鼠标指针所在处为中心进行显示。移动鼠标指针至需要显示的地方,再按F5功能键,可把显示中心移到鼠标指针所在处。,放置好所有的元件后,即可以按设计好的硬件电路对元件进行布线绘图。具体的操作要点如下:,84,4布线绘图,单击预览窗口中想要显示的位置,编辑窗口即以此位置为中心显示。在原理图编辑框内,按住Shift键,用鼠标“撞击”边框,可使显示区域平移。按住Shift键的同时,拖曳鼠标绘制出一个矩形框,可将框内的图像放大显示。移动鼠标指针至需要显示的地方,再按缩放功能键(F6、F7),便会以鼠标指针所在处为中心缩放图像。,85,布线绘图,(2)ISIS的原理图编辑窗口没有布线按钮,这是因为ISIS使用的是智能化布线功能,会自动检测用户的布线动作。具体的操作方法如下:选择Tools/WireAutoRouter命令或单击主工具栏的“自动布线器”按钮,可打开ISIS的自动布线功能。该功能打开时,用户只要在两个连接点单击,ISIS就会自动选择一条合适的路径把两个点连接起来。,86,布线绘图,如果希望自行设定走线路径,则可关闭自动布线功能;也可以在自动布线功能打开情况下,在想要线路拐弯处单击则可。对于不满意的连线,在连线过程中可按Esc键删除。对于已完成的连线,可单击主工具栏中的“撤销”按钮撤销连线操作,或用鼠标右键单击想要删除的连线,再在快捷菜单中选择删除连线命令(DeleteWire)即可(删除其他对象也可用此方法)。,87,当绘图格栅设置得太大,而出现无法连线的现象时,应在View菜单中将格栅调小。如图A.13所示,可将格栅调为50th或10th。若元件不在格栅线上,可先移好元件,并在连线过程中滚动鼠标滚轮放大显示,便可准确连线。,布线绘图,图A.13绘图格栅调整,88,布线绘图,(3)在应用项目中用到的8155的3个I/O口引脚是用总线表示的,所以绘图时必须用到总线,总线的绘制方法如下:单击绘图工具栏的“总线”按钮,打开绘制总线功能,即可使用前面介绍的连线方法画出总线。,89,布线绘图,总线需要通过分支线与网络标号才能表示具体的连接。画分支线时,可利用ISIS的重复布线功能:先在图中的A、B两点画出一条分支线(画斜线时需要关闭自动布线器),如图A.14(a)所示,然后再双击C点,这样就可以在C点与总线之间画出一条同样的分支线,如图A.14(b)所示。用同样的方法即可整齐地画出其他分支线。,图A.14使用重复布线功能画分支线,90,布线绘图,单击绘图工具栏的“导线标签”按钮,对导线进行标注。总线采用“名称0.X”的格式标注,同一条总线上的分支线名称应与总线名称相同,编号为0X。其他相互接通的导线只需标注相同的标签名则可,如图A.15所示。图中标注为READ、WRITE的导线是相互连通的。,图A.15导线的标注,91,图A.16自动打铃机电路原理图,通过以上步骤绘制完成的自动打铃机电路原理图如图A.16所示。,布线绘图,92,5建立源代码文件,(1)使用Proteus提供的编辑器或其他通用编辑器,输入、编辑、建立应用项目的源程序。,使用Proteus自带编辑器建立应用项目源程序的方法是:进入Proteus安装目录下的BIN子目录,运行其中的SCREDIT程序,并在它的编辑窗口中输入应用项目的源程序,如图A.17所示。编辑完成后,以.ASM为扩展名存盘。本项目以“打铃机.ASM”存盘。,图A.17Proteus自带的源程序编辑器,93,Proteus允许使用第三方的外部编辑器,方法是:在ISIS窗口中,选择Source菜单中的“SetupExternalTextEditor”命令,在弹出窗口中选择外部编辑器。,建立源代码文件,如图A.18所示,图中以选择Windows的记事本为例,图A.18选择Windows的记事本作为编辑器,94,(2)添加源文件:选择Source菜单中的“Add/RemoveSourceFiles”命令,在弹出窗口中添加已经存盘的源程序文件(打铃机.ASM),并在其中的“CodeGenerationTool”框中选择代码生成工具为“ASEM51”。确定后,指定的源程序文件即被添加到本设计中,并在Source菜单中列出添加的源程序文件名,如图A.19所示。,建立源代码文件,图A.19添加源程序文件,95,(3)选定代码生成工具:选择Source菜单中的“DefineCodeGenerationTool”命令,在弹出窗口中选择代码生成工具为“ASEM51”,如图A.20所示。,建立源代码文件,图A.20选择代码生成工具,96,(4)编译源文件:选择Source菜单中的“BuildAll”命令,Proteus就会对添加的源程序文件进行编译,并弹出“BUILDLOG”窗口,报告编译信息,如图A.21所示。,图A.21源程序编译信息,建立源代码文件,97,如无错误,Proteus便会生成扩展名为.HEX的目标代码文件(本项目为“打铃机.HEX”)。如有错误,可单击Source菜单中列出的源程序文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 梦幻花园的实现方法
- 2025浙江省金华成泰农商银行社会招聘考试含答案
- 2025浙江金华市武义县司法局招聘4人笔试备考试题及答案解析
- 2025云南楚雄州禄丰市教育体育局机关直属事业单位选调工作人员10人笔试含答案
- 初高中学生如何正确处理学校暴力问题
- 船舶货物运输事故调查规定
- 如何引导初高中学生正确应对生活挑战
- 2025四川内江市法院系统招聘聘用制审判辅助人员120人考试含答案
- 2025年事业单位工勤技能-广东-广东计算机操作员一级(高级技师)历年参考题库含答案解析
- 2025年四川宜宾兴文县第一次考调事业单位工作人员17人笔试备考题库及参考答案详解
- 人员外出安全培训内容课件
- 2025年法官入额遴选政治理论真题及答案
- 2025至2030中国土豆行业产业运行态势及投资规划深度研究报告
- 护理系毕业论文2000
- 空调科安全培训课件
- 2025征兵考试题库与答案
- GB/T 26480-2011阀门的检验和试验
- 完整课件-西方经济学下册(第二版)
- 青岛版四年级科学新教材上册实验
- 冷却塔使用说明书资料
- 工程地质课件:绪论
评论
0/150
提交评论