毕业设计(论文)基于CPLD的MIDI音乐播放器的设计.doc

上传人:仙人指路1688 文档编号:3979031 上传时间:2023-03-30 格式:DOC 页数:31 大小:1.28MB
返回 下载 相关 举报
毕业设计(论文)基于CPLD的MIDI音乐播放器的设计.doc_第1页
第1页 / 共31页
毕业设计(论文)基于CPLD的MIDI音乐播放器的设计.doc_第2页
第2页 / 共31页
毕业设计(论文)基于CPLD的MIDI音乐播放器的设计.doc_第3页
第3页 / 共31页
毕业设计(论文)基于CPLD的MIDI音乐播放器的设计.doc_第4页
第4页 / 共31页
毕业设计(论文)基于CPLD的MIDI音乐播放器的设计.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《毕业设计(论文)基于CPLD的MIDI音乐播放器的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于CPLD的MIDI音乐播放器的设计.doc(31页珍藏版)》请在三一办公上搜索。

1、无锡城市职业技术学院毕 业 设 计 报 告中文题目 基于CPLD的MIDI音乐播放器的设计 英文题目 Design and production of six multi-function digital clock based on MCU姓 名 所在系部 电子信息工程系 所学专业 物联网应用技术 班级名称 物联网1301班 学 号 指导教师 日 期 2015年08月28日 目录摘要IABSTRACTII一、引言1二、系统设计1(一)设计思路1(二)系统原理方框图2三、硬件设计2(一)系统整体电路图2(二)单片机AT89C20512(三)复位电路3(四)时钟电路4(五)按键电路5(六)迅响电

2、路及输入、输出电路5(七)数码管显示电路6(八)稳压电路7四、软件设计7(一)主程序流程图7(二)闹铃程序设计8(三)中断程序设计9五、制作与调试10六、结束语11参考文献13谢辞14附录15摘要摘要:本文主要介绍了用AT89C2051单片机控制的数字钟的功能以及相应的硬件电路的设计,并且用C语言编写了相应的程序下载到单片机上进行调试,结合硬件电路实现对应的功能:时间功能、校时功能、闹钟功能、倒计时功能和计数器功能。数字电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有定时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。数字电子钟的设计方法有多种,例如可用中

3、小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等,这些方法都各有特点。其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,精确度高等特点。关键词:AT89C2051;数码管;7805AbstractAbstract: This article mainly introduced the function of digital clock using AT89C2051 single chip microcomputer control and the corresponding hardware cir

4、cuit design, and the corresponding program written in C language to download to the single chip microcomputer to debug, combined with the corresponding hardware circuit implementation function: the functions of time, when the school, alarm, countdown timer and counter. Digital electronic clock is a

5、digital circuit is used to display seconds, minutes, when the timing device, with the traditional mechanical Zhong Xiang ratio, it has the time accurate, direct display, the advantages of no mechanical transmission device, and widely used. There are many types of design method of digital electronic

6、clock, for example, can use of small and medium scale integrated circuit, electronic clock, also can use special electronic clock chip with display circuit and its peripheral circuit of electronic clock needed; Also can take advantage of the single chip microcomputer to realize electronic clock and

7、so on. These methods all have different characteristics, among them, the use of single-chip microcomputer implementation of electronic clock with flexible programming, facilitate electronic clock function expansion, high accuracy, etc. Keywords:AT89C2051;LED;7805 基于单片机的多功能六位数字钟设计与制作一、引言时间对于我们来说是极其的宝

8、贵,浪费时间就等于浪费我们的生命。因此,设计出一个好的精确度高的时钟是极其重要的。数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。钟表的数字化给人们生产生活带来了极大的力便,而且大大地扩展了钟农原先的报时功能。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。数字钟的设计力法有许多

