单片机秒表课程设计C语言.docx

上传人:b****7 文档编号:10598441 上传时间:2023-02-21 格式:DOCX 页数:17 大小:325.38KB
下载 相关 举报
单片机秒表课程设计C语言.docx_第1页
第1页 / 共17页
单片机秒表课程设计C语言.docx_第2页
第2页 / 共17页
单片机秒表课程设计C语言.docx_第3页
第3页 / 共17页
单片机秒表课程设计C语言.docx_第4页
第4页 / 共17页
单片机秒表课程设计C语言.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机秒表课程设计C语言.docx

《单片机秒表课程设计C语言.docx》由会员分享,可在线阅读,更多相关《单片机秒表课程设计C语言.docx(17页珍藏版)》请在冰豆网上搜索。

单片机秒表课程设计C语言.docx

单片机秒表课程设计C语言

 

广东工业大学华立学院

课程设计(论文)

 

课程名称MCS-51单片机

题目名称单片机秒表设计

学生学部(系)机电学部

专业班级08自动化一班

学   号12040801017

学生姓名李赛文

指导教师黄淑芬

 

2010年12月10日

目录

1课程设计的目的和任务

1.1单片机秒表课程设计的概述

1.2课程设计思路及描述

1.3课程设计任务和要求

2硬件与软件的设计流程

2.1系统硬件方案设计

2.2软件方案设计

3程序编写流程及课程设计效果

3.1源程序及注释

3.2原理图分析

3.3课程设计效果

4参考文献

 

1.课程设计的目的和任务

1.1单片机秒表课程设计的概述

一、课程设计题目

秒表系统设计——用STC89C52RC设计一个3位LED数码显示“秒表”,显示时间为00.0~59.9秒,每毫秒自动加一,每十毫秒自动加一秒。

二、增加功能

增加一个“复位00.0”按键(即清零),一个“暂停”和“开始”按键,一个“复位60.0”按键(用来60秒倒计时),一个倒计时“逐渐自减”按键。

三,课程设计的难点

单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程。

四、课程设计内容提要

本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。

将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。

其中本课程设计有四个开关按键:

其中key2按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key1按键按下去时数码管清零,复位为“00.0”,key3按键按下去时数码管复位为“60.0”(用于倒计时),key4按键按下去则是数码管开始“逐渐自减”倒计时。

课程设计的意义

1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。

2)掌握定时器、外部中断的设置和编程原理。

3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义

课程设计仪器

集成电路芯片8051,七段数码管,TX-1C单片机开发板,

MCS-51系列单片机微机仿真课程系统中的软件(Keiluvision2)。

1.2课程设计思路及描述

该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.4,P3.5,P3.6,P3.7作为按键的入口;定时器T0作为每0.1秒减一的定时器;定时器T1作为每0.1秒加一的定时器。

其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时。

方框图如下图1:

图1数字秒表设计导向

1.3课程设计任务和要求

1.设计指标。

了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、60秒、倒计时清零等功能,精确到0.1秒。

要求选用定时器的工作方式,画出使用单片机控制LED数码管显示的电路图,并实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零等功能。

2.设计要求

1画出电路原理图(或仿真电路图);

2软件编程与调试;

3电路仿真与调试;

2.软件与硬件设计

2.1系统硬件方案设计

单片机应用系统由硬件系统和软件系统两部分组成。

硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。

软件系统包括监控程序和各种应用程序。

在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。

与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。

在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。

在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。

配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。

在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。

 

 

图2系统硬件结构框

2.2软件方案设计

此次选用C51来编程,首先要有初始化程序,通过初始化程序,将对主程序所用到的变量、常量以及各个参数和所调用的子函数定义。

其次还有显示程序、按键扫描及处理程序、时钟程序和倒计时程序,系统软件流程图图如图3所示:

 

3程序编写的流程及课程设计效果

3.1源程序及注释

#include//52系列单片机头文件

#defineucharunsignedchar//宏定义

#defineuintunsignedint

sbitdula=P2^6;//申明U1锁存器的锁存端

sbitwela=P2^7;//申明U2锁存器的锁存端

sbitkey1=P3^4;//申明四个按键的锁存端

sbitkey2=P3^5;

sbitkey3=P3^6;

sbitkey4=P3^7;

ucharcodetable[]={//含有0~9的数字数组

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f};

voiddelayms(uint);//声明延时函数

voiddisplay(uchar,uchar,uchar);//声明显示函数

voidkeyscan();//声明按键函数

ucharnum1,num2,bai,shi,ge;//变量声明

uintnum;

voidmain()//主函数入口

{

TMOD=0x11;//设置TO,T1定时器

TH0=(65536-45872)/256;//装初值11.05992M晶振定时50ms数为45872

TL0=(65536-45872)%256;

TH1=(65536-45872)/256;

TL1=(65536-45872)%256;

EA=1;//开总中断

ET0=1;//开启定时器T0中断

ET1=1;//开启定时器T1中断

while

(1)//程序停在这里等待中断的发生,这个大循环也是实现数据显示的主体循环

{

keyscan();

//三个数码管要选送的数据

bai=num/100;//百位

shi=(num-100*bai)/10;//十位

ge=num-100*bai-shi*10;//个位

//直接把第二只数码管的小数点烧出来

dula=1;//打开段选

P0=0x80;//送段选数据

dula=0;//关闭断选

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位锁存端造成混乱

wela=1;//打开位选

P0=0xfd;//送位选数据

wela=0;//关闭位选

delayms(5);//延时

display(bai,shi,ge);

}

}

