设计要求总体方案硬件设计软件设计系统调试与运行课件

上传人:494895****12427 文档编号:241255196 上传时间:2024-06-12 格式:PPT 页数:203 大小:1.66MB
返回 下载 相关 举报
设计要求总体方案硬件设计软件设计系统调试与运行课件_第1页
第1页 / 共203页
设计要求总体方案硬件设计软件设计系统调试与运行课件_第2页
第2页 / 共203页
设计要求总体方案硬件设计软件设计系统调试与运行课件_第3页
第3页 / 共203页
点击查看更多>>
资源描述
第10章 单片机系统的应用与开发设计要求设计要求总体方案总体方案硬件设计硬件设计软件设计软件设计系统调试与运行系统调试与运行第第1010章章单单片片机机的的应应用用系系统统设设计计与与开开发发本章内容本章内容Single Chip Microcomputer设计要求第10章单片机的应用系统设计与开发本章内第10章 单片机系统的应用与开发第第10章章 单片机应用系统的设计与开发单片机应用系统的设计与开发10.1课程设计课程设计电脑钟的设计与制作电脑钟的设计与制作10.2应用系统设计实例应用系统设计实例单片温度控制系统单片温度控制系统10.3单片机应用系统开发的一般方法单片机应用系统开发的一般方法10.4单片机应用系统实用技术单片机应用系统实用技术10.5抗干扰设计抗干扰设计返回主目录第10章单片机应用系统的设计与开发返回主目录第10章 单片机系统的应用与开发第第10章章单片机应用系统的设计与开发单片机应用系统的设计与开发 10.1 课程设计课程设计电脑钟的设计与制作电脑钟的设计与制作 10.1.1 设计要求设计要求设计并制作出具有如下功能的电脑钟:(1)自动计时,由6位LED显示器显示时、分、秒。(2)具备校准功能,可以直接由09数字键设置当前时间。(3)具备定时起闹功能。(4)一天时差不超过1秒钟。第10章单片机应用系统的设计与开发10.第10章 单片机系统的应用与开发 10.1.2 总体方案总体方案 1.计时方案计时方案方案一:采用实时时钟芯片。针对计算机系统对实时时钟功能的普遍需求,各大芯片生产厂家陆续推出了一系列的实时时钟集成电路,如DS1287、DS12887等。这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。10.1.2总体方案第10章 单片机系统的应用与开发方案二:软件控制。利用MCS-51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能够使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,因此本系统将采用软件方法实现计时。2.键盘键盘/显示方案显示方案对于实时时钟而言,显示显然是另一个重要的环节。如前所述,通常有两种显示方式:动态显示和静态显示。方案一:串口扩展,LED静态显示。方案二:软件控制。第10章 单片机系统的应用与开发如图10.1(a)所示,该方案占用口资源少,采用串口传输实现静态显示,显示亮度有保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行口资源较少的场合。方案二:8155扩展,LED动态显示。如图10.1(b)所示,该方案硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。如图10.1(a)所示,该方案占用口资源少,第10章 单片机系统的应用与开发图10.1显示方式框图(a)静态显示框图;(b)动态显示框图图10.1显示方式框图(a)静态显示框图;(b)动第10章 单片机系统的应用与开发 10.1.3 硬件设计硬件设计 1.电路原理图电路原理图电脑钟电路的核心是89C51单片机,其内部带有4KB的FLASHROM,无须外扩程序存储器;电脑时钟没有大量的运算和暂存数据,现有的128B片内RAM已能满足要求,也不必外扩片外RAM。系统配备6位LED显示和43键盘,采用8155作为键盘/显示接口电路。利用8155的A口作为6位LED显示的位选口,其中,PA0PA5分别对应位LED0LED5,B口则作为段选口,C口的低3位为键盘输入口,对应02行,A口同时用作键盘10.1.3硬件设计第10章 单片机系统的应用与开发的列扫描口。由于采用共阴极数码管,因此A口输出低电平选中相应的位,而B口输出高电平点亮相应的段。P1.0接蜂鸣器,低电平驱动蜂鸣器鸣叫启闹。由图10.2可见,8155的地址分配如下:控制寄存器:8000H,定义为PORTA口:8001H,定义为PORTAB口:8002H,定义为PORTBC口:8003H,定义为PORTC如果使用本书配备的实验板实现该电脑钟,需将8155地址改变为的列扫描口。由于采用共阴极数码管,因此A口输第10章 单片机系统的应用与开发图10.2电脑钟硬件原理图图10.2电脑钟硬件原理图第10章 单片机系统的应用与开发控制寄存器:4400HA口:4401HB口:4402HC口:4403H并通过引出的P1口外接一个蜂鸣器电路,或是用P1口上的发光二极管模拟闹钟功能。需要指出的是,实验板使用的是8031芯片,使用外扩程序存储器EPROM2764,因此其脚必须接地。控制寄存器:4400H第10章 单片机系统的应用与开发 2.系统工作流程系统工作流程本电脑钟具备以下功能:(1)时钟显示:6位LED从左到右依次显示时、分、秒,采用24小时计时。(2)键盘功能:采用43键盘,包括:09数字键,键号为00H09HC/R键时间设定/启动计时键,键号为0AHALM键闹钟设置/启闹/停闹键,键号为0BH(1)时间显示:上电后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间。2.系统工作流程第10章 单片机系统的应用与开发(2)时间调整:按下C/R键,系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间。按下09数字键可以顺序设置时、分、秒,并在相应LED管上显示设置值,直至6位设置完毕。系统将自动由设定后的时间开始计时显示。(3)闹钟设置/启闹/停闹:按下ALM键,系统继续计时,显示00:00:00,进入闹钟设置状态,等待键入启闹时间。按下09数字键可以顺序进行相应的时间设置,并在相应LED管上显示设置值,直至6位设置完毕。这将启动定时启闹功能,并恢复时间显示。定时时间到,蜂鸣器鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。(2)时间调整:按下C/R键,系统停止计时第10章 单片机系统的应用与开发 10.1.4 软件设计软件设计 1.系统资源分配系统资源分配为方便阅读程序,先对系统的资源分配加以说明。(1)定时器:定时器0用作时钟定时,按方式1工作,每隔100ms溢出中断一次。(2)片内RAM及标志位的分配与定义见表10.1。10.1.4软件设计第10章 单片机系统的应用与开发地地址址功功能能名名称称初始化值初始化值30H35H显示缓冲区,小时、分、秒(高位显示缓冲区,小时、分、秒(高位在前)在前)DISP0DISP500H3CH3FH计时缓冲区,时、分、秒、计时缓冲区,时、分、秒、100msHOUR,MIN,SEC,MSEC00H40H42H闹钟值寄存区,时、分、秒闹钟值寄存区,时、分、秒AHOUR,AMIN,ASECFFH50H7FH堆栈区堆栈区PSW.5计时显示允许位(计时显示允许位(1:禁止,:禁止,0:允:允许)许)F00PSW.1闹钟标志位(闹钟标志位(1:正在闹响,:正在闹响,0:未:未闹响)闹响)F10表表10.1 电子钟控制软件片内电子钟控制软件片内RAM及标志位分配表及标志位分配表地址功能名称初始化值00H3CH3FH计第10章 单片机系统的应用与开发 2.软件流程软件流程根据上述工作流程,软件设计可分为以下几个功能模块:(1)主程序:初始化与键盘监控。(2)计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。(3)时间设置与闹钟设置:由键盘输入设置当前时间与定时启闹时间。(4)显示:完成6位动态显示。2.软件流程第10章 单片机系统的应用与开发(5)键盘扫描:判断是否有键按下,并求取键号。(6)定时比较:判断启闹时间到否?如时间到,则启动蜂鸣器鸣叫。(7)其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性检测等。下面分模块进行软件设计:(1)主程序模块MAIN:流程图如图10.3所示。(2)计时程序模块CLOCK:流程图如图10.4所示。(5)键盘扫描:判断是否有键按下,并求取键号第10章 单片机系统的应用与开发图10.3主程序流程图图10.3主程序流程图第10章 单片机系统的应用与开发图10.4计时程序流程图图10.4计时程序流程图第10章 单片机系统的应用与开发如前所述,系统定时采用定时器与软件循环相结合的方法。定时器0每隔100ms溢出中断一次,则循环中断10次延时时间为1s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00。设系统使用6MHz的晶振,定时器0工作在方式1,则100ms定时对应的定时器初值可由下式计算得到:定时时间=(216-定时器0初值)(12/fosc)因此,定时器0初值=3CB0H,即TH0=3CH,TL0=0B0H如前所述,系统定时采用定时器与软件循环相结合第10章 单片机系统的应用与开发当系统使用其它频率的晶振时,可以由上式计算相应的定时器0初值,也可以改变定时时间。例如当系统晶振为12MHz时,同样的初值对应的定时时间为50ms,则循环中断次数为20次时,延时时间为1s。第一,定时器溢出产生中断请求,CPU并不一定立即响应中断,而可能需要延迟一个中断响应时间之后才能响应中断,中断响应时间大约为38个机器周期。显然,这将在定时时间中加入额外的延时时间,导致计时误差。当系统使用其它频率的晶振时,可以由上式计算相第10章 单片机系统的应用与开发为了保证计时精度,必须采取措施进行补偿。我们采用增大重装的定时器0初值的方法来减少定时器0定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,定时器0重装初值设为3CB7H3CBFH可以满足精度要求。第二,时间是按十进制递增,而MCS-51单片机只有二进制加法指令,因此用加法指令计时必须进行二十进制转换。(3)时间设置程序和闹钟定时程序模块MODIFY:流程图如图10.5所示。为了保证计时精度,必须采取措施进行补偿。我们第10章 单片机系统的应用与开发图10.5时间设置/闹钟定时流程图图10.5时间设置/闹钟定时流程图第10章 单片机系统的应用与开发将键盘输入的6位时间值合并为3位压缩BCD码(时、分、秒)送入计时缓冲区和闹钟值寄存区,作为当前计时起始时间或闹钟定时时间。该模块的入口为计时缓冲区或闹钟值寄存区的首地址,置入R1中。程序调用一个键盘设置子程序KEYIN(如图10.6所示)来将键入的6位时间值送入键盘设置缓冲区,然后用合字子程序COMB将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区。该程序同时作为时间值合法性检测程序,若键盘输入的小时值大于23,分和秒值大于59,则不合法,将取消本次设置,清零重新开始计时。将键盘输入的6位时间值合并为3位压缩B第10章 单片机系统的应用与开发图10.6键盘设置子程序流程图图10.6键盘设置子程序流程图第10章 单片机系统的应用与开发图10.7键盘扫描流程图(4)键盘扫描程序模块KEYSCAN:流程图如图10.7所示。图10.7键盘扫描流程图(4)键盘扫描第10章 单片机系统的应用与开发判断是否有键按下,无键按下则循环等待;有键按下则求取键号并将键号送A累加器返回。程序中的去抖延时和循环等待延时都用DISPLAY子程序来代替,从而保证随时刷新显示。键盘扫描程序在第7章中有详细的叙述,在此不再赘述。(5)显示程序模块DISPLAY:流程图如图10.8所示。将显示缓冲区中的6位BCD码用动态扫描方式显示。为此,必须首先将3字节计时缓冲区中的时、分、秒压缩BCD码拆分为6字节(百位、十位分别占有1字节)BCD码,这一功能由拆字子程序SEPA来实现。判断是否有键按下,无键按下则循环等待;有键按第10章 单片机系统的应用与开发图10.8显示流程图图10.8显示流程图第10章 单片机系统的应用与开发需要注意的是,当按下时间或闹钟设置键后,在6位设置完成之前,应显示键入的数据,而不显示当前时间。为此,我们设置了一个计时显示允许标志位F0,在时间/闹钟设置期间F0=1,不调用SEPA,即调用SEPA刷新显示缓冲区的前提条件是F0=0。(6)定时比较程序模块ALARM:流程图如图10.9所示。将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的值)比较,二者完全相同时,启动蜂鸣器鸣叫,并置位闹钟标志位。返回后,待重新按下ALM键停闹,并清零闹钟标志。需要注意的是,当按下时间或闹钟设置键后,在6第10章 单片机系统的应用与开发图10.9定时比较流程图图10.9定时比较流程图第10章 单片机系统的应用与开发(7)拆字程序SEPA与合字程序COMB:如前所述,拆字程序的功能是将3字节计时缓冲区中的时、分、秒压缩BCD码拆分为6字节(百位、十位、个位分别占有2字节)BCD码并刷新显示缓冲区;合字程序的功能是将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区,同时检测时间值的合法性。下面给出各模块的源程序。;*主程序MAIN*(7)拆字程序SEPA与合字程序COMB:第10章 单片机系统的应用与开发ORG0000HAJMP MAINORG000BHAJMP CLOCKORG0030HPORT EQU 8000HPORTAEQU 8001HPORTBEQU 8002HORG0000H第10章 单片机系统的应用与开发PORTCEQU8003HDISP0EQU30HDISP1EQU31HDISP2EQU32HDISP3EQU33HDISP4EQU34HDISP5EQU35HHOUREQU3CHPORTCEQU 8003H第10章 单片机系统的应用与开发MINEQU3DHSECEQU3EHMSECEQU3FHAHOUREQU40HAMINEQU41HASECEQU42HF1BITPSW.1MAIN:MOVSP,#50H;设置堆栈区MOVXDPTR,#PORTMOVA,#03HMINEQU第10章 单片机系统的应用与开发MOVXDPTR,A;8155初始化CLRF1;清零闹钟标志位CLRF0;允许计时显示MOV AHOUR,#0FFHMOV AMIN,#0FFHMOV ASEC,#0FFHMOV R7,#10HMOV R0,#DISP0CLRAMOVXDPTR,A;8155初第10章 单片机系统的应用与开发LOOP:MOVR0,AINC R0DJNZR7,LOOP;设置初值MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#3CH;定时器0初始化,定时时间100msSETBTR0;启动定时器SETBEASETBET0;开中断LOOP:MOVR0,A第10章 单片机系统的应用与开发BEGIN:ACALLALARM;调用定时比较ACALLKEYSCAN;调用键盘扫描CJNEA,#0AH,NEXT1;是CLR/RST键否?CLRTR0;是则暂时停止计时MOVR1,#HOUR;地址指针指向计时缓冲区首地址AJMPMODBEGIN:ACALLALARM;调第10章 单片机系统的应用与开发NEXT1:CJNEA,#0BH,BEGIN;是ALARM键否?JB F1,NEXT2;闹钟正在闹响否?MOVR1,#AHOUR;地址指针指向闹钟值寄存区首地址MOD:SETBF0;置位时间设置/闹钟定时标志,禁止显示计时时间ACALLMODIFY;调用时间设置/闹钟定时程序SETBTR0;重新开始计时CLRF0;清零时间设置/闹钟定时标志,恢复显示计时时间NEXT1:CJNEA,#0BH,BEGIN;是第10章 单片机系统的应用与开发AJMPBEGINNEXT2:SETBP1.0;闹钟正在闹响,停闹CLRF1;清零闹钟标志AJMPBEGIN;*时间设置/闹钟定时模块MODIFY*MODIFY:ACALL KEYIN;调用键盘设置子程序ACALLCOMB;调用合字子程序RET键盘设置子程序KEYIN:KEYIN:PUSH PSWPUSH ACCAJMPBEGIN第10章 单片机系统的应用与开发SETBRS1;保护现场MOVR0,#DISP0;R0指向显示缓冲区首地址MOVR7,#06H;设置键盘输入次数L1:CLRRS1ACALLKEYSCAN;调用键盘扫描程序取按下键的键号SETBRS1CJNEA,#0AH,L2;键入数合法性检测(是否大于9)SETBRS1;保护现场第10章 单片机系统的应用与开发L2:JNCL1;大于9,重新键入MOV R0,A;键号送显示缓冲区INCR0DJNZ R7,L1;6位时间输入完否?未完继续,否则返回POPACCPOPPSWCLRRS1;恢复现场RETL2:JNCL1;大于9,重新键入第10章 单片机系统的应用与开发;*键盘扫描子程序KEYSCAN*KEYSCAN:ACALLTEST;调判按键是否按下子程序TESTJNZREMOV;有键按下调消抖延时ACALLDISPLAYACALLALARMAJMPKEYSCAN;无键按下继续判是否按键REMOV:ACALL DISPLAY;调用显示子程序延时消抖ACALL TEST;再判是否有键按下;*键盘扫描子程序K第10章 单片机系统的应用与开发JNZLIST;有键按下转逐列扫描ACALL DISPLAYACALLALARMAJMPKEYSCAN;无键按下继续判是否按键LIST:MOV R2,#0FEH;首列扫描字送R2MOV R3,#00H;首列键号送R3LINE0:MOV DPTR,#PORTA;DPTR指针指向8155的A口JNZLIST;有键按下转逐列第10章 单片机系统的应用与开发MOVA,R2;首列扫描字送R2MOVXDPTR,A;首列扫描字送8155的A口MOVDPTR,#PORTC;DPTR指针指向8155的C口MOVXA,DPTR;读入C口的行状态JBACC.0,LINE1;第0行键无键按下转第1行MOVA,#00H;第0行有键按下,行首键号送AAJMPTRYK;求键号MOVA,R2第10章 单片机系统的应用与开发NEXT:INCR3;扫描下一列MOVA,R2;列扫描字送AJNB ACC.3,EXIT;4列扫描完,重新进行下一轮扫描RLA;4列未扫描完,扫描字左移扫描下一列MOVR2,A;扫描字送AAJMPLINE0;转向扫描下一列NEXT:INCR3;扫描下一列第10章 单片机系统的应用与开发EXIT:AJMPKEYSCAN;等待下一次按键TRYK:ADD A,R3;按公式计算键码,求得键号PUSHACC;键号入栈保护LETK:ACALLTEST;等待按键释放JNZLETK;按键未释放,继续等待POPACC;按键释放,键号出栈RET;键盘扫描结束,返回EXIT:AJMPKEYSCAN;等待下一次第10章 单片机系统的应用与开发TEST:MOV DPTR,#PORTA;DPTR指针指向8155的A口MOV A,#00HMOVXDPTR,A;全扫描字00H送8155的A口MOV DPTR,#PORTC;DPTR指针指向8155的C口MOVXA,DPTR;读入C口行状态CPLA;A取反,以高电平表示有键按下ANLA,#07H;屏蔽高5位RETTEST:MOV DPTR,#PORTA;DPTR指针第10章 单片机系统的应用与开发;*显示子程序DISPLAY*DISPLAY:JBF0,DISP;允许时间显示标志F0=1转DISPACALLSEPA;否则调用SEPA刷新显示缓冲区DISP:pushpsw;动态扫描显示子程序Pushaccsetbrs0MOV dptr,#PORTA;*显示子程序DISPLAY*第10章 单片机系统的应用与开发MOVA,#0FFHMOVXDPTR,A;关显示mov r0,#disp0mov r7,#00hmov r6,#06hmov r5,#0fehdis1:mov dptr,#tabmov a,r0movc a,a+dptrmov dptr,#portbMOVA,#0FFH第10章 单片机系统的应用与开发movx dptr,amovdptr,#portamova,r5movx dptr,ahere:djnzr7,hereincr0mova,r5rlamovx dptr,a第10章 单片机系统的应用与开发movr5,adjnzr6,dis1clrrs0popaccpoppswrettab:db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71h;共阴极字型码表 movr5,a第10章 单片机系统的应用与开发;*合字子程序COMB*COMB:MOVR0,#DISP1;R0指向显示缓冲区小时低位ACALLCOMB1;合字CJNEA,#24H,CHK;小时大于24否?CHK:JNCEXIT1;大于24则取消本次设置,退出MOVR1,A;否则小时送计时缓冲区/闹钟值寄存区小时单元INCR1;*合字子程序COMB*第10章 单片机系统的应用与开发MOVR0,#DISP3;R0指向显示缓冲区分低位ACALLCOMB1CJNEA,#60H,CHK1CHK1:JNC EXIT1MOVR1,AINC R1MOVR0,#DISP5;R0指向显示缓冲区秒低位ACALLCOMB1CJNEA,#60H,CHK2MOVR0,#DISP3;R第10章 单片机系统的应用与开发CHK2:JNCEXIT1MOV R1,ARETEXIT1:AJMP MAIN;输入不合法退出,重新清零计时COMB1:MOVA,R0ANLA,#0FH;取出低位MOV43H,A;暂存于43H单元DECR0;指向高位CHK2:JNCEXIT1第10章 单片机系统的应用与开发MOVA,R0ANLA,#0FHSWAPA;高位送高4位ORLA,43H;高低位合并RET;*拆字子程序SEPA*SEPA:PUSHPSWPUSHACCSETB RS0MOVA,R0第10章 单片机系统的应用与开发MOVR0,#DISP5;指向显示缓冲区秒低位MOVA,SECACALL SEPA1MOVA,MINACALL SEPA1MOVA,HOURACALL SEPA1POPACCPOPPSWMOVR0,#DISP5;指向显示缓冲区秒第10章 单片机系统的应用与开发RETSEPA1:MOV44H,A;暂存44HANLA,#0FH;取出低位MOVR0,A;送显示缓冲区低位DEC R0;指向显示缓冲区高位MOVA,44HANL A,#0F0H;取出高位SWAPA;高位送往低4位形成高位数据RET第10章 单片机系统的应用与开发MOVR0,A;高位数据送显示缓冲区高位RET;*定时比较模块ALARM*ALARM:MOV A,ASECCJNE A,SEC,BACK;秒单元相同则继续比较,否则返回MOV A,AMINCJNE A,MIN,BACK;分单元相同则继续比较,否则返回MOV A,AHOURMOVR0,A第10章 单片机系统的应用与开发CJNEA,HOUR,BACK;小时单元相同定时时间到CLRP1.0;启动闹钟鸣叫SETBF1;置位闹钟标志BACK:RET;*定 时 器 0中 断 服 务 子 程 序CLOCK*CLOCK:MOVTL0,#0B7HMOVTH0,#3CH;重装初值,时间校正CJNEA,HOUR,B第10章 单片机系统的应用与开发PUSH PSWPUSH ACC;保护现场INCMSECMOV A,MSECCJNE A,#0AH,DONEMOV MSEC,#00HMOV A,SECINCAPUSHP第10章 单片机系统的应用与开发DAA;二十进制转换MOVSEC,ACJNEA,#60H,DONEMOVSEC,#00HMOVA,MININCADAAMOVMIN,ADAA;二十进制转换第10章 单片机系统的应用与开发CJNE A,#60H,DONEMOV MIN,#00HMOV A,HOURINCADAAMOV HOUR,ACJNE A,#24H,DONEMOV HOUR,#00HCJNEA第10章 单片机系统的应用与开发DONE:POPACCPOPPSW;恢复现场RETIDONE:POPACC第10章 单片机系统的应用与开发 10.1.5 系统调试与脱机运行系统调试与脱机运行完成了硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,作为一个计算机系统,其运行是软硬件相结合的,因此,软硬件的调试也是不可能绝对分开的,硬件的调试常常需要利用调试软件,软件的调试也可能需要通过对硬件的测试和控制来进行。10.1.5系统调试与脱机运行第10章 单片机系统的应用与开发 1.硬件调试硬件调试硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。(1)脱机检查。用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。为了保护芯片,应先对各IC座(尤其是电源端)电位进行检查,确定其无误后再插入芯片检查。1.硬件调试第10章 单片机系统的应用与开发(2)联机调试。暂时拔掉89C51芯片,将仿真器的40芯仿真插头插入89C51的芯片插座进行调试,检验键盘/显示接口电路是否满足设计要求。可以通过一些简单的测试软件来查看接口工作是否正常。例如,我们可以设计一个软件,使8155的A、B口输出55H或AAH,同时读C口,运行后用万用表检查相应端口电平是否一高一低,在仿真器中检查读入的C口低3位是否为1,如果正常则说明8155工作正常。还可设计一个使所有LED全显示“8.”的静态显示程序来检验LED的好坏。如果运行测试结果与预期不符,很容易根据故障现象判断故障原因并采取针对性措施排除故障。(2)联机调试。暂时拔掉89C51芯片,将第10章 单片机系统的应用与开发 2.软件调试软件调试软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。调试的基本步骤如下:2.软件调试第10章 单片机系统的应用与开发(1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。例如将DISP0DISP5单元置为“012345”,应能在LED上从左到右显示“012345”。若显示不正确,可在DISP子程序相应位置设置断点调试检查。然后用仿真器修改计时缓冲区内容,调用拆字程序,调试显示模块DISPLAY。例如,将HOUR、MIN、SEC单元置为“123456”,检查是否能正确显示“12:34:56”。若显示不正确,应在SEPA子程序相应位置设置断点,调试检查。(2)运行主程序调试计时模块,不按下任何键,检查是否能从由00:00:00开始正确计时。(1)用仿真器修改显示缓冲区内容,屏蔽拆字第10章 单片机系统的应用与开发若不能正确计时则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运行而变化。然后屏蔽缓冲区初始化部分,用仿真器修改计时缓冲区内容为23:58:48,运行主程序(不按下任何键),检验能否正确进位。(3)调试键盘扫描模块KEYSCAN,先用延时10ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键号是否正确;然后恢复用显示子程序延时消抖,检验与DISPLAY模块能否正确连接。若不能正确计时则应在定时器中断服务子程序中设第10章 单片机系统的应用与开发(4)调试时间设置/闹钟定时模块MODIFY。首先屏蔽COMB子程序,单独调试键盘设置模块KEYIN,观察显示缓冲区DISP0DISP5单元的内容是否随键入的键号改变,以及键号能否在LED上显示。然后屏蔽KEYIN子程序,单独调试合字模块COMB,分别将R1设置为时间设置缓冲区和闹钟值寄存区的首地址,修改显示缓冲区内容,程序运行后查看时间设置缓冲区HOUR、MIN、SEC单元和闹钟值寄存区AHOUR、AMIN、ASEC单元内容是否正确。最后联调MODIFY模块。(5)运行主程序联调,检查能否用键盘修改当前时间以及设置闹钟,能否正确计时、启闹、停闹。(4)调试时间设置/闹钟定时模块MODI第10章 单片机系统的应用与开发 3.脱机运行脱机运行软硬件调试成功之后,可以将程序固化到89C51的FLASHROM中,插入89C51芯片,接上电源脱机运行。既然软硬件都已调试成功,脱机运行似乎肯定成功,然而事实往往并非如此,仍有可能出现以下故障:(1)系统不工作。其原因主要有晶振不起振(晶振损坏、晶振电路不正常导致晶振信号太弱等),或脚没有接高电平(接地或悬空)等。(2)系统工作时好时坏。这主要是由干扰引起的。由于本系统没有传感输入通道和控制输出通道,干扰源相对较少且简单,因此,在电源、总线处对地接滤波电容一般可以解决问题。3.脱机运行第10章 单片机系统的应用与开发10.2 应用系统设计实例应用系统设计实例单片机温度单片机温度控制系统控制系统 10.2.1 技术指标技术指标烘干箱的具体指标如下:(1)烘干箱由2kW电炉加热,最高温度为500。(2)烘干箱温度可预置,烘干过程恒温控制,温度控制误差2。(3)预置时显示设定温度,烘干时显示实时温度,显示精确到1。(4)温度超出预置温度5时发声报警。(5)对升降温过程的线性没有要求。10.2应用系统设计实例单片机温度控制系统第10章 单片机系统的应用与开发 10.2.2 控制方案控制方案产品的工艺不同,控制温度的精度也不同,因而所采用的控制算法也不同。就温度控制系统的动态特性来讲,基本上都是具有纯滞后的一阶环节,当系统精度及温控的线性性能要求较高时,多采用PID算法或达林顿算法来实现温度控制。本系统是一个典型的闭环控制系统。从技术指标可以看出,系统对控制精度的要求不高,对升降温过程的线性也没有要求,因此,系统采用最简单的通断控制方式,即当烘干箱温度达到设定值时断开加热电炉,当温度降到低于某值时接通电炉开始加热,从而保持恒温控制。10.2.2控制方案第10章 单片机系统的应用与开发 10.2.3 硬件设计硬件设计系统的硬件电路包括主机、温度检测、温度控制、人机对话(键盘/显示/报警)4个主要部分。图10.10为系统的结构框图,图10.11为系统的硬件电路原理图。下面对各部分电路分述如下。1)主机主机由于系统控制方案简单,数据量也不大,因此选用8031作为控制系统的核心,外扩EPROM2764作为程序存储器。也可视具体情况换用8051、8052、8751、8752、80C51、89C51、89C52等。其中,8051、8052、8751、8752的各个引脚输入/输出电平只与TTL电平兼容;89C51、89C52、80C51各引脚输入/输出电平既与TTL电平兼容,也与CMOS电平兼容。10.2.3硬件设计第10章 单片机系统的应用与开发图10.10电烤箱控制系统结构框图10.10电烤箱控制系统结构框第10章 单片机系统的应用与开发图10.11电烤箱控制系统硬件电路原理图图10.11电烤箱控制系统硬件电路原理图第10章 单片机系统的应用与开发8031的晶振频率为6MHz。2)温度检测温度检测这部分包括温度传感器、变送器和A/D转换三部分。温度传感器和变送器的类型选择与被控温度的范围及精度等级有关。型号为WZB003,分度号为BA2的铂热电阻适用于0500的温度测量范围,可以满足本系统的要求。变送器将电阻信号转换成与温度成正比的电压,当温度在0500时变送器输出04.9V左右的电压。8031的晶振频率为6MHz。第10章 单片机系统的应用与开发A/D转换器件的选择主要取决于温度的控制精度。本系统要求温度控制误差2,采用8位A/D转换器,其最大量化误差为=,完全能够满足精度要求。这里我们采用ADC0809作为A/D转换器。电路设计好后,调整变送器的输出,使0500的温度变化对应于04.9V的输出,则A/D转换对应的数字量为00HFAH,即0250,则转换结果乘以2正好是温度值。用这种方法一方面可以减少标度转换的工作量,另一方面还可以避免标度转换带来的计算误差。A/D转换器件的选择主要取决于温度的控制精第10章 单片机系统的应用与开发3)温度控制温度控制电炉控制采用可控硅来实现,双向可控硅和电炉电阻丝串接在交流220V市电回路中。单片机的P1.7口通过光电隔离器和驱动电路送到可控硅的控制端,由P1.7口的高低电平来控制可控硅的导通与断开,从而控制电阻丝的通电加热时间。4)人机对话人机对话这部分包括键盘、显示和报警三部分电路。本系统设有3位LED数码显示器,停止加热时显示设定温度,启动加热时显示当前烤箱温度。采用串行口扩展的静态显示电路作为显示接口电路。3)温度控制第10章 单片机系统的应用与开发为使系统简单紧凑,键盘只设置4个功能键,分别是启动、“百位+”、“十位+”和“个位+”键,由P1口低4位作为键盘接口。利用+1按键可以分别对预置温度的百位、十位和个位进行加1设置,并在LED上显示当前设置值。连续按动相应位的加1键即可实现0500的温度设置。报警功能由蜂鸣器实现。当由于意外因素导致烤箱温度高于设置温度时,P1.6口送出的低电平经反向器驱动蜂鸣器鸣叫报警。5)其它可扩展电路其它可扩展电路对于要求更高的系统,在现有电路的基础上,读者还可以视需要自行扩展以下接口电路:为使系统简单紧凑,键盘只设置4个功能键,分第10章 单片机系统的应用与开发(1)实时时钟电路:连接实时时钟芯片DS12887可以获得长的采样周期,显示年、月、日、时、分、秒,而其片内带有的114B非易失性RAM,可用来存入需长期保存但有时也需变更的数据。如采样周期、PID控制算法的系数KP、KI、KD等。(2)“看门狗”电路:连接集成监控芯片MAX705可实现对主电源VCC的监控,提高系统的可靠性。由于本书附带的实验板已将P1口用排针引出,因此,读者可以方便地用实验板来实现上述系统。可在P1.6口外接蜂鸣器电路,在P1.7口外接电炉驱动控制电路,P1.0P1.3口外接4个功能按键(启动、+100、+10、+1)。(1)实时时钟电路:连接实时时钟芯片DS第10章 单片机系统的应用与开发 10.2.4 软件设计软件设计 1.工作流程工作流程烤箱在上电复位后先处于停止加热状态,这时可以用“+1”键设定预置温度,显示器显示预定温度;温度设定好后就可以按启动键启动系统工作了。温度检测系统不断定时检测当前温度,并送往显示器显示,达到预定值后停止加热并显示当前温度;当温度下降到下限(比预定值低2)时再启动加热。这样不断重复上述过程,使温度保持在预定温度范围之内。启动后不能再修改预置温度,必须按复位/停止键回到停止加热状态再重新设定预置温度。10.2.4软件设计第10章 单片机系统的应用与开发 2.功能模块功能模块根据上面对工作流程的分析,系统软件可以分为以下几个功能模块:(1)键盘管理:监测键盘输入,接收温度预置,启动系统工作。(2)显示:显示设置温度及当前温度。(3)温度检测及温度值变换:完成A/D转换及数字滤波。(4)温度控制:根据检测到的温度控制电炉工作。(5)报警:当预置温度或当前炉温越限时报警。2.功能模块第10章 单片机系统的应用与开发 3.资源分配资源分配为了便于阅读程序,首先给出单片机资源分配情况。数据存储器的分配与定义见表10.2。表表10.2 温度控制软件数据存储器分配表温度控制软件数据存储器分配表地址功能名称初始化值50H51H当前检测温度,高位在前TEMP1TEMP000H52H53H预置温度,高位在前ST1ST000H54H56HBCD码显示缓冲区,百位、十位、个位T100,T10,T00H57H58H二进制显示缓冲区,高位在前BT1,BT000H59H7FH堆栈区PSW.5报警允许标志F0=0时禁止报警;F0=1时允许报警F003.资源分配地址功能名称初始化值00HST1第10章 单片机系统的应用与开发程序存储器:EPROM2764的地址范围为0000H1FFFHI/O口:P1.0P1.3键盘输入;P1.6、P1.7报警控制和电炉控制。A/D转换器0809:通道0通道7的地址为7FF8H7FFFH,使用通道0。4.功能软件设计功能软件设计1)键盘管理模块键盘管理模块上电或复位后系统处于键盘管理状态,其功能是监测键盘输入,接收温度预置和启动键。程序设有预置温度合法检测报警,当预置温度超过500时会报警并将温度设定在500。键盘管理子程序流程图如图10.12所示。程序存储器:EPROM2764的地址范围为0第10章 单片机系统的应用与开发图10.12键盘管理子程序流程图图10.12键盘管理子程序流程图第10章 单片机系统的应用与开发键盘管理子程序KIN:KIN:ACAL CHK;预置温度合法性检测MOVBT1,ST1MOVBT0,ST0;预置温度送显示缓冲区LCALL DISP;显示预置温度KIN0:ACALL KEY;读键值JZKIN0;无键闭合和重新检测ACALL DISP键盘管理子程序KIN:第10章 单片机系统的应用与开发ACALL DISP;二次调用显示子程序延时去抖ACALLKEY;再检测有无键按下JZKIN0;无键按下重新检测JBACC.1,S10MOVA,#100;百位键按下AJMPSUMS10:JBACC.2,S1MOVA,#10;十位键按下AJMPSUMACALLDISP 第10章 单片机系统的应用与开发S1:JBACC.3,S0MOV A,#01;个位键按下SUM:ADDA,ST0;预置温度按键+1MOV ST0,AMOV A,#00HADDC A,ST1MOV ST1,AKIN1:ACALLKEY;判断闭合键释放JNZKIN1;未释放继续判断AJMP KIN;闭合键释放继续扫描键盘S1:JBACC.3,S0第10章 单片机系统的应用与开发S0:JNBACC.0,KIN;无键按下重新扫描键盘RET;启动键按下返回KEY:MOVA,P1;读键值子程序CPLAANLA,#0FHRET预置温度合法性检测子程序CHK(用双字节减法比较预置温度是否大于500(01F4H):S0:JNBACC.0,KIN;无键第10章 单片机系统的应用与开发CHK:MOV A,#0F4H;预置温度上限低8位送ACLRCSUBB A,ST0;低8位减,借位送CYMOV A,#01H;预置温度上限高8位送ASUBB A,ST1;高8位带借位减JCOUTA;预置温度越界,转报警MOV A,#00H;预置温度合法标志RETCHK:MOV A,#0F4H;预置温度上第10章 单片机系统的应用与开发OUTA:MOV ST1,#01H;将500写入预置温度数据区MOV ST0,#0F4HCLRP1.6;发报警信号0.6sACALLD0.6sSETB P1.6;停止报警RETOUTA:MOV ST1,#01H;将500写入预第10章 单片机系统的应用与开发2)显示模块显示模块显示子程序的功能是将显示缓冲区57H和58H的二进制数据先转换成三个BCD码,分别存入百位、十位和个位显示缓冲区(54H、55H和56H单元),然后通过串口送出显示。显示子程序DISP:DISP:ACALLHTB;将显示数据转换为BCD码MOVSCON,#00H;置串行口为方式0MOVR2,#03H;显示位数送R2MOVR0,#T100;显示缓冲区首地址送R02)显示模块第10章 单片机系统的应用与开发LD:MOVDPTR,#TAB;指向字型码表首地址MOVA,R0;取显示数据MOVCA,A+DPTR;查表MOVSBUF,A;字型码送串行口WAIT:JBCTI,NEXT;发送结束转下一个数据并清中断标志SJMPWAIT;发送未完等待NEXT:INCR0;修改显示缓冲区指针DJNZR2,LD;判3位显示完否,未完继续RETLD:MOVDPTR,#TAB第10章 单片机系统的应用与开发TAB:;字型码表(略)BCD码转换子程序HTB:HTB:MOV A,BT0;取二进制显示数据低8位MOV B,#100;除100,确定百位数DIVABMOV T100,A;百位数送54H单元MOV A,#10;除10,确定十位TAB:;字型码表(略)第10章 单片机系统的应用与开发XCHA,BDIVA,BMOVT10,A;十位数送55H单元MOVT,B;个位数送56H单元MOVA,BT1;取二进制显示数据高8位JNZLH1;高位不为0转LH1继续高8位转换RET;高位为0结束,返回LH1:MOVA,#06H ;高位不为0,低位转换结果加256(因为温度数据不会;大于500,所以高8位最多为01H,即256)XCHA,B第10章 单片机系统的应用与开发ADDA,TDAA;个位加6(十进制加)MOVT,A;结果送回个位MOVA,#05HADDCA,T10DAA;十位加5(十进制加)ADDA,T第10章 单片机系统的应用与开发MOVT10,A;结果送回十位MOVA,#02HADDCA,T100DAA;百位加2(十进制加)MOVT100,A;结果送回百位RETMOVT10,A;结果送回十位第10章 单片机系统的应用与开发3)温度检测模块温度检测模块A/D转换采用查询方式。为提高数据采样的可靠性,对采样温度进行数字滤波。数字滤波的算法很多,这里采用4次采样取平均值的方法。如前所述,本系统A/D转换结果乘2正好是温度值,因此,4次采样的数字量之和除以2就是检测的当前温度。检测结果高位存入50H,低位存入51H。温度检测子程序流程图如图10.13所示。温度检测子程序TIN:3)温度检测模块第10章 单片机系统的应用与开发图10.13温度检测子程序流程图图10.13温度检测子程序流程图第10章 单片机系统的应用与开发温度检测子程序TIN:TIN:MOVTEMP1,#00H;清检测温度缓冲区MOVTEMP0,#00HMOVR2,#04H;取样次数送R2MOVDPTR,#7FF8H;指向A/D转换器0通道LTIN1:MOVXDPTR,A;启动转换HERE:JNBIE1,HERE;等待转换结束MOVXA,DPTR;读转换结果温度检测子程序TIN:第10章 单片机系统的应用与开发ADDA,TEMP0;累加(双字节加法)MOV TEMP0,AMOV A,#00HADDCA,TEMP1MOV TEMP1,ADJNZ R2,LTIN1;4次采样完否,未完继续CLRC;累加结果除2(双字节除法)MOV A,TEMP1ADDA,TEMP0;累加(双字节加法)第10章 单片机系统的应用与开发RRCAMOV TEMP1,AMOV A,TEMP0RRCAMOV TEMP0,ARETRRCA第10章 单片机系统的应用与开发4)温度控制模块温度控制模块将当前温度与预置温度比较,当前温度小于预置温度时,继电器闭合,接通电阻丝加热;当前温度大于预置温度时,继电器断开,停止加热;当二者相等时电炉保持原来状态;当前温度降低到比预置温度低2时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热。由于电炉开始加热时,当前温度可能低于报警下限,为了防止误报,在未达到预置温度时,不允许报警,为此设置了报警允许标志F0。模块流程见图10.14。4)温度控制模块第10章 单片机系统的应用与开发图10.14温度控制流程图图10.14温度控制流程图第10章 单片机系统的应用与开发温度控制子程序CONT:CONT:MOV A,TEMP0;当前温度-预置温度(双字节减)CLRCSUBB A,ST0MOV B,A;低8位相减的差值暂存BMOV A,TEMP1SUBB A,ST1温度控制子程序CONT:第10章 单片机系统的应用与开发JNCLOFF;无借位,表示当前温度预置温度,转LOFFJNBF0,LON;当前温度预置温度,判是否达到过预置温度MOV A,B;若达到过预置温度,判二者差值是否大于2CLRCSUBB A,#02HJNCACC.7,LOFF;差值不大于2,转LOFFLON:CLRP1.7;开电炉SJMPEXIT;返回JNCLOFF;无借位,表第10章 单片机系统的应用与开发LOFF:SETB F0;设置允许报警标志SETB P1.7;关电炉EXIT:RET在此,读者也可自行加入PID算法程序来实现PID控制。5)温度越限报警模块温度越限报警模块报警上限温度值为预置温度+5,即当前温度上升到高于预置温度+5时报警,并停止加热;报警下限温度值为预置温度-5,即在当前温度下降到低于预置温度-5,且报警允许时报警,这是为了防止开始从较低温度加温时误报警。报警的同时也关闭电炉。图10.15为报警子程序流程图。LOFF:SETB F0;设置允许报警标志第10章 单片机系统的应用与开发图10.15报警子程序流程图图10.15报警子程序流程图第10章 单片机系统的应用与开发报警子程序ALARMALARM:MOV A,TEMP0;当前温度低字节ACLRCSUBB A,ST0;(当前温度低字节-预置温度低字节)AMOV B,A;低字节相减结果送B暂存MOV A,TEMP1;当前温度高字节ASUBB A,ST1;(当前温度高字节-预置温度高字节)A报警子程序ALARM第10章 单片机系统的应用与开发JCLA0;有借位,当前温度小于预置温度转LA0SETBF0;当前温度预置温度,允许报警AJMPLA1LA0:MOVA,ST0;预置温度低字节ACLRCSUBBA,TEMP0;(预置温度低字节-当前温度低字节)AMOVB,A;低字节相减结果送B暂存MOVA,ST1;预置温度高字节ASUBBA,TEMP1;(预置温度高字节-当前温度高字节)AJCLA0;有借位,第10章 单片机系统的应用与开发LA1:XCHA,B;高低字节互换,判断相减结果是否大于5CLRCSUBBA,#05H;(低字节差-5)AXCHA,B;(低字节差-5)B,高字节差ASUBBA,#00H;(高字节差-0)A(因为5的高字节为0)JCLA2;相减结果小于5,不报警返回JNBF0,LA2;相减结果5,判是否允许报警,不允许则返回LA1:XCHA,B;高第10章 单片机系统的应用与开发CLRP1.6;启动报警SETB P1.7;关电炉LCALLD0.6s;报警延时0.6sSETB P1.6;关报警LA2:RETD0.6s:(略);延时0.6s子程序CLRP1.6第10章 单片机系统的应用与开发6)主程序和中断服务子程序主程序和中断服务子程序主程序采用中断嵌套方式设计,各功能模块可直接调用。主程序完成系统的初始化,温度预置及其合法性检测,预置温度的显示及定时器0设置。定时器0中断服务子程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动A/D转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出可控硅的控制脉冲等)。中断由定时器0产生,根据需要每隔15s中断一次,即每15s采样控制一次。但系统采用6MHz晶振,最大定时为130ms,为实现15s定时,这里另行设了一个软件计数器。主程序和中断服务子程序的流程图如图10.16所示。6)主程序和中断服务子程序第10章 单片机系统的应用与开发图10.16系统程序总体结构框图图10.16系统程序总体结构框图第10章 单片机系统的应用与开发主程序MAIN:(数据缓冲区的定义和初始化部分从略)ORG0000HAJMPMAINORG000BHAJMPPT0ORG0030HMAIN:MOV SP,#59H;设定堆栈指针MOVTMOD,#01H;定时器0初始化主程序MAIN:(数据缓冲区的定义和初始化部分从略)第10章 单片机系统的应用与开发MOVTL0,#0B0H;定时器定时时间100msMOV
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


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

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


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