数字时钟的实验报告_第1页
数字时钟的实验报告_第2页
数字时钟的实验报告_第3页
数字时钟的实验报告_第4页
数字时钟的实验报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

北方民族大学电气信息工程学院实训报告课程名称 电子作品制作与开发项目实践选修课系列题 目 数字时钟 院(部、中心) 电气信息工程学院 学 生 姓 名 何勇 专 业 测控技术与仪器 学 号 20080280 指导教师签名 毛建东 周春艳 报告提交时间 2010年12月25日 同 组 人 员 伏露 赵金鹏 杨强 杨窕 北方民族大学教务处制评语:成绩:答辩:( %)报告:( %)平时:( %)总成绩: 指导教师:年 月 日目录一:数字时钟的要求与任务3二:数字时钟的原理41数字时钟结构4AT89S51介绍42 、数字钟的电路结构组成73、单元电路设计81)译码驱动及显示单元82)校时控制电路93)5V稳压直流电源电路94)晶振电路和复位电路10三、数字时钟的原理图11四、数字时钟Protel整体原理图及PCB板12五、数字时钟的程序141、流程图142、程序16六、元件清单20七、制作的心得21八、实物图22一:数字时钟的要求与任务要求:掌握单片机控制数码管显示系统的开发设计 任务:设计并制作一个数字钟。要求外接4个按键,分别为“设定”、“加1”、“减1”和“确定”键,用于调整时间;外接8个LED数码管,分别显示时、分、秒,以24小时制显示时间。 另外需要使用AC220V转AC(单)12V变压器、二极管IN4004、稳压块7905、7805等自制5v电源一套。建议单片机使用40脚双列直插AT89S51实现,LED显示使用74LS164串入并出芯片模拟串口实现。二:数字时钟的原理1数字时钟结构 该实训作品是利用AT89S51单片机结合数码管设计出的一个可调时的数字时钟,其主要利用单片机的输入/输出功能,定时/计数功能和中断功能。AT89S51介绍AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚(引脚图如图1-2所示),4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。VCC:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I0口,也即地址数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。P1口:Pl 是一个带内部上拉电阻的8位双向IO口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,Pl接收低8位地址。表1 具有第二功能的P1口引脚端口引脚第二功能:P1.5MOSI(用于ISP编程)P1.6MOSI(用于ISP编程)P1.7MOSI(用于ISP编程)P2 口:P2 是一个带有内部上拉电阻的8 位双向IO 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8 位地址的外部数据存储器(如执行MOVXRi 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。P3 口:P3 口是一组带有内部上拉电阻的8 位双向I0 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I0口线外,更重要的用途是它的第二功能,如下表所示:表2 具有第二功能的P1口引脚端口引脚第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外中断0)P3.3/ INT1(外中断1)P3.4T0(定时计数器0外部输入)P3.5T1(定时计数器1外部输入)P3.6/ WR(外部数据存储器写选通)P3.7/ RD外部数据存储器读选通)P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。ALE:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。程序储存允许()输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的信号。VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 单片机时钟结构分硬件和软件两部分。硬件主要由单片机,LED数码管显示器和按键等组成。电路设计如图。 图2电路主体设计图2 、数字钟的电路结构组成:1)晶振电路和复位电路。2)驱动电路及显示单元。3)校时控制电路。4)5V稳压直流电源电路。3、单元电路设计:1)译码驱动及显示单元 图1 LED数码管显示 图2 输送段码电路当74LS373的LE=1,OE(非)=0时其输出口随输入口变化,即输出段码。再由P0选中相应位显示输出低电平,使三极管9015导通驱动共阳数码管。2)校时控制电路。程序设计时给P2口高电平,当有对应按键按下时由于另一端接地,所以对应口变成低电平,单片机根据各按键信号运行相应程序。K1为设定键,按下后进入调时状态,计时也瞬时停止。按一次进入调整小时的状态,在调时状态再按K1进入分调整状态,在分调整状态再按一次进入秒调整状态!进入相应状态后,利用K2,K3键进行调整,K2为加1,K3为减1。 K4键为确定键,当处在调时状态时,K4按下时跳出调时状态,进入计时状态。 3)5V稳压直流电源电路。 图3 电源电路 电源主要使用的是AC220V转AC12V变压器,二极管IN4004,稳压块7805等。220V交流电由变压器转为12V交流电,电路板外接12V交流电,经过IN4004整流及电容滤波,在通过稳压块7805得到5V左右的直流电,该电路接了电源指示灯D1,通电时变亮。4)晶振电路和复位电路。 图4晶振电路和复位电路三、数字时钟的原理图 四、数字时钟Protel整体原理图及PCB板五、数字时钟的程序1、流程图 2、程序/* 程序名; 时钟实验1* 功 能: 数码管通过动态扫描显示时间,时间可设定,调整时间时时钟不走.* 编程者: ZJP* 编程时间:2010/11/9*/#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;void 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.5411

温馨提示

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

评论

0/150

提交评论