参考新建基于单片机的多功能电子秒表提交版

上传人:沈*** 文档编号:81367638 上传时间:2022-04-27 格式:DOC 页数:28 大小:291.50KB
收藏 版权申诉 举报 下载
参考新建基于单片机的多功能电子秒表提交版_第1页
第1页 / 共28页
参考新建基于单片机的多功能电子秒表提交版_第2页
第2页 / 共28页
参考新建基于单片机的多功能电子秒表提交版_第3页
第3页 / 共28页
资源描述:

《参考新建基于单片机的多功能电子秒表提交版》由会员分享,可在线阅读,更多相关《参考新建基于单片机的多功能电子秒表提交版(28页珍藏版)》请在装配图网上搜索。

1、摘要本设计不仅是一个简单的电子秒表,还能够显示电子时钟和年、月、日,还能够提供整点报时等功能,本设计的秒表能显示从毫秒级、秒级和分级三个段,分别用六个数码管显示,秒表能够精确计时,方便应用各个领域,另外硬件部分设置了开始、暂停、清零、复位以及电子时钟和电子秒表的切换按键,可以对秒表和时钟进行实时控制。本设计的数字电子秒表和时钟是采用AT89C52为控制核心器件利用74LS245作为数码管的驱动芯片,再利用定时/计数器定时和计数原理,结合显示电路、数码管以及中断原理(实时与分时操作)来实现电子秒表的制作。将软件、硬件有机的结合起来,使得系统能够实现六位数码管显示,能显示分、秒、毫秒,计时精度为0

2、.01秒。其中软件采用C语言编写程序,包括显示程序、电子秒表定时中断程序、电子时钟定时中断程序、外部中断程序、按键程序、延时程序和主程序。并在keil中调试运行,利用proteus软件仿真调试,简单且易于观察,在仿真中可以观察到实际的工作状态。关键字:单片机;AT89C52;74LS245;电子秒表,电子时钟,程序;仿真。引言近年来,随着科技的飞速发展,单片机的应用正在不断的走向深入,同时带动着传统控制检测日新月异更新,在实时检测和自动控制的单片机应用系统中,单片机往往是作为控制核心来使用,仅是单片机方面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合,加以完善。单片机

3、自二十世纪以来,以极好的性价比受到人们的重视和关注,所以发展很快,应用广泛。单片机的主要特点是体积小、集成度高、抗干扰能力强。对环境的要求较低,价格低廉、可靠性高、灵活性强、开发较容易等特点,所以广泛的应用到各个领域。几乎到了无孔不入的地步,在我国单片机广泛的应用于工业自动化控制、自动检测、智能仪表、航空航天和军事技术领域等各方面我们可以开发利用单片机系统获得更高的经济效益,更重要的意义是单片机应用改变了传统的设计思想和方法。以软及取代硬件并能提高系统的性能控制技术称为为控制技术,能够实现分机各分布式控制的特点,本电子秒表/时钟就利用了单片机这样的特点电子秒表广泛的应用在人们日常生活中,秒表计

4、时器也广泛应用于电器制造、国防以及科研单位等相关领域。它还广泛的应用于各种继电器、电磁开关、延时器、定时器等时间测量。目录摘要 1引言 1第一章 总体设计分析1.1电子秒表/时钟课程设计的基本思路 31.2 设计的任务要求 31.3 设计的基本内容 3第二章 系统硬件电路的设计2.1 系统的总体方案 42.2 单片机主控制器设计 42.3 复位电路设计 72.4 晶振电路设计 72.5 显示电路设计 82.6 提示与报时电路设计 82.7 按键电路设计 92.8电源电路设计 92.9系统总电路图 10第三章 元器件清单3.1电源的元器件清单 113.2系统电路的元器件清单 11第四章 软件设计

5、4.1程序设计思想 124.2系统软件设计流程图 134.3 定时器T0中断服务子函数 144.4 定时器T1中断服务子函数 144.5 外部中断INT0服务子函数 154.6 外部中断INT1服务子函数 164.7数码管显示子函数 164.8主函数 17第五章 调试与心得5.1 硬件与软件调试 185.2 心得 18第六章 总结 19参考文献20附录一电路图附录21附录二系统程序附录22第一章 总体设计分析1.1电子秒表/时钟课程设计的基本思路本设计是一个以单片机为控制核心的电子秒表/时钟,利用定时中断和外中断来控制秒表的计时与显示,还有与外部的晶振电路、复位电路、数码管驱动电路、和按键电路

