单片机应用设计课件

上传人:我*** 文档编号:144673860 上传时间:2020-09-13 格式:PPT 页数:190 大小:883KB
返回 下载 相关 举报
单片机应用设计课件_第1页
第1页 / 共190页
单片机应用设计课件_第2页
第2页 / 共190页
单片机应用设计课件_第3页
第3页 / 共190页
单片机应用设计课件_第4页
第4页 / 共190页
单片机应用设计课件_第5页
第5页 / 共190页
点击查看更多>>
资源描述

《单片机应用设计课件》由会员分享,可在线阅读,更多相关《单片机应用设计课件(190页珍藏版)》请在金锄头文库上搜索。

1、第10章 单片机应用设计与实例,10.1 课程设计电脑钟的设计与制作 10.2 应用系统实例单片机温度控制系统 10.3 单片机应用系统开发的一般方法 10.4 单片机应用系统实用技术 10.5 抗干扰设计 本章小结 习题10,10.1 课程设计电脑钟的设计与制作 10.1.1 设计要求 设计并制作出具有如下功能的电脑钟: (1) 自动计时,由6位LED显示器显示时、分、秒。 (2) 具备校准功能,可以直接由09数字键设置当前时间。 (3) 具备定时启闹功能。 (4) 一天时差不超过1 s。,10.1.2 总体方案 1. 计时方案 方案一:采用实时时钟芯片。 针对计算机系统对实时时钟功能的普遍

2、需求,各大芯片生产厂家陆续推出了一系列的实时时钟集成电路,如DS1287、DS12887、DS1302、PCF8563等。这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据并进行显示,因此计时功能的实现无需占用CPU的时间,程序简单。此外,实时时钟芯片多数带有锂电池作后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用作实时测控系统的采样信号等;有的实时时钟芯,片内部还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。由于功能完善,精度高,软件程序设计相对简单,且计时不占用

3、CPU时间,因此,这一类专用芯片在工业实时测控系统中多被采用。 方案二:软件控制。 利用MCS-51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能够使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,因此本系统将采用软件方法实现计时。,方案一:串口扩展,LED静态显示。 如图10.1(a)所示,该方案占用口资源少,利用串口扩展并口,实现静态显示,显示亮度有保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行口资源较少的场合。 方案二:直接接口,LED动态显示。 如图10.1(b)所示,直接使用单片机的并行口作为显示接口,无需外扩接口

4、芯片,但占用口资源较多,且动态扫描的显示方式需占用CPU较多的时间,在单片机没有太多外围接口及实时测控任务的情况下可以采用。,图10.1 显示方式框图 (a) 静态显示框图;(b) 动态显示框图,10.1.3 硬件设计 1. 电路原理图 电脑钟硬件原理图见图10.2。电脑钟电路的核心是AT89S51单片机,其内部带有4 KB的Flash ROM,无需外扩程序存储器;电脑时钟没有大量的运算和暂存数据,现有的128B片内RAM已能满足要求,也不必外扩片外RAM。系统配备6位LED显示和43键盘,采用单片机的并行口作为键盘/显示器接口电路。利用P0口作为6位LED显示的位选口,其中,P0.0P0.5

5、分别对应位LED0LED5,P1口则作为段选口,P2口的低3位为键盘输入口,对应02行,P0口同时用作键盘的列扫描口。由于采用共阴极数码管,因此P0口输出低电平选中相应的位,而P1口输出高电平点亮相应的段。P2.7接蜂鸣器,低电平驱动蜂鸣器鸣叫启闹。,图10.2 电脑钟硬件原理图,2. 系统工作流程 本电脑钟具备以下功能: (1) 时钟显示:6位LED从左到右依次显示时、分、秒,采用24小时计时。 (2) 键盘功能:采用43键盘,包括: 09:数字键,键号为00H09H。 C/R键:时间设定/启动计时键,键号为0AH。 ALM键:闹钟设置/启闹/停闹键,键号为0BH。 其工作流程如下: (1)

