单片机控制8位数码管显示秒表课程设计.docx

上传人:b****9 文档编号:42692 上传时间:2022-10-01 格式:DOCX 页数:18 大小:285.57KB
下载 相关 举报
单片机控制8位数码管显示秒表课程设计.docx_第1页
第1页 / 共18页
单片机控制8位数码管显示秒表课程设计.docx_第2页
第2页 / 共18页
单片机控制8位数码管显示秒表课程设计.docx_第3页
第3页 / 共18页
单片机控制8位数码管显示秒表课程设计.docx_第4页
第4页 / 共18页
单片机控制8位数码管显示秒表课程设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机控制8位数码管显示秒表课程设计.docx

《单片机控制8位数码管显示秒表课程设计.docx》由会员分享,可在线阅读,更多相关《单片机控制8位数码管显示秒表课程设计.docx(18页珍藏版)》请在冰豆网上搜索。

单片机控制8位数码管显示秒表课程设计.docx

137工作室荣誉出品

长 沙 学 院

《单片机原理及应用 》课程设计说明书

题目 LED数码管显示电子秒表设计

系(部) **系

专业(班级) *************

姓名 邹部长9931

学号 ******

指导教师 ***

起止日期 2016.12.19—2016.12.24

邹部长9931

《单片机原理及应用》课程设计任务书1

系(部):

**系 专业:

******

课题名称

LED数码管显示电子秒表设计

设计内容及要求

1、课题内容:

设计一种基于AT89S52单片机的电子计时秒表,要求如下:

(1)、能正确显示时间,时钟由八位数码管显示,显示格式为:

XX分

¾XX秒¾XX(十分之一、百分之一)秒。

(2)、设置一个独立式按键,第一次按键计时开始,第二次按键暂停,第三次按键清零。

2、要求:

完成该系统的硬件和软件的设计,在自己焊接好的单片机开发板上调试通过,并提交一篇课程设计说明书。

设计工作量

1、汇编或C51语言程序设计;

2、程序调试;

3、在自己焊接好的单片机开发板上调试通过;

4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、调试过程,参考文献、设计总结等。

进度安排

起止日期(或时间量

) 设计内容(或预期目标)

备注

第一天

课题介绍,答疑,收集材料,焊接

第二天

51单片机开发板焊接调试

第三天

设计方案论证,练习编写C51程序

第四天

程序调试、仿真

第五天

系统测试并编写设计说明书

教研室意见

年 月 日

长沙学院课程设计鉴定表

姓名

邹部长

9931

学号

****

专业

***

班级

02

设计题目

LED数码管显示电子秒表设计

指导教师

**

指导教师意见:

评定成绩:

教师签名:

日期:

答辩小组意见:

评定成绩:

答辩小组长签名:

日期:

教研室意见:

最终评定等级:

教研室主任签名:

日期:

说明

课程设计成绩分“优秀”、“良好”、“中等”、“及格”、“不及格”五等。

目录

摘要 5

第一章概述 6

1.1电子秒表的设计要求 6

1.2电子秒表的电路图 6

1.3电子秒表的设计原理及方案 7

第二章电子秒表的程序设计 8

2.1程序设计流程图 8

2.2程序设计源代码 10

第三章程序的调试 16

第四章设计总结 17

参考文献 18

摘要

随着经济与社会的发展对智能化和信息化技术要求的不断提高,单片机作为智能控制的核心,逐渐渗透到社会生产和生活的各个方面。

而本文则主要阐述基于单片机设计的数码管秒表,这次设计所采用的的单片机为stc89c52单片机,数码管则是使用2个4位共阴LED数码管组成的8位。

为减少

I/O口,而使用了SM74HC138和74HCT573这2片芯片实现数码管显示8位数据。

利用单片机内部定时器实现计时功能,分别显示为:

分—秒—0.01秒。

控制则是使用一键控制,可实现计时开始,计时暂停,计时清零3个功能的循环。

本次的程序设计采用C语言编写,包括显示程序,定时中断服务程序,延时程序。

最后在单片机电路板来观察工作状态。

第一章概述

1.1电子秒表的设计要求

○1显示要求在初始状态显示的是00—00—00,最左边的2位显示分钟,中间2位显示秒,左边2位

显示十分之一秒和百分之一秒,还有个2个LED数码管只显示中间那一段,用作间隔符。

○2然后还的有一个键用来控制秒表,要求按第一下开始计时,按第二下暂停计时,按第三下清零,以