6、结合,在与软件配合就能实现电子秒表/时钟的显示,其结构原理框图如下所示:电源电路蜂鸣器提示数码管显示独立键盘STC89C52单片机控制器发光二极管指示晶振电路复位电路1.2设计任务要求1.2.1基本任务要求(1)、以MCS-51系列单片机为核心,采用常用电子器件设计,一个电源开关,2个按键,六位数码管显示,打开电源开关后显示8,每秒循环右移一位,(2)、按A键开始计时,实时显示所经历的时间,按B键停止计时并显示从开始到当前时刻的时间,要求精度达到0.01秒,量程为0.01秒到60分钟。(3)、要求按键输入采用中断方式,按键A接INT0,按键B接INT1。1.2.2 发挥任务要求(1)、多增加三

7、个按键分别为C键、D键、E键,用六位数码管显示电子时钟和年、月、日。(2)、C键为复位键,回到当初显示8的位置,但时钟依然在走,只是不显示;D键切换到显示电子时钟;E键切换到显示年月日。(3)、有整点报时,采用蜂鸣器代替,秒表计时时一分钟报一次。电子时钟为一个小时一次。1.3设计的基本内容(1)、根据任务要求选择方案、设计电路、确定元器件型号和参数(2)、硬件设计:要求设计出完整的电路原理图,包括电源模块、单片机最小系统电路、按键电路、报时电路、显示电路。(3)、软件设计:包括编程思路,主程序和各子程序模块的流程图及编写方法,并用汇编语言或C语言编写出完整的源程序。(4)、按图焊接电路,检查无

8、误后通电调试,调试电路的功能是否符合要求。 (5)、调试与仿真:对设计的硬件和程序进行仿真调试,并给出仿真结果。制作实物进行调试。第二章系统硬件电路设计2.1系统总体方案本设计硬件电路和系统程序的设计,其硬件电路主要有主控制器,晶振电路、复位电路、数码管驱动电路、按键电路、提示电路、启动和停止电路等。主控制器采用单片AT89C52,显示电路采用共阴极的数码管显示相应的时间。本设计的数字电子秒表和时钟是采用AT89C52为控制核心器件利用74LS245作为数码管的驱动芯片,再利用定时/计数器定时和计数原理,结合显示电路、数码管以及中断原理(实时与分时操作)来实现电子秒表的制作。将软件、硬件有机的

9、结合起来,使得系统能够实现六位数码管显示,能显示分、秒、毫秒,计时精度为0.01秒。系统方案图如下:电源电路蜂鸣器提示数码管显示独立键盘STC89C52单片机控制器发光二极管指示晶振电路复位电路单片机的管脚分配是这样的,P0输出数码管的数据段码,P2.0P2.5为数码管的片选输出,P1.1、P1.0、P1.6、P1.7接发光二极管提示,P1.5接蜂鸣器来报时提示,P1.2、P1.3、P1.4接按键,分别用来启动、停止秒表和电子秒表和电子时钟的切换。P3.2、P3.3、P3.4、P3.5用于定时中断和外部中断来实现分时操作和实时操作。.其中软件采用C语言编写程序,包括显示程序、电子秒表中断程序、

10、电子时钟定时中断程序、外部中断程序、按键程序、延时程序和主程序。采用六位数码管显示秒表、时钟以及年月日,两个外部中断是秒表的启动、停止按键。定时器T0中断定时是电子秒表的计时,定时器T1中断是电子时钟和年月日的计时。定时器T0是以10ms为中断单位,定时器T1是以25ms为中断单位,错开两个中断避免打架。秒表显示的量程是0.0秒60分钟,超过60分钟就会清零,从新开始并报警,时钟显示是0秒24小时,超过24小时也会清零但不报警。2.2单片机主控制器电路的设计单片机AT89C52作为整个系统的控制核心,给其他单元电路分配任务,完成秒表和时钟的计时,控制数码管显示,发光二极管提示,蜂鸣器报时等,其

11、原理图如下所示:2.2.1AT89S52的介绍AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,

12、全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。R8 位微控制器8K 字节在系统可编程。2.2.2功能管脚描述VCC : 电源GND: 地P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程和数据存储器时,P0口也被作为低8位地址在这种模式下,P0具有内部上拉电阻。在

