ImageVerifierCode 换一换
格式:DOC , 页数:26 ,大小:791KB ,
资源ID:7603044      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7603044.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(设计课题:多功能数字钟设计.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

设计课题:多功能数字钟设计.doc

1、 单片机课程设计报告 设计课题:多功能数字钟设计 目 录 第1章 绪论 ……………………………………………………………………………4 1.1课题背景简介………………………………………………4 1.2课题来源 ………………………………………………… 4 第2章 MCS—51单片机的结构 ……………………………5 2.1控制器………………………………………………………………………5 2.2存储器的结构……………………………………

2、…………………………5 2.3并行I/O口…………………………………………………………………6 2.4 时钟电路与时序……………………………………………………………6 2.4 单片机的应用领域…………………………………………………………6 第3章 电路的硬件设计 ……………………………………7 3.1复位电路 …………………………………………………7 3.2时钟电路 …………………………………………………7 3.3按键电路 …………………………………………………8 3.4液晶显示电路 ………………………………………………9 第4章 电路的软件设计 ……

3、………………………………10 4.1软件程序内容 …………………………………………… 10 4.2定时程序设计 ………………………………………… 10 4.3程序流程图……………………………………………… 10 4.4程序编写 …………………………………………………11 第5章 电路的安装与调试…………………………………11 5.1电路安装 …………………………………………………11 5.2电路调试 …………………………………………………12 第6章 结束语………………………………………………12 6.1意见与建议 ………………………………………………12 6.2

4、收获与体会 ………………………………………………13 参考文献 ……………………………………………………13 附表 器件明细表……………………………………………14 附图一 原理图………………………………………………15 附图二 PCB图 ………………………………………………15 附录 程序源代码……………………………………………16 第1章 绪 论 1.1 课题背景 单片机自1976年由Intel公司推出MCS-48开始,迄今已有二十多年了。由于单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一

5、系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。 单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。 本文讨论的单片机多功能定时器的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的

6、计时定时系统,具有体积小,可靠性高,功能强等特点。不仅能满足所需要求而且还有很多功能可供开发,有着广泛的应用领域。 20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核技术转让给许多半导体芯片生产厂家,如ATMEL、PHILIPS、ANALOG、DEVICES、DALLAS等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些兼容机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,因而,常用80C51系列来称呼所有具有8051指令系统的单片机,它们对8051单片机一般都作了一些扩充,更有特点。其功能和市场竞争力更强

7、不该把它们直接称呼为MCS-51系列单片机,因为MCS只是Intel公司专用的单片机系列型号。MCS-51系列及80C51单片机有多种品种。它们的引脚及指令系统相互兼容,主要在内部结构上有些区别。目前使用的MCS-51系列单片机及其兼容产品通常分成以下几类:基本型、增强型、低功耗型、专用型、超8位型、片内闪烁存储器型。 1.2 课题来源 在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广

8、泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品。 随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机多功能定时系统,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,同时又可以进行时钟校准和定点打铃。它可以执行不同的时间表(考试时间和日常作息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,

9、为家庭数字化提供了可能。 第2章 MCS-51单片机的结构 MCS-51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器(SFR)的集中控制方式。 2.1 控制器 控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质

10、控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。 单片机执行指令是在控制器的控制下进行的。首先从程序存储器中读出指令,送指令寄存器保存,然后送至指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制信号,再送到单片机的各个部件去进行相应的操作。这就是执行一条指令的全过程,执行程序就是不断重复这一过程。控制器主要包括程序计数器、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路及时序控制逻辑电路。 2.2 存储器的结构 MCS-51单片机存储器采用的是哈佛结构,即程序存储器空间和数据存储器空间截然分开,程序存储器和数据存储器各有自己的寻

11、址方式,寻址空间和控制系统。 这种结构对于单片机面向控制的实际应用极为方便,有利.在8051/8751弹片击中,不仅在片内集成了一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有极强的外存储器的扩展能力,寻址能力分别可达64KB,寻址和操作简单方便.MCS-51的存储器空间可划分为如下几类: 1. 程序存储器 单片机系统之所以能够按照一定的次序进行工作,主要是程序存储器中存放了经调试正确的应用程序和表格之类的固定常数。程序实际上是一串二进制码,程序存储器可以分为片内和片外两部分。8031由于无内部存储器,所以只能外扩程序存储器来存放程序。 MCS-51单片机复位后,程序

12、存储器PC的内容为0000H,故系统必须从0000H单元开始取指令,执行程序.程序存储器中的0000H地址是系统程序的启动地址.一般在该单元存放一条绝对跳转指令,跳向用户设计的主程序的起始地址。 2. 内部数据存储器 MCS-51单片机内部有128个字节的随机存取存储器RAM,作为用户的数据寄存器,它能满足大多数控制型应用场合的需要,用作处理问题的数据缓冲器。 MCS-51单片机的片内存储器的字节地址为00H-7FH.MCS-51单片机对其内部RAM的存储器有很丰富的操作指令,从而使得用户在设计程序时非常方便。地址为00H-1FH的32个单元是4组通用工作寄存器区,每个区含8个8位寄存器

13、编号为R7-R0。用户可以通过指令改变PSW中的RS1,RS0这二位来切换当前的工作寄存器区,这种功能给软件设计带来极大的方便,特别是在中断嵌套时,为实现工作寄存器现场内容保护提供了极大的方便。 3. 特殊功能寄存器(SFR-Special Function Register) 特殊功能寄存器反映了MCS-51单片机的状态,实际上是MCS-51单片机各功能部件的状态及控制寄存器.SFR综合的,实际的反应了整个单片机基本系统内部的工作状态及工作方式.SFR实质上是一些具有特殊功能的片内RAM单元,字节地址范围为80H-FFH.特殊功能寄存器的总数为21个,离散的分布在该区域中,其中]有些S

14、FR还可以进行位寻址.128个字节的SFR块中仅有21个字节是由定义的.对于尚未定义的字节地址单元,用户不能作寄存器使用,若访问没有定义的单元,则将得到一个不确定的随机数. 2.3 并行I/O口 MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。实际上P0-P3已被归入特殊功能寄存器之列。这四个口除了按字节寻址以外,还可以按位寻址。由于它们在结构上有一些差异,故各口的性质和功能有一些差异。 P0口是双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型T

15、TL负载。P1口是8位准双向I/O口,可驱动4个LS 型负载。P2口是8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。P3口是8位准双向I/O口,是双功能复用口,可驱动4个LS型TTL负载。P1口、P2口、P3口各I/O口线片内均有固定的上拉电阻,当这3个准双向I/O口做输入口使用时,要向该口先写“1”,另外准双向I/O口无高阻的“浮空”状态,故称为双向三态I/O 口。 2.4 时钟电路与时序 时钟电路用于产生MCS-51单片机工作时所必需的时钟信号。MCS-51单片机本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,MCS-51单片机应在唯一的时钟信号

16、控制下,严格地按时序执行进行工作,而时序所研究的是指令执行中各个信号的关系。 在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定的操作。CPU发出的时序信号有两类,一类用于片内对各个功能部件的控制,这列信号很多。另一类用于片外存储器或I/O端口的控制,这部分时序对于分析、设计硬件接口电路至关重要。这也是单片机应用系统设计者普遍关心的问题。 2.5 单片机的应用领域 单片机应用领域可以归纳为以下几个方面。 1.智能仪表 用单片机系统取代老式的测量、控制仪表,实现从模拟仪表向数字化、智能化仪表的转化,如各种温度仪表、

17、压力仪表、流量仪表、电能计量仪表等。 2. 测控系统 用单片机取代原有的复杂的模拟数字电路,完成各种工业控制、数据采集系统等工作。 3.电能变换 应用单片机设计变频调速控制电路。 4.通信 用单片机开发通信模块、通信器材等。 5.机电产品 应用单片机检测、控制传统的机械产品,使传统的机械产品结构简化,控制智能化,提高了机电产品的可靠性,增强了产品的功能。 6.智能接口 在数据传输中,用单片机实现外部设备与微机通信。 第3章 电路的硬件设计 3.1 复位电路 MCS-51单片机的复位是由外部

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

19、自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。 3.2 时钟电路 时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。 电路图如下: MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳

20、定的自激振荡器。 3.3 按键电路 按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。 电路图如下: P1.0口表示功能移位键,按键选择要调整的时十位、时个位、分十位或分个

21、位。 P1.1口表示数字“+“键,按一下则对应的数字加1。 P1.2口表示数字“-”键,按一下则对应的数字减1。 P1.3口表示时间表的切换,程序默认为日常时间表,当按下该开关,使输入为低电平时,表示当前执行的是考试时间表,并有绿发光二极管显示。再按键,使键抬起,输入维高电平时,表示当前执行的是日常作息时间表,用红发光二级管显示。 3.4 液晶显示电路 3.4.1概述: CA1602A是一种字符型液晶显示器。可显示32个5*8点阵的字符,每一个字符是由组成的字符块集。它主要采用动态驱动原理由行驱动—控制器和列驱动器两部分组成了80(列)*16(行)的全点

22、阵液晶显示。此显示器采用了COB的软封装方式,通过导电橡胶和压框连接LCD,连接可靠,使其寿命长。 3. 4. 2 特性: 1. 工作电压为+5V±10% 2. 点阵书为80(列)X16(行),可显示32个(5*8)点阵的字符 3. 与CPU接口采用3条为控制总线和8位并行数据总线输入输出,适配M6800系列时序。 4. 内部有固定字模库共240个字符和64个字节的字定义字模库。 5. 有丰富而易操作的指令集。 6. 第4章 电路的软件设计 4.1 软件程序内容 本设计的软件程序包括主程序、中断子程序、闹铃子程序、

23、时钟显示子程序、查询时间表切换程序和延时子程序等等。另外由于电路中有六个按键,还另外设计了防抖动程序来防止干扰。 4.2 定时程序设计 单片机的定时功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。如果MCS-51采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。MCS-51单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/

24、计数器两种工作模式和4种工作方式。 定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX. 当定时器/计数器工作于方式1,为16位的计数器。本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1。 4.2.1实时时钟实现的基本方法 时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢

25、出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。 秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。 4.3 软件流程图 软件程序整个流程图如下: 结束 处理按键 定时时间到 开始 T0初始化 LCD初始化 有键按下 时间处理 4.4程序见附录四。 第5章 电路的安装与调试

26、 5.1 电路安装: 我们各个部分电路组合在一起组成总电路原理图。该原理图经过不断的修改优化进行仿真,其仿真结果可靠可行。然后用Protel软件画好原理图,并将其原理图导入PCB面板上,一个一个电路模块进行排部好之后,进行手工布线。在画PCB图的过程中,使其版面面积尽量小,同时也能使其走线尽量短,其操作过程略,打印PCB图之后进行印制电路板,并腐蚀电路板,洗刷电路板之后进行打孔,然后用万用表的蜂鸣器档检测整个电路板中的线路,直至无发现断线为止。接着焊上元器件,从小件至大件逐件焊接。焊接完成后进行调试。在keiC软件,把编写好的程序生成”*.hex”文件,用在线编程下载器ISP PRO把程

27、序下载到单片机里。 5.2电路调试: (1)我们首先进行时间年月日时分秒调整,获得成功。 (2)对年月日时分秒进行单独的调整,没有发现按键的失灵,再次获得成功。 (3)对马表进行调试,发现不成功。马表不走,我们重新检查了程序发现程序有错,改了过来,再次生成”*.hex”文件,用在线编程下载器ISP PRO把程序下载到单片机里。重新调试,成功。 (4)对闹铃进行调试,获得成功。 第6章 结束语 6.1意见与建议 6.1.1多功能电子钟课设的编程比较复杂,刚开始不怎么懂,但经过仔细分析后发现,其实可以用多个子程序来实现。通过对定时器0进行设计中断程序来实现马表;对秒

28、的累加可以得到分,对分的累加可以得到时,日月年可以按照同样的道理得到。当要对年月日时分秒的重新设置,我们可以通过中断来实现。。 6.1.2在编程的时候,我们发现用汇编语言来编程的话是极其麻烦的。于是我们在图书馆借了不少基于C语言编程的单片机的书,经过仔细的收集资料,在大家的合作下,我们用C语言编写了一个个的子程序,最终完成了整个程序。 6.2收获与体会 经过近一个星期的努力,课程设计终于结束了。今天是交成果的日子,我的心情——诚惶诚恐。经过单片机的学习,运用学到的理论知识来制作有具体功能实用的电路,把学到的理论和实践结合在了一起,为今后在理论与实践中结合奠定了经验基础和增强了动

29、手能力。 在这次课程设计的制作过程中,程序的编写是个难点,也是一个重点,因为电路的外设很简单,画PCB图和电路板的制作也相对简单。通过对单片机的编程,进一步了解了单片机的内部结构,掌握了其编程的方法,学到了很多课本上没有的东西,激发了我们学习单片机的兴趣,课外做一些小东西的兴趣。同时也为了大四的毕业设计积累了不少的财富。 通过这次的制作,我们的能力提高了不少,同时也希望老师给我们的作品多提点意见,让我们能掌握更多的东西。 参考文献 : 1.刘瑞新主编、单片机原理及应用教程,北京:机械工业出版社,2006.7 2.徐士良编著、C语言程序设计教程,北京:人民邮电出版社,2003年8月第

30、二版 3.张齐主编、单片机应用系统设计技术——基于C语言编程,电子工业出版社,2004.8 4.陈明义主编、电子技术课程设计实用教程[S] 2002年05第1版. 5.高鹏主编、PROTEL实用教程[S] 1999年第1版. 6.陆坤等、 电子设计技术. [S] 成都:电子科技大学出版社,1997 7. 彭介华主编 蔡明生等编著,电子技术课程设计指导,索书号:TN/53 出版日期:1997年10月第1版. 8.及力主编、Protel 99 SE原理图与PCB设计教程,北京:电子工业出版社,2004.1 附表 器件明细表: 序号 元件型号名称 数量 1 AT89S

31、51 1 2 LCD1602 1 3 晶振12MHz 1 4 按钮 7 5 小喇叭 1 6 陶瓷电容30pF 2 7 陶瓷电容0.01uF 2 8 电解电容100uF 1 9 发光二极管 1 10 电阻4.7K 3 附图一 多功能电子钟原理图: 附图二 多功能电子钟PCB图: 附录 程序源代码: Main.C #include #include "lcd.h" #include /*宏定义*/ #define uchar unsig

32、ned char sbit speak=P2^0; uchar flag=0; uchar key_down=0; uchar flag_day=0; uchar flag_mon=0; uchar flag_year=0; /*全局变量*/ uchar counter=0; uchar counter_10ms; uint mic; uchar second; uchar min=30; uchar hour=10; uchar day=9; uchar mon=7; uint year=2007; uchar foucs=8; char ster=

33、1; uchar direct=0x83; uchar flag_direct=0; uchar flag_one=0; uchar line1[17]; uchar line2[17]; uchar flag_c=1; uchar clock=0xFF; uchar c_min=31; uchar c_hour=10; void delay_ms(uchar n) { uchar i,j; for(i=n;i>0;i--) { for(j=248;j>0;j--) { _nop_();_nop_(); }

34、 } } /*定时器0中断程序*/ void timer0(void) interrupt 1 using 2 {TL0=(65535-10000)%256; TH0=(65535-10000)/256; counter++; if(key_down==0xFF)//马表 counter_10ms++; if(counter_10ms==100) { counter_10ms=0; mic++; if(mic==1000) mic=0; } if(counter==100) {counter=0;

35、 second++; } } void init(void) {TMOD=0x01; //16位定时器 EA=1; ET0=1; TH0=(65535-10000)/256; TL0=(65535-10000)%256; TR0=1; } /*时间处理*/ void proccess(void) { if(second==60) { second=0; min++; } /* if(min==60) { min=0; if(hour<23) hour++; else

36、 { hour=0; day++; } } */ if(min==60) { min=0; hour++; } if(hour==24) { hour=0; day++; } /* if(day==32) { day=1; mon++; } */ if(day==31) { day=0; mon++; } /* if(mon==13) { mon=1; year++; } */ if(mon==12)

