07通信工程论文.docx
- 文档编号:3349846
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:22
- 大小:702.13KB
07通信工程论文.docx
《07通信工程论文.docx》由会员分享,可在线阅读,更多相关《07通信工程论文.docx(22页珍藏版)》请在冰豆网上搜索。
07通信工程论文
泉州师范学院
毕业论文(设计)
题目电子万年历的设计与制作
理工学院电子信息科学与技术专业2005级班
学生姓名吴伟学号050303033
指导教师洪清泉职称教授
完成日期2009年5月
教务处制
目录
摘要…………………………………………………………………………………………………………2
关键词………………………………………………………………………………………………………2
引言…………………………………………………………………………………………………………2
1、设计方案………………………………………………………………………………………………..2
2、硬件电路设计…………………………………………………………………………………………..3
2.1STC89C51主控制模块………………………………………………………………………………..3
2.2DS1302时钟模块……………………………………………………………………………………..3
2.3DS18B20温度采集模块………………………………………………………………………………5
2.4LCD1602显示模块……………………………………………………………………………………7
2.5按键调整模块………………………………………………………………………………………..9
2.6串口下载模块……………………………………………………………………………………….10
3、软件设计……………………………………………………………………………………………….11
3.1软件的总体流程图………………………………………………………………………………….11
3.2DS1302时间读取流程图…………………………………………………………………………….12
3.3DS18B20温度读取流程图………………………………………………………………………….12
3.4按键调整流程图………………………………………………………………………………….13
4、制作与调试………………………………………………………………………………………….13
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个位置显示一个字符"W",就是在DDRAM中的0x01H地址中写入"W"的代码。
图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)