13、flash编程时,P0口也用接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0P1.分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时P1口接收低8位地址字节。引脚号 第二功能P1.0 T2(定时器/计数器T2的外部计

14、数输入),时钟输出;P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用);P1.6 MISO(在系统编程用);P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口很强的内部上拉发送1

15、。在使用8位地址(如MOVX RI)访问外部据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。引脚号 第二功能P3.0 RXD(串行输入);P3.1 TXD(串行输出);

16、P3.2 INT0(外部中断0);P3.3 INT0(外部中断0);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)

17、也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一位置 “1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。 PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数

18、据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端XTAL2:振荡器反相放大器的输出端。2.2.3内部电路框图2.3复位电路的设计复位是单片机的初始化操作,单片机在启动运行时,都要先复位,它的作用是使CPU和系统其他部件都处于一个确定的初始状态。当复位引脚保持两个机器周期以上的高电平就进入复位状态。其原理图如下所示:2.4 晶体振荡电路的设计振荡电路也就

19、是时钟电路,主要给单片机提供准确的时序让单片机正常的工作。其原理图如下所示:2.5 显示电路的选择与设计显示电路采用共阴数码管显示,采用74LS245驱动使数码管更加稳定的工作,数码管显示清晰直观,而lcd液晶没那么清晰且价格贵,写软件还要看时序。所以选择了数码管显示,用单片机得P0输出数码管的数据断码,用74LS138作数码管的片选,然后38译码器的的三个地址端接单片机得P2即可,其原理图如下所示:74ls245是双向总线发送器/接收器,CE端是三态允许端,低电平有效。AB、BA是数据的传送方向,高电平时是数据由A向B传输,低电平时数据由B向A传输,74ls138是个三输入8输出的译码器,A

20、0、A1、A2为地址端,选择相应的输出端为低电平,例如:当译码器的地址端为0 0 0时,输出端Y0=0;当译码器的的地址端是0 0 1时,其输出端Y1=0;以此类推。2.6 提示电路与报时电路的设计提示电路由发光二极管提示,用蜂鸣器来报时,电子秒表/时钟、年月日显示时,或者秒表的启动与停止时,对应的发光二极管点亮,当秒表计时到一分时或时钟到整点时,蜂鸣器分别叫一秒或一分钟,表示报时。其电路原理图如下所示:三级管主要起一个电子开关的作用,使蜂鸣器接通和断开,发光二极管用了1k的电阻限流,防止电流过大烧坏二极管。2.7 按键电路的设计按键电路采用的是有源按键,接了10K的上拉电阻,这样能使电路更加

21、稳定、抗干扰能力强,避免了电路板发生碰撞时导致误操作,一共六个按键,其原理图如下所示:K2键是秒表的停止键接单片机的外部中断INT0,K2是秒表的启动键接单片机的外部中断INT1,K3、K4、K5分别是切换到电子时钟的显示、年月日的显示还有复位到显示8,每秒左移动以为,即最开始阶段。2.8电源电路的设计电源是自制的线性稳压电源,使工作的电路更加稳定可靠,防止其他信号的干扰,给各模块电路提供稳定的电压。其电路原理图如下所示:双12V的交流电经四个二极管整流、电容滤波后经两个三端稳压管稳压在通过电容滤波得到5V后给系统等相关电路供电,FU1、FU2两个保险管主要是起保护作用,1000uF电容是保持

22、电量的作用,0.33uF是滤波作用,7805与7905主要是稳压,D5、D6是保护稳压管7805和7905.C12、C14、C16分别是高频、中频和低频滤波,后面的发光二极管是用来提示电源正常与否的。2.9系统的总体电路图系统总体电路图包括单片机的最小系统,显示电路,数码管驱动电路,发光二极管提示电路,按键电路、电源电路等,其系统的总电路图如下所示:总电路图比较直观的观察电路的各个部分,可以方便调试,第三章 元器件清单3.1 电源部分元器件清单元器件名称元器件型号数量元器件名称元器件型号数量变压器I220VQ12V1稳压管LM78051整流二极管IN40078稳压管LM79051电容1000u

