电力系统设计作业

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

电子系统设计与实践依据时段可变显示亮度电子钟电气工程学院电气83张颢08041084电气83王攀08041079摘要本次设计以AT89C52芯片为中心,加上必要的外部电路,组成了一个依据时段可变显示亮度数字电子时钟。硬件方面,除单片机外,使用了8个七段LED数码管来进行显示,采用的是动态扫描显示,利用74LS573进行数码管段驱动,利用ULN2803A进行位驱动。通过LED能够比较准确显示时、分、秒以及日期和当前室温。利用几个简单的按键分别实现对时间的调整,年月日显示的切换,以及温度显示切换。时钟日历来源于DS1302芯片。温度测量功能来自DS18BU20芯片。软件方面采用C语言编程,在单片机环境下,加设中断,定时,以完成功能实现。整个电子钟系统能完成时间的显示,调时,定闹及温度显示等功能。关键词:电子系统设计电子时钟温度显示AT89C52DS1302DS18B20目录一、实验目的及任务、功能、具体工作内容二、重要硬件简介与相应模块设计三、主程序设计实现四、系统框图五、总体设计系统电路原理图和PCB版图六、程序流程图七、系统调试总结八、实验遇到的问题及改进九、实验总结及感想十、参考书目十一、源程序一.实验目的及任务、功能、具体工作内容1.目的及任务:(1)通过查阅相关资料,深入了解电子钟的组成结构和工作原理;(2)学习有关动态显示方式及原理;(3)复习“MCS-51单片机原理及C语言程序设计”,掌握其接口扩展,如:显示、键盘等;(4)设计具有报时报温功能电子钟的原理图,构建硬件平台;(5)采用汇编或C语言编写应用程序并调试通过;(6)制作出样机并测试达到功能和技术指标要求;(7)写出设计报告和答辩PPT。2.设计产品功能此次设计产品要实现一个依据时段可变显示亮度电子钟,具体如下:1.能够实现基本时钟的走时,显示范围是00:00:00——23:59:59。能够实现时钟的调整,通过按键可以对“时”位和“分”位进行加1调节,并能当加至最大值时能重新归零。2.能够实现当前室温的测量功能,并在数码管上予以显示。3.能够实现年月日的显示与切换。4.能够实现温度的显示与切换。5.能够实现根据时段自动改变显示亮度。3.具体工作内容:1.组建依据时段可变显示亮度电子钟的总体结构框图;2.根据题目要求,选择所要使用的主要器件,通过理论分析和计算选择电路参数;3.根据操作功能要求,确定键盘控制功能;4.按设计要求确定显示位数、指示类型和单位;5.采用汇编或C语言编写应用程序并调试通过;6.对系统进行测试和结果分析;7.撰写设计报告和答辩PPT。二.重要硬件简介及应用DS18B20温度传感器,DS1302时钟日历芯片。1、温度模块该模块使用了芯片DS18B02,该芯片可以检测室温并将温度实时传感至单片机。在本模块中,我们主要采用了书上的程序,在写主函数时做了一点改动。(1)DS18B20主要资料DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,默认分辨率为12位,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。DS18B20内部结构如图1所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地。图1)DS18B20的内部结构图2DS18B20的管脚排列DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出FF6FH,-55℃的数字输出为FC90H。(2)DS18B20芯片与单片机之间的数据传输由于DS18B20与单片机之间是通过一个端口进行连接的,故其与单片机之间是采用的是串行通信方式。通过单片机向DS18B20发送命令控制字,然后再接收相应的数值,比如温度值等。下面是单片机向DS18B20读温度值的过程:读温度前的准备:tmwbyte(0xcc);//跳过ROMtmwbyte(0xbe);//开始转换读取温度值:a=tmrbyte();//读取温度低字节b=tmbyte();//读取温度高字节即读温度前单片机要向DS18B20发送两个控制命令字0xcc和0xbe,然后再接收DS18B20送来的温度值,此温度值由两个字节组成,每个字节的单方如下:即低字节的最低位对应于1/16摄氏度,即其分辨率为0.0625。高字节后5位为符号位,当读出的温度值是正值时符号位S=0,反之则S=1。这样当当前温度值为正值时就可以直接把温度值的各个位提出来,而当当前温度值为负值时就必须先把读出来的两字节取补后再提取各位,把提出来的数放在相应的数组中就可以显示。单片机DS18B20发送命令字读出温度值读出温度函数为:unsignedcharread_T();此函数把读出的温度值的各位提取出来,分别放在display_buffer[8]数组的各位中以待显示。动态显示程序能够实时把display_buffer[8]里面的数通过数码管显示出来。(3)温度模块的设计:温度模块主要有下列几个要素:(1)DS18b20采用一根端口线和CPU传输数据。(2)利用循环移位功能来实现数据的传输。(3)在读取DS1820的温度数据时要注意读取的时序,要严格按照时序表来。(4)因为时分秒和年月日的显示都是6位,可以利用显示剩下的两个数码管来显示温度(故温度只取到整数)。(5)设计时,我们考虑用按键的方式来进入温度显示,后考虑再三,采用进入read_T之后延时一段时间,再自动跳回read_time读取时间。具体如下:if(s1==0&s2==1){read_time1();delay1(5000);read_time();}2、日历模块该模块使用了芯片DS1302,该芯片可以向单片机提供时、分、秒以及年、月、日等时间信息。在本模块中,我们仍然主要采用了书上的程序,采用按键的方式实现了时间和日期之间的转换。(1)、DS1302主要资料DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟|日历和31个字节静态RAM,通过简单的串行接口与单片机进行通信,实时时钟|日历电路提供秒、分、日、日期、月、年的信息、每月的天数和闰年的天数可以自动调整,时钟操作可通过AM/PM指示决定采用24小时或12小时格式,DS1302与单片机之间能简单地采用同步的方式进行通信,仅需用到RES复位,I/O数据线、SCLK串行时钟3个口线。对时钟、RAM的读/写。可以采用单字节方式或多达31个字节的字符组方式。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。DS1302广泛应用于电话传真、便携式仪器及电池供电的仪器仪表等产品领域中。DS1302的结构及工作原理:Ⅰ.引脚功能及结构DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。Ⅱ.DS1302的控制字节DS1302的控制字如图所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。Ⅲ.数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。Ⅳ.DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见下表。DS1302内部寄存器CH:时钟停止位存器2的第7位12/24小时标志CH=0振荡器工作允许bit7=1,12小时模式CH=1振荡器停止bit7=0,24小时模式WP:写保护位寄存器2的第5位:AM/PM定义WP=0寄存器数据能够写入AP=1下午模式WP=1寄存器数据不能写入AP=0上午模式TCS:涓流充电选择DS:二极管选择位TCS=1010使能涓流充电DS=01选择一个二极管TCS=其它禁止涓流充电DS=10选择两个二极管DS=00或11,即使TCS=1010,充电功能也被禁止此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。错误!未找到引用源。.DS1302与单片机之间的通信方式。DS1302与单片机之间也是采用串行的通信方式实现数据的传输。单片机通过向DS1302发送相应的寄存器地址实现相应的功能。单片机向DS1302置入数据的框图如下:如要把小时数为21时置入DS1302中让其以这个初值开始走时,则需先向DS1302发送写时控制字0x80,然后再把时间0x21向DS1302发送,这样DS1302的小时计数初值就为21时,特别要注意的是此处置入的时间为十六进制的数的一个字节,此字节的高4位为小时的十位,低4位为小时的个位,要置入年月日分秒等也是如此。单片机向DS1302读时间的框图如下:此图为单片机先向DS1302发送寄存器地址,然后再接收DS1302发送来的数据。例如先向DS1302发送读小时寄存器地址0x81,再接收一个字节,接收的字节就为当前的小时数。读年月日秒分星期功能实现也是如此。这样就可以把当前时间和日期等数据读出来放在display_buffer[8]数组中以待显示。(2)日历模块的设计:日历模块有以下几个要素:(1)DS1302使用单总线和CPU完成数据交换,故利用循环移位功能来实现数据的传输。(2)和温度的读取一样,在编写程序时,要注意每一位控制字的不同。而与温度模块不同的是,日历模块还牵扯到更改日期的问题,故还要编写关于WRITE的函数部分,而WRITE和READ的控制字在最后一位为反。(WRITE为偶数,READ为奇数)(3)时间和日历的控制字也不同。(4)读操作和写操作时要严格遵循时

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功