基于89C51单片机的秒表课程设计.docx
- 文档编号:768481
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:16
- 大小:145.79KB
基于89C51单片机的秒表课程设计.docx
《基于89C51单片机的秒表课程设计.docx》由会员分享,可在线阅读,更多相关《基于89C51单片机的秒表课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
基于89C51单片机的秒表课程设计
课程设计任务书
学生姓名:
池孙煌专业班级:
电信1204
指导教师:
陈德军工作单位:
信息工程学院
题目:
基于51单片机的秒表设计
初始条件:
具备Keil编程能力和Proteus仿真能力;
熟悉定时器/计数器的实现原理;
提供编程所需要的计算机一台
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、用定时器/计数器设计一个简单的秒表,能显示计时状态和结果。
2、进行电路实验或仿真,并使用C语言进行程序的开发。
3、完成符合学校要求的设计说明书
时间安排:
一周,其中3天程序设计,2天程序调试
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。
本次设计内容为以8051单片机为核心的秒表,它采用键盘输入,单片机技术控制。
设计内容以硬件电路设计,软件设计和制作三电路板部分来设计。
利用单片机的定时器/计数器定时和计数的原理,用集成电路芯片、LCD1602液晶以及按键来设计计时器。
将软、硬件有机地结合起来,使它拥有正确的计时、暂停、清零、所计时间的存储和查看、并同时可以用液晶显示,在现实生中应用广泛。
关键词:
秒表;8051;定时器
1.概述
《单片机应用实践》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。
本次设计内容为以8051单片机为核心的秒表,它采用键盘输入,单片机技术控制。
设计内容以硬件电路设计,软件设计和制作三电路板部分来设计。
利用单片机的定时器/计数器定时和计数的原理,用集成电路芯片、LCD1602液晶以及按键来设计计时器。
将软、硬件有机地结合起来,使它拥有正确的计时、暂停、清零、所计时间的存储和查看、并同时可以用液晶显示。
2.理论分析
2.1设计内容
开始时,显示“00:
000”,按下按钮1后开始从0计时,显示精度为0.001s;共有5个功能按键,第1个按键开始计时,第2个按键暂停,第3个按键复位,第4个按键记录时间,第五个按键查看时间。
根据8051芯片的的工作原理和工作方式,对LCD1602液晶进行显示控制,并能用按钮实现秒表起动、停止、复位、所计时间的存储和查看、清零功能,精确到0.001秒。
要求选用定时器的工作方式,画出使用单片机控制LCD1602液晶显示的电路图,并实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零等功能。
2.2具体步骤
单片机电子秒表需要解决三个主要问题:
一是有关单片机定时器的使用;
二是如何实现LCD1602液晶的显示;
三是如何对键盘输入进行编程。
定时器:
51有4种工作方式,本方案采用工作方式1,即为16位定时器。
在高八位和低八位分别置数。
由于定时器做的是加法计数,则应该将要定时的数以补码的形式,存放在定时器中。
LCD1602液晶:
液晶用RS、RW、EA三个控制端口进行显示等控制。
D0-D7口分别接单片机的P0并行口,进行数据的传输。
液晶的具体显示方式及其时序图在其资料中进行查阅并应用。
键盘:
键盘函数可以作为一个子程序,在main函数中循环查找调用,根据按键的功能,我们在按键中写入相应的程序,在按键1中开中断,并且对定时器进行设初值。
即可实现开始计时。
在按键2中关中断,则可实现计时暂停。
按键3即为复位键,则可复位为初始值00:
000。
按键4即为记录键,对时间进行记录。
按键5即为查看键,对所记录的时间进行查看。
3程序设计
3.1设计思路
单片机应用系统由硬件系统和软件系统两部分组成。
硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能电路。
软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。
与单片机配套的有相应的时钟电路如图3.1所示以及扩展的存储器和I\O接口,使单片机应用系统能够运行。
在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。
在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。
配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。
在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。
3.2设计过程
3.2.1系统设计思路及描述
本设计在LCD1602液晶上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.0,P3.1,P3.2,P3.3作为按键的入口;定时器T0作为每0.001秒加一的定时器;其中“开始”按键按下时开始计时,按下按键2则暂停;按下按键3对时间进行记录,按下按键4对所记录的时间进行查看。
“清零”按键即为复位按键,复位清零,此时若再按下按键1则又可重新开始计时。
3.3程序流程及实验效果
3.3.1程序流程图
Y
N
Y
N
Y
N
Y
N
图3.1主程序流程图
3.3.2源程序及说明
#include"reg51.h"
#include"string.h"
#include"stdio.h"
#include
#defineucharunsignedchar
#defineuintunsignedint
voidInitialize_LCD();
voidShowString(ucharx,uchary,uchar*str);
sbitK1=P3^2;//K1表示开始计时
sbitK2=P3^3;//暂停
sbitK3=P3^4;//记录
sbitK4=P3^5;//查看
ucharcodeprompt[]="PRESSK1START";
uchara[]="00:
000";
intk3=0;
intnumb;
voidDelayxms(uintms)
{
uchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
voidkeyscan()
{
if(K1==0)//计时开始
{
Delayxms
(1);
if(K1==0)
{
TMOD=0x11;
TH0=(65536-1000)/256;//赋计数初值
TL0=(65536-1000)%256;
EA=1;//开总断
ET0=1;//开启定时器中断
TR0=1;//启动定时器
while(!
K1);//等待按键释放
}
}
if(K2==0)//暂停
{
EA=0;
ET0=0;
TR0=0;
}
if(K3==0)//时间的记录
{
intk;
Delayxms(50);
for(k=0;k<6;k++)
{
b[k3][k]=a[k];
}
k3++;
while(!
K3);
}
if(K4==0)//查看所记录的时间
{
ucharc[6];
intnum;
Delayxms(50);
if(K4==0){
while
(1){
for(num=0;num<6;num++){
c[num]=b[0][num];
}
ShowString(1,1,c);
Delayxms(50);
if(K4==0){
Delayxms(50);
if(K4==0){
while
(1){
for(num=0;num<6;num++){
c[num]=b[1][num];
}
ShowString(1,1,c);}
}
}
}
}
}
}
voidmain()
{
Initialize_LCD();
while
(1)
{
keyscan();
ShowString(1,0,prompt);
ShowString(1,1,a);
}
}
voidtime()interrupt1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
a[5]++;//初值为0
if(a[5]==0X3A)
{
a[5]=0X30;
a[4]++;
}
if(a[4]==0X3A)
{
a[4]=0X30;
a[3]++;
}
if(a[3]==0X3A)
{
a[3]=0X30;
a[1]++;
}
if(a[1]==0X3A)
{
a[1]=0X30;
a[0]++;
}
if(a[0]==0X3A)
{
a[]="00:
000";
}
}
//************1602***********//
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P0^7;
sbitRW=P0^6;
sbitEN=P0^5;
voidDelayms(uintms)
{
uchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
ucharBusy_Check()
{
ucharLCD_Status;
RS=0;
RW=1;
EN=1;
Delayms
(1);
LCD_Status=P0;
EN=0;
returnLCD_Status;
}
voidWrite_LCD_Command(ucharcmd)
{
while((Busy_Check()&0x80)==0x80);//读写操作使能位检测
RS=0;
RW=0;
EN=0;
P0=cmd;
EN=1;
Delayms
(1);
EN=0;
}
voidWrite_LCD_Data(uchardat)
{
while((Busy_Check()&0x80)==0x80);
RS=1;
RW=0;
EN=0;
P0=dat;
E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 89 C51 单片机 秒表 课程设计