数字钟课程设计报告讲解Word格式文档下载.docx
- 文档编号:18324404
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:40
- 大小:974.86KB
数字钟课程设计报告讲解Word格式文档下载.docx
《数字钟课程设计报告讲解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字钟课程设计报告讲解Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。
4、采用DS18B20温度传感器检测当前温度。
5、所有功能在LCD12864当中同步显示。
6、采用AT89S52单片机控制。
1.3方案论证及选择
1.3.1多功能数字钟的总体设计思路
按照要求设计,本多功能数字钟系统的设计采用单片机软件系统实现,用单片机AT89S52的自动控制能力配合ds1302和ds18b20来控制时钟和温度的调整显示。
获得多功能数字钟的数据信息,单片机对其进行一系列的处理,最后通过液晶lcd12864显示出来。
1.3.2多功能数字钟系统方案论证
1.3.2.1多功能数字钟系统方案选择
方案1:
通过单片机内部的定时器/计数器,用软件实现,直接用单片机的定时器编程以实现时钟;
方案2:
用专门的时钟芯片(DS1302)实现时钟的记时,再把时间数据送入单片机,由单片机控制显示。
虽然用软件实现时钟硬件线路简单,但是程序运行的每一步都需要时间,多一步或少一步程序都会影响记时的准确度,对定时器定时也不是十分准确,时钟精度很低,对于我们实现所需要的功能造成软件编程非常复杂。
用专用时钟芯片硬件成本相对较高,但它的精度很高,软件编程很简单。
综上所述,选择方案2。
1.3.2.2单片机的选择
51系列单片机的ROM为4K,对于我们设计的系统有点小。
52系列单片机与51系列的结构一样,而ROM扩大为8K,对我们设计系统提供充足的空间进行功能的扩展。
再有51系列单片机与52系列的单片机价格差不多。
因此,我们选择52系列的单片机。
1.3.2.3显示系统的方案比较
用数码管或点阵LED显示。
用液晶1602显示。
方案3:
用液晶12864显示。
时钟和温度的显示可以用数码管或LED,而且价格便宜。
但是数码管的只能显示简单的设计的系统,与我们设计要求也不相符。
有很多东西需要显示,还是用显示功能更好的液晶显示器比较好,它能显示更多的数据,用1602液晶显示数据有限,1602不能够显示指针时钟,只能够显示一些基本的西文字符,显示数据的可读性不好,用可以显示汉字的12864液晶显示器还可以增加显示信息的可读性,用12864的绘图功能即可绘制出大字体数字,让人看起来会很方便。
虽然它们在价格上差距很大,但是1602不能够实现我们的要求,12864.是我们唯一的选择。
1.3.2.4温度系统方案选择
用热敏电阻等测温元件测出电压,再转换成对应的温度。
需要比较多的外部元件(A/D转换)支持,且硬件电路复杂,制作成本相对较高。
用DS18B20直接测温。
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
经比较,我们选择方案2。
温度实现只能通过外部的温度传感器来实现。
经上网查阅及市场考察,DS18b20体积小,只有3只脚,电路接法简单。
内部含有寄存器为我们设计实现上下限报警功能提供保障。
精度为0.5°
C,也符合我们设计的要求。
DS18B20也是我们通常使用的型号,因此温度传感器用DS18B20。
1.4仿真与总电路图
1.4.1仿真
图1
1.4.2总体电路图
图2
1.5多功能数字钟系统的总体设计
初步确定设计系统由单片机AT89S52主控模块、时钟模块ds1302、测温模块ds18b20、显示模块12864、按键扫描模块、ISP在线编程模块、复位模块、晶振模块共八个模块组成。
下图是总体的电路图:
图3
1.6单元电路设计
1.6.1基本原理
本设计采用一块单片机(AT89S52)作为多功能数字钟的控制核心,加以温度传感(DS18B20)、液晶显示屏(12864)、复位电路、晶振电路、按键电路等构成。
系统的结构框架最主要的部分是中间的主控模块部分,时间的计算由编写的时钟程序代替时钟芯片(DS1302)完成,通过简单的串行接口与单片机进行通信。
温度测量由温度传感器(DS18B20)完成。
传感器的测量结果由于是以数字信号形式输出,可以直接送给单片机处理。
单片机在接到数据后,一方面将时间日期通过液晶显示屏显示出来,另一方面通过对键盘的扫描来确定哪个键按下,随即跳转到该键对应功能。
1.6.2单片机最小系统电路设计
主要由复位电路,晶振电路,电源等几部分组成。
1.6.2.1单片机芯片选择
单片机采用52系列单片机。
由ATMEL公司生产的AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
而且,它还具有一个看门狗(WDT)定时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。
AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
单片机管脚图及说明:
图4
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能口,如下表所示:
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高
电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
EA:
非/Vpp脚我们没有用外部扩展ROM,因此EA非/Vpp为高电平,即接+5V电源。
1.6.2.2复位电路
复位操作有两种基本形式:
一种是上电复位,另一种是按键复位。
按键复位具有上电复位功能外,若要复位,只要按图中的RESET键,电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。
上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。
上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。
RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
按键复位电路图如图1.4.2所示。
图1.4.2复位电路
1.6.2.3晶振电路
电路中,在XTAL1和XTAL2之间连接晶体震荡器与电容构成稳定的自激震荡器,电容器C3和C4对振荡器具有微调作用。
如下图6所示:
图6
选取原则:
电容选取30pF,晶振为12MHz。
1.6.3温度系统电路
1.6.3.1温度芯片的选择
温度实现只能通过外部的温度传感器来实现。
经上网查阅资料及市场考察,DS18b20体积小,只有3只脚,电路接法简单。
它能够直接读出被测温度。
内部含有寄存器为我们设计实现上下限报警功能提供保障。
用户可定义的非易失性温度报警设置;
报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
精度为0.5C,也符合我们设计的要求。
DS18B20也是我们通常使用的型号,因此温度传感器用DS18B20。
1.6.3.2DS18B20内部结构描述
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8个字节的存储器,结构如图4.1所示。
头两个字节包含测得的温度信息,第三和第四字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第五个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。
该字节各位的定义如图4.2所示。
低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
图9
1.6.3.3DS18b20温度系统电路
DS18B20有两种接法:
一是单线接法即只接QT。
这种方法应用它内部的寄生电源,因此在QT上要用一个MOSFET把I/O线只接拉到电源上。
二是从vdd脚加上电源。
方法一适合于远距离温度监控,不需要本地电源。
而我们只是设计测温系统,选择方法二就行了,还有MOSFET极容易烧,我们不用它。
Vdd接5V电源,vss接地,QT与P3.1相连。
因为DS18B20的工作电流约为1MA,因此Qt端还要加上拉电阻为其提供电流。
若用5V电源,则R=5/1MA=5k。
R取4.7K。
DS18B20温度系统电路图10如下:
图10
1.6.4LED12864液晶显示电路
1.6.4.1LED12864简介
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;
其显示分辨率为128×
64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×
4行16×
16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
1.6.4.2液晶12864引脚说明
管脚号管脚名称、电平管脚功能描述如1.4.4.2表所示:
表1.4.4.2显示电路
1、VSS0V电源地
2、VCC3.0+5V电源正
3、V0-对比度(亮度)调整
4、RS(CS)H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5、R/W(SIDH/LR/W=“H”,E=“H”,数据被读到DB7——DB0)R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6、E(SCLK)H/L使能信号
7、DB0H/L三态数据线
8、DB1H/L三态数据线
9、DB2H/L三态数据线
10、DB3H/L三态数据线
11、DB4H/L三态数据线
12、DB5H/L三态数据线
13、DB6H/L三态数据线
14、DB7H/L三态数据线
15、PSBH/LH:
8位或4位并口方式,L:
串口方式
16、NC-空脚
17、/RESETH/L复位端,低电平有效
18、VOUT-LCD驱动电压输出端
19、AVDD背光源正端(+5V)
20、KVSS背光源负端
LED12864液晶显示电路设计中采用LCD12864液晶显示。
它一般串口、并口两种方式显示,而我们在这里采用串口显示。
LCD12864显示电路如图1.4.4所示:
图1.4.4显示电路
1.7软件设计
为利于该设计的多功能的实现和更高的编程效率,采用c语言进行编程。
为实现编程结构清晰,采用各个模块单独编程,最后实现各个模块的综合连接。
主程序的框架由键盘扫描程序构成,各个功能模块程序嵌入到各个按键的子程序中,通过对按键的不断扫描来确定跳转到哪个功能。
对于键盘模块,采用扫描法循环扫描。
1.7.1软件流程图
1.7.2软件程序
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
#definex0x80
#definey0x80
#definecomm0
#definedat1
sbitrs=P1^0;
//H=data;
L=command;
sbitrw=P1^1;
//H=read;
L=write;
sbite=P1^2;
//inputenable;
sbitSS=P2^0;
//时
sbitFF=P2^1;
//分
sbitMM=P2^2;
//秒
sbitNL=P2^3;
//闹铃
sbitNN=P2^4;
//年
sbitYY=P2^5;
//月
sbitRR=P2^6;
//日
sbitXQ=P2^7;
//星期
sbitbusy=P0^7;
//lcdbusybit
sbitbj=P3^7;
//报警控制位
sbitDQ=P3^1;
//DS18B20端口
sbitFW=P3^5;
//按键复位键
//sbitLED=P3^6;
//LED1
sbitpsb=P1^6;
uchardispn[4];
uchardispy[2];
uchardispr[2];
uchardisps[2];
uchardispf[2];
uchardispm[2];
uchardispx[2];
uchardispw[2];
uchardispns[2];
uchardispnf[2];
uchardispnm[2];
uchardisplay[2];
uchartemp_data[2];
voidwr_lcd(uchardat_comm,ucharcontent);
voidchk_busy(void);
voiddelay(uintus);
bitpresence;
ucharaaa;
charwendu,xingqi;
intnian;
charyue,ri,shi,fen,miao,ns,nf,nm;
ucharcodetab[]={
"
年月日"
//1
闹铃时分秒"
//3
时间时分秒"
//2
星期温度度"
//4
};
/*------------------初始化-----------------*/
voidinit_lcd(void)
{
psb=1;
wr_lcd(comm,0x30);
/*30---基本指令动作*/
wr_lcd(comm,0x01);
/*清屏,地址指针指向00H*/
wr_lcd(comm,0x06);
/*光标的移动方向*/
wr_lcd(comm,0x0c);
/*开显示,关游标*/
}
/*---------------显示汉字或字符----------------*/
voidchn_disp(ucharcode*chn)
{
uchari,j;
wr_lcd(comm,0x80);
for(j=0;
j<
4;
j++)
{
for(i=0;
i<
16;
i++)
wr_lcd(dat,chn[j*16+i]);
}
/////////////在指定位置显示指定的内容///////////
voidchn_disp1(uchar*chn)//显示年
uchari,j=0;
//设定显示的位置(地址)
voidchn_disp2(uchar*chn)//显示月
wr_lcd(comm,0x83);
2;
voidchn_disp3(uchar*chn)//显示日
wr_lcd(comm,0x85);
voidchn_disp4(uchar*chn)//显示时
w
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 课程设计 报告 讲解