震动式无声闹钟设计毕业论文.doc_第1页
震动式无声闹钟设计毕业论文.doc_第2页
震动式无声闹钟设计毕业论文.doc_第3页
震动式无声闹钟设计毕业论文.doc_第4页
震动式无声闹钟设计毕业论文.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计(论文)题 目:基于MCS-51单片机的震动式无声闹钟设计毕业设计(论文)摘要闹钟已经进入千家万户,给人们带来极大方便,但是在学校,工厂的公共宿舍里,闹钟也会打扰其他人,在这里我们使用震动器件代替闹铃设备,并做成手表式,避免打扰室友。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。经过测试,开发出的震动式闹钟,计时准确,能够用于日常生活,而且没有用手机震动带来的手机辐射,健康环保。 关键词:闹钟 震动器 数字钟 辐射/原来打算用震动棒作为动作元件,结果挨顿批,无奈换成配有偏心轮的电动机目录1 绪论 1.1 什么是单片机11.2 单片机应用的特点11.3 单片机的应用领域11.4 单片机的中断与定时系统21.4.1 MCS-51单片机中断系统 21.4.2 MCS-51单片机的定时器/计数器 21.5 芯片分析42 总体方案设计2.1 设计方案52.2 程序机构框图52.2.1 主程序流程图63 系统的硬件组成3.1 硬件模块的实现63.1.1 显示模块概述73.1.2 动作模块概述93.2 晶振电路103.3 按键模块114 程序设计 4.1 时钟程序11 4.2 驱动电机程序205 系统功能调试与指标参数 5.1 基本功能和指标参数22 5.2 测试的相关参数226 总结23致谢24参考文献25附录一261 绪论1.1 什么是单片机在一片集成电路芯片上集成微处理器CPU(Central process unit),随机存储器RAM(Random Access Memory),只读存储器 ROM(Read Only Memory),中断系统,定时器/计数器以及I/O接口电路,从而构成了单芯片微型计算机,即单片机。单片机具有体积小,价格低,可靠性高和易于嵌入式应用等特点,适合用作智能仪器仪表和工业测控系统的前端装置。单片机本身没有开发能力,必须借助开发机完成应用系统的硬件故障和软件故障的排除,调试完程序必须固化到单片机的内部或外部程序存储器芯片中。新的单片机应用系统开发技术在近几年有了快速的发展。 1.2 单片机应用的特点一、控制功能强可靠性高 单片机是为了满足工业控制而设计的,所以实时控制功能特别强,其CPU可以对I/O接口直接进行操作,位操作能力更是其它计算机无法比拟的,另外,由于CPU,存储器,以及I/O接口集成在同一芯片内,各部件之间的连接紧凑,数据在传送时受到干扰小,且不易受环境条件的影响,所以单片机的可靠性非常高。二、体积小,价格低,易于产品化 每一片单片机既是一台完整的微型计算机,对于批量的专用场合,一方面可以在众多的单片机品种间进行匹配选择,同时还可以专门进行芯片设计,使芯片功能与应用具有良好和对应关系。对单片机产品的引脚封装方面,有的单片机引脚已减少到8个或更少,从而使应用系统的印刷板减小,按插件减少,安装简单。 在现代的各种电子器件中,单片机具有良好的性能价格比,这正是单片机得以广泛应用的重要原因。 1.3 单片机的应用领域 (1)智能仪器仪表 单片机用于各种仪表,一方面提高了仪表仪器的使用功能和精度,使仪器仪表智能化,同时还简化了仪器仪表的硬件结构,从而可以方便地完成仪器仪表的升级代换。如各种智能化电气测量仪表,智能传感器等。 (2)机电一体化 机电一体化产品是集机械技术,微电子技术,自动化技术和计算机技术于一体,具有智能化特征的各种机电产品。单片机在机电一体化产品的开发中可以发 挥巨大的作用。典型的产品如:机器人,数控机床,自动包装机,点钞机,医疗 设备,打印机,传真机,复印机等。(3)实时工业控制 单片机还可以用于各种物理量的采集与控制。电流,电压,温度,液位,流量等物理参数的采集和控制均可以利用单片机方便地实现。在这类系统中,利用 单片机作为系统控制器,可以根据被控对象的不同特征采用不同的智能算法,实 现期望的控制指标,从而提高生产效率和产品质量。典型应用如电动机转速控制,温度控制,自动生产线等。 (4)分布系统的前端模式 在较复杂的工业系统中,经常要采用分布式控制系统完成大量的分布参数的采集。在这类系统中,采用单片机作为分布式系统的前端采集模块。系统具有运 行可靠,数据采集方便灵活,成本低廉等一系列优点。 (5)家用电器 家用电器是单片机的又一重要应用领域,前景十分广泛如空调,电冰箱,洗 衣机、电饭煲,高档洗浴设备,高档玩具。另外,交通领域中,汽车,火车,飞机,航天等均有单片机的广泛应用。1.4 单片机的中断与定时系统 1.4.1 MCS51单片机中断系统 中断是一项重要的计算机技术,这一技术在单片机中得到了充分的继承。CPU在面对多项任务,但是由于资源有限,有可能出现资源竞争的局面,即多个任务来争夺一个CPU。而中断技术就是解决资源竞争的有效方法。采用中断技术可以使多项任务共享一个资源,所以中断技术实质上就是一种资源共享技术。在单片机中,中断技术主要用于实时控制。所谓实时控制,就是要求计算机能及时地响应被控对象提出的分析,计算和控制等请求,使被控对象保持在最佳工作状态,以达到预定的控制效果。由于这些控制参量的请求都是随机发出的而且要求单片机必须作出快速响应并及时处理,因此,只有靠中断技术才能实现。 1.4.2 MCS-51 单片机的定时器/计数器 MCS-51 单片机的定时器/计数器的控制应用中,定时是必不可少的,可供选择的定时方法有: (1)软件定时 软件定时是靠执行一个循环程序以进行的时间延迟.软件定时的特点是时间 精确,且不需外加硬件电路。但软件定时要占用CPU,增加CPU开销,因此软件 定时的时间不宜太长。此外,软件定时方法在某些情况下无法使用。(2)硬件定时 对于时间较长的定时,常使用硬件电路完成。硬件定时方法的特点是定时功 能全部由硬件电路完成,不占CPU时间。但需通过改变电路中的元件参数来调节 定时时间,在使用上不够灵活,方便。(3)可编程定时器定时 这种定时的方法是对通过系统时钟脉冲的计数来实现。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来即方便,又灵活。此外,由于采用计数方法实现,因此,可编程定时器都兼有计数的功能,可以对外来脉冲进行计数。 单片机应用中,定时与计数的需求较多,为了使用方便并增加单片机的功能,就干脆把定时电路集成在芯片中,成为定时器/计数器。MCS51内部就有两个定时器/计数器。 定时器/计数器的定时和计数功能 作为基本组成内容,MCS51单片机共有2个可编程的定时器/计数器,分别称定时器/计数器和定时器/计数器1。它们都是16位加法计数结构,分别由 TH0(地址是 8CH)和 TL0(地址是 8AH)及TH1(地址是 8DH)和TL1(地址是 8BH)两个8位计数器组成。这4个计数器均属专用寄存器之列。 计数功能 所谓计数是指对外部时间进行计数。外部时间的发生以输入脉冲表示,因此 计数功能的实质就是对外来脉冲进行计数。MCS51芯片有T0和T1两个信号的 引脚,分别是两个计数器的计数输入端。外部输入的脉冲在负跳变时有效,进行 计数器加1(加法计数)。 定时功能 定时功能也是通过计数器的计数来实现的,不过此时的计数脉冲来自单片 机的内部, 即每个机器周期产生一个计数脉冲。也就是每个机器周期计数器加 1,由于一个机器周期等于12个振荡脉冲周期,因此计数频率为振荡频率的1/12。 如果单片机采用 12MHZ 晶体,则计数器频率为 1Mhz,即每微妙计数器加1。这样 不但可以根据计数器计算出定时时间,也可以反过来按定时时间的要求计算出计数器的预置值。 15 芯片简介 AT89C51 单片机引脚图如下: 图 1.1 AT89C51引脚图 MCS-51 单片机是标准的 40 引脚双列直插式集成电路芯片,其各引脚功能如下: VCC:+5V 电源。 VSS:接地。 RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效, 用完成单片机的复位初始化操作。XTAL1 和 XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 P0口:P0 口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时, 必须先向电路中的锁存器写入 “1” , 使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接 电路 MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用 时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。 P2口:P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一 样。P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向寄存器Q端。 P3口:P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。2 总体方案设计 2.1 设计方案数字钟是一个将“时”“分”“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒。因此,一个基本的数字钟电路主要由译码显示器、“时”“分”“秒”“日期”计数器、校时电路、和振荡器组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用晶振来实现。将标准秒信号送入“秒计数器”“秒计数器”采用,60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”“分”“秒”计数器的输出状态送到1602LCD,通过1602LCD显示出来。数字电子钟主体电路应由以下几部分组成:通过分频器产生标准秒信号;60 进制分秒计数器以及24小时计数器。2.2 程序结构框图 图 2.1 软件的模块实现原理图 2.2.1 主程序流程图主程序流程图如图2.2 所示:图 2.2 系统总体流程图 3 系统的硬件组成 3.1 硬件模块的实现单片机系统中的时钟是一切与时间有关过程的运行基础,在实时控制系统中 尤其如此。钟有绝对时钟和相对时钟两种。绝对时钟是与当地的时钟同步的,有 月、日,时、分、秒等功能。相对时钟则与当地时间无关,一般只有时、分、秒自动控制定时时间长短的功能。MCS-51系列单片机只有T0和T1两个16位定时器,若都用作系统时钟的绝对时钟和相对时钟定时,则当系统再用于通信等需要定时器资源的情况下,会出现定时器不够用的情况。为此,统一设计单片机的时钟系统,用一个定时器完成绝对和相对时钟等多项定时任务是有实际意义的。 3.1.1 显示模块概述概述 1、功能概述 本时钟使用LCD1602液晶,显示的基本格式为:*-*-*。随时可以调整时钟的时间。当按下时钟调整模式键时,进入调整时间状态。通过不同的按钮次数,调整不同的位置的数字。单片机时钟的基本框图如图3.1所示:图 3.1 单片机时钟的基本框图 晶振复位电路:产生计数信号,完成时钟的运行。 输入模式键:选择调整的位:时,分,秒。 输入调整键:调整相应位的时间,加模式:每按一次,加一;减模式:每按一次,减一。 技术方案 一个完整的数字钟电路相当于一个简单的系统,每个部分都要设计。51单片机的片内结构由八部分组成。微型处理机(CPU),数据存储器(RAM)。程序存贮器(ROM,EPROM),I/O口,定时器,计数器。中断系统及特殊的功能寄存器(SFR)。数据存储器和程序存储器的可寻址的范围是:64K地址范围是:0000H-FFFFH 扩展的 I/O 均占用存储器的地址。1602 显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,电压对其显示区域进行控制,液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。1602外观如图3.2所示。图 3.2 1602外观1602引脚如表所示: 表 3.11602引脚说明 编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读/写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极 1602驱动电路原理图如下: 图 3.3 1602驱动电路原理图 图中 C51 与1602的接口。P0与 1602数据接口相连。P24接数据/命令选择端,P26接使能信号。 3.1.2 动作概述概述1、功能概述动作模块是电动机驱动的偏心轮,当时间到设定动作时单片机通过DA驱动电动机分级加速,避免突然震动吓到人。动作模块基本框图如下:图 3.4 单片机驱动电机基本框图 晶振复位电路:产生计数信号,完成时钟的运行。 信号输入:到达设定时间,时钟单片机P11置高电平,负责驱动电动机的单片机收到后驱动电机运转。DAC0832如图所示:图3.5 DAC0832原理图单片机驱动电机原理图图3.6单片机驱动电机原理图图中P3口连DA数据端,P22接片选端,P23接写信号1。3.2 晶振电路 单片机由12 MHZ晶振的准确支持运行,将时钟芯片中的时、分读取到缓冲区内,并将时、分送到显示电路,图3.7所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器、其输入端为芯片引脚 XTAL1,输出端为引脚 XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。 图 3.7 晶振电路 3.3 按键模块按键模块用来调整显示时间和设定震动时间,如下图所示: 图 3.8 按键模块原理图 4 程序设计4.1 时钟程序时钟程序分为1602液晶显示,键盘扫描,时分秒处理三部分。首先1602初始化:根据1602说明书时序初始化void write_com(uchar com)/读操作rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;根据程序要求在main()前面声明:sbit rs=P24; sbit lcden=P26;sbit rd=P37;用到延时函数delay()写在main()前面,不用声明void delay(uint z)/延时1毫秒uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);键盘扫描部分:键盘用于显示时间的调整设定闹钟时间,键按动次数对应特定区域,单片机根据区域及加1或减1按钮调整时分秒void keyscan()rd=0;if(s4=0)delay(5);if(s4=0)dnum+;while(!s4)/松手检测if(dnum=1)TR0=0;write_com(0xc0+10);write_com(0x0f);if(dnum=2)write_com(0xc0+7);if(dnum=3)write_com(0xc0+4);if(dnum=4)dnum=0;write_com(0x0c);TR0=1;驱动电机时间设定if(dnum!=0)if(s5=0)delay(5);if(s5=0)while(!s5);if(dnum=1)write_time(10,miao);write_com(0xc0+10);if(dnum=2)fen+;if(fen=60)fen=0;write_time(7,fen);write_com(0xc0+7);if(dnum=3)shi+;if(shi=24)shi=0;write_time(4,shi);write_com(0xc0+4);if(s6=0)delay(5);if(s6=0)while(!s6);if(dnum=1)write_time(10,miao);write_com(0xc0+10);if(dnum=2)fen-;if(fen=-1)fen=59;write_time(7,fen);write_com(0xc0+7);if(dnum=3)shi-;if(shi=-1)shi=23;write_time(4,shi);write_com(0xc0+4);显示时间设定部分if(s1=0)delay(5);if(s1=0)s1num+;while(!s1);if(s1num=1)TR0=0;write_com(0xc0+10);write_com(0x0f);if(s1num=2)write_com(0xc0+7);if(s1num=3)write_com(0xc0+4);if(s1num=4)s1num=0;write_com(0x0c);TR0=1;if(s1num!=0)if(s2=0)delay(5);if(s2=0)while(!s2);if(s1num=1)se+;if(se=60)se=0;write_time(10,se);write_com(0xc0+10);if(s1num=2)mi+;if(mi=60)mi=0;write_time(7,mi);write_com(0xc0+7);if(s1num=3)ho+;if(ho=24)ho=0;write_time(4,ho);write_com(0xc0+4);if(s3=0)delay(5);if(s3=0)while(!s3);if(s1num=1)se-;if(se=-1)se=59;write_time(10,se);write_com(0xc0+10);if(s1num=2)mi-;if(mi=-1)mi=59;write_time(7,mi);write_com(0xc0+7);if(s1num=3)ho-;if(ho=-1)ho=23;write_time(4,ho);write_com(0xc0+4);时分秒部分放在中断部分单片机定时格式TH0=(65526-X微秒)/256;TL0=(65526-X微秒)%256;首先定时50毫秒,重复20次达到1秒产生中断,产生中断后首先将存储单元清零。即count=0.同时将数值传给液晶。void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=20)count=0;se+;if(se=60)se=0;mi+;if(mi=60)mi=0;ho+;if(ho=24)ho=0;write_time(4,ho);write_time(7,mi);write_time(10,se);4.2 驱动电机程序因单片机资源不够用,所以用两块单片机首先根据芯片初始化要求声明dac0832sbit csda=P22;sbit wr=P23;并在main()中清零csda=0;wr=0;当接收到来自时钟单片机已到闹钟设定时间时while(p1_1=0)P3=0x33;/慢慢加强振动,不至于吓到人delay(10000);P3=0x66;delay(10000);P3=0x99;delay(10000);P3=0xcc;delay(10000);P3=0xff;delay(50000);需要延时函数,在main()之前写void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);可以不用声明。5 系统功能调试与指标参数 本系统以89C51单片机作为控制核心,使用1602液晶和按键模块,实现时间的显示,具有时钟显示外还能闹时,实际运行效果良好,并可进行进一步的扩展.数字电子钟能以秒为最小时间单位计时,同时还能用数字直观显示当前的时与分,秒。 5.1 基本功能和参数 1、时制式为24小时制。 2、采用1602液晶显示时、分,秒采用数字显示。 3、具有方便的时间调校功能。 4、计时稳定。 6、能无声闹时。 5.2 测试结果经过检测,震动式闹钟有如下特点:(1) 走时精准;(2)时分秒调整按钮具有设定功能;(3)闹钟定时按钮具有设定功能;(4)到达设定闹时,电动机按照程序逐步增加转速;(5)1602能显示设定数据。总结单片机渗透到各个领域,占据着电器的核心,已经成为我们手臂的延伸。亲眼看见单片机DIY时顿时震撼,研究它时才明白原来早期的计算机产品和单片机一样,乔布斯和他的搭档做的蓝盒子以及其他的玩具用单片机一样能做,在第一台计算机发明后,为什么会有一群疯子投身计算机。学会了一点点以后就开始想着做一些玩具甚至电影里的高科技道具:遥控飞机控制器,全息摄影机,红外眼睛.做这些先要把单片机学会,有人说学会做个时钟就学会了单片机大半部分。所以我们就做个时钟。最主要的部分是写程序,遇到不会的上网查,看书,问老师。在老师的帮助下最终完成任务。在设计中几乎设计所有学过的C语言与单片机知识,有些忘记了还得从头学起。另外在写程序时候需注意多写子程序与注释,便于模块化以及理解。在写程序过程中语法正确,编译正常,但是达不到预期效果是正常的,这需要我们多了解单片机知识,多了解C语言。认真检查程序,考虑全面。这次课程设计改变了学习方式,以前学习书本,有啥学啥,这次根据需要用到的知识去学习,这让我受益终身。发现问题、提出问题、分析问题、解决问题和实践能力都会受益于我以后的学习、工作和生活。这次课程设计使我学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。另外,要非常感谢我的指导老师,是她指引我克服一个又一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。致谢本文是在导师夏怡的悉心指导下完成的。导师严谨求实的治学态度、诲人不倦的敬业精神、正直坦荡的为人风范使我受益匪浅。谨此向导师致以崇高的敬意和衷心的感谢!在课题选题和研究过程中,还得到了其他老师和同学的帮助。在此,对其他给予帮助的老师们表示我诚挚的谢意,对给予帮助的同学们表示衷心的感谢。感谢我的家人,是他们的鼓励和支持,使我顺利完成了论文。鉴于本人所学知识有限,经验不足,又是初次研究这种复杂的设计,在此过程中难免存在一些错误和不足之处,恳请各位老师给予批评和指正。参考文献 1 郭天祥.新概念51单片机C语言教程.入门、提高、开发M,北京:电子工业出版社,20112 张毅刚.新编MCS-51单片机应用设计M,哈尔宾:哈尔滨工业大学出版社,20083 谭浩强.C程序设计M,北京:清华大学出版社,20054 求是科技.8051系列单片机C程序设计完全手册M,北京:人民邮电出版社,20065 张文涛.PROTEUS仿真软件应用M,武汉:华中科技大学出版社,20126 朱清慧.Proteus-电子技术虚拟实验室M,北京:中国水利水电出版社,2012附录一时钟程序清单: 时钟程序:#include/用到1602液晶#define uchar unsigned char #define uint unsigned intsbit rs=P24; /1602液晶sbit P2_5=P25;/读写选择端sbit lcden=P26;sbit rd=P37;sbit di=P11;/DA数据口sbit guan=P21;/关震动sbit s1=P30;sbit s2=P31;sbit s3=P32;sbit s4=P33;sbit s5=P34;sbit s6=P35;uchar count,s1num; /定时用uchar dnum;/设闹钟用char ho,mi,se; /设置时钟时分秒char shi,fen,miao;/设置无声闹钟时分秒uchar code table= 2012-12-22Sat;uchar code table1= 00:00:00;void delay(uint z)/延时1毫秒uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/读操作rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()/初始化uchar num;miao=0;ho=0;mi=0;se=0;shi=0;fen=0;lcden=0;P2_5=0;/写入数据,接低电平guan=0;write_com(0x38);/显示16*2显示,5*7点阵,8位数据接口write_com(0x0c);/开显示write_com(0x06);/写字符后指针加一write_com(0x01);/清零write_com(0x80);/地址指针第一行for(num=0;num15;num+)/写入 2012-2-22 wedwrite_date(tablenum);delay(5);write_com(0xc0);/第二行for(num=0;num12;num+)/写入 00:00:00write_date(table1num);delay(5);TMOD=0x01;TH0=(65536-50000)/256;/TH0=(65536-x微秒)/256;TL0=(65536-50000)%256;/TL0=(65536-x微秒)%256;EA=1;ET0=1;TR0=1;void write_time(uchar add,uchar date)uchar ho,ge;ho=date/10;ge=date%10;write_com(0xc0+add);write_date(0x30+ho);write_date(0x30+ge);void keyscan()/键盘扫描rd=0;if(s4=0)delay(5);if(s4=0)dnum+;while(!s4)/松手检测if(dnum=1)TR0=0;write_com(0xc0+10);write_com(0x0f);if(dnum=2)write_com(0xc0+7);if(dnum=3)write_com(0xc0+4);if(dnum=4)dnum=0;write_com(0x0c);TR0=1;if(dnum!=0)if(s5=0)delay(5);if(s5=0)while(!s5);if(dnum=1)write_time(10,miao);write_com(0xc0+10);if(dnum=2)fen+;if(fen=60)fen=0;write_time(7,fen);write_com(0xc0+7);if(dnum=3)shi+;if(shi=24)shi=0;write_time(4,shi);write_com(0xc0+4);if(s6=0)delay(5);if(s6=0)while(!s6);if(dnum=1)write_time(10,miao);write_com(0xc0+10);if(dnum=2)fen-;if(fen=-1)fen=59;write_time(7,fen);write_com(0xc0+7);if(dnum=3)shi-;if(shi=-1)shi=23;write_time(4,shi);write_com(0xc0+4);if(s1=0)delay(5);if(s1=0)s1num+;while(!s1);if(s1num=1)TR0=0;write_com(0xc0+10);write_com(0x0f);if(s1num=2)write_com(0xc0+7);if(s1num=3)write_com(0xc0+4);if(s1num=4)s1num=0;write_com(0x0c);TR0=1;if(s1num!=0)if(s2=0)delay(5);if(s2=0)while(!s2);if(s1num=1)se+;if(se=60)se=0;write_time(10,se);write_com(0xc0+10);if(s1num=2)mi+;if(mi=60)mi=0;write_time(7,mi);write_com(0xc0+7);if(s1num=3)ho+;if(ho=24)ho=0;write_time(4,ho);write_com(0xc0+4);if(s3=0)delay(5);if(s3=0)while(!s3);if(s1num=1)se-;if(se=-1)se=59;write_time(10,se);write_com(0xc0+10);if(s1num=2)mi-;if(mi=-1)mi=59;write_time(7,mi);write_com(0xc0+7);if(s1num=3)ho-;if(ho=-1)ho=23;write_time(4,ho);write_com(0xc0+4);void main()init();while(1)keyscan();if(shi=ho)&(fen=mi)guan=1;if(guan=1)di=1;void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=20)count=0;se+;if(se=60)se=0;mi+;if(mi=60)mi=0;ho+;if(ho=24)ho=0;write_time(4,ho);write_time(7,mi);write_time(10,se);驱动电机程序#include /用到DAC0832#define uint unsigned intsbit csda=P22;sbit wr=P23;sbit p1_1=P11;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void main()csda=0;wr=0;while(p1_1=0)P3=0x33;/慢慢加强振动,不至于吓到人delay(10000);P3=0x66;delay(10000);P3=0x99;delay(10000);P3=0xcc;delay(10000);P3=0xff;delay(50000);袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论