单片机应用系统开发的一般方法_精品文档PPT推荐.ppt

上传人:b****2 文档编号:15447631 上传时间:2022-10-31 格式:PPT 页数:193 大小:1.13MB
下载 相关 举报
单片机应用系统开发的一般方法_精品文档PPT推荐.ppt_第1页
第1页 / 共193页
单片机应用系统开发的一般方法_精品文档PPT推荐.ppt_第2页
第2页 / 共193页
单片机应用系统开发的一般方法_精品文档PPT推荐.ppt_第3页
第3页 / 共193页
单片机应用系统开发的一般方法_精品文档PPT推荐.ppt_第4页
第4页 / 共193页
单片机应用系统开发的一般方法_精品文档PPT推荐.ppt_第5页
第5页 / 共193页
点击查看更多>>
下载资源
资源描述

单片机应用系统开发的一般方法_精品文档PPT推荐.ppt

《单片机应用系统开发的一般方法_精品文档PPT推荐.ppt》由会员分享,可在线阅读,更多相关《单片机应用系统开发的一般方法_精品文档PPT推荐.ppt(193页珍藏版)》请在冰豆网上搜索。

单片机应用系统开发的一般方法_精品文档PPT推荐.ppt

第9章单片机系统的应用与开发方案二:

软件控制。

利用MCS-51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。

该方案节省硬件成本,且能够使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,因此本系统将采用软件方法实现计时。

2.键盘键盘/显示方案显示方案对于实时时钟而言,显示显然是另一个重要的环节。

如前所述,通常有两种显示方式:

动态显示和静态显示。

方案一:

串口扩展,LED静态显示。

第9章单片机系统的应用与开发如图9.1(a)所示,该方案占用口资源少,采用串口传输实现静态显示,显示亮度有保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行口资源较少的场合。

方案二:

8155扩展,LED动态显示。

如图9.1(b)所示,该方案硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。

第9章单片机系统的应用与开发图9.1显示方式框图(a)静态显示框图;

(b)动态显示框图第9章单片机系统的应用与开发9.1.3硬件设计硬件设计1.电路原理图电路原理图电脑钟电路的核心是89C51单片机,其内部带有4KB的FLASHROM,无须外扩程序存储器;

电脑时钟没有大量的运算和暂存数据,现有的128B片内RAM已能满足要求,也不必外扩片外RAM。

系统配备6位LED显示和43键盘,采用8155作为键盘/显示接口电路。

利用8155的A口作为6位LED显示的位选口,其中,PA0PA5分别对应位LED0LED5,B口则作为段选口,C口的低3位为键盘输入口,对应02行,A口同时用作键盘第9章单片机系统的应用与开发的列扫描口。

由于采用共阴极数码管,因此A口输出低电平选中相应的位,而B口输出高电平点亮相应的段。

P1.0接蜂鸣器,低电平驱动蜂鸣器鸣叫启闹。

由图9.2可见,8155的地址分配如下:

控制寄存器:

8000H,定义为PORTA口:

8001H,定义为PORTAB口:

8002H,定义为PORTBC口:

8003H,定义为PORTC如果使用本书配备的实验板实现该电脑钟,需将8155地址改变为第9章单片机系统的应用与开发图9.2电脑钟硬件原理图第9章单片机系统的应用与开发控制寄存器:

4400HA口:

4401HB口:

4402HC口:

4403H并通过引出的P1口外接一个蜂鸣器电路,或是用P1口上的发光二极管模拟闹钟功能。

需要指出的是,实验板使用的是8031芯片,使用外扩程序存储器EPROM2764,因此其脚必须接地。

第9章单片机系统的应用与开发2.系统工作流程系统工作流程本电脑钟具备以下功能:

(1)时钟显示:

6位LED从左到右依次显示时、分、秒,采用24小时计时。

(2)键盘功能:

采用43键盘,包括:

09数字键,键号为00H09HC/R键时间设定/启动计时键,键号为0AHALM键闹钟设置/启闹/停闹键,键号为0BH

(1)时间显示:

上电后,系统自动进入时钟显示,从00:

00:

00开始计时,此时可以设定当前时间。

第9章单片机系统的应用与开发

(2)时间调整:

按下C/R键,系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间。

按下09数字键可以顺序设置时、分、秒,并在相应LED管上显示设置值,直至6位设置完毕。

系统将自动由设定后的时间开始计时显示。

(3)闹钟设置/启闹/停闹:

按下ALM键,系统继续计时,显示00:

00,进入闹钟设置状态,等待键入启闹时间。

按下09数字键可以顺序进行相应的时间设置,并在相应LED管上显示设置值,直至6位设置完毕。

这将启动定时启闹功能,并恢复时间显示。

定时时间到,蜂鸣器鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。

第9章单片机系统的应用与开发9.1.4软件设计软件设计1.系统资源分配系统资源分配为方便阅读程序,先对系统的资源分配加以说明。

(1)定时器:

定时器0用作时钟定时,按方式1工作,每隔100ms溢出中断一次。

(2)片内RAM及标志位的分配与定义见表9.1。

第9章单片机系统的应用与开发地地址址功功能能名名称称初始化值初始化值30H35H显示缓冲区,小时、分、秒(高位显示缓冲区,小时、分、秒(高位在前)在前)DISP0DISP500H3CH3FH计时缓冲区,时、分、秒、计时缓冲区,时、分、秒、100msHOUR,MIN,SEC,MSEC00H40H42H闹钟值寄存区,时、分、秒闹钟值寄存区,时、分、秒AHOUR,AMIN,ASECFFH50H7FH堆栈区堆栈区PSW.5计时显示允许位(计时显示允许位(1:

禁止,:

禁止,0:

允:

允许)许)F00PSW.1闹钟标志位(闹钟标志位(1:

正在闹响,:

正在闹响,0:

未:

未闹响)闹响)F10表表9.1电子钟控制软件片内电子钟控制软件片内RAM及标志位分配表及标志位分配表第9章单片机系统的应用与开发2.软件流程软件流程根据上述工作流程,软件设计可分为以下几个功能模块:

(1)主程序:

初始化与键盘监控。

(2)计时:

为定时器0中断服务子程序,完成刷新计时缓冲区的功能。

(3)时间设置与闹钟设置:

由键盘输入设置当前时间与定时启闹时间。

(4)显示:

完成6位动态显示。

第9章单片机系统的应用与开发(5)键盘扫描:

判断是否有键按下,并求取键号。

(6)定时比较:

判断启闹时间到否?

如时间到,则启动蜂鸣器鸣叫。

(7)其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性检测等。

下面分模块进行软件设计:

(1)主程序模块MAIN:

流程图如图9.3所示。

(2)计时程序模块CLOCK:

流程图如图9.4所示。

第9章单片机系统的应用与开发图9.3主程序流程图第9章单片机系统的应用与开发图9.4计时程序流程图第9章单片机系统的应用与开发如前所述,系统定时采用定时器与软件循环相结合的方法。

定时器0每隔100ms溢出中断一次,则循环中断10次延时时间为1s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:

00。

设系统使用6MHz的晶振,定时器0工作在方式1,则100ms定时对应的定时器初值可由下式计算得到:

定时时间=(216-定时器0初值)(12/fosc)因此,定时器0初值=3CB0H,即TH0=3CH,TL0=0B0H第9章单片机系统的应用与开发当系统使用其它频率的晶振时,可以由上式计算相应的定时器0初值,也可以改变定时时间。

例如当系统晶振为12MHz时,同样的初值对应的定时时间为50ms,则循环中断次数为20次时,延时时间为1s。

第一,定时器溢出产生中断请求,CPU并不一定立即响应中断,而可能需要延迟一个中断响应时间之后才能响应中断,中断响应时间大约为38个机器周期。

