自学考试政治《毛邓三》知识点习题10文档格式.docx
《自学考试政治《毛邓三》知识点习题10文档格式.docx》由会员分享,可在线阅读,更多相关《自学考试政治《毛邓三》知识点习题10文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
![自学考试政治《毛邓三》知识点习题10文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/3/99441e07-af03-44ef-91b2-bcf140ad5c12/99441e07-af03-44ef-91b2-bcf140ad5c121.gif)
显示电路用8个共阴数码管分别显示,星期(年份),小时、分钟(月份)和秒(日),通过动态扫描进行显示,从而避免了译码器的使用,同时节约了I/0端口,使电路更加简单。
单片机采用AT89c51系列,这种单片机应用简单,适合电子钟设计。
电路的总体设计框架如下:
2.2各个部分方案组成
2.2.1单片机的型号选择
通过对多种单片机性能的分析,最终认为AT89C51是最理想的电子时钟开发芯片。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。
2.2数码管连接原理
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。
而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。
即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。
2.3数码管显示原理
数码管显示方法可分为静态显示和动态显示两种。
静态显示就是数码管的8段输入及其公共端电平一直有效。
动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;
每位数码管的阳极连在一起组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。
第三章系统硬件设计
3.1AT89C51最小系统
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.
对51系列单片机来说,最小系统一般应该包括:
单片机、时钟电路、复位电路.
下面给出一个51单片机的最小系统电路图.
3.2时钟芯片DS1302模块的电路及原理
DS1302的RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
其管脚图如下:
DS1302管脚图
各引脚功能:
Vcc1为后备电源,VCC2为主电源,X1和X2是振荡源,
SCLK为输入端
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;
其次,RST提供终止单字节或多字节数据的传送手段。
3.3显示电路
3.3.1LED灯显示
Led灯原理图
本次课程设计中,“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,单片机可工作。
要用外加电源和分压电阻来控制低电平驱动点亮,因为单片机不能直接高电平驱动LED灯。
如图D1-D8和R1、R2以及R6-R11连接到单片机IO口,当P1口某脚变低时相应LED发光。
实现LED灯的闪烁,只需利用编程方法依次从低位到高位逐个变为低电平,等待少许时刻再变高即可。
3.3.2数码管显示
为了能使电路简单我们采用数码管动态显示方式。
数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。
数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。
若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。
数码管显示图
3.4键盘电路
键盘扫描流程图
在MCS-51系列单片机的指令系统中设有散转指令JMP@A+DPTR,可看成是专门配合键入程序是整个应用程序的核心部分。
键盘的操作,无论是按键或键盘都是利用机械触点的合、断作用。
一个电压信号通过机械触点的闭合、断开过程。
由于机械触点的弹性作用,在闭合及断开瞬间均有抖动过程,会出现一系列负脉冲。
抖动时间的长短,与开关的机械特性有关,一般为5—10ms。
一组按键或键盘都要通过I/O口线查询按键的开关状态。
且独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。
3.5蜂鸣器
蜂鸣器原理图
蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的。
因此需要一定的电流才能驱动它,单片机IO口输出的电流较小,其TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
程序中通过改变单片机对应IO口输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
另外,改变其占空比,也可以控制蜂鸣器的声音大小。
可以有两种驱动方式,即用PNP或NPN三极管电流放大电路驱动。
本电路通过一个PNP三极管9012来放大驱动蜂鸣器,当输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;
当输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制IO口输出的电平来使蜂鸣器发出声音和关闭,从而实现各种可能音响的产生。
启动报警子程序如下:
停止报警子程序如下:
START:
SETBP1.0STOP:
CLRP1.0
RETRET
第四章系统软件设计
4.1主程序流程图
第一个键为设置/确认键,设置时、分、秒,确认当前设置,并写入DS1302中。
第二个键为移位键,按一次,设置秒;
在按一次,设置分;
在按一次,设置时;
再按一次,又设置秒了。
第三个键为加一键,按一次,加一,连续按0.3秒递增,秒/分60循环时24循环。
第四个键为显示转换键,按一次改变显示的方式,显示时、分、秒还是年、月、日。
4.2主程序程序设计
4.3子程序主要模块
4.3.1延时模块
数码管显示动态扫描时,用到延时程序,这里使用延迟1ms的程序,此程序需要反复调用程序如下:
D_1MS:
MOVR7,#2
D_5:
MOVR2,#250
DJNZR2,$
DJNZR7,D_5
RET
除数码管动态扫描外,数码管的闪烁提示,以及音乐模块也用到了延时,只是延时的长短不同罢了。
4.3.2中断服务程序
本实验中,计数器T0,T1中断都有运用,其中T0中断为时钟定时所用,T1中断用于音乐播放。
T0的定时长度为0.01s,工作于方式1,计数1次,时长1us,故计数器计数10000次,进入中断,计数初值为65536-10000=55536=#0D8F0,装满定时器需要0.01s的时间,从而100次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。
包括日期显示的功能也是如此。
另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存器,需要时将其进行显示。
以下为定时中断流程图:
NO
YES
计数器T1工作于方式1,当调用响铃程序时,其计数功能开启,为音乐音调不同频率的方波的形成,提供延时。
其中断服务程序就是根据音调改变音乐方波输出口电平的高低,用语句CPL实现。
中断服务程序中日历的实现较为复杂,要考虑平年,闰年,特殊的2月,每月的天数的不尽相同。
具体的逻辑判断方法为:
首先,要考虑年份是不是闰年,闰年的判断方法是:
将年份除以100,若能整除,则将年份除以400,若还能整除,则为闰年,若不能,则为平年;
若不能被100整除,则判断是否能被4整除,若能,则为闰年,若不能则为平年。
只有2月与平、闰年相关,因此在闰年和平年的子程序中,要判断是不是2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。
其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月为每月30天。
日历进位判断流程图如下:
本实验用8个数码管,刚好能显示年,月,日,扫描显示与时间的扫描显示类似。
年比较特殊,由两个寄存器存储,个位,十位为0时,表明年数能被100整除,若此时千位,百位
组成两位数能被4整除,则年数被400整除,为闰年。
若十位,个位组成两位数能被4整除,则年数能被4整除,为闰年。
B.2.3主程序
主程序主要对按键进行扫描,以及判断定时和闹铃时间是否已到,若到则调用相关程序,该段程序如下:
MAIN:
JNBP3.0,DATETZ;
按下0键,显示日期并可对日期进行调整
JNBP3.1,ZSTZ1;
按下1键,显示时间,并可调时
JNBP3.2,NLTZZ;
按下2键,移位键,按一次,设置秒;
JNBP3.3,DSTZ;
按下3键,加一键,按一次,加一,连续递增,秒/分60循环时24循环
JNBP3.4,CESHI;
按下4键,显示转换键,按一次改变显示的方式,显示时、分、秒还是年、月、日。
ACALLDISP;
调用时钟显示子程序
JNBP0.6,RERING;
判断是否开启闹铃重响功能
RE:
JNBP2.7,DSPDKQ;
判断是否开启闹铃功能,没开则去判断定时
FMQPD:
;
判断定时值R4,R3是否到零、闹铃时刻是否已到
MOVA,HOUR;
SUBBA,38H;
JZFEN;
判断小时数是否到闹铃所定时间,若到,则对分进行判断;
若不到,则对定时进行判断
AJMPDSPDKQ
FEN:
MOVA,MINUTE;
SUBBA,37H;
JZMIAO;
判断分是否到闹铃所定时间,若到,则对秒进行判断;
MIAO:
MOVA,SECOND
SUBBA,#0
JZSHENGYIN1;
判断秒是否到闹铃所定时间,若到,则时,分,秒都到达闹铃时刻,进入响铃子程序;
若不到则判断定时
RERING:
闹铃重响判断程序
JNBF0,RE;
标志位F0为0,不进行闹铃重响设定
CPLF0
MOV3CH,#1;
定时判断标志位赋1,定时判断功能开启
JNBP0.7,M1;
闹铃重响间隔时间选取
MOVR4,#0;
闹铃重响间隔30秒
MOVR3,#30
AJMPMAIN
M1:
闹铃重响间隔60秒
MOVR4,#1
MOVR3,#0
DSPDKQ:
判断是否应该进行定时判断
MOVA,3CH;
3CH是引入的判断因子,当其为0时,不对定时时间是否到0进行判断
JNZDSPD2;
当3CH不是0时,跳转到定时判断程序
DSPD2:
MOVA,R4;
JZS_PD;
R4所存定时分数为0,则转而判断R3所存定时秒数
AJMPMAIN;
S_PD:
MOVA,R3;
JNZMAIN;
R4,R3所存参数减为0,定时长度已到
JNBP0.6,SHENGYIN2;
闹铃重响功能开启时,跳入响铃程序
AJMPTISHI;
不是闹铃重响定时,则定时时间到时,跳入提示程序
CESHI:
ACALLRING
SHENGYIN1:
调用响铃子程序
LCALLRING
SHENGYIN2:
SETBF0;
闹铃重响标志位设定
LCALLRING;
响铃
CLRF0;
标志位复位
NLTZZ:
AJMPNLTZ1;
跳入闹铃调整程序
DSTZ:
AJMPDSTZ1;
跳入定时调整程序
DATETZ:
AJMPDATETZ1;
跳入日期调整程序
STOPWATCHTZ:
AJMPSTOPWATCHTZ1;
跳入秒表程序
B.2.4显示子程序
8个数码管轮流进行显示,分别显示1ms,依赖人的视觉暂留效应,给人以数码管持续高亮的错觉。
该段程序如下:
DISP:
时间显示子程序
JNBP3.7,OUT1;
判断节能开关7是否按下,按下则数码管不显示,延长其寿命
MOVDPTR,#LEDTAB
MOVA,SECOND;
显示当前时间秒位
MOVB,#10
DIVAB;
A存十位,B存个位
MOVCA,@A+DPTR
MOVP1,A
CLRSEC_S
ACALLD_1MS;
显示当前时间秒十位
SETBSEC_S
MOVA,B
CLRSEC_G
显示当前时间秒个位
SETBSEC_G
MOVA,MINUTE;
显示当前时间分位
DIVAB
CLRMIN_S
ACALLD_1MS
SETBMIN_S
CLRMIN_G
SETBMIN_G
MOVA,HOUR;
显示当前时间时位
CLRHOU_S
SETBHOU_S
CLRHOU_G
SETBHOU_G
日期的显示,秒表的显示,闪烁的显示程序与以上的的扫描相似,有的以子程序的方式出现,通过子程序调用语句ACALL调用;
有点直接嵌套在相应的程序里面,顺序执行,或者用调转语句AJMP调用。
B.2.5调整程序
时钟包括很多调整,如时间,日期,闹铃,秒表等,本程序,设计了相应的调整程序段,通过对应的按键,程序跳入调整模式或功能模式。
在此着重分析一下闹铃重响以及定时功能的实现过程,这两个功能都灵活运用了标志位。
1,定时功能运用了一个内存地址3CH为标志位,只有3CH中所存值非0时,在主程序中才判断定时是否已到。
3CH值初始化为0,程序开始运行时并不判断定时是否已到。
当通过按键进入定时初值设置,并开始倒计时,3CH的值被赋为1,
当倒计时显示到0时,进入闪烁提示,提示结束后3CH又被赋值为0,程序回到主程序后,不必判断定时是否已到。
但当倒计时未完,按返回键回到主程序时,3CH的值为1,故在主程序判断未完成的定时任务,倒计时到0时调用同一个提示程序,最后仍可保证在主程序不再定时开启时去判断定时,从而节约资源。