37、 { mon=0; year++; } } /************************************************** * 设置 **************************************************/ void set_time(void) { switch(foucs) { case 0:year=year+ster;break; case 1:mon=mon+ster;break; case 2:day=day+ster;break; case

38、 3:hour=hour+ster;break; case 4:min=min+ster;break; case 5:second=0;break;//second=second+ster;break; case 6:c_hour=c_hour+ster;break; case 7:c_min=c_min+ster;break; case 8:clock=~clock;break; default :break; } } /************************************ * 显示时间 *

39、/ void dis_time(void) { line1[0]=year/1000+0x30; line1[1]=(year%1000)/100+0x30; line1[2]=(year%100)/10+0x30; line1[3]=year%10+0x30; line1[4]='-'; line1[5]=mon/10+0x30; line1[6]=mon%10+0x30; line1[7]='-'; line1[8]=day/10+0x30; line1[9]=day%10+0x30; line

40、1[10]=' '; line1[11]=' '; if(clock==0xFF) { line1[12]=' '; line1[13]='O'; line1[14]='N'; } else { line1[12]='O'; line1[13]='F'; line1[14]='F'; } line1[15]=0x00; /************************************/ line2[0]=hour/10+0x30; line2[1]=hour%10+0x30; line2[2]=':'; line2[3]=min/10+0x30;

41、 line2[4]=min%10+0x30; line2[5]=':'; line2[6]=second/10+0x30; line2[7]=second%10+0x30; line2[8]=' '; line2[9]=mic/100+0x30; line2[10]=(mic%100)/10+0x30; line2[11]=mic%10+0x30; line2[12]='.'; line2[13]=counter_10ms/10+0x30; line2[14]=counter_10ms%10+0x30; line2[15]=0x00; lcd_dis(line1,0

42、x80); lcd_dis(line2,0xC0); } void dis_ling(void) { line1[0]='C'; line1[1]='l'; line1[2]='o'; line1[3]='c'; line1[4]='k'; line1[5]=' '; line1[6]=' '; line1[7]=' '; line1[8]=' '; line1[9]=' '; line1[10]=' '; line1[11]=' '; if(clock==0xFF) { line1[12]=' '; line1[13]='O

43、'; line1[14]='N'; } else { line1[12]='O'; line1[13]='F'; line1[14]='F'; } line1[15]=0x00; line2[0]=c_hour/10+0x30; line2[1]=c_hour%10+0x30; line2[2]=':'; line2[3]=c_min/10+0x30; line2[4]=c_min%10+0x30; line2[5]=' '; line2[6]=' '; line2[7]=' '; line2[8]=' '; lin

44、e2[9]=' '; line2[10]=' '; line2[11]=' '; line2[12]=' '; line2[13]=' '; line2[14]=' '; line2[15]=' '; line2[16]=0x00; lcd_dis(line1,0x80); lcd_dis(line2,0xC0); } /**********************main**************************/ void main(void) { init(); //初始化 P1=0xFF;

45、 lcdinit(); while(1) { proccess(); // if(hour>=10) /* if(mon>12) mon=0; if(day>31) day=0; if(hour>24) hour=0; if(min>60) min=0; */ if(flag_direct==0) dis_time(); /***********************************/ if((flag_direct==1)&&(flag_one==1)) { // flag_one=0; //

46、 flag_direct=0; lcd_com(direct); lcd_com(0x0D);//开闪烁 } //else // lcd_com(0x0C);//关闪烁 if((P1!=0xFF)&&(flag==1)) { flag=0; delay_ms(2); if(flag_c==1) clock=0;//有键按下,关闹铃 switch(P1) { case 0xFE:foucs++;flag_direct=1;flag_one=1;break;//设置 huangqin 2007.7.6 case 0xF

47、D:ster=-1;set_time();break;//设置减 case 0xFB:ster=1;set_time();break;//设置加 case 0xF7:lcd_com(0x0C);flag_direct=0;flag_one=1;second=0;break;//确定,关闪烁//flag_direct=0;break; case 0xDF:key_down=~key_down;break;//开跑秒与停跑秒 case 0xEF: if(key_down==0) { counter

48、10ms=0;mic=0;}//清跑秒 else {key_down=~key_down;} break;//如果在跑则先停止 default:break; } if(foucs>8)//>5 foucs=0; if(foucs<=5) dis_time();//重显一次 else dis_ling(); lcd_dis(line1,0x80); lcd_dis(line2,0xC0); } switch(foucs) { c

49、ase 0:direct=0x83;break;//huangqin 2007.7.6 case 1:direct=0x86;break; case 2:direct=0x89;break; case 3:direct=0xC1;break; case 4:direct=0xC4;break; case 5:direct=0xC7;break; case 6:direct=0xC1;break; case 7:direct=0xC4;break; case 8:direct=0x8E;break; def

50、ault:break; } if((P1==0xFF)&&(flag==0)) { delay_ms(2); flag=1; } if((clock==0xff)&&(c_hour==hour)&&(c_min==min)) { flag_c=1;//闹铃 } else flag_c=0; if((flag_c==1)&&(counter<50)) speak=0; else speak=1; //delay_ms(100); } } Lcd.c /********************************

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服