23、F/25V3散热片2电容47uF2电阻1K2元片电容1042发光二级管2元片电容1032自锁开关2元片电容0.33uF2排针2电线单股若干3.2系统电路元器件清单元器件名称元器件型号数量元器件名称元器件型号数量单片机AT89S521数码管Tof34612驱动芯片74LS2451译码器74LS1381晶振12MHz1蜂鸣器1自锁开关1独立按键6排阻10K*81电阻10K5电阻1K1电容30pF2电容22uF1跳线若干杜邦头若干螺柱4螺帽4第四章软件设计4.1 程序设计思路软件设计语言既可以用汇编也可以用,汇编语言计算复杂出错难修改。C语言是高级语言,通俗易懂,简洁、紧凑、使用灵活方便容易修改,因

24、此本设计采用C语言设计,设计思路是这样的,用定时器中断定时计数使显示加一,利用外部中断控制秒表的启、停。通过读取相应I/O的值进行秒表/时钟/年月日的显示切换.软件的设计步骤是这样的,画好程序的流程图,先对外部中断和定时中断初始化为一个子函数,定时器T0中断服务函为一个子函数,定时器T1中断服务函数为一个子函数,外部中断0服务函数为一个子函数,外部中断1服务函数为一个子函数,电子秒表显示函数为一个子函数,电子时钟显示函数为一个子函数,年月日显示函数为一个子函数,还有一个主函数,各模块函数互不干扰,易分布到每个同学写,直观且通用性强,易于调试。每个模块的子函数写好后,进行模块函数调试,各模块子函

25、数调试成功后,在拼在一起,减轻了调试负担,能大大的加快课程设计的进度。当然分工要明确,其软件设计的主函数流程图如下所示:KEY4=0开始程序初始化显示什么KEY5=0KEY7=0KEY6=0电子时钟电子秒表年月日显示显示8左移KEY7为0吗?结束YN4.2 系统软件设计的总流程图系统软件设计的总流程图如下所示:程序初始化开始进入定时器T1中断服务函数是启动定时器T1,TR=1,判断定时器是否溢出断时钟显示计数加一进入第一任务,数码管显示8,每秒向右移一位判断显示秒表、时钟和年月日KEY4=0时钟显示年月日显示KEY5=0不符KEY6=0秒表显示KEY2=0KEY3=0进入外部中断1服务函数并启

26、动定时器0,秒表启动定时器溢出,进入T0中断服务,计数加一进入外部中断0服务函数保持当前时间,秒表停止判断KEY7是否等于0相应秒表、时钟和年月日显示结束NYKEY7=04.3 定时器T0中断服务子函数定时器T0中断服务函数的作用是使电子秒表计数加一,其函数如下:void timer0()interrupt 1 /电子秒表加计数,12MHz晶振,10ms中断一次TH0=0xd8;TL0=0xf0;msec_unmber+;if(msec_unmber 99)msec_unmber = 0;sec_unmber+;beep=1;if(sec_unmber 59)sec_unmber = 0;mi

27、n_unmber+;beep=0;if(min_unmber59)min_unmber = 0;4.4定时器T1中断服务子函数定时器T0中断服务函数的作用是使电子时钟计数加一,其函数如下:void timer1()interrupt 3/年、月、日及电子时钟加计数TH1=0xd8;TL1=0xf0;msec_count+;if(msec_count 780)msec_count = 0;sec_count+;if(sec_count 59)sec_count = 0;min_count+;if(min_count59)min_count = 0;hour_count+;if(hour_coun

28、t23)hour_count=0;day_count+;if(day_count29)day_count=0;mouth_count+;if(mouth_count23)mouth_count=0;year_count+;if(year_count99)year_count=0;4.5 外部中断0服务子函数void int0_stop() interrupt 0unsigned char led_stale;TR0=0;stop_flag=0;led1=1;delay(2);led2=0;beep=0;while(clok_rst)for(led_stale=0;led_stale5;led_

29、stale+)display(); 4.6 外部中断1服务子函数void int1_start() interrupt 2unsigned char led_for;TR0=1;stop_flag=1;led1=0;delay(2);beep=1;while(stop_flag)for(led_for=0;led_for400;led_for+)display();/if(min_unmber%2=1)/beep = 0;/delay(5);/beep =1;/ 4.7 数码管显示函数void display()/电子秒表数码管显示P0=display_countmsec_unmber%10;

30、P2 = display_bit0;delay(1);P0 = display_countmsec_unmber/10;P2 = display_bit1;delay(1);P0 = display_countsec_unmber%10+0x80;P2 = display_bit2;delay(1);P0 = display_countsec_unmber/10;P2 = display_bit3;delay(1);P0 = display_countmin_unmber%10+0x80;P2 = display_bit4;delay(1);P0 = display_countmin_unmb

