Prtues电子钟设计报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Prtues电子钟设计报告.doc

Protues电子钟设计报告 任务目的 通过电字钟的设计与制作,前所学的单片机内部定时 器资源、I/O端口、键盘和显示接口等知识融会贯通, 锻炼独立设计、制作和调试应用系统的能力,深入领 会单片机应用系统的硬件设计、模块化程序设计及软 件调试方法等,并掌握单片机应用系统的开发过程。 设计要求 实现功能:1.八位数码管显示电子钟的时间(时钟, 分钟,秒钟)。2.具备调节时间的功能3.每到一小时 的时候,蜂鸣器响一分钟。 系统方案选择 1) 单片机选型 选用2块Mcs-51系列主流芯片AT89C51,内部带有 4KB的Flash ROM,无须外扩程序存储器。由于电子 钟没有大量运算和暂存数据,片内128B的RAM可 以满足设计要求,无须外扩片外RAM。本设计我是 用两块单片机共同控制实现功能的,第一块控制电 子钟。第二块控制蜂鸣器播放音乐一分钟,里面有 三首歌可以选择。八位数码管。一个蜂鸣器。4个 幵关。 2) 计时方案 采用芯片AT89C51内部时钟计时,具备显示时、分、秒。虽然 计时不是很准确,但是容易操作,适合我们初学单片机的同学 们。蜂鸣器响一分钟也是采用芯片AT89C51控制的。内存三首 音乐,可以选择播放。 3) 软件控制 利用芯片AT89C51内部定时/计数器进行中断定时,配合软件 延时实现时、分、秒的计时。该方案节省硬件成本,且能够使 读者对所学知识进行综合运用,因此本系统设计采用这一方案。 4) 显示方案 利用Pl、P2 口分别对八段数码管进行位显示和位 选择。这里采用动态显示方案。 5) 按键选择功能 第一块单片机的P0.0是对八位数码管显示的时分秒 位选,P0.1是分别对时分秒进行加加的,P0.2是分 别对时分秒进行减减的。第二块单片机的P2.0是选 择播放那首音乐的。 硬件设计 硬件设计电路如图1.0所示,八位数码管分别接 在第一块单片机的Pl、P2 口,蜂鸣器接在第二 块单片机的P1.0 口上。第一块单片机的P0 口 接了控制时分秒的按键,并接上上拉电阻,以 驱动八位数码管。第二块单片机的P2.0 口接上 选择音乐的按钮。但第一块单片机每到一小时, P0.3 口就会给个脉冲给第二块单片机的P3.2 口,引起第二块单片机外部中断,进而播放一 分钟音乐。 图1.0电子钟硬件设计电路 软件设计 (1)第一块单片机的主程序函数main:完成系统 初始化,包括时钟、闹钟初始参数基础是标致的设 定;I/O端口、定时/计数器初始化的设定;更新显 示时间,循环扫描按键,根据按键分别进行闹钟和 时钟的设置管理。定时器T0是实现每秒的计算, 定时器T1是控制八位数码管的显示时间。 各模块流程图设计 NO 7.电子钟程序: #includereg51 .h #define uchar unsigned char Uchar code SEG7[1 l]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0x00}; //数码管的字形码 uchar ACT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管的位选 uchar deda=0,sec=0,min=0,hour=0; //时间的相关变量定义 void key(void); sbit PO一0=P0八0;sbit P0_l=P0Al;sbit P0_2=P0 八 void key(void); sbit PO一0=P0八0; sbit P0_l=P0Al; sbit P0_2=P0 八 2; sbit P0_3=P0 八 3; void delay(time) //延时函数//选择要调教的时、分、秒 //对时、分、秒进行加1 //对时、分、秒进行减1 //控制蜂鸣器响 //延时函数 {for(;time0;time—);} void init(void) //定时器TO、T1的初始化 {TMOD=0x01; TH0=-48880/256; //TO 定时初值约为 50ms TL0=-48880%256; ET0= 1; TR0= 1; TH1=-1000/256; //Tl 定时初值约为 1ms TLl=-1000%256; ET1 = 1; TR1=1; EA=1;} void timeO(void) interrupt 1 //定时器 TO 工作方式 1 {TH0-48880/256; TL0=-48880%256; deda++;} void conv(void)// deda++;} void conv(void) //计算时、分、秒的子函数 {if(deda=20) {deda=0;sec++;} if(sec〉=60) {sec=0;min++;}

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档