voiddisplay(ucharbai,ucharshi,ucharge)//数码管显示子函数

{

dula=1;//打开段选

P0=table[bai];//送段选数据

dula=0;//关闭断选

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位锁存端造成混乱

wela=1;//打开位选

P0=0xfe;//送位选数据

wela=0;//关闭位选

delayms(5);//延时

dula=1;//打开段选

P0=table[shi];//送段选数据

dula=0;//关闭断选

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位锁存端造成混乱

wela=1;//打开位选

P0=0xfd;//送位选数据

wela=0;//关闭位选

delayms(5);//延时

dula=1;//打开段选

P0=table[ge];//送段选数据

dula=0;//关闭断选

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位锁存端造成混乱

wela=1;//打开位选

P0=0xfb;//送位选数据

wela=0;//关闭位选

delayms(5);//延时

}

voiddelayms(uintxms)//延时子函数

{

uinti,j;

for(i=xms;i>0;i--)//i=xms即延时约xms毫秒

for(j=110;j>0;j--);

}

voidkeyscan()//按键子函数

{

if(key1==0)//清零

{

delayms(10);//延时去抖

if(key1==0)

{

while(!

key1)//等待按下

{

TR0=0;//定时器TR0关闭

TR1=1;//定时器TR1打开

num=0;//送数据num=0

TR1=0;//定时器TR1关闭

}

}

}

if(key2==0)//暂停和开始

{

delayms(10);

if(key2==0)

{

while(!

key2);

TR0=0;

TR1=~TR1;//每次按下,TR1的状态时相反的

}

}

if(key3==0)//使计数器显示为60.0

{

delayms(10);

if(key3==0)

{

while(!

key3);

TR0=0;

TR1=1;

num=600;

TR1=0;

}

}

if(key4==0)//实现计数器的倒数功能

{

delayms(10);

if(key4==0)

{

while(!

key4);

TR1=0;

TR0=1;

}

}

}

voidT0_time()interrupt1//定时器T0,中断序号为1

{

TH0=(65536-45872)/256;//重装初值

TL0=(65536-45872)%256;

num2++;

if(num2==2)//如果到了2次,说明0.1秒的时间到

{

num2=0;//然后把num2清零重新再计2次

num1++;

if(num1==10)

num1=0;

if(num==0)//当num自减为0时,重新为60.0,再开始倒计时

num=600;

num--;//num逐渐自减

}

}

voidT1_time()interrupt3//定时器T1,中断序号为3

{

TH1=(65536-45872)/256;//重装初值

TL1=(65536-45872)%256;

num2++;

if(num2==2)//如果到了2次,说明0.1秒的时间到

{

num2=0;//然后把num2清零重新再计2次

num1++;

if(num1==10)

num1=0;

num++;//num逐渐自加

if(num==600)//这个数十用来送给数码管显示的,到了60.0后归零

num=0;

}

}

3.2原理图分析

图4按键原理图

图5显示电路

图6电源电路原理图

3.3课

程设计效果

通过最后软件对程序的编译,组建,执行,还有最终生成.hex文件,把.hex下载到TX-1C开发板的STC89C52RC单片机上的最终效果图如下:

图7.复位“00.0”

图8.复位“60.0”

 

图9.“开始自加”运行

图10.“开始自减”运行

4参考文献

【1】孙育才编著.MCS-51系列单片微型计算机及其应用.东南大学出版社.2009.12

【2】郭天祥编著.51单片机C语言教程-入门、提高、开发、拓展全攻略.电子工业出版社.2010.05

【3】刘刚编著.ProtelDXP2004SP2原理图与PCB设计.电子工业出版社.2009.07

【4】丁峻岭主编.C语言程序设计.中国铁道出版社.2009.12

通过对本次课程的课程设计,使自己深刻的认识到自己的很多不足之处,在实际动手操作能力的不足,在进行程序编程时,自己需要,认真审题,看懂题目的要求!

对于软件编程不益太简单或者太难。

做到既能把课题完成又能锻炼自己的能力!

根据课题要求,复习相关的知识,查询相关的资料。

根据课程条件,找到适合的方案,找到需要的元器件及工具,准备课程。

根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序和增加额外的功能程序。

然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。

还要根据课程的实际情况,添加些额外程序来使系统更加的稳定,如开关的去抖(采用延迟)。

程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。

该课程设计的程序可以参考MCS-51系列单片机,也可自己根据自己熟悉的方法来编程如单片机C语言。

在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。

这次的单片机课程设计重点是理论与实际的相结合。

该设计从头到尾都要自己参与,熟悉了对整个设计的过程,更系统的锻炼了自己。

 

2010年12月10日

 

年月日

 

年月日

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

当前位置:首页 > 医药卫生 > 基础医学

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

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