数字钟设计-基于89S51单片机-实训总结 精品.doc_第1页
数字钟设计-基于89S51单片机-实训总结 精品.doc_第2页
数字钟设计-基于89S51单片机-实训总结 精品.doc_第3页
数字钟设计-基于89S51单片机-实训总结 精品.doc_第4页
数字钟设计-基于89S51单片机-实训总结 精品.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实训报告课程名称 电子作品制作与开发项目实践选修课系列题 目 数字时钟的设计与制作 目 的一、要求:、掌握单片机控制数码管现实系统的开发设计;、在之前掌握的电路、模电、数电等知识,以及单片机知识的基础上,进一步掌握电子产品设计及开发调试的全过程;、掌握PCB板的设计、印刷,元器件的安装、电路调试、程序调试、程序下载等实践实训部分;、真正培养理论联系实际、分析解决一般性技术问题以及实际动手的能力。二、任务:、设计并制作一个数字钟;、接4个按键,分别为“设定”、“加1”、“减1”、“确定”键,用于调整时间;、外接8个LED数码管,分别显示时、分、秒,以24小时制显示时间;、另外需要使用AC220V转AC(单)12V变压器、二极管IN4004,稳压块7905、7805等自制正负5V电源一套。第一部分、设计原理一、数字时钟结构 该实训作品是利用AT89S51单片机结合数码管设计出的一个可调时的数字时钟,其主要利用单片机的输入/输出功能,定时/计数功能和中断功能。单片机时钟结构分硬件和软件两部分。硬件主要由单片机,LED数码管显示器和按键等组成。、数字钟的电路结构组成:1)晶振电路和复位电路。2)驱动电路及显示单元。3)校时控制电路。4)5V稳压直流电源电路。二单元电路设计:、译码驱动及显示单元:图1 LED数码管显示图2 输送段码电路 当74LS373的LE=1,OE(非)=0时其输出口随输入口变化,即输出段码。再由P0选中相应位显示输出低电平,使三极管9015导通驱动共阳数码管。、校时控制电路:图 3 校时控制电路程序设计时给P2口高电平,当有对应按键按下时由于另一端接地,所以对应口变成低电平,单片机根据各按键信号运行相应程序。K1为设定键,按下后进入调时状态,计时也瞬时停止。按一次进入调整小时的状态,在调时状态再按K1进入分调整状态,在分调整状态再按一次进入秒调整状态!进入相应状态后,利用K2,K3键进行调整,K2为加1,K3为减1。K4键为确定键,当处在调时状态时,K4按下时跳出调时状态,进入计时状态。 、5V稳压直流电源电路:图4 电源电路电源主要使用的是AC220V转AC12V变压器,二极管IN4004,稳压块7805等。220V交流电由变压器转为12V交流电,电路板外接12V交流电,经过IN4004整流及电容滤波,在通过稳压块7805得到5V左右的直流电,该电路接了电源指示灯D1,通电时变亮。、晶振电路和复位电路: 图5 晶振电路和复位电路第二部分、硬件电路及PCB板图图6 Protel整体原理图PCB板图图7 PCB板图第三部分、软件流程图图8 程序流程图图9 程序流程图图10 程序流程图第四部分、仿真及实物图软件仿真环境:Protues软件 学习使用Protues软件,学会从该软件上找到所需的芯片及元器件,由秒向时部分依次进行设计并逐步仿真,从而发现问题能及时解决。 按原理电路图在软件上接好电路,进行仿真,从而发现电路的问题并进行解决。图11 仿真结果实物图图12 实物图第五部分、程 序#include#define uint unsigned int #define uchar unsigned char sbit _led=P27;sbit key1=P20; /调时按键sbit key2=P21;/加按键sbit key3=P22;/减按键sbit key4=P23;/确定建uchar num=0,temp=0,count=0;uchar aa;uchar hour,min,sec;uchar code table=0x60,0xf3,0xa4,0xa1,0x33,0x29,0x28,0xe3,0x20,0x21;/定义共阳极LED显示段码0、1、2、3、4、5、6、7、8、9void delay(uint z);/延时子函数声明void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar aa);/显示子函数声明void read_key();/读按键函数声明void led();void time_change();/时间调整子函数声明/* 主函数 */void main()P2=0xff;hour=12;min=0;sec=0;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;aa=0xff; while(1) time_change(); display(tablehour/10,tablehour%10,tablemin/10, tablemin%10,tablesec/10,tablesec%10,0xff); /* 显示函数 */void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar aa) if(1) P0=0xfb&aa;P1=0xbf;delay(2); P0=0xdf&aa;P1=0xbf;delay(2); if(num=1) P0=0xfe&aa;P1=a;delay(2); else P0=0xfe;P1=a;delay(2); /hour if(num=1) P0=0xfd&aa;P1=b;delay(2); else P0=0xfd;P1=b;delay(2); /hour if(num=2) P0=0xf7&aa;P1=c;delay(2); else P0=0xf7;P1=c;delay(2); /min if(num=2) P0=0xef&aa;P1=d;delay(2); else P0=0xef;P1=d;delay(2); /min if(num=3) P0=0xbf&aa;P1=e;delay(2); else P0=0xbf;P1=e;delay(2); /sec if(num=3) P0=0x7f&aa;P1=e;delay(2); else P0=0x7f&aa;P1=f;delay(2); /sec/* 定时器0中断函数 */ void timer0() interrupt 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;temp+;/* 定时器1中断函数 */void timer1() interrupt 3 TH1=(65536-50000)/256;TL1=(65536-50000)%256;count+;if(count=20)count=0;/* 延时子函数 */void delay(uint z) uint j,k; for(j=z;j0;j-) for(k=120;k0;k-);/* 读按键函数 */void read_key() if(key1=0) _led=0; delay(100); if(key1=0) delay(100); _led=1;num+; if(num3)num=0; while(1) if(key1=0) _led=0; delay(10); if(key1=0) num+; if(num3)num=0;break; while(!key1);delay(10);while(!key1);_led=1; if(key2=0) _led=0; delay(80); if(key2=0) if(num=1)hour+;if(hour=24)hour=0; if(num=2)min+;if(min=60)min=0; if(num=3)sec+;if(sec=60)sec=0; while(!key1);delay(10);while(!key1);_led=1; if(key3=0) _led=0; delay(80); if(key3=0) if(num=1)hour-;if(hour=0)hour=23; if(num=2)min-;if(min=0)min=59; if(num=3)sec-;if(sec=0)sec=59; while(!key1);delay(10);while(!key1);_led=1; if(key4=0) _led=0; delay(80); if(key4=0) num=0;break; if(count15) display(tablehour/10,tablehour%10,tablemin/10, tablemin%10,tablesec/10,tablesec%10,0x00); while(!key1);delay(10);while(!key1);_led=1; /* 时间调整函数 */void time_change() read_key();if(temp=20) temp=0; sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hour+; if(hour=24) hour=0; 第六部分、元件清单序号元器件名称元件数目(个)140脚双列直插AT89S51单片机1240脚双列直插芯片底座1320脚74HC373锁存器1420脚双列直插芯片底座15稳压块780516极性电容50V220uF27极性电容50V22uF18电容16V1uF29瓷片电容30pF210按键51112MHz晶振1120.56寸共阳极7段数码管81310K 1/4W金属膜电阻1% 色环铜脚电阻19149015三极管815IN4004二极管416发光二极管1173脚 接插件(含簧片),脚距:2.54118AC220V-AC12V变压器119开关120电线1米121插头1心得体会这次实验其实电路原理很清楚,可是实际动手起来遇到问题却比想象中多,任何一点小错误都会让努力白费,所以细心,耐心和和小组成员讨论是一定要的。数字电路复杂,因此需要我们连接时要有好的布局和合理的布线规则,使电路板连线清晰美观,最重要的是检查时特别方便。让我们知道了许多的东西,也让我们了解了许多在书本上所学不到的知识和技能,这为我们在以后的工作起了非常重要的作用.通过这次实训也让我对数字钟的设计与制作,了解了设计电路的程序,也让我了解了关于数字钟的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。这次实训设计并制作一个数字钟。要求的是接4个按键,分别为“设定”、“加1”、“减1”、“确定”键,用于调整时间;外接8个LED数码管,分别显示时、分、秒,以24小时制显示时间。另外还需要使用AC220V转AC(单)12V变压器、二极管IN4004,稳压块7905、7805等自制正负5V电源一套。单片机使用40脚双列直插AT89S51实现,LED显示器使用74HC373串入并出芯片模拟串口实现。这次课程的实训,使我在使学生掌握选修课程的基础上,一方面能综合应用这些课程的理论只是,更重要的一方面,是让我亲自动手,参与到工程实践训练中。通过这样的实训,真正能培养我的理论联系实际和分析解决一般性工程技术问题的能力。这次实训,使我在之前掌握的电路、模电、数电等知识,以及单片机知识的基础上,进一步掌握电子产品设计及开发调试的全过程,尤其包括掌握PCB板的设计、印刷,元器件的安装、电路调试、程序调试、程序下载等实践实训部分,真正的培养我理论联系实际、分析解决一般性技术问题以及实际动手的能力。通过这次实训学习,使我掌握单片机控制数码管实现系统的开发设计,让我对各种电路都有了深入的了解,所以说,“坐而言不如立而行”,对于这些电路还是应该自己动手实际操作才会有深刻理解,团队整体的力量是无穷的,通过我们的共同研究才会把这次实训顺利的完成。实训过程中遇到的问题及解决方法1、七段显示

温馨提示

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

评论

0/150

提交评论