9、种,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟。本文主要介绍了数字钟的功能以及相应的硬件电路的设计,并且用C语言编写了相应的程序下载到单片机上进行调试,结合硬件电路实现对应的功能:时钟功能、校时功能、闹钟功能、倒计时功能、秒表功能和计数器功能,具有实用性。二、系统设计(一)设计思路本文所设计的系统,S1为功能选择按键,S2为功能扩展按键,S3为数值加一按键。具有如下功能:1、时钟功能:上电后即显示10:10:00 ,寓意十全十美。2、校时功能:短按一次 S1,即当前时间和冒号为闪烁状态,按动 S2 则小时位

10、加 1,按动 S3则分钟位加1,秒时不可调。3、闹钟功能:短按二次S1,显示状态为22:10:00,冒号为长亮。按动S2刚小时位加1,按动S3则分钟位加1,秒时不可调。当按动小时位超过23时则会显示-:-:-,这个表示关闭闹钟功能。闹铃声为蜂鸣器长鸣3秒钟。4、倒计时功能:短按三次S1,显示状态为 0,冒号为长灭。按动S2则从低位依此显示高位,按动S3则相应位加1,当S2按到第6次时会在所设定的时间状态下开始倒计时,再次按动S2将再次进入调整功能,并且停止倒计时。5、秒表功能:短按四次 S1,显示状态为 00:00:00,冒号为长亮。按动 S2 则开始秒表计时,再次按动S2则停止计时,当停止计

11、时的时候按动S3则秒表清零。6、计数器功能:短按五次S1,显示状态为00:00:00,冒号为长灭,按动S2则计数器加1,按动S3则计数器清零。(二)系统原理方框图图1为系统原理方框图。如图1所示,本系统由AT89C2051、时钟电路、按键电路、复位电路、迅响电路及输入输出电路和六位数码管显示等部分组成,其中AT89C5051单片机为控制核心。复位电路迅响电路及输入输出电路AT89C2051稳压电路六位数码管显示按键电路时钟电路图1:系统原理方框图三、硬件设计(一)系统整体电路图附录1为系统整体电路图。如附录1所示,本文所设计的系统以AT89C2051为核心器件,具有上电复位的功能。显示部分主要

12、器件为2位共阳红色数码管,驱动采用 PNP 型三极管驱动,各端口配有限流电阻,驱动方式为扫描,占用 P1.0P1.6 端口。冒号部分采用4个3mm的红色发光二极管,驱动方式为独立端口驱动,占用P1.7端口。按键 S1S3 采用复用的方式与显示部分的 P3.5、P3.4、P3.2 口复用,其工作方式为:在相应端口输出高电平时读取按键的状态并由单片机支除抖动并赋予相应的键值。迅响电路由有源蜂鸣器和 PNP 型三极管组成,其工作原理是当 PNP 型三极管导通后有源蜂鸣器立即发出定频声响。驱动方式为独立端口驱动,占用P3.7端口。 (二)单片机AT89C2051AT89C2051是由ATMEL公司推出

13、的一种小型单片机。95年出现在中国市场。其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受,其程序的电可擦写特性,使得开发与试验比较容易。图2为AT89C2051引脚图。图2: AT89C20151如图2所示,其引脚功能如下:1、VCC:电源电压。2、GND:地。3、P1口:P1口是一个8位双向I/O口。引脚P1.2P1.7提供内部上拉电阻,P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(ANI0)和反相输入(AIN1)。P1口输出缓冲器可吸收20mA电流并能直接驱动LED显示。当P

14、!口引脚写入“1”时,其可用作输入端,当引脚P1.2P1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其可用作输入端。当引脚P1.2P1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流。 4、P3口:P3口的P3.0P3.5、P3.7是带有内部上拉电阻 的七个双向I/O口引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。P3品缓冲器可吸收20mA电流。当P3口写入“1”时,它们被内部上拉电阻拉高并可用作输入端。用作输入时,被外部时拉低的P3口脚将用上拉电阻而流出电流。P3口还接收一些用于闪速存储器编程和程序校验的控制信号。5、RST:复位

