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

开通VIP
 

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

小小电子闹钟.doc

1、 这里介绍的电子钟,电路可称得上极简,它仅使用单片的20引脚单片机完成电子钟的全部功能,而笔者见到的其它设计方案均采用二片以上的多片IC实现。 电路见图1。 一片20引脚的单片机AT89C2051为电子钟主体,其显示数据从P1口分时输出,P3.0~3.3则输出对应的位选通信号。由于LED数码管点亮时耗电较大,故使用了四只PNP型晶体管VT1~VT4进行放大。本来笔者还有一种更简的设计方案(见图2),可省去VT1~VT4及R1~R4八个元件,但这种设计由于单片机输出口的灌入电流有限(约20mA),数码管亮度较暗而不向读者介绍,除非你采用了高亮度的发光数码管。

2、P3.4、P3.5、3.7外接了三个轻触式按键,这里我们分别命名为:模式设定键set(P3.4)、时调整键hour(P3.5)、分调整键min(P3.7)。C1、R13组成上电复位电路。VT5及蜂鸣器Bz为闹时讯响电路。三端稳压器7805输出的5V电压供整个系统工作。此电子钟可与任何9~20V/100mA的交直流电源适配器配合工作,适应性强。 电子钟功能 1.走时:通过模式设定键set选择为走时,U1、U2显示小时,U3、U4显示分。U2的小数点为秒点,每秒闪烁一次。 2.走时调整:通过模式设定键set选择为走时调整,按下hour键对U1、U2的走时“时”显示进行调整(每0.

3、2秒递加1)。按下min键对U3、U4的走时“分”显示进行调整(每0.2秒递加1)。 3.闹时调整:通过模式设定键set选择为闹时调整,按下hour键对U1、U2的闹时“时”显示进行调整(每0.2秒递加1)。按下min键对U3、U4的闹时“分”显示进行调整(每0.2秒递加1)。 4.闹时启/停设定:通过模式设定键set选择为闹时启/停设定,按下min键U3的小数点点亮,闹时功能启动;按下hour键U3的小数点熄灭,闹时功能关停。 由于电路设计得极其简单,因此丰富的功能只能由软件完成,这里软件设计成为了关键。下面介绍软件设计要点。 图3为主程序状态流程。

4、 图3 运行时建立的主要状态标志如下: flag—掉电标志。掉电后,flag内为一随机数;重新设定时间后flag内写入标志数55H。 set—工作模式设定标志。 hour—走时“时”单元。 min—走时“分”单元。 sec—走时“秒”单元。 deda—走时5mS计数单元 t_hour—闹时“时”单元。 t_min—闹时“分”单元。 d_05s—0.5秒位标志。每秒钟的前0.5秒置1,后0.5秒置0,以使秒点闪烁。 o_f—闹时启/停位标志。闹时启动置1,闹时关停置0。 另外将定时器T0设定为5mS的定时中断。这里晶振频

5、率为12MHz,因此5mS的初值为-5000,但实际上程序还要作其它运算,使得时间偏长,经调整为-4800后试验刚好。计时单元deda每次中断均加1。走时函数判断deda>=200时即令秒单元sec加1。同理秒单元sec满60后令分单元min加1。分单元min满60后令时单元hour加1。时单元hour满24后清0。 上电后,首先进行初始化,对各状态标志、输入输出口及定时器T0进行初始化工作,以适应后面程序的要求。 随后程序判断有无set键按下,如按下,则set键值从0起加1。set键值只能从0加到3,然后又回到0。 接下来,根据键值进行散转。若set=0,运行走时程序;若s

6、et=1,进入调整闹时时间程序;若set=2,进入调整走时时间程序;若set=3,显示已调好的闹时时间,同时进入启/停闹时程序。 散转完后,进行判断掉电标志flag是否等于55H。若不等,说明刚开机上电或运行过程中掉过电,这时四个数码管以1Hz的频率闪烁四个8字,提示时间不准;若相等,说明未掉电,RAM区内容未变化,时间准确。 再下来程序又转回到初始化之后进行循环运行。 由于使用了四只数码管密集排列,因此只能采用双面印刷板设计,图4、5分别为正面(元件面)、反面的印板图。尺寸3000milx4000mil(7.62cmx10.16cm)。图6为计算机输出的三维仿真印制板。

