基于单片机智能秒表设计.docx
《基于单片机智能秒表设计.docx》由会员分享,可在线阅读,更多相关《基于单片机智能秒表设计.docx(9页珍藏版)》请在冰豆网上搜索。
基于单片机智能秒表设计
姓名
***(请填写)
班级
***(请填写)
学号
***(请填写)
成绩
指导教师
日期
单片机课程设计说明书
课题名称:
________基于单片机的秒表设计__________________________________
第一部分:
问题描述
1、项目概述
对于生活在现代生活中的人类来说,科技的飞速发展使得人类的生活有了巨大的进步。
科技的快速发展使得人类对生活质量的要求越来越高。
例如在对时间的控制控制中,人类目前不仅仅满足于知道当前的时间,更要对其进行各类精准的控制方能使其发挥出最大的效果。
而在时间的了解过程中,最常见的无非就是钟表与秒表。
钟表是人类认识时间的工具,而秒表则是人类对时间的精准控制。
2、工作原理
该秒表以单片机定时器产生中断,由此精准控制时间。
同时外部接有二位一体的数码管,能实现10ms的延时控制,同时该秒表设置有暂停与复位功能,是集多功能与一身的新时代秒表设计。
系统的设计分为硬件设计与软件设计,硬件设计是电路能实现的平台。
软件则是决定系统功能走向,其中,硬件电路分为电源电路、显示电路、单片机最小系统电路。
软件则分为显示程序、定时中断程序和按键控制三大块。
第二部分:
硬件设计
3、系统框图
根据以上2.1所介绍的系统功能,可以绘制出如下图2-1的系统功能框图。
由框图可以很明确看出各个功能模块之间的输出与输出关系。
4、所用原件清单
1STC89C51单片机一个
2LED显示屏1个
3按键1个
4晶振、电阻电容若干个
(第一天作业)
5、硬件连接图
6、元器件封装及三维图
(第二天作业)
第三部分:
软件设计
7、系统流程图
在本次的秒表设计中,主程序先进入定时器初始化子函数,定义定时/计数器工作在定时器模式,并定义为定时器0、工作方式1。
由于是采用中断的服务程序,因此只需要单片机主函数中while不断循环扫描按键即可。
按下按键,则不断刷新显示值。
8、软件代码
#include
#defineucharunsignedchar
sbitP20=P2^0;
sbitP21=P2^1;
sbitP22=P2^2;
sbitP23=P2^3;
sbitP24=P2^4;
sbitP25=P2^5;
sbitP27=P0^7;
sbitKS=P1^0;//开始
sbitKR=P1^1;//复位
uchartime,xs,ge,shi,bai,qian,wan,shiwan;
ucharcodetab[]={
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
};
voiddelay_ms(unsignedintms)//1ms延时
{
uchara;
while(ms--)
for(a=123;a>0;a--);
}
//voiddisplay();
voidT0intinit()//定时器T0初始化
{
TMOD=0x01;
TH0=(65536-10000)/256;//10ms定时
TL0=(65536-10000)%256;
EA=1;
ET0=1;
}
voiddisplay()
{
P25=0;
P0=tab[ge];
delay_ms
(1);
P25=1;
P24=0;
P0=tab[shi];
delay_ms
(1);
P24=1;
P23=0;
P0=tab[bai]|0x80;
delay_ms
(1);
P23=1;
P22=0;
P0=tab[qian];
delay_ms
(1);
P22=1;
P21=0;
P0=tab[wan]|0x80;
delay_ms
(1);
P21=1;
P20=0;
P0=tab[shiwan];
delay_ms
(1);
P20=1;
}
voidmain()
{
T0intinit();
while
(1)
{
display();
while(!
KS)//开始/暂停键
{
display();
if(KS)
TR0=!
TR0;
}
while(!
KR)//清零键
{
display();
if(KR)
TR0=0;
qian=0;
bai=0;
shi=0;
ge=0;
}
if(bai==10)
{
bai=0;
qian++;
}
if(qian==6)
{
qian=0;
wan++;
}
if(wan==10)
{
wan=0;
shiwan++;
}
if(shiwan==6)
{
shiwan=0;
TR0=0;
}
}
}
voidT0int()interrupt1//定时器T0中断方式1
{
TH0=(65536-10000)/256;//重装10ms定时常数
TL0=(65536-10000)%256;
ge++;
if(ge==10)
{
ge=0;
shi++;
}
if(shi==10)
{
shi=0;
bai++;
}
}
(第三天作业)
第四部分:
设计系统测试与评价
9、系统测试
(包含系统运行状态示意图及系统运行方式说明)
10、设计中存在的问题及研究展望
(第四天作业,制作PPT)
第五部分:
个人风采与感言
个人风采:
(寸照、课堂、讨论、答辩照片)
学员感言:
(心得体会与建议,文体不限)
本人签名
作业要求:
1、文件名称,班级-学号后两位-姓名-日期;
2、提交作业时间为当天晚上10点前或第二天早上6点钟之前;
3、每天都要随机抽取学员作业讲解、点评。