07通信工程论文Word格式.docx
- 文档编号:16255350
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:22
- 大小:702.13KB
07通信工程论文Word格式.docx
《07通信工程论文Word格式.docx》由会员分享,可在线阅读,更多相关《07通信工程论文Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
5、结束语……………………………………………………………………………………………….15
致谢…………………………………………………………………………………………………..….16
参考文献………………………………………………………………………………………………….16
电子万年历的设计与制作
吴伟
理工学院电子信息科学与技术050303033
指导教师 洪清泉教授
【摘要】该电子万年历以单片机STC89C51为主控制核心,通过单片机控制时钟芯片DS1302实现时间的读取;
温度传感器DS18B20实现温度的采集;
液晶LCD1602实现时间和温度的显示;
独立式按键实现时间的调整。
文章主要介绍了该电子万年历的硬件电路设计和软件设计。
【关键词】单片机;
万年历;
DS1302;
DS18B20
引言
随着电子技术的发展,万年历目前已经不再局限于以纸质的形式出现。
以电脑软件或者电子产品形式出现的万年历被称为电子万年历。
与传统纸质的万年历相比,电子万年历得到了越来越广泛的应用。
采用电子万年历来显示时间已经成为了一种时尚。
本文提出了一种基于单片机的电子万年历的设计,以STC89C51作为主控制核心,与液晶LCD1602、时钟芯片DS1302、温度传感器DS18B20、独立式按键等模块组成硬件系统,能实现时间、温度的显示,以及时间的调整。
1、设计方案
图1-1电子万年历的糸统框图
(1)主控制模块
采用台湾宏晶公司生产的单片机STC89C51作为主控制核心,其兼容51系列单片机(硬件引脚兼容,软件也兼容),而且具有ISP(在线编程)功能。
一般可通过一个9针的串口和芯片MAX232等组成的ISP下载通道,实现程序直接从计算机下载到单片机STC89C51中。
(2)时钟模块
采用DS1302,它是由美国DALLAS公司推出的一种高性能、低功耗的时钟芯片,可对年、月、日、星期、时、分、秒进行精确的计数。
(3)温度采集模块
采用DS18B20,它是由美国DALLAS公司推出的一种温度传感器芯片,它的测温范围为(-55~125℃),与单片机连接简单,减少了外部的硬件电路,可直接读出被测温度值。
(4)按键调整模块
采用独立式按键,一个I/O口接一个按键。
当电路所需要的按键较少时,可以采用独立式按键,控制程序也较简单。
(5)显示模块
采用LCD1602液晶显示屏,它可以显示两行字符,每行16个字符,显示内容丰富。
2、硬件电路设计
2.1STC89C51主控制模块
单片机最小系统确保单片机的正常工作,主要由晶振电路和复位电路组成。
任何复杂的单片机糸统,都是在单片机最小系统这个基础上通过添加模块设计出来的。
图2-1单片机最小糸统
单片机STC89C51,是40个引脚的双列直插芯片,有4组8位共32个I/O口,分别是P0口(P0.0~P0.7),P1口(P1.0~P1.7),P2口(P2.0~P2.7),P3口(P3.0~P3.7)。
I/O就是Input/Output的意思,也就是具有输入和输出的功能,所以又叫双向I/O口。
(1)供电:
单片机的引脚40要接电源端,采用+5V电源供电。
(2)晶振电路:
单片机的引脚18和引脚19接外部晶振,晶振的频率决定了单片机糸统的时钟频率。
比如晶振的频率选择12MHZ,那么单片机工作的时钟频率就是12MHZ。
单片机系统常用的晶振的频率是11.0592MHZ,12MHZ。
通常一个单片机系统共用一个晶振,便于各部分保持同步。
晶振上还要接两个起振电容,可在20~40pF间选取。
本设计的晶振电路由1个12MHZ的晶振,2个33pF的起振电容组成。
(3)复位电路:
单片机的引脚9是复位端。
单片机糸统在刚上电时,或者是发生故障后,都要进行复位。
本设计采用的复位电路,是如图2-1所示的按键手动复位电路。
单片机复位的条件是:
必须使引脚9上持续两个机器周期(即24个振荡周期)以上的高电平。
例如,时钟频率为12MHz,即每机器周期为1us,引脚9只需持续时间2us以上的高电平,就发生复位。
(4)外部访问允许端:
单片机的引脚31,决定是访问内部存储器还是外部存储器。
由于现在单片机内部存储器的容量都足够大,基本都是从内部存储器读取程序,即不需要扩展外部存储器,因此EA引脚应该接高电平。
但是,如果将EA引脚悬空,会导致程序执行不正常。
2.2DS1302时钟模块
DS1302的工作电压为2.5V~5.5V。
引脚Vcc1为后备电源,引脚Vcc2为主电源。
后备电源可选用3V的钮扣电池,这样在主电源关闭的情况下,也能保持时钟的继续运行。
另外DS1302由Vcc1和Vcc2两者中的较大者来供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
图2-2DS1302和单片机的硬件连接电路图
引脚X1和X2外接32.768kHz的晶振,晶振上可以不接两个起振电容,但如果接两个6pF的起振电容,会使晶振的振荡频率更加稳定。
引脚
(复位线),引脚SCLK(时钟线)和引脚I/O(数据线)分别与单片机的I/O口相连。
要正确控制DS1302产生时钟信号,首先要清楚DS1302的控制字、寄存器、以及读/写时序。
(1)DS1302的控制字
DS1302的控制字如表2-1所示。
控制字共8位,“位7”必须是逻辑1,若为0则数据不能写入或读取。
“位6”为0表示存取日历时钟数据,若为1则表示存取RAM数据。
“位5”到“位1”(A4~A0),表示操作单元的地址,如00000表示秒寄存器,00110表示年寄存器。
“位0”为0表示要进行写操作,为1则表示进行读操作,DS1302的控制字总是从最低位开始输入/出。
(2)DS1302的寄存器
DS1302共有12个寄存器,其中有7个与时间有关,如表2-1所示。
如写操作80H就是把数据写入DS1302的秒寄存器,而读操作81H就是把数据从DS1302的秒寄存器中读出。
我们要读取的时间数据,就是从相应的寄存器中读取出来的。
我们要调整时间时,就是把时间数据写入到相应的寄存器中。
表2-1控制字与时间寄存器
(3)DS1302的读写时序
DS1302的时间数据读/写时序图,分别如图2-3和2-4所示。
只有当
为高电平时,才允许对DS1302进行读/写操作。
图2-3DS1302的读时序图
DS1302的读操作:
在刚开始的8个SCLK周期,从低位(位0)到高位(位7)依次输出8位控制字(读操作命令),如81H。
在接下来的8个SCLK周期中的每个脉冲的下降沿,数据从低位(位0)到高位(位7)依次通过DS1302的I/O口输出,这样就能实现对时间的读取。
图2-4DS1302的写时序图
DS1302的写操作:
在刚开始的8个SCLK周期,从低位(位0)到高位(位7)依次输出8位控制字(写操作命令),如80H。
在接下来的8个SCLK周期中的每个脉冲的上升沿,数据从低位(位0)到高位(位7)依次通过DS1302的I/O口输入,这样就能实现对时间的调整。
2.3DS18B20温度采集模块
图2-5DS18B20和单片机的硬件连接电路图
DS18B20的工作电压为3V~5V。
其内部的高速缓存RAM,是9个字节的存储器,如表2-2所示。
第6、7、8个字节保留不使用。
第9个字节是前面8个字节的CRC检验码,用来检验数据,保证通信数据的正确性。
第3个和第4个字节,是非易失性温度报警触发器TH和TL的易失性拷贝,每次上电复位时被刷新。
表2-2高速缓存RAM
温度传感器测得的温度值,以16位二进制数表示,低8位存放于高速缓存RAM的第1个字节,高8位存放于高速缓存RAM的第2个字节。
读DS18B20的数据时,低位在前,高位在后。
这16位二进制数的最前面5位表示温度的正负,若S=0表示测得的温度大于或等于0,若S=1表示测得的温度小于0。
温度为正时,将测得的温度值所表示的二进制数,转换成十进制数,再乘以0.0625,就可以得到实际的温度值。
温度为负时,将测得的温度值所表示的二进制数,取反加1先变成原码,然后转成十进制数,再乘以0.0625,就可以得到实际的温度值。
如二进制数0000000110010001,除前5位符号位外,先转成十进制数得401,再乘以0.0625得25.0625,因为16位二进制数的前5位是0,所以实际温度为+25.0625度。
如二进制数1111110010010000,除前5位符号位外,先取反加1得01101110000,转成十进制数得880,再乘以0.0625得55,因为16位二进制数的前5位是1,所以实际温度为-55度。
表2-3DS18B20温度数据表
由于DS18B20是在一根I/O线上进行通信,因此有着严格的通信协议,该通信协议定义了几种信号:
复位脉冲、存在脉冲、写0、写1、读0、读1。
所有这些信号,除存在脉冲是由DS18B20(从机)发出的外,其余都是由单片机(主机)发出的。
(1)DS18B20的复位操作
单片机和DS18B20间的任何通信都需要以初始化过程开始。
初始化过程就是单片机发出一个复位脉冲,跟着如果检测到DS18B20的存在脉冲,表明DS18B20已经准备好发送或接收数据。
具体的初始化过程,主机首先发出一个480~960us的低电平脉冲,然后释放总线变为高电平,并在随后的480us的时间内对总线进行检测。
如果有低电平出现,说明总线上有DS18B20已做出应答。
若无低电平出现一直都是高电平,说明总线上无DS18B20应答。
作为从机的DS18B20在一上电后,就一直在检测总线上是否有480~960us的低电平(复位脉冲)出现。
若有就在总线转为高电平后等待15~60us后,将总线电平拉低60~240us作为存在脉冲做出响应,告诉主机DS18B20已做好准备。
若没有检测到就一直在检测等待。
图2-6初始化过程“复位脉冲”和“存在脉冲”
(2)DS18B20的读操作
读周期最短为60us。
对于读操作分为读0和读1操作两个过程。
若从机要往总线送出0,在主机把总线拉低1us后,则继续拉低电平最少15us。
若从机要往总线送出1,在主机把总线拉低1us后,就释放总线为高电平,一直到读周期结束。
而作为主机的单片机,必须在读周期开始的15us内,对总线进行采样,在采样时间内总线若为高电平则表示读1,在采样时间内总线若为低电平则表示读0。
图2-7DS18B20的读操作时序
(3)DS18B20的写操作
写周期最短为60us,最长不超过120us。
对于写操作也分为写0和写1操作两个过程。
若主机想写0,在主机先把总线拉低1us后,则继续拉低电平最少60us直至写周期结束,然后释放总线为高电平。
若主机想写1,在主机先把总线拉低1us后,就释放总线为高电平,一直到写周期结束。
而作为从机的DS18B20则在检测到总线被拉低15us后,在紧接着的15us~45us开始对总线采样,在采样时间内总线若为高电平则表示写1,在采样时间内总线若为低电平则表示写0。
图2-8DS18B20的写操作时序
2.4LCD1602显示模块
除了P0口外,其余的P1,P2,P3口均有内置的上拉电阻,为了保证P0口的外围器件的正常工作,所以P0口在外接LCD1602的同时,还要外接上拉电阻,本设计采用一个排阻。
LCD1602可以显示2行,每行16个字符,每个字符用5x7点阵表示,采用+5V电源供电,外围电路配置简单。
图2-9LCD1602和单片机的硬件连接电路图
(1)LCD1602的引脚说明
引脚3(VO)为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高。
引脚4(RS)为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
引脚5(R/W)为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令。
当RS为高电平,R/W为低电平时可以写入数据。
引脚6(E)为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
引脚7~14(D0~D7)为8位双向数据口。
(2)LCD1602的字符显示
LCD1602中有DDRAM、CGROM和CGRAM三个存储器。
CGROM是常用字符存储器,存储了190个不同的点阵字符,如图2-10所示。
字符代码0x20~0x7F为标准的ASCII码,字符代码0xA0~0xFF为日文字符和希腊文字符,其余字符代码0x10~0x1F及0x80~0x9F没有定义。
每一个字符都有一个固定的代码,比如大写的英文字母"
W"
的代码是01010111(0x57)。
DDRAM是显示数据存储器,对应LCD1602两行的显示地址,用来存储待显示的字符代码。
LCD1602第一行的显示地址是0x00H~0x27H,第二行的显示地址是0x40H~0x67H。
例如想要在第1行,第2个位置显示一个字符"
,就是在DDRAM中的0x01H地址中写入"
的代码。
图2-10CGROM常用字符存储器表
CGRAM是自定义字符存储器,从CGROM常用字符存储器表上可以看到,它在表的最左边一列,可以允许用户自定义字符,从上往下看有8个字符代码可用。
CGRAM的指令码规定,8位数据从左到右起前面2位固定为01,中间3位(000~111)表示可定义8个字符代码,后面3位(000~111)表示字符代码的地址。
如果要自定义温度符号"
℃"
,简单的汉字"
年"
,"
月"
日"
,它们的CGRAM地址、代码如图2-11所示。
图2-11自定义字符的方法
2.5按键调整模块
按键的种类很多,不过原理基本相似,本设计采用四脚轻触开关。
单片机通过检测相应引脚上,按键的电平变化,来判断是否有按键闭合。
例如P2.0引脚上的电平为低时,则表示有按键闭合。
反之,则表明没有按键闭合。
但是,由于按键本身的机械特性,一个按键在闭合时不会马上稳定地接通,在释放时也不会马上地断开。
因为在闭合及释放按键的瞬间均伴随有一连串的抖动,如图2-12所示。
这一连串抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。
按键抖动会引起一次按键被误读多次,为确保单片机对按键的一次闭合仅作一次处理,应该去除按键抖动。
图2-12按键的抖动
去除按键抖动,有硬件和软件两种方法。
一般不采用硬件来去除按键的抖动,因为要增加额外的硬件开销。
常用软件来去除按键的抖动,方法是当检测出按键闭合后,先执行一个5ms~10ms的延时程序,让前沿抖动消失后再一次检测按键的状态,如果按键仍保持闭合状态电平,则确定真正有按键闭合。
当检测到按键释放后,也先执行一个5ms~10ms的延时程序,让后沿抖动消失后才转入该按键相应的处理程序。
本设计的四个按键主要是用于时间的调整,如图从上到下的功能,分别是“进入调整模式”,“调整位时间加1”,“调整位时间减1”,“退出调整模式”。
图2-13按键与单片机的硬件连接电路图
2.6串口下载模块
在电路板上,信号的传输通常是以TTL电平为基础的。
简单的说,就是用5V表示1,0V表示0,
基本上大部分的芯片也都是以这种标准设计的。
而RS232信号的传输标准是用-3V~-15V表示1,+3V~+15V表示0,这样就需要有一个电路或一个芯片来进行信号的转换,也就是把RS232电平信号转换成TTL电平信号。
这样,就能实现计算机与单片机之间的通信。
可以选用MAX232芯片,它的作用是把串口RS232电平信号,转换为单片机所用的TTL电平信号。
MAX232使用+5V电源供电。
MAX232的内部结构基本可分三个部分:
第一部分是电荷泵电路。
由引脚1、2、3、4、5、6外接4只电容构成。
第二部分是数据转换通道。
由引脚7、8、9、10和引脚11、12、13、14各构成两路数据通道。
其中引脚13(R1IN)、引脚12(R1OUT)、引脚11(T1IN)、引脚14(T1OUT)做为第一数据通道。
引脚8(R2IN)、引脚9(R2OUT)、引脚10(T2IN)、引脚7(T2OUT)做为第二数据通道。
第三部分是供电。
引脚15GND、引脚16VCC(+5V)。
图2-14MAX232与单片机、串口之间的硬件连接电路图
9针串口RS232,一般只用其中的引脚2(接收数据RXD)、引脚3(发送数据TXD)、引脚5(地线GND)即可满足通讯的要求。
要实现计算机和单片机STC89C51之间的通信,首先应该用KeilC编程软件,把程序编译成“.hex”文件,然后再通过STC-ISP程序下载软件,把“.hex”文件下载到单片机中。
如图2-15是STC-ISP软件的界面,主要通过五个步骤来完成“.hex”文件的下载。
第一步是选择单片机的型号为STC89C51,第二步是加载编译好的“.hex”文件,第三步和第四步按照默认即可,第五步先点击“Download/下载”,当它提示“仍在连接中,请给MCU(单片机)上电…”时,再给单片机上电复位,这样程序就可以从计算机下载到单片机STC89C51中。
这样做的最大好处就是单片机具有在线编程功能,在调试程序时,不用把单片机频繁剥离工作环境,以免多次拔插单片机造成其引脚的损坏。
图2-15STC-ISP软件界面
3.软件设计
3.1软件的总体流程图
C语言是一种结构化的高级语言。
它的优点是有功能丰富的库函数,运算速度快,可读性好,可移植性强,是被普遍使用的一种计算机语言。
缺点是占用资源较多,执行效率没有汇编语言的高。
此外,C语言还具有完整的程序模块结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。
因此,使用C语言进行程序设计已经成为软件开发的一个主流。
本设计所有的程序都是在KeilC环境下,用C语言完成编写和调试的。
对DS1302的时间读取程序,对DS18B20的温度读取程序,对按键的时间调整程序,对LCD1602的显示时间和温度程序,都写成模块的形式,方便调用和调试。
软件的总体流程图如图3-1所示。
程序首先对LCD1602、DS1302、DS18B2进行初始化,然后单片机从DS1302读取时间,从DS18B20读取温度,最后再通过LCD1602显示出来。
图3-1软件的总体流程图
3.2DS1302时间读取流程图
DS1302的初始化,依次先在秒寄存器、分寄存器、时寄存器、日寄存器、月寄存器、周寄存器、年寄存器中写入时间的初始值,然后单片机再从秒寄存器、分寄存器、时寄存器、日寄存器、月寄存器、周寄存器、年寄存器中读出时间的初始值,经由LCD1602显示出来。
当通过按键来调整时间时,就是在相应的寄存器中写入调整后的时间值,然后单片机再从相应的寄存器中读出调整后的时间值,经由LCD1602显示调整后的时间。
图3-2时间读取的流程图
3.3DS18B20温度读取流程图
首先初始化DS18B20,跳过读DS18B20的序列号,因为只使用一个DS18B20来读取温度,若同时使用多个的DS18B20,那么就要读DS18B20的序列号,这样才能区分是哪个DS18B20测得的温度。
接着启动温度转换,温度转换需要一些时间,所以做了一些延时。
然后再初始化DS18B20,跳过读DS18B20的序列号,最后读取温度。
图3-3温度读取的流程图
3.4按键调整流程图
调整时间用到4个按键,按键功能分别是“进入调整模式”,“调整位时间加1”,“调整位时间减1”,“退出调整模式”。
按键名称分别定义为“Key1”,“Key2”,“Key3”,“Key4”。
按Key1,进入秒调整位,此时秒调整位会闪烁,表示该调整位可以被赋值,接着按Key2或者Key3可对调整位进行加或减。
要调整其它调整位,可再按Key1进行选择,时间全部调整好后,按Key4确认退出。
按键调整的流程图,如图3-4所示。
图3-4按键调整流程图
4、制作与调试
1)制作电路板的一般步骤:
①用Protel99绘出电子万年历的原理图和PCB板图;
②把PCB板图转成pdf的文件形式,这样方便激光打印把PCB板图机打印到敷腊纸(不干胶下面的衬纸)上,变成碳膜走线图;
③用铁丝球擦去单面敷铜板表面的氧化层,再用电熨斗把碳膜走线图熨烫到单面敷铜板上;
④把印有碳膜走线图的单面敷铜板,放到三氯化铁溶液中进行腐蚀后,变成铜膜走线电路板;
⑤电路板上的焊盘经过钻孔后,就可以把电子元器件焊接到电路板上。
2)在制作完成电路板的过程中,出现过以下的问题:
①第一次用激光打印机打印出来的碳膜走线图,明显小于实际大小,导致多数电子元器件没法焊接到电路板上;
后来打印时设置成按“实际大小”打印,问题就解决了。
②由于DS1302的32.768KHZ晶振,体积极小,而且引脚极短,很难焊接到电路板上;
后来就把剪下的电阻引脚,用焊锡焊接来加长晶振的引脚。
③用数字万用表的二极管档,检查铜膜走线电路板时,发现某些地方存在断路的现象,这是由于这些地方的铜膜走线断开了,后来用焊锡把断开处焊接上,电路就导通了。
④所有的电子元器件都焊接完成后,把芯片插入到相应的插槽
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 07 通信工程 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)