7、 图4 图5 图6 元件选用 为了走时准确,晶振X最好选用温漂小的。四个数码管U1~U4可选用发绿光的,这样光泽较柔和。蜂鸣器Bz要购买绕线型的电动式蜂鸣器(市场上有一种加电压即工作的蜂鸣器这里不适用),因驱动信号为脉冲信号。其它元件一般无特殊要求。 使用方法 上电后,四个LED数码管闪烁四个8字。 按一下set键,闪烁现象消失(此时set=1),U1的小数点亮,说明此刻可以调整闹时时间。按下hour键,U1、U2作加法;按下min键,U3、U4作加法。这些调整好的数据被同时送入RAM区的闹时记忆“时”单元t_hour

8、和闹时记忆“分”单元t_min。 再按一下set键,set=2,U2的小数点亮,此刻可以调整走时时间。按下hour键,U1、U2作加法;按下min键,U3、U4作加法。这些调整好的数据也被同步送入RAM区的“时”记忆单元hour和“分”记忆单元min。 再按一下set键,set=3,显示刚才调整的闹时时间,此刻可以选择启动/关停闹时。按下min键,o_f位标志置1,U3的小数点亮,闹时启动;按下hour键,o_f位标志置0,U3的小数点灭,闹时关闭。 若再按一下set键,set=0,电路进入走时状态,U1、U2显示小时,U3、U4显示分。U2的小数点作秒点闪烁。 在闹时

9、启动的情况下,走时到达设定闹时,则蜂鸣器Bz鸣响一分钟进行提醒。 附:用C51编写的源程序清单(已由实验板运行通过) #include                        /*包含器件配置文件*/ #define uchar unsigned char #define uint unsigned int char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,                     0x92,0x82,0xF8,0x80,0x90,};/*0~9的数码管段码*/ uchar hour=0,m

10、in=0,sec=0;                /*时、分、秒单元清零*/ uchar deda=0;                                  /*5mS计数单元清零*/ uchar t_hour=0,t_min=0;                  /*闹时时、分单元清零*/ bit d_05s=0;                             /*0.5秒标志*/ bit o_f=0;                                         /*闹时启/停标志*/ uchar set=0; 

11、                                     /*模式设定标志*/ uchar m=0; uchar flag=0;                                     /*RAM掉电标志*/ void delay(uint k);                              /*延时子函数*/ void conv();                                       /*走时单元转换*/ void p_out();                              

12、        /*判别闹时到否子函数*/ void dirve();                                       /*走时时间输出驱动子函数*/ void t_dirve();                                    /*闹时时间输出驱动子函数*/ /*闹时启/停子函数*/ void time1_of()                                  {uchar m;        if(P3_7==0)delay(1);        if(P3_7==0)

13、o_f=1;        for(m=0;m<30;m++)               {               t_dirve();               P1=DATA_7SEG[t_min/10];P3=0xfd;delay(1);               if(P3_1==0){if(o_f==1)P1_7=0;}else P1_7=1;               delay(1);               }                      if(P3_5==0)delay(1);    

14、    if(P3_5==0)    o_f=0;        for(m=0;m<30;m++)               {               t_dirve();               P1=DATA_7SEG[t_min/10];P3=0xfd;delay(1);               if(P3_1==0){if(o_f==1)P1_7=0;else P1_7=1;}               delay(1);               } } /*走时函数*/ void time()