15、输入。RST一旦变成高电平所有的I/O引脚就复位到“1”。当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。6、XTAL1:作为振荡器反相器的输入和内部时钟发生器的输入。7、XTAL2:作为振荡器反相放大器的输出。(三)复位电路本设计采用了单片机AT89C2051为核心器件,它与C51相比除少了P0、P2口外指令完全相同。在电路中P1口输出段码数据,接六位数码管的段码引脚,P3口作扫描控制,控制各位数码管的显示情况!并配合所有的外围电路,具有上电复位的功能,无手动复位功能,其复位电路如图3所示。图3:复位电路AT89C2051单片机

16、的复位是由外部的复位电路来实现的。复位引脚RST通过一个施密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。上电复位电路是种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。上电自动复位是通过外部复位电路

17、的电容充电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。(四)时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。图4为时钟电路,如图4所示,本文用的是内部时钟方式。图4:时钟电路(五)按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称

18、为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。图5为按键电路。如图5所示,本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。按键 S1S3 采用复用的方式与显示部分的 P3.5、P3.4、P3.2 口复用。其工作方式为,在相应端口输出高电平时读取按键的状态并由单片机消除抖动并赋予相应的键值。 图5: 按键电路(六)迅响电路及输入、输出电路图6为迅响电路及输入、输出电路。如图6所示,迅响电路由有源蜂鸣器和 PNP 型三极管组成,当 PNP

19、型三极管导通后有源蜂鸣器立即发出定频声响,驱动方式为独立端口驱动,占用P3.7端口。输出电路是与迅响电路复合作用的,其电路结构为有源蜂鸣器,5.1K定值电阻R6,排针J3并联。当有源蜂鸣器无迅响时J3输出低电平,当有源蜂鸣器发出声响时J3输出高电平,J3可接入数字电路等各种需要。驱动方式为迅响复合输出,不占端口。输入电路是与迅响电路复合作用的,其电路结构是在迅响电路的 PNP 型三极管的基极电路中接入排针J2。引脚排针可改变单片机I/O口的电平状态,从而达到输入的目的。驱动方式为复合端口驱动,占用P3.7端口。 图6: 迅响电路及输入、输出电路(七)数码管显示电路1、LED数码管结构及工作原理

20、LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。每一笔划都是对应一个字母表示 DP是小数点。LED数码管内部引脚图如图7所示。LED数码管根据LED的接法不同分为共阴和共阳两类。本文所设计的系统采用共阴接法。图7:LED数码管内部引脚图2、显示原理图8为数码管电路。如图8所示,显示部分主要器件为三个两位一体共阳极数码管,驱动采用 PNP 型三极管驱动,各端口配有限流电阻,驱动方式为动态扫描,占用 P3.0P3.5 端口,段码由P1.0P1.6输出。冒号部分采用 4 个 3.0的红色

21、发光二极管,驱动方式为独立端口P1.7驱动。图8:数码管电路(八)稳压电路图9为稳压电路,如图9所示,系统采用7805稳压器,不论其输入端接多少伏电源,其输出是固定的5V。因为是线性稳压,所以其输出波形杂波比较严重,而且其输出会复制输入的波形出来。所以前后都要滤波,在输入端加电容时相当于平滑电容,起到一个滤波的作用,提高IC工作稳定性。输出端加电容是为本地器件提供能量的存储器件,它能使稳压器的输出均匀化,降低负载需求。 图9: 稳压电路四、软件设计(一)主程序流程图图10为系统主程序流程图,如图10所示,程序里先定义两个中断定时器T0和T1,一个作为秒记数用,另一个作为调整时闪烁用。编程时先将

