基于51单片机实现的简单闹钟设计_第1页
基于51单片机实现的简单闹钟设计_第2页
基于51单片机实现的简单闹钟设计_第3页
基于51单片机实现的简单闹钟设计_第4页
基于51单片机实现的简单闹钟设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

【摘要】众所周知闹钟对我们日常生活来讲是一个很重要的工具,因而我利用单片机AT89C52制作一个简单的倒计时定时闹钟。本设计利用单片机的内部中断资源和按键的基本使用方法构思而成。利用按键设定需要定时的时间长短,利用中断设置20次中断定义一秒,然后利用程序设计时间倒数。并使用4个8段数码管显示分和秒,并且定时结束后使用电铃警示。硬件系统利用proteus仿真,在仿真中就能观察到系统的实际运行情况。【关键字】单片机AT89C51倒计时定时中断protues仿真设计项目简介基于51单片机进行简单闹钟设计。四位数码管从左往右分别代表十分位,分位,十秒位,秒位。按动对应按键能增加各个位的数值,按动开始计时按键能开始倒计时。硬件设计总体设计思路控制芯片使用比较熟悉的AT89C52单片机芯片,数码管使用四位相连的8段共阴数码管,并且使用74HC573锁存器控制数码管的显示。在定时过程使用s1控制十分位,s2控制分位,s3控制十秒位,s4控制秒位,s5开始倒计时。基本思路设计如下:数码管位数码管位AT89C52控制芯片AT89C52控制芯片段74HC573锁存器控制按键段74HC573锁存器控制按键AT89C52芯片介绍80C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。80C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,80C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。80C52有PDIP(40pin)和PLCC(44pin)两种封装形式。8051片内有ROM,无须外接外存储器和373,更能体现“单片”的简练。74HC573芯片介绍74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出

将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。数据锁存当输入的数据消失时,在芯片的输出端,数据仍然保持;这个概念在并行数据扩展中经常使用到。OE120Vcc1D2191Q2D3182Q3D4173Q4D5164Q5D6155Q6D7146Q7D8137Q8D9128QGND1011LEOEˉLEDQLHHHLHLLLLXQ0HXXZ1脚三态允许控制端低电平有效1D~8D为数据输入端1Q~8Q为数据输出端74HC573引脚图锁存器接单片机芯片如下:单片机内部中断原理内部中断是指单片机内部的功能模块产生中断信号,只要是单片机内部在CPU外围能独立工作的功能模块都会提供中断功能,常见的内部中断类型有时钟Timer、串口UART、模数转换ADC等。内部中断的工作流程和外部中断没太多区别,只是中断请求信号是在单片机内部进行传输,中断信号不是管脚上的电平状态,而是一个寄存器里面的相应标志位,通常当某个内部中断产生中断请求时就会将相应标志位置为1,CPU响应中断时将这个标志位清0。设计原理图软件设计C语言源程序#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitdula=P2^6;//段码和位码设置。sbitwela=P2^7;sbits1=P3^0;//设置按键,s1代表十分位,s2分位,s3十秒位,s4秒位。sbits2=P3^1;sbits3=P3^2;sbits4=P3^3;sbits5=P3^4;sbitbeep=P2^3;//设置电铃ucharcodeseg_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极8位段码表,带点和不带点。ucharcodeseg_table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};voiddelay(uintt);//各个子函数的申明。intdisplay1();voiddisplay2(uintk);voidinit_t0();uintNUM;uintSEC;uintS;uintM;uintk1;uintk2;uintk3;uintk4;voidmain(){NUM=0,SEC=0,S=0,M=0,k1=0,k2=0,k3=0,k4=0,wela=0,dula=0,wela=1,P1=0x00,wela=0,dula=1,P1=seg_table[NUM],dula=0;while(1){display1();//运行开始设置时间函数if(s5==0){gotostart;//当s5按键按下,开始倒计时。}}start:init_t0();while(1){display2(M);//显示函数}}intdisplay1()//按动按键开始设置时间{if(s1==0){delay(150);if(s1==0)//设置十分位 { k1++; if(k1==6) {k1=0; } wela=1; P1=0xf7; wela=0; dula=1; P1=seg_table[k1]; dula=0; delay(1); }}if(s2==0)//设置分位{delay(150);if(s2==0) { k2++; if(k2==10) { k2=0; } wela=1; P1=0xfb; wela=0; dula=1; P1=seg_table[k2]; dula=0; delay(1); }}if(s3==0)//设置十秒位{delay(150);if(s3==0){ k3++; if(k3==6) { k3=0; } wela=1; P1=0xfd; wela=0; dula=1; P1=seg_table[k3]; dula=0; delay(1);}}if(s4==0)//设置秒位{delay(150);if(s4==0){ k4++; if(k4==10) { k4=0; } wela=1; P1=0xfe; wela=0; dula=1; P1=seg_table[k4]; dula=0; delay(1);}}S=k1*600+k2*60+k3*10+k4;returnS;//返回全局变量}voiddelay(uintt)//延时函数{uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--){ }}}voiddisplay2(uintk)//倒计时时间显示函数{uintmiao,shimiao,fen,shifen;shifen=k/600;fen=k%600/60;shimiao=k%60/10;miao=k/10;wela=1;P1=0xfe;wela=0;dula=1;P1=seg_table[miao];dula=0;delay(1);wela=1;P1=0xf7;wela=0;dula=1;P1=seg_table[shifen];dula=0;delay(1);wela=1;P1=0xfb;wela=0;dula=1;P1=seg_table1[fen];dula=0;delay(1);wela=1;P1=0xfd;wela=0;dula=1;P1=seg_table[shimiao];dula=0;delay(1);}voidinit_t0()//内部中断T0初始化{TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}voidt0()interrupt1//中断函数,使用方式一中断{TH0=(65536-50000)/256;TL0=(65536-50000)%256;NUM++;if(NUM==20){NUM=0;SEC++;M=S-SEC;if(M==0){TR0=0;beep=0;delay(1000);beep=1;}}}调试1、 调试方法本设计使用Proteus软件绘制电路图,装载keil软件编写编译完成的源程序生成的hex文件,进行仿真测试检查系统运行情况,观察实验现象是否与理论一致。2、 调试步骤打开已经画好的ProteusDSN文件,双击图中的AT89S52芯片,就弹出一个窗口,在programfile项中通过路径选择在keil中生成hex文件,双击选中后确定,这样仿真图中的AT89S52芯片就已经读取了本设计中的hex文件。然后进行仿真。3、调试问题在调试过程中发现定时完成以后,按动开始定时按键s5发现数码管显示不正常,秒位显示不正常。但功能使用正常,初步判断是延时出现问题,通过改变数码管显示延迟的长久,问题仍未解决。调试图:心得体会本设计的数字秒表是由AT89S52单片机、共阴极数码管和控制按键等器件组成的,设有四位计时显示。系统设计合理,线路简单,性能稳定、程序简单。给出了较为详尽的电路设计方法。本系统以单片机为核心,但仅单片机方面的知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软硬件结合,以作完善。单片机应用的越来越广泛,也要求了我们对单片机知识要有更深的体会,更好的掌握单片机的相关应用。不仅掌握理论知识,还要有相应的动手能力。这次的课程设计便是对我们平时

温馨提示

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

评论

0/150

提交评论