用c语言编写的99秒表,单片机00到99秒表的课程设计 含源程序,仿真图,文档
这是我上个月做的单片机秒表课程设计,这个课程设计是实现00到99秒的一个秒表,
并且有开始和复位功能,
用了一个星期的时间,
附件里面包含秒表的单片机源程序,proteus仿真电路图和课设文档,
都是自己做的,请大家多多指教。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
QQ截图20181217214005.png (24.46 KB, 下载次数: 17)
仿真图
2018-12-17 21:45 上传
秒表的设计与仿真
一、设计要求
设计一个2位的LED数码显示的“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。
二、方案论证
方案一:
用数字电路来实现秒表的设计。由NE555定时器组成的多谐振荡器通过开关控制,把脉冲送到计数器,通过计数器计数,在送入译码器进行译码,最后送入数码管进行显示。框图如下:
(见附件)
优点:用到了之前学习的数电的相关知识,用NE555等一系列芯片就可以实现秒表的数字电路,显示直观,读取方便,精度高,不需要软件编程。
缺点:使用的硬件非常多,使用的空间非常大,电路十分复杂,从经济上也不是很划算。
方案二:
用单片机控制秒表来实现,采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计计时器,将软件和硬件结合起来。其中软件部分采用的是C语言编写程序,包含了显示程序,中断,延时程序等等,硬件用的Proteus软件来连接的秒表电路,主要使用了AT80C51芯片,晶振,电容等基本器件。框图如下:(见附件)
优点:利用了单片机的定时功能,只需要少量的连线再加上软件编程控制,就可以实现秒表的设计电路,节省了花费,提高了技术的精度,更加容易修改。
缺点:除了连接硬件电路,增加了软件的编程,需要额外掌握软件的编程技术,还要考虑到硬件的连接来进行编程。
通过上面两种方案的比较,可以发现单片机使用的硬件更加少,计时的精度也很高,节省了很大的空间,修改时只需要修改部分程序和部分接线就可以改变计数方式和技术范围,所以这次的秒表的设计应该选择单片机设计的方案二。
三、理论设计
硬件部分
1.按键电路:
1.1 当按下K1键时给P1.6接口一个低电平,单片机工作,数码管开始显示,进行开始功能。
1.2 当按下K2键时给P1.7接口一个低电平,单片机工作,数码管清零,进行复位功能。
2.复位电路:
2.1按键按下给单片机的RST接口一个高电平,让单片机系统复位。
3.晶振电路:
3.1晶振电路为单片机合格的时钟信号流,给整个电路的时序提供一个基本时钟,这里晶振频率为11.0592MHz。
4.显示电路:
4.1采用两个共阳LED数码管,通过单片机的P0接口和P3接口来驱动显示出秒数的个位和十位。
软件部分软件流程图如下:(见附件)
四、电路仿真及仿真结果分析
仿真结果:将Keil生成的。hex文件添加到AT80C51中后,运行仿真电路如图所示,会显示出00到99s的秒表功能,系统可以正常工作。
五、心得体会
通过这次课程设计,认识到自己有很多不足之处,需要根据课程的设计要求找到合适的方案,设计好程序流程图,以此来写出相应的程序,还地添加一些额外程序来试系统变得更加稳定,程序应该由各种子程序组成,并加上注释,这样程序出错时或者仿真运行显示不出正确的结果时,可以更加方便的找到出错的地方。这次的秒表设计,仿真硬件电路不是很麻烦,主要都是需要写出适合的正确的程序来进行驱动,通过这次的课程设计,更加系统的锻炼了自己。
单片机源程序:
#include
typedef unsigned char uint8;
typedef unsigned int uint16;
/*七段共阴管显示定义*/
uint8 code dispcode[ ]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
/*定义并初始化变量*/
uint8 seconde=0;// second 调整定义
uint16 mstcnt=0;//minite调整定义
sbit key1=P1^6; //定义P1.6端口为按键1
sbit key2=P1^7;//定义p1.7端口为按键2
/*函数声明*/
void delay(uint8 k ); //延时子程序
void time_pro( ); //时间处理子程序
void display( ); //显示子程序
void keyscan( ); //键盘扫描子程序
/*延时子程序*/
void delay (uint8 k)
{
uint8 j;
while((k--)!=0)
{
for(j=0;j<125;j++)
{;}
}
}
/*时间处理子程序*/
void time_pro(void)
{
if(seconde==99)//秒钟设为99进制
{
seconde=0;
}
}
/* 显示子程序*/
void display(void)
{
P0=dispcode[seconde/10]; //显示秒的十位
delay(4);
P3=dispcode[seconde%10]; //显示秒的个位
delay(4);
}
/*键盘扫描子程序*/
void keyscan (void)
{
if(key1==0) //按键1为开始键
{
delay(60);
if(key1==0)
EA=1;
delay(60);
seconde++;
}
if(seconde==99)
{seconde=0;
}
if(key2==0) //按键2为复位键
{
delay(60);
if(key2==0)
{
delay(60);
seconde=0;
delay(60);
EA=0;
}
}
}
/*1s定时子程序 */
void timer0(void) interrupt 1 using 0
{
TH0=0xff;
TL0=0x19;
TMOD = 0x01;//定时器0方式1,250us中断一次
mstcnt++;
if(mstcnt==4000)
{
seconde++;
mstcnt=0; //对计数单元的清零
}
}
/*主函数*/
void main(void)
{
P0=0xff; //初始化p0口,全设为1使数码管
TMOD = 0x01; //time0为定时器,方式1
TH0=0xff; //预置计数初值
TL0=0x19;
EA=0;
ET0=1;
TR0=1;
while (1)
{
keyscan( ); //按键扫描
time_pro( ); //时间处理
display( ); //显示时间
}
}复制代码
QQ截图20181217213732.png (104.26 KB, 下载次数: 13)
keil文件
2018-12-17 21:45 上传
QQ截图20181217213741.png (83.01 KB, 下载次数: 12)
仿真
2018-12-17 21:45 上传
全部资料51hei下载地址:
秒表的设计.zip
(97.61 KB, 下载次数: 203)
2018-12-17 21:44 上传
点击文件名下载附件
这个是课设全部资料的压缩包
下载积分: 黑币 -5
用c语言编写的99秒表,单片机00到99秒表的课程设计 含源程序,仿真图,文档相关推荐
- 用c语言编写篮球过程运行结果,基于单片机的篮球计时计分器设计(c语言编程、含proteus仿真图) 本科毕业论文.doc...
基于单片机的篮球计时计分器设计(c语言编程.含proteus仿真图) 本科毕业论文 摘要 单片机,亦称单片微电脑或单片微型计算机.它是把中央处理器(CPU).随机存取存储器(RAM).只读存储器(RO ...
- c语言课题设计题目猜数字游戏,C语言课题设计报告(猜数字游戏)文档.doc
C语言课题设计报告(猜数字游戏)文档 课 程 设 计 报 告 课程名称 C 语言课程设计 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1183 学 号 13 姓 名 鲁响 指导教师 王颖 ...
- 电气自动化学c语言有什么作用,电气工程及其自动化专业C语言课程教学改革-2019年教育文档...
<电气工程及其自动化专业C语言课程教学改革-2019年教育文档>由会员分享,可在线阅读,更多相关<电气工程及其自动化专业C语言课程教学改革-2019年教育文档(4页珍藏版)>请 ...
- 17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT)
17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT) 文章目录 17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答 ...
- Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计
Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计 有图有真相 操作方法:ASDW控制移动,鼠标控制炮筒旋转,鼠标左键开枪,空格发射炮弹, 开发思路是标准的游戏开发思路,单线程 ...
- 根据stc89原理图画pcb_基于STC89C52单片机毕业设计(完整版) 附 原理图 pcb图 源程序 仿真图...
基于stc89c52单片机毕业设计 附 原理图 pcb图 源程序 仿真图 表3-1 P3口管脚备选功能 3.2 晶体振荡器 晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的 ...
- 单片机c语言篮球比分_基于单片机的篮球比赛计时计分器的设计
摘 要:本系统是采用单片机AT89C51作为本设计的核心原件.利用7段共阴LED作为显示器件.在此设计中共接入了2个7段共阴LED显示器,用于记录得分和比赛时间,显示范围可以达到0到99分,基本满足赛 ...
- c语言游戏总出bug,C语言 编写的简单移动游戏出现bug?_编程_游戏设计_C语言_天涯问答_天涯社区...
C语言 编写的简单移动游戏出现bug? 第一次按上下左右没什么问题,之后就会卡住..不知道出了什么错 源码如下:(用vc++的win32 console程序编写) #include #include ...
- 基于51单片机的交通灯控制系统课程设计(含proteus仿真图及代码)
一.设计要求: 1,十字路口的交通控制系统指挥着人和各种车辆的安全运行,对交叉口实行科学的管理与控制是交通控制工程的重要研究课题,是保障交叉口的交通安全和充分发挥交叉口的通行能力的重要措施,是解决城市 ...
最新文章
- 心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!
- 数字化?智能化?中国企业智能制造现状究竟如何 李炳积 工信头条 昨天
- 问题:AttributeError: module 'tensorflow' has no attribute 'gfile'
- Oracle连接odbc数据源
- 2018香港纷智金融科技峰会 金色财经现场图文直播报道
- Seaborn:Python
- c++ dll发消息到主窗口_PyQt5学习笔记(五)窗口图形绘制
- 干货分享|安全测试起航之旅 1
- 解决计算治理问题,详解微众银行大数据平台中间件Linkis架构和应用
- 零基础入门语义分割-Task5 模型训练与验证
- 财务女,30岁无情被辞:想给财务提个醒!!
- hunnu 10246 最大间隙问题 桶排序+抽屉原理
- 计算机硬盘数据如何恢复,怎样进行硬盘数据恢复
- android o壁纸,超实用壁纸应用大合集 - 你想要的壁纸在这里统统都能找到! - Android 应用 - 【最美应用】...
- (七)Zabbix实现微信报警通知
- Verilog中任务task的使用
- linux运行魔力宝贝,魔力宝贝私服架设(仅供朋友交流学习 绝无商业用途 如有雷同纯熟巧合)...
- 使用三目运算求三个数的最大值、最小值和中间值
- 学3D人物建模以后能干什么呢,吃香吗?
- Firefox火狐里如何使用emule电驴下载