22、P1和P3口数据清零,然后P1和P3口作动态扫描显示,由于人的眼睛有延迟性,当扫描频率非常高时人就感觉数码管一直亮着,而同时记数器在遵循时间的变化方式执行着秒到了60分加一,分到了60小时加一,小时到了24就归零。P3.7作为时间调整按钮当长按按住2秒以上进入校准时间状态及换档和退出,快速点触用于调节时间数值,归零是复位按钮。开始显示时钟TO、T1 一个用秒计数,另一个用于调整时闪烁允许调整子程序允许TO中断按键按下进入功能程序序图10:主程序流程图 (二)闹铃程序设计闹铃功能的实现设计到两个方面:闹铃时间设定和是否闹铃判别和处理。闹铃时间设定模块的设计可参照时间设计模块,这里着重阐述闹铃判别

23、与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃判别。闹铃判别与处理的代码包含在定时器0的中断子程序中,其程序流程图如图11所示:闹钟判别处理时十位、个位,分十位、个位改变了是否设置了闹铃判断当前的时间是设定的时间闹铃响设定闹铃中断返回中断返回NYYN图11:闹铃程序流程图(三)中断程序设计中断程序完成时间计数,时间调整,误差消除等功能。图12为中断程序流程图。如图12所示,采用AT89C2051内部T0中断实现,定时时间为125ms,当时间到达125ms8,即1分钟时,分计数缓冲器MINBUFFER增加1,到达1小时,则时计数缓冲器HOURBUFFER增加1,并将分、时的

24、个位、十位放入显示缓冲器。当分计数缓冲器和时计数缓冲器分别到达60min、24h时,则对它们清零,以便重新计数。在中断设计中,还通过软件实现了累计误差消除功能,使整个系统时间的精确定得到保证。定时器中断是否到下 1秒是否整分是否整时秒值增加1分钟值增加1小时值增加1中断返回NYYNNY 图12:中断程序流程图五、制作与调试本系统电路的制作主要运用到“无线电装接工”这门课程的专业知识。主要制作步骤如下:首先是制作准备,主要是器件采购和焊接工具的准备。需准备好电路所需的元器件、导线、电烙铁、焊锡丝、万能板,万用表等器材和工具。接下来是器件检测,用万用表检查元器件的好坏,对于不良器件,应当剔除。之后

25、就是装配与焊接了,要按照先低后高,先小后大,先卧式后立式的顺序,正确插入元件,其高低、极性要符合规定。先从最低元件安装。应先安装、焊接跳线机及电阻,用电阻多余的脚做跳线,电阻引脚不分正负,焊接时间最好控制在2-3秒。然后安装、焊接瓷片电容。瓷片电容部分正负极。然后安装、焊接轻触开关然后安装、焊接三极管。三极管的外形基本一样,注意分青,且方向要和电路板上的方向一致。然后安装、焊接12MHZ晶振。晶振没有正负极。然后安装、焊接电解电容,装的时候要躺着安装,立着会影响发光二极管的显示不整齐。然后安装、焊接20脚IC插座,从用一小缺口或小圆点标记的地方以逆时针数依次为1-20脚,安装时要注意缺口和电路

26、上的缺口相一致。20只引脚都插到位后,先用手指按住,固定对角两只引脚,防止插入的引脚掉出来,再把板放到桌面上把剩下的引脚焊好。焊好后不要急于插入单片机芯片,因为还有其他元件焊接,防止电烙铁带静电击坏单片机芯片。然后安装、焊接蜂鸣器。然后后安装、焊接LED。因为LED和普通二极管一样,有正负极之分,所以安装时要比较小心,不能装错。最后安装、焊接数码管。把调试好的程序灌入AT89S52芯片后,接上5V电源,此时,数码管显示设置时间。这数字钟不是很复杂,因此调试过程中没遇到很大的困难,只是焊接时,线路板小线又多,必须得小心也要有耐心。要插好,焊好,要小心短路或者接错之类。要想焊的漂亮,电烙铁的温度也