6、 时间显示:上电后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间。,(2) 时间调整:按下C/R键,系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间。按下09数字键可以顺序设置时、分、秒,并在相应LED管上显示设置值,直至6位设置完毕。系统将自动由设定后的时间开始计时显示。 (3) 闹钟设置/启闹/停闹:按下ALM键,系统继续计时,显示00:00:00,进入闹钟设置状态,等待键入启闹时间。按下09数字键可以顺序进行相应的时间设置,并在相应的LED管上显示设置值,直至6位设置完毕。这将启动定时启闹功能,并恢复时间显示。定时时间到,则蜂鸣器鸣叫,直至重新

7、按下ALM键停闹,并取消闹钟设置。,10.1.4 软件设计 1. 系统资源分配 为方便阅读程序,先对系统的资源分配加以说明。 (1) 定时器:定时器0用作时钟定时,按方式1工作,每隔100 ms溢出中断一次。 (2) 片内RAM及标志位的分配与定义见表10.1。,表10.1 电子钟控制软件片内RAM及标志位分配表,2. 软件流程 根据上述工作流程,软件设计可分为以下几个功能模块: (1) 主程序:初始化与键盘监控。 (2) 计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。 (3) 时间设置与闹钟设置:由键盘输入设置当前时间与定时启闹时间。 (4) 显示:完成6位动态显示。 (5) 键

8、盘扫描:判断是否有键按下,并求取键号。 (6) 定时比较:判断启闹时间到否,如时间到,则启动蜂鸣器鸣叫。,(7) 其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性检测等。 下面分模块进行软件设计: (1) 主程序模块MAIN:流程图如图10.3所示。 (2) 计时程序模块CLOCK:流程图如图10.4所示。 如前所述,系统定时采用定时器与软件循环相结合的方法。定时器0每隔100 ms溢出中断一次,则循环中断10次延时时间为1 s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00。,设系统使用6 MHz的晶振,定时器0工作在方式1,则100 ms

9、定时对应的定时器初值可由下式计算得到: 定时时间=(216定时器0初值)(12/fosc) 因此,定时器0初值=3CB0H,即TH0=3CH,TL0=0B0H 当系统使用其它频率的晶振时,可以由上式计算相应的定时器0初值,也可以改变定时时间。例如当系统晶振为12 MHz时,同样的初值对应的定时时间为50 ms,则循环中断次数为20次时,延时时间为1 s。,图10.3 主程序流程图,图10.4 计时程序流程图,这里有两个问题需要特别重视: 第一,定时器溢出产生中断请求,CPU并不一定立即响应中断,而可能需要延迟一个中断响应时间之后才能响应中断,中断响应时间大约为38个机器周期。显然,这将在定时时

10、间中加入额外的延时时间,导致计时误差。为了保证计时精度,必须采取措施进行补偿。我们采用增大重装的定时器0初值的方法来减少定时器0的定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,定时器0重装初值设为3CB7H3CBFH就可以满足精度要求。 第二,时间是按十进制递增的,而MCS-51单片机只有二进制加法指令,因此用加法指令计时必须进行二十进制转换。,(3) 时间设置程序和闹钟定时程序模块MODIFY:流程图如图10.5所示。 将键盘输入的6位时间值合并为3位压缩BCD码(时、分、秒)并送入计时缓冲区和闹钟值寄存区,作为当前计时起始时间或闹钟定时时间。该模块的入口为计时缓冲区或闹钟值寄

11、存区的首地址,将其置入R1中。程序调用一个键盘设置子程序KEYIN(其流程图如图10.6所示)来将键入的6位时间值送入键盘设置缓冲区,然后用合字子程序COMB将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,并送入计时缓冲区或闹钟值寄存区。该程序同时作为时间值合法性检测程序,可完成检测功能:若键盘输入的小时值大于23,分和秒值大于59,则不合法,将取消本次设置,清0重新开始计时。,图10.5 时间设置/闹钟定时流程图,图10.6 键盘设置子程序流程图,(4) 键盘扫描程序模块KEYSCAN:流程图如图10.7所示。 判断是否有键按下:无键按下则循环等待;有键按下则求取键号并将键号送A累加