31、er/10;P2 = display_bit5;delay(1);4.8 主函数void main()unsigned char kout;unsigned char led_bit;int_init();timr0_init();beep = 0;clok_test=0;while(1)led2=1;for(kout=0;kout400;kout+)P0=display_count8;for(led_bit=0 ;led_bit6; led_bit+)P2 = display_bitled_bit;delay(100);if(clok_hour_time=0)beep=1;delay(20)

32、;while(clok_year_time&clok_rst)for(kout=0;kout5;kout+)diaplay_two(); if(clok_year_time=0)beep=1;delay(20);while(clok_hour_time&clok_rst)for(kout=0;kout5;kout+)display_one(); 第五章调试与心得5.1 硬件与软件调试硬件电路调试,先用proteus仿真之后,在去买好元器件清单,焊接电路。焊接要特别小心,要仔细的对照电路图,既不能使电路短路也不能是电路开路,保持电路的畅通,并在相应的位置装上发光二级管提示电路通电,可以减轻硬件电

33、路的调试困难,还有芯片的焊接要根据芯片资料了解管脚的功能去焊接,不然很容易烧坏芯片,如过芯片的工作不正常先观察芯片管脚有无接触,或者芯片的使能是不是根据相应的要求接的,在用万用表去测试电源管脚是否通电,通电后在去测相应的管脚是否输出相应的电平,如果没有就是芯片有问题,如果相应位置的二极管没有点亮,先观察二级管有没接反,如果没接反就用万用表去测看是否有电压,如果没有电压说明没通电,如果有电压说明二极管坏了,当然也要根据软件结合,测试数码管给以程序,8段数码管一段一段的观察,看是否管脚接错,如果断码接错了等显示数据就会错乱。系统软件程序调试,程序调试先在KEIL软件里写好各模块程序,在一个个子程序

34、调试,结合proteus仿真成功后,再将所有的程序拼在一起调试,软件调试注意的主要是定时中的的初始化,算好中断时间,还有按键程序,看是否读取得到相应的电平,其他的就没没什么了吧。5.2 心得通过本次课程设计不仅是我的硬件设计和软件设计有了很大的提高,还使我学到了更多相关专业的知识,如模拟电子技术、数字电子技术、单片机原理与应用技术等。增强了我的动手能力与实践能力,也增强了我软件调试能力和硬件调试能力,加强了与同学的交流能力,交流学习交流生活,也增强了我与同学们得合作能力,使我们配合的更加默契,这次课程设计是我们受益不少,这不仅是一次课程设计,为我们的知识多盖了一层金子,更是给我们交流学习生活,

35、同学们相互配合的一次机会,为我们的生活增添了不少色彩。因此很感激学校给我们课程设计的机会,希望有更多这样的机会。让我们的知识阅历更加的丰富,在社会上有更多的机会。第六章总结通过本次课程设计不仅是我的硬件设计和软件设计有了很大的提高,还使我学到了更多相关专业的知识,如模拟电子技术、数字电子技术、单片机原理与应用技术等。增强了我的动手能力与实践能力,也增强了我软件调试能力和硬件调试能力,加强了与同学的交流能力,交流学习交流生活,也增强了我与同学们得合作能力,对各个元器件有了更好的感性的认识,熟悉了个元器件的模型,有利于走入社会参考文献(1)单片机原理及应用(第二版) 电子工业出版社 张迎新等编著

36、(2)单片机原理与实例应用 清华大学出版社 万隆、张娟、陈文刚等编著(3)单片机原理及接口技术(第三版) 北京航空航天大学出版社 李朝清等编著(4)c语言程序设计(第三版) 清华大学出版社 谭浩强编著(5)模拟电子技术基础(第四版) 高等教育出版社 周良权 李世馨等编著(6)数字电子技术 哈尔滨工程大学出版社 付子义等编著 附录一:系统的原理图附录二:系统程序附录/*秒表及电子时钟-* P0口接数码管的数据位,p2口接数码管的片选位,P1口接独立按键和发光二 极管,P1.1和P1.0分别接绿色和红色的发光二极管,分别表示秒表开始与停止 P1.2P1.4分别接年、月、日显示按钮,蜂鸣器提示按钮,

37、电子秒表显示按钮, 外部中断两个按钮分别表示秒表开始与停止。*制作人:练红海*QQ:1132835005*/#include/#define shumaguan_data P0;/#define shumaguan_bit P2;sbit led1=P10;sbit led2=P11;sbit clok_year_time=P12;sbit clok_hour_time=P13;sbit clok_rst=P14;sbit beep=P15;sbit clok_test=P17;unsigned char display_count10 = 0x3f,0x06,0x5b,0x4f,0x66,0