27、要掌握好,正确使用助焊剂。图13为实物图片。图13:实物图片六、结束语经过这次毕业设计,我学到了很多,自己的知识积累和成长方面都有了明显的提高。然而虽然自己这么用心努力的做好毕业设计,但是难免不出错,或是有些地方不完善,其实这些问题多多少少是不可避免的,所以今后遇到什么问题仍然需要继续专研,继续努力。经过大量查找资料和老师的不断指点,我将所设计的六位数码管电子钟焊接成功,虽然不是很稳定,但在这个过程中,我了解了各个元器件的识别与测量,也了解了AT89C2051单片机及其引脚功能。同时明白了六位数码管电子钟的工作原理并实现了其功能。本程序设计时,只用了一个定时器T0,其他的中断全部关断,定时器工

28、作在两个8位自动加载初始值状态。简短的定时中断程序只负责时间的计数和进位功能,这是保证走时精确。有三个轻触式按键:功能选择按键S1,功能扩展按键S2,数值加一按键S3。此数字钟采用了一只NPN型的三极管及蜂鸣器为闹时讯响电路。参考文献1江路明,模拟电子技术基础,江西高校出版社,2008年2林知秋,电路基础,江西高校出版社,2004年3陈永庆,数字电路基础,北京交通大学出版社,2010年4张越南,C语言程序设计案例教程,交通大学出版社,2011年5王宜怀,嵌入式技术基础与实践(第2版),清华大学出版社,2011年6刘爽,电子CAD技术(第三版),电子工业出版社,2012年7刘近峰, 无线电装接工

29、,中国劳动出版社,1999年 8魏立峰,单片机原理与应用技术,北京大学出版社,2006年谢辞经过这次毕业设计,我学到了很多,自己的知识积累和成长方面都有了明显的提高。然而虽然自己这么用心努力的做好毕业设计,但是难免不出错,或是有些地方不完善,其实这些问题多多少少是不可避免的,所以今后遇到什么问题仍然需要继续钻研,继续努力。这次毕业设计的制作,相当于对在大学三年专业知识的一次综合检测与运用。在做本次毕业设计的一开始遇到许多专业上面的难题,比如说C语言的一些掌握存在不足,硬件的连接,所以总会出现难题,但是随着时间的推移,通过查阅书籍,询问同学或是指导老师,从而不断完善,不断的克服解决以上问题。这不

30、仅是一次简单的毕业设计,更是理论与现实有效结合的机会。以前我的单片机学的不是很好,对很多的器件运行很是不熟对他们不能够应用的得心应手。为了写这次的毕业论文我不断的在网上书籍上找寻各种器件和电路,并不断的对他们进行了解分析又不懂的及时向导师请教。现在我喜欢上了这门课程,我觉得这里面有很多好玩的东西神奇的东西,能让我学到很多。在此衷心的感谢所有在我大学期间在学习、生活上关心我、支持我和还有陪我大学一起度过的好同学!附录1系统整体电路图附录1:系统整体电路图2程序主要代码#includecode senen_seg10=0x81,0xe7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,

31、0x80,0xa0; /P1.7(冒号)口高电平bit key1_enter=0,key2_enter=0,key3_enter=0,countdown_mark=0,stopwatch_mark=0,count_mark=0,bell_mark=0; /状态标志unsigned char program=0,program_variable=0,count_bit=0,count=0;unsigned char hour=10,minute=10,second=0; /时间变量unsigned char delayed_hour=22,delayed_minute=10,delayed_se

32、cond=0;/定时变量 unsigned char count_hour=0,count_minute=0,count_second=0; /计时计数变量unsigned char count_time=0,count_count=0; void delay(unsigned int t)/延时子程序 unsigned int i,j; for(i=0;it;i+) for(j=0;j=199) count_time=0; second+; if(second=60) second=0; minute+; if(minute=60) minute=0; hour+; if(hour=24)h

