基于AT89C52单片机秒表设计
前言
秒表在我们的日常生活中是一个很常见的产品,秒表电路设计比较简单,内部程序也比较简单,本设计主要讲述的是基于52单片机的简易秒表电路设计与程序编写的思路。程序控制主要可以进行暂停计时,继续计时,和复位。
电路设计
电路设计所用到的元器件也是比较少比较常见的,at89c52单片机一个,一个八位共阴极数码管,一个74LS138译码器,三个按键。单片机中的复位电路与晶振电路省略。需要者可自己加上。
电路图如下所示:
工作原理
当按下启动按键,数码管开始显示计时的数字,计时可分时、分、秒、毫秒四个值,分别显示在八位数码管上,按下暂停按键的时候,秒表停止计时,显示当前计时值。再次按下启动按键的时候,秒表继续计时。按下停止按键的时候,秒表停止计时并且清楚计时值。数码管显示初始值。
程序设计思路
程序设计主要分两部分:
(1):编写74LS138译码器的驱动程序控制八位数码管的动态扫描显示。
(2):编写按键处理程序以及定时器中断服务程序。
代码如下:
按键处理程序与中断程序
void key_display() //按键处理
{if(key0==0) //开始{delay(100); //消抖if(key0==0){while(!key0); //判断按键是否松开flag0=1; //启动标志}}if(key1==0) //暂停{delay(100);if(key1==0){while(!key1);flag0=0; //flag0=1时为启动标志,flag0=0是为暂停标志}}if(key2==0) //停止{delay(100);if(key2==0){while(!key2); //所以变量清零TR0=0;flag0=0;haomiao=0;miao=0;fen=0;shi=0;}}}void Timte_Init() //定时器中断初始化程序
{TMOD=0x01; //设置定时器中断0的工作方式,设置为方式1TH0=0xdc; //装载触发定时中断数值10msTL0=0x00;EA=1; //打开总中断ET0=1; //打开定时器0中断开关
}void Time() interrupt 1 //定时器中断处理程序
{TH0=0xdc; //装载初始值10msTL0=0x00;flag1++;
}
74LS138译码器驱动程序控制八位数码管代码如下:
void display() //数码管显示
{uchar ii;for(ii=0;ii<8;ii++) //74LS138译码器驱动程序{switch(ii){case 0:LSA=0;LSB=0;LSC=0;smgduan=duan_data[shi/10];break;case 1:LSA=1;LSB=0;LSC=0;smgduan=duan_data[shi%10]|0x80;break; //时显示,或上一个0x80是为了区分一个毫秒,秒,分,时之间的区别case 2:LSA=0;LSB=1;LSC=0;smgduan=duan_data[fen/10];break;case 3:LSA=1;LSB=1;LSC=0;smgduan=duan_data[fen%10]|0x80;break; //分显示case 4:LSA=0;LSB=0;LSC=1;smgduan=duan_data[miao/10];break;case 5:LSA=1;LSB=0;LSC=1;smgduan=duan_data[miao%10]|0x80;break; //秒显示case 6:LSA=0;LSB=1;LSC=1;smgduan=duan_data[haomiao/10];break;case 7:LSA=1;LSB=1;LSC=1;smgduan=duan_data[haomiao%10];break; //毫秒显示}delay(50);smgduan=0x00; //数码管消隐,避免显示效果受影响delay(50);}
}
主程序代码如下:
#include <reg52.h>typedef unsigned int uint;
typedef unsigned char uchar;#define smgduan P0
//定义74LS138译码器I/O端口
sbit LSA=P1^0;
sbit LSB=P1^1;
sbit LSC=P1^2;
sbit G2A=P1^3;
//定义按键I/O端口
sbit key0=P2^0; //启动
sbit key1=P2^1; //暂停
sbit key2=P2^2; //停止uchar code duan_data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
//共阴极数码管段码0~F
uchar flag0,flag1; //flag0为按键值存储标志,flag1位定时器中断变量
uchar haomiao,miao,fen,shi; //毫秒,秒,分,时变量void delay(uint i) //软件延时函数
{while(i--);
}void main()
{G2A=0;Timte_Init(); //条用定时器初始化函数while(1){key_display(); //调用按键处理函数if(flag0==1) //启动转态,flag0=1时正常计时,flag0=0时为暂停状态{TR0=1; //打开定时器定时开关if(flag1==1) //毫秒判断{haomiao++;flag1=0;if(haomiao==100) //秒判断{miao++;haomiao=0;if(miao==60) //分判断{fen++;miao=0;if(fen==60) //时判断{shi++;fen=0;if(shi==99) //最大计时数为99个小时{shi=0;}}}}}}else //暂停状态{TR0=0; //关闭定时器开关display(); //调用数码管显示函数}display();}
}
以上所有就是简易秒表的电路设计与程序编写,希望能帮助一些需要的人,可根据以上资料可自己进行一些修改使它变得更加完美,写的不好,还望理解。互帮互助,学无止境。
基于AT89C52单片机秒表设计相关推荐
- 基于AT89C52单片机的温湿度检测设计
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87704704 源码获取 主要内容: ...
- 基于AT89C52单片机的数字电压表设计
一.系统组成及工作原理 1.1 系统组成 该基于AT89C52单片机的数字电压表设计由AT89C51单片机,ADC0809芯片(A/D转换器),LED数码管显示电路以及蜂鸣器电路等几部分组成.(用到得 ...
- c语言数字植物管理系统,基于AT89C52单片机的智能浇花系统(包含程序代码)
内容简介: 基于AT89C52单片机的智能浇花系统,毕业论文,共50页,18022字,附程序代码.实物图等. 摘要 伴随着经济的快速发展,人们的物质生活水平得到了极大的提高,生活质量越来越为人们关注. ...
- 基于AT89C52单片机的1602液晶显示程序
基于AT89C52单片机的1602液晶显示程序 1602液晶显示 1.keyscan.c 2.boardinit.c 3.delay.c 4.clock.c 5.74hc595.c 6.1602led ...
- 基于at89c52单片机温湿度c语言,基于AT89C52单片机的温度监控报警系统的设计
本系统由无线发射与接收模块.语音播报.温度采集.自动报警以及显示模块组成.实现功能:温度实时显示:可设定温度的上限和下限,当温度超过设定域值时发出声光报警信号:测量温度值可通过语音播报:通过射频模块完 ...
- 基于AT89C52单片机的温度检测报警设计
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87708680?spm=1001.20 ...
- 基于AT89C52单片机的简易电子琴设计与仿真
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87853299?spm=1001.20 ...
- 基于AT89C52单片机的万年历设计与仿真
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87777668?spm=1001.20 ...
- 44、基于51单片机数字电压表设计电流电压功率表
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Protues仿真 七.程序 部分代码 八.资料包括 摘要 本次设计要求 ...
- 基于AT89C52单片机红绿灯设计程序
前言 本设计主要介绍十字路口红绿灯路口的单片机程序设计思路与电路设计 电路设计 交通灯的电路设计总体来说还是比较简单的,主要看设计者本人是否想要实现功能性比较多的智能交通灯,如果是简易的那只需要一个A ...
最新文章
- Apollo读取某个集群的配置
- 让MessageBox在最前面弹出来的信息在
- Teradata Fastload 使用方法
- 劲乐团u显示服务器维护,劲乐团9YOU原版服务端架设教程
- 计算机桌面设置定时,如何设置可以每月自动变化的日历桌面?
- 带着canvas去流浪系列之九 粒子动画
- python-jenkins 操作
- 【R语言】R是现在最好的数据科学语言吗?
- 51单片机红绿灯(十字路口智能控制系统)
- 关于芯片最高工作频率的计算
- 解决能登录微信却登不上网页的问题
- 【C语言】1-100求和;1-N求和
- Token的组成部分
- 【知识图谱问答】DBpedia介绍
- 肖星老师《一本书读懂财报》经典语句摘录(上)概念篇
- C#设计模式(6)——原型模式(Prototype Pattern)
- 基层管理之正负向激励
- ffmpeg剪切视频的python小脚本
- Windows 7 Ultimate with Service Pack 1 (x64)
- 牛顿拉夫逊基波潮流计算通用型程序,runpf函数的替换