38、x6d,0x7d,0x07,0x7f,0x6f;unsigned char display_bit8 = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char min_unmber=0,sec_unmber=0,msec_unmber=0;unsigned char stop_flag;unsigned char hour_count=0,min_count=0,sec_count=0;unsigned int msec_count=0;unsigned char year_count=11;mouth_count=10;day_count

39、=24;/unsigned char hour_number=0;void delay(unsigned int count)unsigned int k;while(count-)for(k=0; k 99)msec_unmber = 0;sec_unmber+;beep=1;if(sec_unmber 59)sec_unmber = 0;min_unmber+;beep=0;if(min_unmber59)min_unmber = 0;void timer1()interrupt 3/年、月、日及电子时钟加计数TH1=0xd8;TL1=0xf0;msec_count+;if(msec_co

40、unt 780)msec_count = 0;sec_count+;if(sec_count 59)sec_count = 0;min_count+;if(min_count59)min_count = 0;hour_count+;if(hour_count23)hour_count=0;day_count+;if(day_count29)day_count=0;mouth_count+;if(mouth_count23)mouth_count=0;year_count+;if(year_count99)year_count=0;void display()/电子秒表数码管显示P0=displ

41、ay_countmsec_unmber%10;P2 = display_bit0;delay(1);P0 = display_countmsec_unmber/10;P2 = display_bit1;delay(1);P0 = display_countsec_unmber%10+0x80;P2 = display_bit2;delay(1);P0 = display_countsec_unmber/10;P2 = display_bit3;delay(1);P0 = display_countmin_unmber%10+0x80;P2 = display_bit4;delay(1);P0

42、= display_countmin_unmber/10;P2 = display_bit5;delay(1);void display_one()/年月日显示P0=display_countday_count%10;P2 = display_bit0;delay(1);P0 = display_countday_count/10;P2 = display_bit1;delay(1);P0 = 0x40;P2 = display_bit2;delay(1);P0 = display_countmouth_count%10;P2 = display_bit3;delay(1);P0 = disp

43、lay_countmouth_count/10;P2 = display_bit4;delay(1);P0 = 0x40;P2 = display_bit5;delay(1);P0 = display_countyear_count%10;P2 = display_bit6;delay(1);P0 = display_countyear_count/10;P2 = display_bit7;delay(1);void diaplay_two()/电子时钟显示P0=display_countsec_count%10;P2 = display_bit0;delay(1);P0 = display_

44、countsec_count/10;P2 = display_bit1;delay(1);P0 = display_countmin_count%10+0x80;P2 = display_bit2;delay(1);P0 = display_countmin_count/10;P2 = display_bit3;delay(1);P0 = display_counthour_count%10+0x80;P2 = display_bit4;delay(1);P0 = display_counthour_count/10;P2 = display_bit5;delay(1);void int1_s

45、tart() interrupt 2/外部中断1服务秒表启动函数unsigned char led_for;TR0=1;stop_flag=1;led1=0;delay(2);beep=1;while(stop_flag)for(led_for=0;led_for400;led_for+)display();/if(min_unmber%2=1)/beep = 0;/delay(5);/beep =1;/ void int0_stop() interrupt 0/外部中断0服务函数,秒表停止unsigned char led_stale;TR0=0;stop_flag=0;led1=1;del

46、ay(2);led2=0;beep=0;while(clok_rst)for(led_stale=0;led_stale5;led_stale+)display(); void main()/主函数unsigned char kout;unsigned char led_bit;int_init();timr0_init();beep = 0;clok_test=0;while(1)led2=1;for(kout=0;kout400;kout+)P0=display_count8;for(led_bit=0 ;led_bit6; led_bit+)P2 = display_bitled_bit;delay(100);if(clok_hour_time=0)beep=1;delay(20);while(clok_year_time&clok_rst)for(kout=0;kout5;kout+)diaplay_two(); if(clok_year_time=0)beep=1;delay(20);while(clok_hour_time&clok_rst)for(kout=0;kout5;kout+)display_one(); (注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好评与关注)

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!