欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    安全天数计数屏毕业论文.doc

    • 资源ID:4023302       资源大小:477.50KB        全文页数:24页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    安全天数计数屏毕业论文.doc

    毕业设计姓 名: 学 号: 系 部: 电气工程系 专 业: 电气自动化 论文题目: 安全天数计数屏 指导教师: 职 称: 2012年 5 月 任 务 书 任务下达日期: 2012 年 5 月 日毕业论文日期: 2012 年 5 月 日至 2010 年 5 月 日毕业论文题目:安全天数计数屏毕业论文专题题目:智能天数计数LED显示屏毕业论文主要内容和要求:系统总体方案及硬件设计:包括单片机最小系统设计;系统单片机借口电路设计;LED数码管电路设计:软件设计:时间系统设计;数码管显示设计;按键控制设计;天数运行设计。 要附:源程序代码;系统原理图。系主任签字: 指导教师签字:摘 要 本设计是一个智能安全天数数码管显示屏,主要应用在工厂车间记录车间安全运行天数。本设计采用STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选,介绍了以它为控制系统的智能安全天数LED显示屏设计和开发过程。通过串行输入/输出或者并行输出移位寄存器74hc595来控制数码管显示安全天数信息该电子显示屏可以显示安全天数和年月日时分秒信息,显示采用动态显示,。文中详细介绍了智能安全天数LED显示看板的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。单片机控制系统程序采用单片机C语言进行编辑,通过编程控制8段LED数码管随意显示,数码管显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点在工厂、银行、证券所、运动场馆场合显示环境参数实时,重大活动倒计时等等得到广泛的应用。经实践证明,该系统显示误差小,性能稳定,结构合理,扩展能力强。关键词: STC89C52单片机; 数码管; 时间; 设置;天数。目 录1 概述12 系统总体方案及硬件设计22.1 总体设计22.2 系统时钟电路设计22.3系统复位电路的设计22.4 安全天数显示屏的显示电路设计32.5 时钟电路模块设计33 软件设计63.1 概述63.2 主模块的设计63.3 基本显示模块设计73.4时间、天数设置模块设计83.5安全天数递总功能的实现94 课程设计体会105、参考文献11附录一 系统程序清单12附录二 系统原理图221 概述本设计是工厂安全天数计数和时钟显示屏,由单片机STC89C52芯片、DS1302时钟芯片和LED数码管为核心,辅以必要的电路,构成的一个设计。时钟部分设计可采用数字电路实现,也可以采用单片机定时器来完成,但是使用时钟芯片设计,时间运行会很精确误差很小。用数码管显示“年”,“月”,“日”,“时”,“分”,“秒”的现代计时装置。单片机具有集成度高、功能强、通用性好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。所以在该设计中采用单片机利用STC89C52单片机简介 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,12T。STC89C52单片机结合八段显示器设计本系统,可以设置现在的时间运行及天数计时,若日期每过一天则安全天数会总加一天,如果当天发生事故,也可从新设定安全运行天数。设计内容包括了DS1302时钟电路、数码管显示电路、按键电路以及供电电源等几部分的设计。采用三个开关来控制设定当前系统时间和天数信息,分别为:K1、设置状态按键;K2、数码管移位按键;K3、数码管加数按键。准备中根据具体的要求,查找资料,然后设定程序,依据程序利用搭建的电路试验,对出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。2 系统总体方案及硬件设计2.1 总体设计天数计数应包括时钟信息、数码管显示电路、按键电路以及供电电源等几部分。按键功能说明:K1,进入设置状态可设置当前时间和天数显示;K2,数码管移位选中要设置的数码管;K3,当前的数码管进行加数。如图 1 安全天数显示屏的系统框图:复位、时钟等电路按钮电路18个数码管显示电路DS1302时钟电路电源系统图 1 安全天数显示屏的系统框图安全天数显示屏的主电路指的是图中虚线框内部分,主要涉及到CPU电路和按键按钮电路。主机的设计具体地说有:1)系统时钟电路设计;2)系统复位电路设计;3)按键电路设计;4)时钟读取设计。2.2 系统时钟电路设计对于时间要求很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。本设计采用高精度时钟芯片DS1302,时钟晶振使用32.768khz,利用单片机读写时钟芯片的时间。2.3系统复位电路的设计智能系统一般应有手动或上电复位电路。复位电路的实现通常有两种方式:)RC复位电路;)专用µ监控电路。前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式,本次课程设计采用了上电按钮电平复位电路。2.4 安全天数显示屏的显示电路设计本次课程设计采用了18位数码管显示电路。在18位LED显示时,为了简化电路 ,采用动态显示的方式, 18个LED显示器采用74hc595驱动显示,每个数码管对应接一个74HC595芯片,译码显示电路将“天数”“年”,“月”,“日”,“时”,“分”,“秒”计数器的输出状态八段显示译码器译码,通过18位LED八段显示器显示出来。2.5 时钟电路模块设计DS1302 是DALLAS 公司推出的涓流充电时钟芯片内含有一个实时,时钟/日历和31 字节静态RAM,可通过简单的串行接口与单片机进行通信,秒分时日日期月年的信息,每月的天数和闰年的天数可自动调整,可通过AM/PM 指示决定采用24 或12 小时格式,保持数据和时钟信息时功率小于1mW。如下图所示:DS1302与单片机的连接也仅需要3条线:CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。Vcc_5V:为电路中的主电源;Vcc2,也就是BT1为备份电源。当Vcc2>Vcc1+0.2V 时,由Vcc2 向DS1302 供电,当Vcc2< Vcc1 时,由Vcc1 向,DS1302供电,CLK和I/O虽然和IIC总线接在一条引脚上,但DS1302其实并不是,使用IIC总线,而是一种三线式总线。DS1302原理图如图2所示、DS1302控制寄存器如图3所示:图2 DS1302原理图图3 DS1302控制寄存器DS1302控制字:控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入,到DS1302中。位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4A0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。其流程图如图4:开始设置CE为高在上升沿按位传输地址读取或写入相应地址数据结束设置CE为低图 4 DS1302流程图3 软件设计3.1 概述软件设计的重点在时钟芯片时间的读写、显示的实现、以及按键的处理等方面。基于软件天数计数根据时钟芯片的日期发生变化从而增加天数也可用按键进行天数修改,因为时钟芯片电路上用电池供电,能达到掉电时间正常运行。3.2 主模块的设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。本系统的主模块的程序框图如下图5所示: CPU初始化读取掉电之前信息读取时钟芯片时间判断日期变化安全天数总加数码管更新显示扫描按键图 5 主程序流程图3.3 基本显示模块设计显示部分采用74HC595移位寄存器,74HC595有三个控制端口RCK、SCK、QA分别是串行移位、并行输出和数据端口.单片机利用这三个端口控制数码显示,连续送19次数据,第一次送的数据将会移动到最后一个数码管。74HC595引脚图如下图6所示、74HC595引脚定义如下图7所示:图 6 74HC595引脚图图 7 74HC595引脚定义3.4时间、天数设置模块设计时间、和天数设定模块的设计是按键的去抖处理与“一键多态”的处理。即只涉及3个键完成了18位数码管参数的设定。软件法去抖动的实质是软件延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。去抖中的延时时间一般参考资料多描述为10ms左右,实际应用中,应大于20ms,否则,会导致按一次作多次处理,影响程序正常执行。“一键多态”即多功能键的实现思想是,根据按键在一定时间内连续按下次数确定进入时间设置或者天数设置状态,其流程图如下图8所示:K1按下,启动计时计时到,判断k1次数1次进入时间设定大于1次进入天数设定按K3闪烁位加数按K2闪烁位移位按K1退出设置图 8时间、天数设置流程图3.5安全天数递总功能的实现天数递总功能涉及到断电和非断电两个方面:如果系统当前属于上电状态并且日期发生变化了,安全天数会在当前基础上总加一天。反之如果系统处于几天或者几十天没有供电,但是时钟芯片电路会有电池供电,时间日期正常运行,只要当系统上电时,系统会自动判断,之前断电的日期和当前的日期相差几天,从而安全天数会相应递增天数。如果工厂在某天出现事故,当天的那一天不属于安全运行天数,这样工人就可以进行按键设置,纠正当前的天数信息。考虑到实用性,在该系统的设计中,断电日期会从今天10号到下个月的5号之间是20多天,系统要进行判断还要进行年、月份判断还要区分闰年,大月小月从而计算天数会更加准确。4 课程设计体会单片机是一门应用性很强的学科,课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。虽然在做课程设计以前已经系统的把单片机课本认真的学习了一下,但是在刚拿到设计任务书时还是有点一头雾水,不知道该从哪里下手。令人欣慰的是经过一周的学习,虽然过程很艰辛,但是总算实现了定时闹钟的功能,所有的努力都很值得。这一周的大部分时间都在研究程序怎么处理,在这个过程中加深了我对C语言命令的应用,而且也更加了解到软硬件配套的重要性。通过这次课程设计,使我对这们功课有了更深刻的认识和了解。首先对于硬件电路的工作原理有了进一步系统的学习,同样就有了进一步的认识,使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。其次软件在这次设计中也有不足之处,比如音乐的响声不连续,但又不知道从哪个地方入手解决这个问题,这要求在以后的学习中,拓宽自己的知识面,解决设计的不足之处。总之,通过这次课程设计不仅使我巩固了本课程所学的基本知识,还使我具有了撰写科研报告的初步训练能力,我相信这些能力在我以后的工作或者是再学习中一定会起到不小的作用,一切的辛苦和艰难都是值得的。5 参考文献1 余发山 单片机原理及应用技术,徐州:中国矿业大学出版社,20032 杨刚,周群.电子系统设计与实践.电子工业出版社.2004:19-23 341-347 119-1223 何立民.单片机高级教程(应用与设计).北京:北京航空航天大学出版社,2000年.53984 涂时亮,张友德.单片微机控制技术.清华大学出版社.1994:86-87 146-1475 融会贯通 Protel99电路设计 弘道工作室 北京 人民交通出版设,2000.6 单片机原理及接口技术实验 朱定华 北京 北方交通大学出版社2002.117 李全利 编著 :单片机原理及接口技术(第2版)北京:高等教育出版社,20048 张志良 主编 :单片机原理及控制技术(第2版)北京:机械工业出版社,20059 张毅刚 主编 :单片机原理及应用北京:高等教育出版社,200610 李光飞 编著 :单片机课程设计实例指导(第2版)北京:北京航空航天出版社,200411 李 华 主编 :MCS-51单片机实用接口技术北京:北京航空航天出版社,199712 徐仁贵 主编 :微型计算机接口技术及应用北京:机械工业出版社,199813 诸昌钤 编著 :LED显示屏系统原理及工程技术成都:电子科技大学出版社,2000附录一 系统程序清单以下为用C语言编写的控制程序:; *; * *; * 安全天数显示屏*; * STC89C52 12 MHz晶振 *; * 2012.4. 29 *; */- / 主程序 /-#include <REG52.h>#include <intrins.h>#include<eepram_operate.h>#include<DS1302.h>#define uchar unsigned char#define uint unsigned int#define SHAKE 10sbit addkey=P30; sbit movekey=P31; sbit setkey=P13;sbit SD=P14; sbit RCK=P16; sbit SLK=P15;uchar dis_data20=0;uchar currentday,Count,elect,Set_sign,Num,Seat,Blink;int cdays;uchar data disp_code12=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff,0xbf; uchar zu15= 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4 ; void delay(uint z) while(z-); void delay_1ms(unsigned int ms) unsigned int i; while(ms-) for(i=0;i<20;i+); void WR_595(uchar num1) uchar date; uchar b; date=num1; for(b=0;b<=7;b+) if(date&0x80)=0x80) SD=1; else SD=0; date<<=1; SLK=0; _nop_(); _nop_(); SLK=1; void display() RCK=0; WR_595(disp_codedis_data0); WR_595(disp_codedis_data1); WR_595(disp_codedis_data2); WR_595(disp_codedis_data3); WR_595(disp_codedis_data4); WR_595(disp_codedis_data5); WR_595(disp_codedis_data6); WR_595(disp_codedis_data7); WR_595(disp_codedis_data8); WR_595(disp_codedis_data9); WR_595(disp_codedis_data10); WR_595(disp_codedis_data11); WR_595(disp_codedis_data12); WR_595(disp_codedis_data13); WR_595(disp_codedis_data14); WR_595(disp_codedis_data15); WR_595(disp_codedis_data16); WR_595(disp_codedis_data17); RCK=1; void AddSet() static bit add_flg; static uchar add_num;if(!addkey)add_num+;if(add_num >= SHAKE && !add_flg)add_flg = 1;Num+;if(Num > 9) Num = 0;else add_flg = add_num = 0; void MoveSet() static bit move_flg; static uchar move_num; if(!movekey) move_num +;if(move_num >= SHAKE && move_flg = 0)move_flg = 1;dis_dataSeat = Num;Seat+;if(Set_sign = 1)if(Seat > 13) Seat = 2; if(Seat > 17 ) Seat = 14; Num = dis_dataSeat ;else move_flg = move_num = 0; void setup() static bit set_flg;static uchar set_num;if(!setkey) set_num+;if(set_num >= SHAKE && !set_flg) set_flg = 1; if(elect = 0) elect = 1; Count = 0; Set_sign = 1;else if(elect = 2)dis_dataSeat = Num; if(Set_sign = 1) read_year= dis_data2*16 + dis_data3;mon=dis_data4*16 + dis_data5;day=dis_data6*16 + dis_data7;read_hour= dis_data8*16 + dis_data9;read_min=dis_data10*16 + dis_data11;read_sec=dis_data12*16 + dis_data13;ds1302_initial(); read_day = (day/16)*10+(day%16); read_mon = (mon/16)*10+(mon%16);currentday=read_day;Sector_erase(cdays_addr);Byte_program(cdays_addr,cdays/100);Byte_program(cdays_addr+1,cdays%100);Byte_program(cdays_addr+2,currentday); else cdays = dis_data14 * 1000 + dis_data15 * 100 + dis_data16 * 10 + dis_data17;Sector_erase(cdays_addr);Byte_program(cdays_addr,cdays/100);Byte_program(cdays_addr+1,cdays%100);Byte_program(cdays_addr+2,currentday); Set_sign = elect = 0;else Set_sign+;else set_num = set_flg = 0;if(elect = 1)Count+;if(Count >= 150)Count = 0;if(Set_sign = 1)Seat = 2;Num = dis_dataSeat; elsedis_data14=cdays/1000%10;dis_data15=cdays%1000/100;dis_data16=cdays%100/10;dis_data17=cdays%100%10;Seat = 14;Num = dis_dataSeat; elect = 2; if(elect = 2)Blink +;if(Blink < 60) dis_dataSeat = Num;else if(Blink < 120)dis_dataSeat = 10;else Blink = 0;AddSet();MoveSet(); void GiveData() if(Set_sign != 1) dis_data0 = 2; dis_data1 = 0; dis_data2 = read_year/16; dis_data3 = read_year%16; dis_data4 = mon/16; dis_data5 = mon%16; dis_data6 = day/16; dis_data7 = day%16; dis_data8 = read_hour/16; dis_data9 = read_hour%16; dis_data10 = read_min/16; dis_data11 = read_min%16; dis_data12 = read_sec/16; dis_data13 = read_sec%16; if(Set_sign < 2) dis_data14=cdays/1000;dis_data15=cdays%1000/100; dis_data16=cdays%100/10; dis_data17=cdays%100%10;if(dis_data14 = 0)dis_data14 = 10;if(dis_data15 = 0)dis_data15 = 10;if(dis_data16 = 0)dis_data16 = 10; void reload() uchar para2;para0=Byte_read(cdays_addr);para1=Byte_read(cdays_addr+1);currentday = Byte_read(cdays_addr+2);cdays=para0*100 + para1; /* 程序入口main/*/main() reload();DIS_change(); while(1) setkey = 1; setup(); DIS_change();GiveData();display(); if(currentday!=read_day) if(read_mon = 1)read_mon = 12;else read_mon = read_mon - 1; if(read_day>currentday) cdays =cdays+(read_day - currentday); else if(read_day<currentday) if(read_mon = 4 |read_mon = 6|read_mon = 9|read_mon = 11)cdays = cdays + (30-currentday)+read_day);else if(read_mon = 2)if(read_year %400=0 | (read_year%4=0 && read_year%100) cdays = cdays + (29-currentday)+read_day);else cdays = cdays + (28-currentday)+read_day);elsecdays = cdays +(31-currentday)+read_day); if(cdays < 0)cdays = 0;dis_data6 = read_day/16;dis_data7 = read_day%16; currentday=read_day;Sector_erase(cdays_addr);Byte_program(cdays_addr,cdays/100);Byte_program(cdays_addr+1,cdays%100);Byte_program(cdays_addr+2,currentday); 附录二 系统原理图

    注意事项

    本文(安全天数计数屏毕业论文.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开