显然,这将在定时时间中加入额外的延时时间,导致计时误差。

第9章单片机系统的应用与开发为了保证计时精度,必须采取措施进行补偿。

我们采用增大重装的定时器0初值的方法来减少定时器0定时时间。

具体应调整为多大,一般需要通过调试来确定。

经测试,定时器0重装初值设为3CB7H3CBFH可以满足精度要求。

第二,时间是按十进制递增,而MCS-51单片机只有二进制加法指令,因此用加法指令计时必须进行二十进制转换。

(3)时间设置程序和闹钟定时程序模块MODIFY:

流程图如图9.5所示。

第9章单片机系统的应用与开发图9.5时间设置/闹钟定时流程图第9章单片机系统的应用与开发将键盘输入的6位时间值合并为3位压缩BCD码(时、分、秒)送入计时缓冲区和闹钟值寄存区,作为当前计时起始时间或闹钟定时时间。

该模块的入口为计时缓冲区或闹钟值寄存区的首地址,置入R1中。

程序调用一个键盘设置子程序KEYIN(如图9.6所示)来将键入的6位时间值送入键盘设置缓冲区,然后用合字子程序COMB将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区。

该程序同时作为时间值合法性检测程序,若键盘输入的小时值大于23,分和秒值大于59,则不合法,将取消本次设置,清零重新开始计时。

第9章单片机系统的应用与开发图9.6键盘设置子程序流程图第9章单片机系统的应用与开发图9.7键盘扫描流程图(4)键盘扫描程序模块KEYSCAN:

流程图如图9.7所示。

第9章单片机系统的应用与开发判断是否有键按下,无键按下则循环等待;

有键按下则求取键号并将键号送A累加器返回。

程序中的去抖延时和循环等待延时都用DISPLAY子程序来代替,从而保证随时刷新显示。

键盘扫描程序在第7章中有详细的叙述,在此不再赘述。

(5)显示程序模块DISPLAY:

流程图如图9.8所示。

将显示缓冲区中的6位BCD码用动态扫描方式显示。

为此,必须首先将3字节计时缓冲区中的时、分、秒压缩BCD码拆分为6字节(百位、十位分别占有1字节)BCD码,这一功能由拆字子程序SEPA来实现。

第9章单片机系统的应用与开发图9.8显示流程图第9章单片机系统的应用与开发需要注意的是,当按下时间或闹钟设置键后,在6位设置完成之前,应显示键入的数据,而不显示当前时间。

为此,我们设置了一个计时显示允许标志位F0,在时间/闹钟设置期间F0=1,不调用SEPA,即调用SEPA刷新显示缓冲区的前提条件是F0=0。

(6)定时比较程序模块ALARM:

流程图如图9.9所示。

将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的值)比较,二者完全相同时,启动蜂鸣器鸣叫,并置位闹钟标志位。

返回后,待重新按下ALM键停闹,并清零闹钟标志。

第9章单片机系统的应用与开发图9.9定时比较流程图第9章单片机系统的应用与开发(7)拆字程序SEPA与合字程序COMB:

如前所述,拆字程序的功能是将3字节计时缓冲区中的时、分、秒压缩BCD码拆分为6字节(百位、十位、个位分别占有2字节)BCD码并刷新显示缓冲区;

合字程序的功能是将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区,同时检测时间值的合法性。

下面给出各模块的源程序。

*主程序MAIN*第9章单片机系统的应用与开发ORG0000HAJMPMAINORG000BHAJMPCLOCKORG0030HPORTEQU8000HPORTAEQU8001HPORTBEQU8002H第9章单片机系统的应用与开发PORTCEQU8003HDISP0EQU30HDISP1EQU31HDISP2EQU32HDISP3EQU33HDISP4EQU34HDISP5EQU35HHOUREQU3CH第9章单片机系统的应用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1