此往复循环控制。

○3使用单片机T0方式实现计时0.01秒。

1.2电子秒表的电路图

1.3电子秒表的设计原理及方案

设计原理根据单片机本身的定时计数器实现1秒的计时。

再按照要求,确定如下图所示的3个模块。

显示

电路

STC89C52

单片机

时钟

电路

按键

电路

实现的方案:

1秒计时采用定时中断完成,利用T0中断设置初值定时为0.01秒,然后在中断程序里加一个计数变量,就是每次次中断,这个变量就加1,也就是每0.01秒加1,加到100也就是一秒的时候进位,以此实现一秒的计时。

显示电路的实现则使用LED动态显示方式来时LED数码管显示数字

按键功能的实现使用按键扫描的方法实现,每次扫描到有按键按下,设置一个变量使变量加一加到三的时候把变量置零,变量的每个数值代表一个功能,实现一键多功能循环。

按第二次

判断是第几次

按下

按第一次

清零计数器

计时开始

计时暂停

调用按键子程序

按第三次

第二章电子秒表的程序设计

2.1程序设计流程图

开始

初始化

主程序:

137工作室荣誉出品

邹部长9931

count==1000

a==60

b==60

count++

a=0B++

count=0a++

中断子程序:

设置count为最低2位数,a为中间2位数(秒),b为最高2位数(分)

定时中断入口

赋定时初值

count=0a=0b=0

返回主程序

2.2程序设计源代码#include#defineENABLE0#defineDISABLE1#defineDATAP0unsignedn=0;

unsignedchara,b,count=0,i,j=0,x,u[8];sbithc138s_enable=P1^3;

sbithc138s_a=P1^0;sbithc138s_b=P1^1;sbithc138s_c=P1^2;sbitk1=P3^4;

unsignedcharcodetable[]=//共阴极0~9数码管编码

{

0x3f,0x06,0x5b,0x4f, //0~3

0x66,0x6d,0x7d,0x07, //4~7

0x7f,0x6f //8~9

};

voiddelay_ms(unsignedintnms);voidchose7s(unsignedcharnum);voidchose7ss(unsignedcharnumm);

voidtimer0_init(void)

{

TMOD=0X01;

TH0=(65536-10000)/256;TL0=(65536-10000)%256;

ET0=1;

EA=1;

TR0=1;

}

/*********************************************************************/

/* 用作数码管最初显示状态 */

/*********************************************************************/voids1()

{

for(j=0;j<8;j++)

{

if(j==2||j==5)

{

chose7s(j);//使能某位数码管DATA=0x40;

邹部长9931

delay_ms

(2);

}

}

voids2()

else

{

}

}



chose7s(j);

DATA=0x3f;

delay_ms

(2);

{ //timer0_init();

for(i=0;i<10;i++)//扫描

{

for(j=0;j<8;j++)

{

if(j==2||j==5)

{

chose7s(j);

DATA=0x40;

delay_ms

(2);

}

else

{

}

}

}

}



chose7s(j);x=u[j];DATA=table[x];delay_ms

(2);

/**************************按键功能*************************************/voidkey1()

{

if(k1==0)

{

delay_ms(20);if(k1==0)

{

n++;

if(n==3)

{n=0;

count=0;b=0;a=0;

}

while(!

k1);

}

}

}

/*******************************************************************************

*函数名 :

main *

*函数功能 :

主函数 *

*输 入 :

无 *

*输 出 :

无 *

*******************************************************************************/voidmain(void)

{

while

(1)

{

key1();switch(n)

{

case0:

s1();

break;case1:

timer0_init();s2();

break;case2:

TR0=0;s2();

break;

}

}

}

/*******************************************************************************

*函数名 :

chose7s *

*函数功能 :

使能某个数码管 *

*输 入 :

数码管编号 *

*输 出 :

无 *

*******************************************************************************/

voidchose7s(unsignedcharnum)

{

hc138s_enable=ENABLE;

switch(num)

{

case0:

//第1个数码管

hc138s_a=0;

hc138s_b=0;

hc138s_c=0;

// P0=0x3f;break;

case1:

//第2个数码管

hc138s_a=1;

hc138s_b=0;

hc138s_c=0;

// P0=0x3f;break;

case2:

//第3个数码管

hc138s_a=0;

hc138s_b=1;

hc138s_c=0;

//P0=0x40;br

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1