毕业设计(论文)-基于单片机的多功能音乐电子时钟设计.doc_第1页
毕业设计(论文)-基于单片机的多功能音乐电子时钟设计.doc_第2页
毕业设计(论文)-基于单片机的多功能音乐电子时钟设计.doc_第3页
毕业设计(论文)-基于单片机的多功能音乐电子时钟设计.doc_第4页
毕业设计(论文)-基于单片机的多功能音乐电子时钟设计.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的可调数字时钟设计1. 设计说明1.1 前言1.1.1 题目来源的背景及课题意义由于单片机技术的不断发展,其控制系统已能够取代复杂电子线路或数字电路构成的控制系统,单片机主要以软件编程来实现电子线路的外围控制,并能够实现智能化。单片机具有集成度高、处理功能强、可靠性高、性能稳定等优点,在工业控制、智能仪器仪表、办公自动化、家用电器等诸多领域得到广泛的普及和应用。 数字钟是实现对“时”、“分”、“秒”数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们生活中不可缺少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛使用,数字钟的精度、稳定度远远超过老式机械钟。与传统机械钟相比,它具有走时准确、显示直观无机械传动装置等优点。它以其小巧,价格低廉,走时精度高,使用方便,便于集成化而受到了人们的欢迎并很快走进了千家万户。因此,研究数字钟,有着非常现实的意义。1.1.2 数字时钟的应用数字时钟具有走时准确,一钟多用等特点,已成为人们日常生活中的必需品,给人们的生活、学习、工作、娱乐带来极大的方便。随着数字集成电路技术的发展和石英振荡器的更新换代,数字时钟具有了走时更准确、性能更稳定、携带更方便等优点,被广泛用于计时、自动报时、自动控制及航天等领域。1.2 数字时钟的基本设计原理数字时钟一般由走时、显示和调整时间3项基本功能组成,这些功能在单片机时钟里主要由软件设计体现出来,其中,走时部分利用单片机的定时器/计数器产生的中断。本设计设置定时器t0工作在模式1状态下,设置每隔50ms中断一次,中断20次正好是1s。中断服务程序里记载这中断的次数,中断20次为1s,60s为1分,60分为1小时,24小时为1天。时钟的显示是使用2个四位一体led数码管来显示时、分、秒,其软件设计原理是:由中断产生的秒、分、小时数据,经过转换子程序转换成适应led数码管显示的数据,并通过单片机的输出功能输入到数码管显示器,在通过显示器扫描程序,显示出时钟的走时时间。调整时钟时间是利用了单片机的输入功能,把按键开关作为单片机的输入信号,通过检测被按下的按键,从而执行赋予该开关调整时间功能。1.3 整个系统实现的基本功能(1)用四个电位按键来实现对电子时钟的调试工作,当按第一下总控键时进入调时状态,时位闪烁,可以用加一键和减一键对时进行调整,在调整时秒正常运行;当按第二下总控键时时钟进入调分设置,分位闪烁,可以用加一键和减一键对分进行调整,另外有一个时钟控键来实现闹钟是否开启;当按第三下总控键时时钟进入秒设置,秒位闪烁,以用加一键和减一键对秒进行调整;当按第四下总控键时,时钟进入闹钟调整模式,闹钟时位闪烁,可对其进行加减;当按第五下总控键时,闹钟分位闪烁,可对其进行加减;当按第六下总控键时,时钟退出调整模式,进入正常走时。(2)用两个四位数码管来实现设计的显示部分,其演示模式是: 时时-分分-秒秒。 该数码管组合的功能管脚是八个位选择连接芯片的p2引脚,八个显示管位并联再接入到芯片p0引脚。从而在功能上区分开,实现数码管的显示功能。(3)用一个led灯和电阻组成的简易电路结合设计来实现闹钟状态的指示功能,闹钟开时,led灯亮,而闹钟关时,led灯灭。(4)用一个蜂鸣器和三极管等配件组成一个闹钟电路,再与芯片的p3.7引脚连接。当时钟到设定的报时点时便会发出音乐来实现闹钟功能。(5)用一个按键和其他部件组成的复位电路与芯片连接来实现整个程序及硬件的重新复位功能。372 数字时钟的硬件设计2.1 系统总体方案设计本设计采用stc89c52单片机设计一个数字电子钟,通过两个4位一体led数码管显示时、分、秒,并设有6个按键。电路分为6部分,分别为复位电路、键盘电路、时钟电路、蜂鸣器电路、显示电路和控制电路。复位电路采用按键复位方式。键盘电路采用独立式键盘。时钟电路用11.0592mhz的晶振产生时钟信号。蜂鸣器电路由三极管与蜂鸣器组成。显示电路采用8个三极管驱动两个4位led显示。控制电路采用8位的stc89c52单片机作为cpu。stc89c52是整个系统的核心,本项目一共使用的stc89c52的端口有p1、p0、p2口及p3口,其中p0、p2口用来控制数码管的显示。stc89s52使用的是11.0592mhz的无源晶振,其振荡周期是时钟周期的12倍,因此每一条单周期指令的执行时间是1us;使用p1口来实现键盘的操作功能。在程序中对键盘的控制采用的是扫描的方式,在需要得到键盘输入时,就每200毫秒对键盘进行一次扫描,以次来避免键盘的过快反应从而出现紊乱现象。stc89c52中的p0和p2端口用于实现对数码管显示电路的控制。p0接数码管的段控制,p2用于接数码管的位控制,实现时钟的显示。 stc89c52中的p1.4p1.7口实现了整个系统的四个控制键,这四个控制键分别是“设置”、“加一”、“减一”和“闹钟开关”,这四个控制键是整个系统中的总控制键。同样,这四个控制键也是使用扫描的方式进行判断的。但是这四个控制键不需要使用专门的解码,而是直接使用低电平的判断方式来进行控制。stc89c52中的p3.6用于控制蜂鸣器,p3.7用于控制闹钟指示灯。本系统基本框图1所示:复位电路时钟电路stc89c52控制电路显示电路蜂鸣器电路键盘电路图1 设计方案框图2.2 电源电路 系统的芯片需要+5v的工作电压,所需输出的电流比较大,而电脑usb可以提供额定功率为5v/500ma的稳定电源供usb设备使用。采用普通的usb线连接微型计算机作为系统电源,虽然功率上稍大于系统需要,但不需要更换电源,并且比直流稳压电源更轻便,可随时使用、调试系统。电源电路如图2所示:图2:电源电路2.3 按键电路键盘是人与单片机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间为10ms 。本设计采用独立式键盘,独立式按键是直接用i/o口线构成的单个按键电路,如图3所示,其特点是每个按键单独占用一根i/o口线,每个按键的工作不会影响其它i/o口线的状态。但当所需按键数量多,会占用过多的i/o口线。键盘接到单片机的p1口上,当键按下时,在其相应的口线上产生低电平信号,键松开时仍为高电平信号。图3:键盘电路2.4 时钟电路stc系列单片机的时钟具有丰富的时钟源,内部从0m到80m的时钟源,可以通过编程熔丝位来选择,外接晶振电路如图4所示,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。本设计采用的是内部振荡方式,为了获得精确的计时,晶体振荡器选用11.0592mhz的型号,两个30pf的c1,c2电容起到辅助振荡作用。本设计中定时方式为工作方式1,即最小定时时间为1us,最大定时时间约为65.5ms。图4:单片机时钟电路2.5 复位电路复位是单片机的硬件初始化操作。经复位操作后,单片机系统才能开始正常工作。当stc系列单片机的复位引脚rst(全称reset)出现大于最小脉冲的低电平时,单片机就执行复位操作。如果rst持续为低电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和开关复位。上电复位要求接通电源后,自动实现复位操作。复位电路如图5所示。电阻r1、r2和c1构成复位电路,按下复位键可实现手动复位。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器pc0000h,这表明程序从0000h地址单元开始执行。单片机冷启动后,片内ram为随机值,运行中的复位操作不改变片内ram区中的内容,32个通用寄存器复位后的状态为确定值。图5:复位电路2.6 数码管显示电路数码管显示电路是本设计最核心的部分。显示电路由两个5461bs四位一体共阳数码管和s9012 pnp三极管组成。如图6所示:图6:数码管显示电路2.6.1数码管简介四位一体数码管的内部结构,如图7所示。由图可知,四个数码管的位控端连接在一起,共用8根数据线,四个公共端却单独占一根口线。假设段控端有段码输入时,每个数码管的段控端都收到了段码,但只有位控线有效的数码管才能显示数据,反之亦反。共阳极数码管段控端为低电平有效,位控端高电平有效,共阴极数码管恰恰相反。四位一体数码管用于动态扫描,即把数码管显示数据的段控码分时送到其对应的段控端。当一个段控码被送到段控端时,显示此段控码数据的数码管,它的位控端置有效电平,数码管点亮;而其他数码管的位控端送无效电平,数码管不亮。持续点亮一段时间,再送其它的段控码,依次把显示段控码的数码管,使其位控端为有效电平,其他数码管的位控端为无效电平,就这样数码管依次被点亮。利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短, 发光的亮度等因素.通过实验发现, 当扫描刷新频率(发光二极管的停闪频率) 为50hz, 发光二极管导通时间1m s 时, 显示亮度较好, 无闪烁感。 四位一体数码管共十二个引脚,从数码管的正面看,它以第一脚为起点,逆时针排列的。由图7可知,6、8、9、12为公共端,a-11、b-7、c-4、d-2、e-1、f-10、g-5、dp-3。显示字型和代码关系如表1所示。图7:共阳数码管管脚图表1 十六进制数字型代码字符共阳段码共阴段码字符共阳段码共阴段码0c0h3fh990h6fh1f9h06ha88h77h2a4h5bhb83h7ch3b0h4fhcc6h39h499h66hda1h5eh592h6dhe86h79h682h7ghf8eh71h7f8h07h-bfh40h880h7fh熄灭ffh00h2.6.2三极管驱动电路由于单片机输出或输入电流有限,因此无法驱动数码管led点亮,所以通过单片机输出直接与三极管相连,并且单片机输出也只有两种状态(1和0),此时三极管工作在开关状态下,从而点亮与三极管相连数码管。 本设计中三极管接数码管的位选端,当单片机输出低电平时,三极管导通,与其相连的共阳极数码管显示器开始工作。由于当四位一体数码管中的一位led全亮的时候,驱动要提供的电流较大,所以位驱动选用了三极管放大电路进行电流的放大。三极管放大电路主要有以下两种:共集放大,共射放大。本设计使用共射放大电路,如图8所示。共射放大电路的基极驱动是用低电平,这就避免了上电时产生涌流冲击的出现。该电路为本系统实现电流的放大,驱动数码管点亮,保证了整个系统的稳定性。图8 三极管放大电路2.7 蜂鸣器电路采用蜂鸣器闹铃,当到设定时间时,单片机向蜂鸣器送出低电平,蜂鸣器响铃。采用蜂鸣器闹铃结构简单,只需要单路信号控制,发出的闹铃声音可以根据响和不响的不同的软件延时时间来控制,当然也能发出音乐声音。蜂鸣器电路由一个1k限流电阻、一个pnp三极管s9012组成。由89c52的p3.7口控制蜂鸣器电路,定时时间到, p3.7输出一定频率脉冲时,蜂鸣器将发出响声;一分钟后停止。电路如图9所示:图9:蜂鸣器电路2.8 单片机最小系统本数字电子钟设计采用stc89c52单片机芯片作为中央控制器,实现信号的输出、led的显示及相关的控制功能。如图10所示:图10:单片机最小系统stc89c52具有以下标准功能: 8k字节flash,256字节ram,32 位i/o 口线,看门狗定时器,2 个数据指针,2个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,stc89c52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。引脚结构:vcc : 电源;gnd: 地。p0 口:p0口是一个8位漏极开路的双向i/o口。作为输出口时,每1位最多可以驱动8个ttl的输入端口。当向p0端口的每1位写“1”时,则p0口可作为输入端口。当访问外部程序和数据存储器时,p0口也被作为低8位地址/数据复用。在这种模式下,p0具有内部上拉电阻。在flash编程时,p0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。p1 口:p1 口是一个具有内部上拉电阻的8 位双向i/o 口,作为输出口时,每1位最多可以驱动4个ttl的输入端口。当向p1端口的每1位写“1”时,p1口的8个位电平被内部上拉电阻拉高,此时可以作为输入口使用。p2 口:p2 口是一个具有内部上拉电阻的8 位双向i/o 口,作为输出口时,每1位最多可以驱动4个ttl的输入端口。当向p2端口的每1位写“1”时,p1口的8个位电平被内部上拉电阻拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。在访问外部程序存储器或用16位地址读取外部数据存储器时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,p2口输出p2锁存器的内容。在flash编程和校验时,p2口也接收高8位地址字节和一些控制信号。p3 口:p3 口是一个具有内部上拉电阻的8 位双向i/o 口,作为输出口时,每1位最多可以驱动4个ttl的输入端口。当向p2端口的每1位写“1”时,p1口的8个位电平被内部上拉电阻拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。p3口亦作为stc89c52特殊功能(第二功能)使用,如表2所示。在flash编程和校验时,p3口也接收一些控制信号。表2 p3口的所有功能脚引脚号第二功能p3.0 rxd(串行输入) p3.1 txd(串行输出) p3.2 int0( 外部中断0) p3.3 int1( 外部中断1) p3.4 t0(定时器0 外部输入) p3.5 t1(定时器1 外部输入) p3.6 wr(外部数据存储器写选通) p3.7 rd( 外部数据存储器写选通) rst: 复位输入。晶振工作时,rst脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,rst 脚输出96 个晶振周期的高电平。特殊寄存器auxr(地址8eh)上的disrto位可以使此功能无效。disrto默认状态下,复位高电平有效。ale/prog:地址锁存控制信号(ale)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(prog)也用作编程输入脉冲。在一般情况下,ale 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ale脉冲将会跳过如果需要,通过将地址为8eh的sfr的第0位置 “1”,ale操作将无效。这一位置 “1”,ale 仅在执行movx 或movc指令时有效。否则,ale 将被微弱拉高。这个ale 使能标志位(地址为8eh的sfr的第0位)的设置对微控制器处于外部执行模式下无效。psen:外部程序存储器选通信号(psen)是外部程序存储器选通信号。当stc89c52从外部程序存储器执行外部代码时,psen在每个机器周期被激活两次,而在访问外部数据存储器时,psen将不被激活。ea/vpp:访问外部程序存储器控制信号。为使能从0000h 到ffffh的外部程序存储器读取指令,ea必须接gnd。为了执行内部程序指令,ea应该接vcc。在flash编程期间,ea也接收12伏vpp电压。xtal1:振荡器反相放大器和内部时钟发生电路的输入端。xtal2:振荡器反相放大器的输出端。3 数字电子钟的软件设计3.1 系统软件设计说明在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、bcd转换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。单片机的软件软件设计通常要考虑以下几点:(1)根据软件功能要求,将软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁、流程合理;(2)培养良好的编程风格,考虑结构化程序设计、实行模块化、子程序化。这样不仅便于调试、链接,又易于移植和修改;(3)建立正确的数学模型,并通过仿真提高性能,以选取合适的参数;(4)绘制程序流程图;(5)为程序加入注视,提高可读性;(6)注意软件的抗干扰设计,提高体统可靠性。本系统软件采用模块化结构,由主程序显示子程序、延时子程序按键扫描子程序按键处理子程序、定时器t0中断服务程序构成3.2 定时器/计数器的控制stc89c52单片机内有2个16位定时器/计数器t0、t1,它们的工作方式、定时时间、启动方式等均可以通过程序来设置和改变。当定时器/计数器设置为定时工作方式时,计数器对内部机器周期计数,计数脉冲输入信号由内部时钟提供,每过一个机器周期,计数器增1,直至计满溢出。定时器的定时时间与系统的振荡频率紧密相关,单片机的一个机器周期由12个振荡脉冲组成,因此,计数器的计数频率为振荡器频率的1/12。其定时时间由计数初值和所选择的计数器的长度来确定。本设计利用单片机定时器t0完成计时功能。定时器0计时中断程序每隔50ms中断一次并当作一个计数,每中断一次计数加1,当计数20次时,则表示1s到了,秒变量加1。当秒变量达到60时,秒变量清零同时分变量加1。分变量达到60时,分变量清零同时时变量加1。当时变量达到24时,时变量清零。利用单片机定时器t1按时输出高低电平,因为单片机演奏一个音符,是通过引脚周期性的输出一个特定频率的方波。这就需要单片机在半个周期内输出低电平、另外半个周期输出高电平,周而复始。周期是频率的倒数,可以通过音符的频率计算出周期,演奏时,要根据音符的不同,把对应的半个周期的定时时间初始值,送入定时器t1,再由定时器按时输出高低电平。另外,音乐的节拍是由延时实现的。在用单片机音乐演奏程序中,包括了两个数据表,其中存放了事先算好的各种音符频率所对应的半周期的定时时间初始值。有了这些数据,单片机就可以演奏低音、中音、高音,三个八度共21个音符。演奏乐曲时,就根据音符的不同数值,从表中找到定时时间初始值,送入定时器即可控制音调。通过调用延迟来实现节拍数。3.3 数字电子钟软件程序流程框图3.3.1 主程序流程框图 主程序流程框图如图11所示:yn开始初始化部分中断初始化开启定时器0调按键处理子程序按键扫描是否有键按下?调显示子程序图11:主程序流程框图3.3.2 中断服务程序流程框图中断服务程序流程图如图12所示:y是否满24h?显示缓冲单元清0返回ny是否满60m?小时加1分值加1n计数器重新加载循环次数加1是否满1s?是否满60s?秒值加1n开始图12 中断服务程序流程图3.3.3 显示子程序流程图 显示子程序流程图如下图图13所示。开始读数据,分离高位和低位置段码偏移量和位选码查表并送出显示延时1ms,并指向下一个偏移量8个数码管显示完?yesno图13:显示子程序流程图3.3.4 按键扫描子程序流程图键扫子程序流程图如图14所示:开始延迟10ms闭合状态?结束调按键处理子程序有按键按下?nonoyesyes 图14 键扫子程序流程图3.3.5 按键处理子程序流程图按键处理程序流程图如图15所示:开始开关1按下?模式值加1开关4按下?开关3按下?开关2按下?模式3模式2指示灯开关闹铃开关模式4模式1小时加1分钟加1秒钟加1闹铃时加1闹铃分加1小时减1分钟减1秒钟减1结束模式3模式2模式4模式1闹铃时减1闹铃分减1模式5模式5图15:按键处理程序流程图4. 软硬件调试结果4.1 硬件照片图16:电子钟实物为了确保系统与任务书的要求相符合,对系统功能进行了实际的测试。4.2 操作说明(1)时间显示: 电子钟上电或复位后,数码管显示屏显示00-00-00。(2)时间调整:若要进行时间调整,则需按下设置键,进入时间调整状态,此电子时钟可显示的时间范围为: 0点至23时59分59秒。此时钟时间为24小时制。设置键:菜单按键,松开按键时有效 第一次按下此键后,进入调时状态并且时开始闪烁,表示此时可以对时进行修改。以后每按一次设置键闪烁位右移一个可调位,即以后每按一次闪烁的分别为时、分、秒、闹钟时、闹钟分。第六次按下,则跳出调整模式,正常走时。加一键:松开按键有效 当设置键选中要修改的位时,如分(分闪烁时),按此按可以使分的值从当前值开始加一,加至60时变为00(59过后即显示00,不显示60),秒亦是如此;而时则在加至24时变为00(23过后即显示0,不显示24);减一键:松开按键有效 此键的操作与加一键相同,但它的作用却与加一键的作用相反,在此不再赘述。闹钟开关键:松开按键有效 按下此键松开后,闹钟开启,闹钟指示灯亮。本系统已符合设计基本要求,即可以实现24小时方式;可用八位led数码管显示时、分、秒;可使用按键开关可实现时、分、秒调整。除了满足这些基本要求外,本系统还做了一些创新:(1)通过闹钟按键开关可使系统具有明确的指示。当按下闹钟开关键时,蜂鸣器指示灯亮,明显的指示出闹钟的状态。(2)通过设置功能键进入可进入时间设置系统。第一次按下此键后,进入调时状态并且时开始闪烁,表示此时可以对时进行修改。以后每按一次设置键闪烁位右移一个可调位,即以后每按一次闪烁的分别为时、分、秒、闹钟时、闹钟分。设置完成后仍然是通过设置键返回时钟显示。(3)通过更改主程序中定时器的定时初值,可实现不同样式的数字钟显示方式。通过实验测得以下参数如表3所示(程序中定时参数cycle在以下简称c): 表3参数值c (ms)数码管显示方式 静态 闪烁 拉幕式(4)可实现到时闹鸣功能,持续一分钟。4.3 时钟精度分析 为进一步使本次的系统做得更完美,我使用了标准的秒表对自己设计的时间进行了精度测量。本次设计系统使用的晶振为11.0592mhz.数码管显示00:10:00时,用秒表测得相应的数据如表4所示:表4误差分析序号12345t(min)10.00.578110.00.478710.00.504010.00.30969.59.2587序号678910t(min)10.01.433510.00.20039.59.455610.01.202610.00.2597序号1112131415t(min)9.58.975010.00.118110.00.960410.02.50609.59.8985序号1617181920t(min)10.00.108110.01.054510.00.956010.00.785410.00.4355通过计算可得数码管显示:00:10:00时,秒表测得的数值平均值为:00:10:2343 。以上数据表明了本次系统的精度基本符合实验课程精度要求。如果将测量时间加长,所测得的精度将更精确。4.4 遇到的问题及解决方法问题1:数码管上无显示解决方法:用三极管来驱动数码管的位选端,否则数码管发光微弱。问题2:数码管显示出现乱码解决方法:动态显示时,需要确定led各位显示的保持时间。在某一位显示结束后,应将p2口置为0xff。问题3:按下按键时,数码管上的数字跳跃式变化。解决方法:按键处理程序调用的位置错误。当有键按下时,将按键值赋给buf,松开按键时,才对buf中的数据进行按键处理,并重新将buf置为0xff。若在键按下时进行处理,会导致数字跳跃式变化。 keyrelease=1; /键释按下 keyprocess(buf); /调用按键处理函数 buf = 0xff;问题4:按下按键时,数码管的显示闪烁一次解决方法:在程序执行过程中检测到有按键按下时,会调用一段延时(约10ms)子程序来消抖。若通过执行空操作来实现延时10ms,则会使动态扫描的时间间隔变长,数码管亮度变暗。因此我通过调用延时程序来实现延时10ms,即如下: if(keyinput!=0xf0) /如果有变化则表示有按键按下 delayms(10); /延时,进行去抖动 if(keyinput!=0xf0) /如果有变化则表示有按键按下 if(keyrelease=1) /确实有键按下 keyrelease=0; /按键释放 buf = keyinput; /buf用来暂时存放键值 结束语本设计提出了一种经济实用的数字时钟设计方法,采用s9012pnp三极管作为驱动,四位一体数码管作为显示器,stc89c52单片机作为主控芯片,蜂鸣器及指示灯作为报警系统,完成了数字时钟的硬件制作及软件设计,成功实现了报警、走时功能,在日常生活中具有很大的实用价值。因时钟是手工制作,所以外观看起来不完美。在本设计中,亮点之一体现在走时部分,走时非常准确;显示部分,调整时间时,调整位闪烁,非常直观,且数码管显示比较经济。致 谢历时三个月在自己不断的搜索努力、同学的帮助以及李东老师的耐心指导和热情帮助,本设计已经基本完成。在此期间,李东老师严谨的治学态度和热忱的工作作风令我十分钦佩,他的指导使我受益非浅。同时本系的兴趣小组实验室的开放也为我的制版提供了场地。在此对李东老师和各位任课老师,还有热心帮助过我的同学朋友们表示深深的感谢。通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学四年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这四个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。由于水平有限,设计中存在很多不足之处,敬请各位老师批评指正。参考文献和资料1. 单片机项目设计教程 孙惠芹编著 电子工业出版社,2009.62. at89s51单片机原理、开发与应用 李萍主编 中国电力出版社,2008.73. 51单片机技术与应用系统开发案例精选 江志红编著 清华大学出版社,2008.124. 印刷电路板(pcb)设计与制作 曾峰、巩海洪、曾波编著 电子工业出版社,2005.85. 姜尚坤.单片机综合应用.上海科技出版社.2007-076崔华.单片机实用技术.清华大学出版社7全国大学生电子设计竞赛培训系列教程 高吉祥主编 电子工业出版社,2007.5851单片机开发入门与典型实例 王守中编著 人民邮电出版社,2007.89单片机原理与应用 勒孝峰、张艳主编 北京航空航天大学出版社,2009.0510电子技术课程设计与综合实训 陈光明、施金鸿、桂金莲编著 北京航天航空大学出版社2007.511数字电子技术基础 阎石主编 高等教育出版社,199812 protel 99 se原理图与pcb及仿真 清源计算机工作室编著 机械工业出版社,2004.113. mcs51系列单片机实用接口技术. 李华编 航空航天大学出版社,1993.314. richard c.dorf.modern conctrol systermm.beijing:science publishing house.2002.515. donald a. neamen. electronic circuit analysis and designm.tsinghuauniversity press and springer verlag.2002.5附录:系统硬件原理图和pcb图图17主控板电路原理图 图28:主控板pcb图图18:主板pcb 图19:电源电路pcb图20 主板印制pcb图21:按键pcb图22:蜂鸣器pcb图23:数码管显示器pcb附录:系统主要元件清单名称型号数量备注单片机stc89s521块含插座,双列直插式三极管s90129个电阻4708个电阻1k4个电阻10k1个上拉排阻10k1片数码管5461bs2块含两个插座电容30pf2个电解电容22f1个发光二极管2个带锁按钮1蜂鸣器1个插针38个晶振12mhz1个不带锁按钮5个电解电容10uf1附录:系统源程序/*毕业设计题目: 基于单片机的可调数字时钟设计 设计日期: 2011.5 */#include #define uchar unsigned char#define uint unsigned intuchar code segcode12=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff;/0,1,2,3,4,5,6,7,8,9,-,熄灭uchar code dispbit8=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/数码管位选位uchar buffer8=0,0,0,0,0,0,0,0; /时钟缓存uint hour,min,sec;uint ringhour,ringmin; uint hidhour,hidmin,hidsec,hidringhour,hidringmin;/闪烁显示uint status=0;/模式值sbit music=p36;/闹铃sbit ringled=p37;/闹钟指示灯bit ringoff=1;/闹铃停止uint count=0;/定时器计数uchar keyinput;uchar buf=0xff;/用来存放按键值bit keyrelease=1;uint shansuo=0;uchar timer1h,timer1l,time;/time为节拍(延迟时间),timer1l、timer1h为计数器1初值uchar code freqh=0xf9,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc, /低音17 第一个八度 0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,/中音 17 第二个八度 0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff;/高音 17 第三个八度uchar code freql = 0x21,0xe1,0x8c,0xd8,0x68,0xe9,0x5b, /低音1234567 0x8f,0xee,0x44,0x6b,0xb4,0xf4,0x2d, /中音 1234567 0x47,0x77,0xa2,0xb6,0xda,0xfa,0x16; /高音 1234567uchar code song=5,3,2,3,3,1,4,3,1,5,3,2,3,3,1,4,3,1,5,3,1,5,2,1,6,2,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,3,3,2,1,3,1,2,3,1,3,3,2,3,2,1,4,2,1,5,2,1,6,2,1,5,2,1,4,2,1,5,2,1,3,2,1,4,2,1,5,2,1,4,2,2,6,2,1,5,2,1,4,2,2,3,2,1,2,2,1,3,2,1,2,2,1,1,2,1,2,2,1,3,2,1,4,2,1,5,2,1,6,2,1,4,2,2,6,2,1,5,2,1,6,2,2,7,2,1,1,3,1,5,2,1,6,2,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,5,3,1,3,3,2,1,3,1,2,3,1,3,3,2,2,3,1,1,3,1,2,3,1,7,2,1,1,3,1,2,3,1,3,3,1,2,3,1,1,3,1,7,2,1,1,3,2,6,2,1,7,2,1,1,3,2,1,2,1,2,2,1,3,2,1,4,2,1,3,2,1,2,2,1,3,2,1,1,3,1,7,2,1,1,3,1,6,2,2,1,3,2,7,2,1,6,2,2,5,2,1,4,2,1,5,2,1,4,2,1,3,2,1,4,2,1,5,2,1,6,2,1,7,2,1,1,2,1,6,2,2,1,3,1,7,2,1,1,3,2,7,2,1,6,2,1,7,2,1,1,3,1,2,3,1,1,3,1,7,2,1,1,3,1,6,2,1,7,2,1,0,0,0;/卡农/一个音符有三个数字。前为音节、中为第几个八度、后为时长(以半拍为单位)。/*延时函数*/ void delayms(uint t) uint i; while(t-)for(i=0;i=6) status = 0;shansuo=0; break; case 0xd0:switch(status) /按下加1键,5种模式下加1 case 0x01:if(hour23) hour+; /时加1 else hour=0; break; case 0x02:if(min59) min+; /分加1 else min=0; break; case 0x03:if(sec59) sec+; /秒加1 else sec=0; break; case

温馨提示

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

评论

0/150

提交评论