15、 { conv();                                              /*走时单元转换*/ dirve();                                              /*走时时间输出驱动子函数*/ p_out();                                             /*判别闹时到否子函数*/ } /*定时器T0 5mS初始化*/ void init_timer() { TMOD=0x01; TH0=-(4800/256

16、); TL0=-(4800%256); IE=0x82; TR0=1; } /*扫描按键子函数*/ void scan_key() { delay(1); if(P3_4==0)set++; if(set>=4)set=0; if(set==1)flag=0x55; F0:if(P3_4==0)goto F0;                      /*按键未释放,在此等候*/ } /*延时子函数*/ void delay(uint k) { uint i,j; for(

17、i=0;i for(j=0;j<121;j++) {;}} } /*5mS定时中断服务子函数*/ void zd(void) interrupt 1 { TH0=-(4800/256); TL0=-(4800%256); deda++; } /*调整走时时间*/ void time_adj() {uchar m;        if(P3_5==0)delay(1);        if(P3_5==0)hour++;        if(hour==24)hour=0;        f

18、or(m=0;m<30;m++)               {               dirve();               if(P3_2==0)P1_7=0;               else P1_7=1;               delay(1);               }                      if(P3_7==0)delay(1);        if(P3_7==0)min++;        if(min==60)min=0;        for(m=0;m<30

19、m++)               {               dirve();                      if(P3_2==0)P1_7=0;               else P1_7=1;               delay(1);               } } /*调整闹时时间*/ void time1_adj() {uchar m;        if(P3_5==0)delay(1);        if(P3_5==0)t_hour++;        if

20、t_hour==24)t_hour=0;        for(m=0;m<30;m++)               {               t_dirve();               }               if(P3_7==0)delay(1);        if(P3_7==0)t_min++;        if(t_min==60)t_min=0;        for(m=0;m<30;m++)               {               t_dirve();    

21、           } }     /*时、分、秒单元及走时单元转换*/ void conv() { if(deda<=100)d_05s=0;        else d_05s=1; if(deda>=200){sec++;deda=0;} if(sec==60){min++;sec=0;} if(min==60){hour++;min=0;} if(hour==24){hour=0;} } /*走时时间输出驱动子函数*/ void dirve() { P1=DATA_7SEG[hour/1

22、0];P3=0xf7;delay(1); P1=DATA_7SEG[hour%10];P3=0xfb;delay(1); if(d_05s==1){if(P3_2==0)P1_7=0;else P1_7=1;} delay(1); P1=DATA_7SEG[min/10];P3=0xfd;delay(1); if(o_f==1){if(P3_1==0)P1_7=0;else P1_7=1;delay(1);} P1=DATA_7SEG[min%10];P3=0xfe;delay(1); } /*闹时时间输出驱动子函数*/ void t_

23、dirve() { P1=DATA_7SEG[t_hour/10];P3=0xf7;delay(1); if(P3_3==0)P1_7=0;else P1_7=1; delay(1); P1=DATA_7SEG[t_hour%10];P3=0xfb;delay(1); P1=DATA_7SEG[t_min/10];P3=0xfd;delay(1); P1=DATA_7SEG[t_min%10];P3=0xfe;delay(1); } /*判别闹时到否子函数*/ void p_out() { if(o_f==1){

24、        if(t_hour==hour){if(t_min==min)               if(P3_0==0){P1_7=0;delay(1);}               else P1_7=1;                                    }               } } /*主函数*/ void main() {        init_timer();                       /*定时器T0初始化*/        while(1)       

25、                              /*无限循环*/        {        if(P3_4==0)scan_key();               /*有按键,调用按键扫描子函数*/ switch(set)                                        /*根据set键值散转*/ { case 0:time();break;                                   /*走时时间程序*/ case 1:time1_adj();break;              

26、       /*闹时时间调整*/ case 2:time_adj();break;                      /*走时时间调整*/ case 3:time1_of();break;                      /*启/停闹时*/ default:break;                                     /*其它退出*/ }        if(flag!=0x55)                             /*判断掉电标志*/        {for(m=0;m<100;m++)  

27、             /*点亮四个8字400mS*/               {               P1=0x80;P3=0xf7;delay(1);               P1=0x80;P3=0xfb;delay(1);               P1=0x80;P3=0xfd;delay(1);               P1=0x80;P3=0xfe;delay(1);               }                             P1=0xff;P3=0xff;delay(400); /*熄灭四个8字400mS*/        }        } }

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服