欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    51单片机电子时钟课程设计实验报告Word文件下载.docx

    • 资源ID:22350805       资源大小:134.78KB        全文页数:24页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    51单片机电子时钟课程设计实验报告Word文件下载.docx

    1、7)掌握硬件和软件联合调试的方法。8)完成系统硬件电路的设计和制作。9)完成系统程序的设计。10)完成整个系统的设计、调试和制作。11)完成课程设计报告。基本要求1)实现最基本要求的110部分。2)键盘输入可以控制电子时钟的走时/调试。3)设计键盘输入电路和程序并调试。4)掌握键盘和显示配合使用的方法和技巧。提高发挥部分1)另设三个键,分别作小时、分、秒的减1调校。2)在以上设计的基础上,修改程序制作一个电子秒表。分、秒各占用2位显示,1/10秒、 1/100秒各占用1位显示。设定二个键分别作启动停止、清零(清零应在停止后有效)。3)在做完(2)后,将时钟与秒表合二为一,并且在同时使用时互不影

    2、响,即可在时钟与秒表之间任意切换,而不影响走时、计秒。整体设计框图及整机概述整体设计框图整机概述1)开机为走时模式,正常显示时间。在此模式下,时钟可调。2)共设置7个按键,分别为模式键、功能键、加一键、减一键、复位键、秒表启动键、秒表复位键。按动模式键,模式将在走时/调时/显示及秒表显示及调整2个模式下切换。3)在时钟模式下,功能键选择是正常走时,还是进入调试(时、分、秒)模式。4)按动加一键可以将值(时、分、秒)加一。5)按动减一键可以将值(时、分、秒)减一。6)按动秒表中开始/暂停按键可以随时控制秒表的开始和停止。7)按动秒表中清零按键时,秒表计的数就会被清除(只有在秒表停止了以后)。8)

    3、按下复位键后,无论是任何状态都会从新开始。9)开机时钟与闹钟都为00:00:00。各硬件单元电路的设计、参数分析及原理说明电源电路元件有限没有制作电源电路部分。使用9V的电池经过7805稳压后进行供电。按键参考书本P232的键盘接口电路原理图,P3口(除去P3.6)接的是键盘按键。当按键按下后,P3口被拉成低电平,给单片机一个信号,使单片机产生一个中断。单片机再指令相应的P0口,P2口产生变化。单片机最小系统参考实验指导书与课本及网络资料设计按键电平复位。LED数码管首先P0口作为段码输出。由于P0口输出级无上拉电阻,故需添加一排阻为其上拉电阻。其次采用共阳极数码管。段码端为低电平时导通LED

    4、,此时数码管向89S51芯片P0口灌电流,为防止芯片烧坏,还需加1个1 K的限流电阻。考虑到数码管的亮度问题,采用了PNP三极管做驱动电路。基极接上1 K电阻后再与P2口相连(P2.0P2.5)进行位选。发射极接5V电源,集电极接数码管位选。软件流程图和流程说明软件流程图1)主程序流程图流程图说明初始化:包括定时器赋初值,初始化各内存单元。开定时器中断,开CPU中断。时间显示及调整子程序与秒表显示及调整子程序流程图与调时模式子程序大同小异。 总结设计及调试体会硬件设计部分:首先要通过计算与参考资料等决定参数。而后通过仿真软件等调试,确定参数无误后再开始用AD画原理图,进而生成PCB进行布板。在

    5、焊板子的时候,也出现了问题,不小心将7805焊成了7905,结果又调试了一个时间。软件设计部分:设计软件首先要考虑要做的功能,确定出合理的算法。合理的算法不仅要可以实现功能,而且在添加功能的时候要方便灵活。有的人为了实现某种功能用了各种各样的方法来实现,结果程序结构吃死,当想要添加功能或者修改其他功能的时候,将修改程序大部分结构,也就是说要破坏程序现有的结构。关于调试:Keil软件调试单片机程序的时候,编译通过并不代表程序是正确的。编译通过只能说明程序没有语法上的错误。进行软件仿真或者下载到开发板上进行调试,经常会出现各种各样的错误。许多超出预期效果的现象往往是一些微小错误引起的。例如没有现场

    6、保护跟恢复现场等,所以养成良好的编程习惯也很重要。有些想达成某些功能而添加的语句,实际上确一点效果也没有。举个编程中的小问题:当有按键按下时,我们都要有软件防抖。正常的方法是调用一个延时。在实际调试中,要跳过这个抖动,需要100MS左右。如果使用正常的延时,会导致按键按下时CPU100MS内无法进行其他操作,也就是说。平均1S内100MS不调用显示子程序,这样就会导致亮度降低。这时候,考虑到显示子程序一次有十几毫秒,就特别写了一个程序来作为按键防抖的延时,实际上效果也是很不错的。这个想法就是在修改了多次程序未达到想要的效果(有按键按下时显示亮度不降低)后最终想出来的办法。最后在做完板,焊完电路

    7、后,在接通电源之前,要用万用表仔细检查电路是否有连接错,以免烧坏芯片和数码管。设计课设的其他体会:态度要积极,不要认为很简单就不紧不慢。很多东西并不是自己设想的那么顺利,有时候一个小问题可以花上你半天甚至一天的时间。虽然自己在程序上并没遇到太大的问题,但是因为态度不够积极,对于没画过的PCB图迟迟不去下手,在周四晚上才解决。本以为周五一天可以做完板并完成整机调试,可是各种突发事件让自己措手不及。发现板来不及做完后才将程序功能进行扩展。这是我在这次实验中的一个教训,也让我明白了对于自己不能太过于自信,态度决定一切。图一:系统电路原理图图二:系统电路PCB 在protues中调试的结果在开发板上实

    8、现的效果(见实物)在焊的PCB板子上效果(见实物)在protues里的仿真以及在开发板上实现和自己做实物所看到的现象是不一样的。在protues里不用接三极管(NPN)就可以实现效果,但是在自己做板子的时候就不行了,因为51单片机的输出的电流不能驱动数码管发光,需要一个增加驱动的9014三极管。另外,protues里的复位按键不起作用(软件里就是这样设计的)。将在PCB上实现的程序用在开发板上又出现了问题,delay(3)这个延时子程序不合理,出现了闪烁的问题,所以将delay(3)改成了delay(1),这样问题就解决了。我是将三极管加在了段选上,又加了限流电流,这样做数码管也能点亮。另一方

    9、面,一样的程序用在不同的显示上,现象也是不一样的。所以,我需要不断地修正定时器的装值。TH1=(65536-49997)/256; /重装初值TL1=(65536-49997)%256;TH0=(65536-8000)/256;TL0=(65536-8000)%256;经过实际测量,这个数值是最合适的,一个小时一秒不差。 表一:元器件清单器件名称数量电池一个Lm7805自锁开关51单片机LED两个极性电容非极性电容晶振10K电阻九个1K电阻七个100电阻八个PNP三极管4位数码管(共阴)时钟程序源码# include # define uchar unsigned char# define u

    10、int unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;sbit led=P11; /指示灯sbit qiehuan_key=P37;/秒表和时钟模式切换按键sbit sp_key=P34; /秒表中开始/暂停按键sbit clf_key=P35; /秒表中清零按键sbit func_key=P31; /时钟换位按键(时、分、秒)sbit add_key=P32; /时钟加1按键sbit sub_key=P33; /时钟减1按

    11、键uchar k1_bit=0; /切换按键标志位uchar shi1,shi2,fen1,fen2,miao1,miao2,fen3,fen4,miao3,miao4,num9,num10;uint num1,num2,num3,num4,num5,num6,num7,num8,num11;void delay(uint xms) /延时函数 uint i,j; for(i=xms;i0;i-) for(j=110;jj-);void init() /中断初始化函数 EA=1; /开总中断 TMOD=0X11; /定时器工作方式选择,定时器0和定时器1都选择第1种工作方式 TH0=(6553

    12、6-10000)/256; /定时器0装初值,定时10ms(用于秒表) TL0=(65536-10000)%256; ET0=1; /开定时器0开关 TR0=0; /开定时器0小开关 TH1=(65536-50000)/256; /定时器1装初值,定时50ms (用于时钟) TL1=(65536-50000)%256; ET1=1; /开定时器1开关 TR1=1; /关定时器1小开关void mode_key() /模式选择键,本程序两种模式,分别是时间显示、秒表。当K1_bit为0时显示时钟,为1时进入秒表 if(qiehuan_key=0) delay(5); if(qiehuan_key

    13、=0) k1_bit+; if(k1_bit=2) k1_bit=0; while(!qiehuan_key); void display1(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2) /显示时钟函数 shi1=num1/10; shi2=num1%10; fen1=num2/10; fen2=num2%10; miao1=num3/10; miao2=num3%10; P2=0xff; P0=tableshi1; /第一位 P2=0xfe; delay(3); P0=tableshi2; /第二位

    14、P2=0xfd; P0=0x40; / 第三位 P2=0xfb; P0=tablefen1; /第四位 P2=0xf7; P0=tablefen2; / 第五位 P2=0xef; / 第六位 P2=0xdf; P0=tablemiao1; /第七位 P2=0xbf; P0=tablemiao2; /第八位 P2=0x7f;void display0(uchar fen3,uchar fen4,uchar miao3,uchar miao4,uchar num9,uchar num10) /显示秒表函数 fen3=num8/10; fen4=num8%10; miao3=num7/10; mia

    15、o4=num7%10; num9=num6; num10=num5; P0=tablefen3; P0=tablefen4; P0=tablemiao3; P0=tablemiao4; P0=tablenum9; P0=tablenum10;void key_miaobiao() if(k1_bit=1) if(sp_key=0) if(sp_key=0) TR0=TR0; while(!sp_key) display0(fen3,fen4,miao3,miao4,num9,num10); if(TR0=0) led=0; if(clf_key=0) delay(5); if(clf_key=

    16、0) led=1;clf_key) num5=num6=num7=num8=0; void keyscan() /时钟按键扫描 if(func_key=0) delay(5); if(func_key=0) num11+; while(!func_key); if(num11=1) TR1=0; if(num11=2) TR1=1; if(num11=3) if(num11=4) num11=0; if(num11!=0) if(add_key=0) if(add_key=0)add_key); if(num11=1) num3+; if(num3=60) num3=0; if(num11=2

    17、) num2+; if(num2=60) num2=0; if(num11=3) num1+; if(num1=24) num1=0; if(sub_key=0) if(sub_key=0)sub_key); num3-; if(num3=-1) num3=59; num2-; if(num2=-1) num2=59; num1-; if(num1=-1) num1=23;void main() init(); led=0; while(1) mode_key(); switch(k1_bit) /模式选择 case 0: display1(shi1,shi2,fen1,fen2,miao1,

    18、miao2); /显示时间 keyscan(); break; case 1: display0(fen3,fen4,miao3,miao4,num9,num10); /显示秒表 key_miaobiao(); /扫描秒表操作 void Time1() interrupt 3 /定时器1函数(时钟) TH1=(65536-49997)/256; TL1=(65536-49997)%256; num4+; if(num4=20) num4=0; num3+; if(num3=60) /秒针 num3=0; num2+; if(num2=60) /分针 num2=0; num1+; if(num1=24) /时针 num1=0;void Time0() interrupt 1 /定时器0函数(秒表) TH0=(65536-8000)/256; /重装初值 TL0=(65536-8000)%256; num5+; if(num5=10) num5=0; num6+; if(num6=10) num6=0; num7+; if(num7=60) num7=0; num8+; if(num8=60) num8=0;


    注意事项

    本文(51单片机电子时钟课程设计实验报告Word文件下载.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开