33、our=0; if(delayed_hour=hour & delayed_minute=minute & second=199 & (count_second!=0|count_minute!=0|count_hour!=0)count_count=0;count_second-;if(count_second=60) count_second=59; count_minute-; if(count_minute=60) count_minute=59; count_hour-; if(count_hour=100) count_hour=99; if(count_second=0&coun

34、t_minute=0&count_hour=0&count_count=15000) count_count=14000; if(stopwatch_mark=1) /秒表程序 count_count+; if(count_count=2)count_count=0;count_second+;if(count_second=100) count_second=0; count_minute+; if(count_minute=60) count_minute=0; count_hour+; if(count_hour=60) count_hour=0; unsigned char show_

35、key (void)unsigned char x=0,y=0;switch (program)case 0: P1&=senen_segsecond%10; /时钟秒的个位 break;case 1: if(count_time=90) P1&=senen_segsecond%10; /校正秒的个位 break;case 2: if(delayed_hour=24) P1=0xfe;/闹钟秒的个位 else P1&=senen_segdelayed_second%10; break;case 3: if(count_bit=0) P1&=senen_segcount_second%10;/倒

36、计时秒的个位 else P1=0xff; break;case 4: P1&=senen_segcount_second%10; /秒表秒的个位break;case 5: P1&=senen_segcount_second%10; /计数器个位break; P3_3=0; delay(10); if(P3_5=0)/功能键1识别 key1_enter=1;if(count=90) P1&=senen_segsecond/10; /校正秒的十位 break;case 2: if(delayed_hour=24) P1=0xfe; /闹钟秒的十位 else P1&=senen_segdelayed

37、_second/10; break;case 3: if(count_bit=1) P1&=senen_segcount_second/10;/倒计时秒的十位else P1=0xff; break;case 4: P1&=senen_segcount_second/10; /秒表秒的十位break;case 5: P1&=senen_segcount_second/10; /计数器十位break; P3_1=0; delay(10); P3_1=1; P1|=0xff;switch (program) case 0: P1&=senen_segminute%10; /时钟分的个位break;c

38、ase 1: if(count_time=90) P1&=senen_segminute%10; /校正分的个位break;case 2: if(delayed_hour=24) P1=0xfe;/闹钟分的个位 else P1&=senen_segdelayed_minute%10; break;case 3: if(count_bit=2) P1&=senen_segcount_minute%10;/倒计时分的个位else P1=0xff;break;case 4: P1&=senen_segcount_minute%10; /秒表分的个位break;case 5: P1&=senen_se

39、gcount_minute%10; /计数器百位break; P3_2=0; delay(10); P3_2=1; P1|=0xff;switch (program)case 0: P1&=senen_segminute/10; /时钟秒的个位break;case 1: if(count_time=90) P1&=senen_segminute/10; /校正秒的个位 break;case 2: if(delayed_hour=24) P1=0xfe;/闹钟秒的个位 else P1&=senen_segdelayed_minute/10; break;case 3: if(count_bit=

40、3) P1&=senen_segcount_minute/10;/倒计时秒的个位else P1=0xff;break; case 4: P1&=senen_segcount_minute/10; /秒表秒的个位break;case 5: P1&=senen_segcount_minute/10; /计数器千位break; P3_5=0; delay(10); P3_5=1; P1|=0xff;switch (program)case 0: P1&=senen_seghour%10; /时钟时的个位break;case 1: if(count_time=90) P1&=senen_seghour

41、%10; /校正时的个位break;case 2: if(delayed_hour=24) P1=0xfe; /闹钟时的个位 else P1&=senen_segdelayed_hour%10; break;case 3: if(count_bit=4) P1&=senen_segcount_hour%10;/倒计时时的个位else P1=0xff;break;case 4: P1&=senen_segcount_hour%10; /秒表时的个位break;case 5: P1&=senen_segcount_hour%10; /计数器万位break; P3_0=0; delay(10); if(P3_4=1 & ke

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号