基于多功能数字钟单片机毕业论文.docx
《基于多功能数字钟单片机毕业论文.docx》由会员分享,可在线阅读,更多相关《基于多功能数字钟单片机毕业论文.docx(49页珍藏版)》请在冰点文库上搜索。
![基于多功能数字钟单片机毕业论文.docx](https://file1.bingdoc.com/fileroot1/2023-7/8/efac5a34-c66b-4f42-9575-b0302e4c2e59/efac5a34-c66b-4f42-9575-b0302e4c2e591.gif)
基于多功能数字钟单片机毕业论文
基于多功能数字钟单片机毕业论文
2.1MCS-51系列单片机介绍
MCS-51单片机是把那些作为控制应用所必需的基本容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
它们都是通过片单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器(SFR)的集中控制方式。
2.1.1控制器
控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。
单片机执行指令是在控制器的控制下进行的。
首先从程序存储器中读出指令,送指令寄存器保存,然后送至指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制信号,再送到单片机的各个部件去进行相应的操作。
这就是执行一条指令的全过程,执行程序就是不断重复这一过程。
控制器主要包括程序计数器、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路及时序控制逻辑电路。
2.1.2存储器的结构
MCS-51单片机存储器采用的是哈佛结构,即程序存储器空间和数据存储器空间截然分开,程序存储器和数据存储器各有自己的寻址方式,寻址空间和控制系统。
这种结构对于单片机面向控制的实际应用极为方便,有利.在8051/8751弹片击中,不仅在片集成了一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有极强的外存储器的扩展能力,寻址能力分别可达64KB,寻址和操作简单方便.MCS-51的存储器空间可划分为如下几类:
1.程序存储器
单片机系统之所以能够按照一定的次序进行工作,主要是程序存储器中存放了经调试正确的应用程序和表格之类的固定常数。
程序实际上是一串二进制码,程序存储器可以分为片和片外两部分。
8031由于无部存储器,所以只能外扩程序存储器来存放程序。
MCS-51单片机复位后,程序存储器PC的容为0000H,故系统必须从0000H单元开始取指令,执行程序.程序存储器中的0000H地址是系统程序的启动地址.一般在该单元存放一条绝对跳转指令,跳向用户设计的主程序的起始地址。
2.部数据存储器
MCS-51单片机部有128个字节的随机存取存储器RAM,作为用户的数据寄存器,它能满足大多数控制型应用场合的需要,用作处理问题的数据缓冲器。
MCS-51单片机的片存储器的字节地址为00H-7FH.MCS-51单片机对其部RAM的存储器有很丰富的操作指令,从而使得用户在设计程序时非常方便。
地址为00H-1FH的32个单元是4组通用工作寄存器区,每个区含8个8位寄存器,编号为R7-R0。
用户可以通过指令改变PSW中的RS1,RS0这二位来切换当前的工作寄存器区,这种功能给软件设计带来极大的方便,特别是在中断嵌套时,为实现工作寄存器现场容保护提供了极大的方便。
3.特殊功能寄存器(SFR-SpecialFunctionRegister)
特殊功能寄存器反映了MCS-51单片机的状态,实际上是MCS-51单片机各功能部件的状态及控制寄存器.SFR综合的,实际的反应了整个单片机基本系统部的工作状态及工作方式.SFR实质上是一些具有特殊功能的片RAM单元,字节地址围为80H-FFH.特殊功能寄存器的总数为21个,离散的分布在该区域中,其中]有些SFR还可以进行位寻址.128个字节的SFR块中仅有21个字节是由定义的.对于尚未定义的字节地址单元,用户不能作寄存器使用,若访问没有定义的单元,则将得到一个不确定的随机数.
2.1.3并行I/O口
MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。
实际上P0-P3已被归入特殊功能寄存器之列。
这四个口除了按字节寻址以外,还可以按位寻址。
由于它们在结构上有一些差异,故各口的性质和功能有一些差异。
P0口是双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。
P1口是8位准双向I/O口,可驱动4个LS型负载。
P2口是8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。
P3口是8位准双向I/O口,是双功能复用口,可驱动4个LS型TTL负载。
P1口、P2口、P3口各I/O口线片均有固定的上拉电阻,当这3个准双向I/O口做输入口使用时,要向该口先写“1”,另外准双向I/O口无高阻的“浮空”状态,故称为双向三态I/O口。
2.1.4时钟电路与时序
时钟电路用于产生MCS-51单片机工作时所必需的时钟信号。
MCS-51单片机本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,MCS-51单片机应在唯一的时钟信号控制下,严格地按时序执行进行工作,而时序所研究的是指令执行中各个信号的关系。
在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定的操作。
CPU发出的时序信号有两类,一类用于片对各个功能部件的控制,这列信号很多。
另一类用于片外存储器或I/O端口的控制,这部分时序对于分析、设计硬件接口电路至关重要。
这也是单片机应用系统设计者普遍关心的问题。
2.1.5单片机的应用领域
单片机应用领域可以归纳为以下几个方面。
1.智能仪表
用单片机系统取代老式的测量、控制仪表,实现从模拟仪表向数字化、智能化仪表的转化,如各种温度仪表、压力仪表、流量仪表、电能计量仪表等。
2.测控系统
用单片机取代原有的复杂的模拟数字电路,完成各种工业控制、数据采集系统等工作。
3.电能变换
应用单片机设计变频调速控制电路。
4.通信
用单片机开发通信模块、通信器材等。
5.机电产品
应用单片机检测、控制传统的机械产品,使传统的机械产品结构简化,控制智能化,提高了机电产品的可靠性,增强了产品的功能。
6.智能接口
在数据传输中,用单片机实现外部设备与微机通信。
2.2LCD1602概述
LCD液晶显示器种类。
LCD可以分为两种类型,一种是字符模式LCD,另外一种为图形模式LCD。
这里我们介绍的LCD为字符型点矩阵式LCD模式组(LiquidCrystalDislayModule,简称LCM),或称为字符型LCD(如图2-1)。
图2-1
字符型液晶显示模块是一类专门用于显示字幕、数字、符号等点阵型液晶显示模块。
在显示器件的电极图形设计上,它是由若干个5X7或5X11等点阵字符组成的。
每一个点阵字符位都可以显示一个字符。
点阵字符位之间有一个点距地间隔,起到字符间距和行距的作用。
目前,常用的有16字X1行、16字X2行、20字X2行和40字X2行等的字符模组。
这些LCM虽然显示的字数各不相同,但是都具有相同的输入/输出界面。
这里我们以16字X2行字符型液晶显示模块为例,详细介绍字符液晶显示模块的应用技术。
(1)LCD1602液晶引脚功能见表2-1
字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样定义如表2-1所示:
表2-1
(2)LCD1602置了DDRAM、CGROM和CGRAM。
DDRAM就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下表:
表2-2
也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。
但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。
那么一行可有40个地址呀?
是的,在1602中我们就用前16个就行了。
第二行也一样用前16个地址。
对应如下:
DDRAM地址与显示位置的对应关系
我们知道文本文件中每一个字符都是用一个字节的代码记录的。
一个汉字是用两个字节的代码记录。
在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。
什么是字模?
就代表了是在点阵屏幕上点亮和熄灭的信息数据。
例如“A”
字的字模:
01110 ○■■■○
10001 ■○○○■
10001 ■○○○■
10001 ■○○○■
11111 ■■■■■
10001 ■○○○■
10001 ■○○○■
上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。
看出是个“A”字了吗?
在文本文件中“A”字的代码是41H,PC收到41H的代码后就去字模文件中将代表A字的这一组数据送到显卡去点亮屏幕上相应的点,你就看到“A”这个字了。
刚才我说了想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码41H就行了,可41H这一个字节的代码如何才能让LCD模块在屏幕的阵点上显示“A”字呢?
同样,在LCD模块上也固化了字模存储器,这就是CGROM和CGRAM。
HD44780置了192个常用字符的字模,存于字符产生器CGROM(CharacterGeneratorROM)中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM(CharacterGeneratorRAM)。
下图说明了CGROM和CGRAM与字符的对应关系。
表2-3
从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为0001,合起来就是01000001,也就是41H。
可见它的代码与我们PC中的字符代码是基本一致的。
因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1='A'这样的方法。
PC在编译时就把“A”先转为41H代码了。
字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。
0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。
2.3DS18B20概述
2.3.1DS18B20封装图及实物图
图2-1
DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
2.3.2DS18B20的主要特性
1.1、适应电压围更宽,电压围:
3.0~5.5V,在寄生电源方式下可由数据线供电
1.2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
1.3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
1.4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路
1.5、温围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
1.6、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温
1.7、在9位分辨率时最多在93.75ms把温度转换为数字,12位分辨率时最多在750ms把温度值转换为数字,速度更快
1.8、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
1.9、负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
2.3.3应用围
2.1该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域
2.2轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。
2.3汽车空调、冰箱、冷柜、以及中低温干燥箱等。
2.3.4DS18B20部结构
图2-2
2.3.5DS1820使用中注意事项
DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
6.1、较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。
6.2、在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。
当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
6.3、连接DS1820的总线电缆是有长度限制的。
试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。
当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。
这种情况主要是由总线分布电容使信号波形产生畸变造成的。
因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
6.4、在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。
这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。
测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地
2.4单片机最小系统与复位电路设计
2.4.1单片机最小系统
最小系统就是单片机在发挥具体测控功能时所必须的组成部分。
如图2-1所示为最小系统方框图:
图2-1
2.4.2复位电路
复位电路产生复位信号,复位信号送入RST后还要送至片的施密特触发器,由片复位电路在每个机器周器的S5P2时刻对触发器输出采样信号,然后由部复位电路产生复位操作所要的信号。
一般的复位电路可分为上电自动复位和按键复位,我们在此选用的是上电复位。
上电自动复位原理:
RST引脚是复位信号的输入端,只要高电平的复位信号持续两个机器周期以上的有效时间,就可以使单片机上电复位。
上电自动复位是通过电容充电实现的,上电瞬间,RST端电位与Vcc相同,随充电电流的减少,RST的电位逐渐下降,直到复位信号无效。
按键复位在此不在作过多的介绍,其原理和上电复位是相同的。
但其采用的是脉冲复位电路和电平复位电路两种。
复位电路和单片机最小系统如图2-2所示:
图2-2
2.5LCD显示电路
图2-3
2.6报警电路的设计
2.6.1.灯报警
图2-4
注:
(1)正常的时候绿灯常亮,红灯常灭。
一旦出现高温超过设定温度时绿灯熄灭,红灯闪烁。
当温度降低到设定温度时,红灯熄灭绿灯正常亮。
(2)正常的时候绿灯常亮,红灯常灭。
设定闹铃时间后,一旦时间过点时绿灯将闪烁不停直到复位键按下。
2.6.2蜂鸣器报警(下图)
图2-5
注:
当温度过高或者时间过点时蜂鸣器将会响个不停直到复位键按下后才停止响。
2.7键盘控制电路(下图)
图2-6
2.8多功能数字钟总体电路图(下图)
图2-7
第三章软件设计
3.1系统软件设计总流程图
由于定时方式2定时较精确所以选择方式2;
方式2定时最大时间为256us较小,所以需要另外用计数的方式达到定时1S的目的。
本设计中用的为12MHZ的晶振,一个机器周期为1us
开始及初始化程序如下:
START:
MOV40H,#55H;秒
MOV41H,#59H;分
MOV42H,#23H;时
MOV43H,#10H;日
MOV44H,#08H;月
MOV45H,#10H;年低位
MOV46H,#20H;年高位
MOV47H,#02H;星期位
MOV48H,#40;秒计数器1
MOV49H,#100;秒计数器2
MOV50H,#00H;闹铃秒位
MOV51H,#00H;闹铃分位
MOV52H,#00H;闹铃时位
MOVTMOD,#02H;定时方式选择
MOVTH0,#06H
MOVTL0,#06H
MOVSP,#50H
LCALLCSH;液晶初始化
SETBP3.2
SETBEA;开总中断
SETBET0;开定时器中断0
SETBTR0;开始计时
;=====================================================
MAIN:
LCALLDISPLAY;调用显示程序
LCALLT_CONVERSION;调用读温度子程序
LCALLT_FORMAT;温度格式化子程序
LCALLCOMPARE;温度比较子程序
JNBP3.2,OUT;检测按键是否按下
AJMPMAIN
OUT:
LCALLADJUST;调用调时子程序
SETBP3.2
AJMPMAIN
3.2定时器中断子程序
由于定时方式2定时较精确所以选择方式2;
方式2定时最大时间为256us较小,所以需要另外用计数的方式达到定时1S的目的。
本设计中用的为12MHZ的晶振,一个机器周期为1us
(256-X)=250
所以TL0=6
TH0=6
相应子程序如下:
INTRUPT:
PUSHACC;保护现场
PUSHPSW
CLRET0;关中断
DJNZ49H,RETOUT1
MOV49H,#100
DJNZ48H,RETOUT1;是否等于1秒
MOV48H,#40
MOVA,40H
ADDA,#01H
DAA
MOV40H,A;数据反送
;-------------------------------------------------------------------------------------------
CJNEA,#60H,RETOUT1;是否等于60秒
MOV40H,#00H
MOVA,41H
ADDA,#01H
DAA
MOV41H,A;数据反送
;-----------------------------------------------------------------------------------------
CJNEA,#60H,RETOUT1;是否等于60分
MOV41H,#00H
MOVA,42H
ADDA,#01H
DAA
MOV42H,A;数据反送
;----------------------------------------------------------------------------------------
CJNEA,#24H,RETOUT1;是否等于24小时
MOV42H,#00H
MOVA,43H
ADDA,#01H
DAA
MOV43H,A;数据反送
;--------------------------------------------------------------------------------------
MOVA,47H
ADDA,#01H
DAA
CJNEA,#08H,TY;星期是否等于“8”
MOVA,#01H
TY:
MOV47H,A
MOVA,43H
CJNEA,#32H,RETOUT1;是否等于“32”号
MOV43H,#01H
MOVA,44H
ADDA,#01H
DAA
MOV44H,A;数据反送
;------------------------------------------------------------------------------------
CJNEA,#12H,RETOUT1;是否等于12月
MOV44H,#01H
MOVA,45H
ADDA,#01H
DAA
MOV45H,A;数据反送
;-----------------------------------------------------------------------------------
CJNEA,#99H,RETOUT1;年低位是否等于100
MOV45H,#00H
MOVA,46H
ADDA,#01H
DAA
MOV46H,A;数据反送
;-----------------------------------------------------------------------------------
CJNEA,#99H,RETOUT1;年高位是否等于99
MOV46H,#00H
;----------------------------------------------------------------------------------
RETOUT1:
POPPSW;恢复现场
POPACC
SETBET0;开始定时
RETI;中断返回
3.3时钟设置及温度上下限设定流程图及其子程序
时钟设置及温度上下限设定流程图如下:
图
(1)
时钟设置的关键在于对按键的处理比如按键防抖部分
调整时间及温度上下限的流程图如下:
图
(2)
相应程序如下:
ADJUST:
LCALLDELAY125MS
JBSETB1,$+2;这是一次干扰
AJMPAJT1
LJMPRETOUT2
AJT1:
LCALLDELAY875MS;再调用一次延时确定按键功能
JBSETB1,AJT2;是调整时间
LCALLADJUST_RING_TEMPERATURE;是调整闹铃时间及温度上下限
AJT2:
CLRET0;关中断
CLRTR0;关计时
由于调整年、月、日和闹