12、器返回。程序中的去抖延时和循环等待延时都用DISPLAY子程序来代替,从而保证随时刷新显示。键盘扫描程序在第6章中有详细的叙述,在此不再赘述。 (5) 显示程序模块DISPLAY:流程图如图10.8所示。,图10.7 键盘扫描流程图,图10.8 显示流程图,将显示缓冲区中的6位BCD码用动态扫描方式显示。为此,必须首先将3字节计时缓冲区中的时、分、秒压缩BCD码拆分为6字节(时、分、秒的十位、个位分别占用1字节)BCD码,这一功能由拆字子程序SEPA来实现。 需要注意的是,当按下时间或闹钟设置键后,在6位设置完成之前,应显示键入的数据,而不显示当前时间。为此,我们设置了一个计时显示允许标志位F

13、0,在时间/闹钟设置期间F0=1,不调用SEPA,即调用SEPA刷新显示缓冲区的前提条件是F0=0。动态显示程序在第6章中已给出,在此不再赘述。 (6) 定时比较程序模块ALARM:流程图如图10.9所示。,图10.9 定时比较流程图,(7) 拆字程序SEPA与合字程序COMB:如前所述,拆字程序的功能是将3字节计时缓冲区中的时、分、秒压缩BCD码拆分为6字节(时、分、秒的十位、个位分别占用1字节)BCD码并刷新显示缓冲区;合字程序的功能是将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区,同时检测时间值的合法性。,下面给出各模块的源程序。 ;*主程序MAIN

14、* ORG0000H AJMPMAIN ORG 000BH AJMPCLOCK ORG 0030H DISP0 EQU 30H DISP1 EQU 31H DISP2 EQU 32H DISP3 EQU 33H DISP4 EQU 34H,DISP5 EQU 35H HOUR EQU 3CH MIN EQU 3DH SEC EQU 3EH MSEC EQU 3FH AHOUR EQU 40H AMINEQU 41H ASEC EQU 42H F1 BIT PSW.1 MAIN:MOVSP,#50H;设置堆栈区 CLR F1;清0闹钟标志位 CLR F0;允许计时显示,MOV AHOUR,#0F

15、FH MOV AMIN,#0FFH MOV ASEC,#0FFH MOV R7,#10H MOV R0,#DISP0 CLR A LOOP: MOV R0,A INCR0 DJNZ R7,LOOP ;设置初值 MOVTMOD,#01H MOVTL0,#0B0H,MOVTH0,#3CH;定时器0初始化,定时 ;时间100 ms SETBTR0 ;启动定时器 SETBEA SETBET0 ;开中断 BEGIN: ACALLALARM ;调用定时比较 ACALLKEYSCAN ;调用键盘扫描 CJNEA,#0AH,NEXT1 ;是CLR/RST键否? CLRTR0 ;是则暂时停止计时 MOVR1,#

16、HOUR;地址指针指向计时缓冲 ;区首地址 AJMPMOD,NEXT1:CJNEA,#0BH,BEGIN;是ALARM键否? JBF1,NEXT2;闹钟正在闹响否? MOVR1,#AHOUR;地址指针指向闹钟值寄 ;存区首地址 MOD:SETBF0;置位时间设置/闹钟定时标志, ;禁止显示计时时间 ACALLMODIFY ;调用时间设置/闹钟定时程序 SETBTR0;重新开始计时 CLRF0;清0时间设置/闹钟定时标志,恢复 ;显示计时时间 AJMPBEGIN NEXT2: SETBP2.7;闹钟正在闹响,停闹 CLRF1;清0闹钟标志 AJMPBEGIN,;*时间设置/闹钟定时模块MODIFY* MODIFY:ACALLKEYIN;调用键盘设置子程序 ACALLCOMB;调用合字子程序 RET ;*键盘设置子程序KEYIN* KEYIN:PUSHPSW PUSHA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号