倒计时秒表课程设计.docx

上传人:b****2 文档编号:2710289 上传时间:2023-05-04 格式:DOCX 页数:27 大小:211.05KB
下载 相关 举报
倒计时秒表课程设计.docx_第1页
第1页 / 共27页
倒计时秒表课程设计.docx_第2页
第2页 / 共27页
倒计时秒表课程设计.docx_第3页
第3页 / 共27页
倒计时秒表课程设计.docx_第4页
第4页 / 共27页
倒计时秒表课程设计.docx_第5页
第5页 / 共27页
倒计时秒表课程设计.docx_第6页
第6页 / 共27页
倒计时秒表课程设计.docx_第7页
第7页 / 共27页
倒计时秒表课程设计.docx_第8页
第8页 / 共27页
倒计时秒表课程设计.docx_第9页
第9页 / 共27页
倒计时秒表课程设计.docx_第10页
第10页 / 共27页
倒计时秒表课程设计.docx_第11页
第11页 / 共27页
倒计时秒表课程设计.docx_第12页
第12页 / 共27页
倒计时秒表课程设计.docx_第13页
第13页 / 共27页
倒计时秒表课程设计.docx_第14页
第14页 / 共27页
倒计时秒表课程设计.docx_第15页
第15页 / 共27页
倒计时秒表课程设计.docx_第16页
第16页 / 共27页
倒计时秒表课程设计.docx_第17页
第17页 / 共27页
倒计时秒表课程设计.docx_第18页
第18页 / 共27页
倒计时秒表课程设计.docx_第19页
第19页 / 共27页
倒计时秒表课程设计.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

倒计时秒表课程设计.docx

《倒计时秒表课程设计.docx》由会员分享,可在线阅读,更多相关《倒计时秒表课程设计.docx(27页珍藏版)》请在冰点文库上搜索。

倒计时秒表课程设计.docx

倒计时秒表课程设计

目录

一.设计目的……………………………………………………………1

二.设计要求……………………………………………………………1

三.总体设计……………………………………………………………1

3.1设计方案…………………………………………………………1

3.2硬件电路设计……………………………………………………1

1)CPU部分…………………………………………………………1

2)晶振电路部分……………………………………………………2

3)LCD显示……………………………………………………3

4)键盘及蜂鸣器部分…………………………………………………3

3.3软件程序设计……………………………………………………4

四.方案实施…………………………………………………………6

4.1单片机简介………………………………………………6

4.2动态LCD液晶显示器显示………………………………………………6

4.3软件调试及调试方法……………………………………………………8

五.课程设计总结………………………………………………………10

六.参考文献…………………………………………………………10

七.附件…………………………………………………………11

7.1源程序…………………………………………………………………12

7.2总体电路图………………………………………………………………22

一.设计目的

1熟悉整个项目的流程即单片机系统设计过程

2学会使用各种仿真软件

3熟练的使用汇编语言编写小的应用程序

4掌握系统的调试与安装

5提高学生的自学能力和动手能力

二.设计要求

 1)可以实现正常秒表的所有功能,包括启动,暂停,复位等

 2)可以自由设定倒计时时间(10s,20s,30s....),并进行倒计时(10s,20s,30s....)

 3)显示方式自选

 4)任选一款51单片机

 5)扩展功能:

在秒表基础上增加时钟功能;倒计时完成时加入报警单元,如声音,灯光等

三.总体设计

3.1设计方案

1)方案讨论和设计:

倒计时数字秒表的设计主要考虑以下几个问题:

一,LCD液晶显示器如何显示数字0—9;二,如何用单片机来控制LCD的显示;三,单片机最小模式下的设计。

处理好这些问题此设计才能完整,为此必须先了解LCD的显示原理和接线方法,再了解单片机的组成原理和控制方法。

硬件电路的绘制和软件程序的编写是此次设计的关键和基础,只有硬件电路的设计是正确的、合理的,软件设计才可以根据硬件电路编程,以下的设计才能够进行。

2)主要任务:

软件的调试和烧录

3.2硬件电路设计

1)CPU部分

P2.0口是“调模式”num10,num20,num30,num50,num100

P2.1口是“开始”倒计时端口

P2.2口是“关闭”(返回)轰鸣器口,在定时可以返回到模式状态。

P2.3口是给轰鸣器送触发信号口

P2.4口是“暂停”口

主要有AT89C51,按键等构成

2)时钟振荡模块

时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个30pF的瓷片电容和一个12MHz的晶振组成,并接入到单片机的XTAL1和XTAL2引脚处,使单片机工作于内部振荡模式。

此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。

电路中两个电容C4、C5的作用使电路快速起振,提高电路的运行速度。

晶振电路模块

3)LCD显示部分

D1-D7口分别依次接单片机的P1.0-P1.7;

RS,RW,E分别接P3.0-P3.3口

LCD显示部分

4)键盘及蜂鸣器部分

键盘及轰鸣器部分

P2.0口是“调模式”num10,num20,num30,num50,num100

P2.1口是“开始”倒计时端口

P2.2口是“关闭”(返回)轰鸣器口,在定时可以返回到模式状态。

P2.3口是给轰鸣器送触发信号口

P2.4口是“暂停”口

3.3软件程序设计

程序流程图:

开始

定时器T0,T1初始化

YN

 

YN

 

YN

 

四.方案实施

4.1单片机简介

单片机是把中央处理器(CPU),存储器和输入输出接口电路等主要微型机部件集成在一块芯片上,因此称为单片机,主要用于测控领域。

自从1976年Intel公司推出第一代8位的MCS—48系列单片机,它以体积小、控制功能全、价格低等优点为单片机的发展打下了坚实的基础。

随后单片机发生了深刻的变革,目前市面上最常用的51系列单片机也是8位的,因为其品种全、兼容性强、软硬件资料丰富的特点,因此历经几十年仍然是最常用的单片机系列。

随着技术的进步和发展,16位单片机32位单片机相继产生,其性能也有了长足的提高,但是其基本组成仍然没有改变。

设计中应用到的STC89C51是Atmel公司生产的51系列单片机中的一个典型代表,

AT89C51引脚图

从图中可以看到AT89C51有P0、P1、P2、P3四个输出输入口,其中P2.1口接开关用来LCD数字显示的起停,其中+5V的高电平有电源电路提供。

4.2动态LCD液晶显示器显示

∙液晶是人机交互最重要的通道,液晶不光要显示文字信息,还要显示波形信息,所以,编写一套完善的函数库是必不可少的,其中应该包括显示ASCII码、字符串、整型数字、浮点数、汉字、画点、画线等一系列函数。

       上层函数的建立离不开底层的驱动,最底层驱动应该是建立在液晶基本时序与指令的基础上。

如图1,是液晶模块的基本时序图。

 

                                      图1DMF5001液晶模块基本时序图

       根据时序图和控制指令,不难写出基本的读写函数。

这些函数就是构建上层的基础。

之后,还必须了解液晶的基本显示方式和充填方式。

如图2,是液晶模块的缓冲区与显示屏的映射关系。

T6963控制芯片内部有64KB的缓冲区,可以由程序划分为图形、文本、文本特征3类缓冲区,在不同缓冲区里写入不同数据,在液晶屏上将映射相应的信息,这也就是液晶模块显示信息的原理。

    

                                      图2DMF5001液晶映射方式

       因为T6963内部含有ASCII码字库,所以要想显示字符信息,只需在文本区内填入相应的信息即可。

       如果要显示汉字或图形,则必须先在单片机内部的ROM区建模,然后将这些信息写入液晶的图形缓冲区,在液晶控制模块的控制下,相应的信息就会映射在显示屏上,也就是我们看到的汉字或图形信息了。

       如果要实时显示AD采集的波形图以及FFT处理后的频谱图,这里将就动态波形显示用到的技术加以详细介绍。

       波形的显示离不开“点”的显示,所谓“点动成线”也就这个道理,对于只有黑白两级灰度的液晶来说,画一个“点”就是将一个像素点亮。

所以我们根据时序图,先建立在LCD屏上显示“点”的底层函数。

在液晶屏上绘制“点”,有两点需要注意,一是缓冲区空间的大小,二是像素的充填方式。

在DMF5001液晶模块中,“点”的绘制需要在图形缓冲区中进行。

对于160×128像素的显示屏,图形缓冲区一共占用(160×128)/8=2560字节的空间,每一个字节对应一个地址,也就是一共有2560个地址。

考虑到DMF5001图形的充填方式是从上到下,横向填充,加上控制指令本身就支持对一个像素亮灭的控制。

所以很容易根据缓冲区的地址,控制液晶屏上某一个点的亮灭,也就是所谓的画“点”了。

4.3软件调试及调试方法

1)启动keiluVision,编写倒计时汇编语言程序,然后点击Project菜单——〉Newproject,新建一个工程,接着选择CPU类型,我们选择最常用的AT89C51。

2)在工程中加入文件。

新建一个文件倒计时.C保存,汇编语言文件建好后把文件加入到工程中。

仿真图形如下:

3)编译工程及文件,发现错误更改后再重新编译文件,直到没有错误并且产生了xxx.hex的文件。

4)用单片机仿真软件ISIS7.4Professional来仿真此次设计的单片机是否能够完成设计的要求。

仿真显示电路图如下:

五.课程设计总结

1)在单片机的课程设计中,我加深了对51系列单片机的认识,尤其是在定时计数器、中断系统、串行通信接口方面,我得到了很大的收获。

2)通过本次设计,使我认识和了解了基本的单片机设计的开发及仿真过程,我学到:

经过理论联系实际,加深了对单片机和模拟电路基础知识的理解及应用,学会了液晶显示器接法,熟识了硬件驱动LCD动态显示的基本原理和程序编写,提高了将单个电子器件组合到一起构成所需电路系统的能力;

3)在绘制电路图和仿真图的过程中,巩固了电气专业最基本软件要求,提高了对Protues单片机仿真软件及汇编程序编写软件keiluVision3的认识;

目前单片机在社会上应用很广泛,这使我相信所学的东西在以后的工作中会有用的。

在本次设计过程中得到了指导老师的大力支持,在此表示感谢!

六.参考文献

[1]李广弟单片机基础[M]北京:

航空航天大学出版社2001年1月

[2]迟荣强单片机原理及接口技术[M]北京:

高等教育出版社2004年9月

[3]张毅刚单片机原理及应用[M]北京:

高等教育出版社2008年5月

 

七.附件

7.1源程序:

#include

#include

#defineucharunsignedchar

sbitrs=P3^0;

sbitrw=P3^1;

sbiten=P3^2;

sbittiao=P2^0;

sbitkaishi=P2^1;

sbitfanhui=P2^2;

sbitfm=P2^3;触发蜂鸣器

sbitzanting=P3^4;

ucharnum,miao,jishu;

uchartmiao,zz=0;

//********************延时程序**************************

voidDelay1ms(ucharcount)

{

uchari,j;

for(i=0;i

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

}

//*********************写液晶命令程序****************

voidwrite_com(ucharcom)

{

rs=0;

rw=0;

en=0;

Delay1ms

(2);

P1=com;

Delay1ms(4);

en=1;

Delay1ms(4);

en=0;

}

//*********************写液晶数据程序*********************

voidwrite_data(uchardt)

{

rs=1;

rw=0;

en=0;

Delay1ms

(2);

P1=dt;

Delay1ms(4);

en=1;

Delay1ms(4);

en=0;

}

//**********************液晶初始化程序***********************

voidinitial_lcd()//henyongyiwangjigaibufen

{

Delay1ms(20);

write_com(0x38);

Delay1ms(5);

write_com(0x0c);

Delay1ms(5);

write_com(0x06);

Delay1ms(5);

write_com(0x01);

}

//***********************定时器0定时1S****时钟程序************************

voidtime0(void)interrupt1using0

{

TH0=0x3c;

TL0=0xb0;

jishu++;

if(jishu==20)

{

jishu=0;

miao++;

}

}

//***********************定时器1蜂鸣器************************

voidtime1(void)interrupt3using0

{

TH1=0xff;

TL1=0x44;

fm=~fm;

}

//**********************拆分显示显示程序*************

voidchaixian(ucharxmiao)

{

ucharxmiao1,xmiao2,xmiao3;

xmiao1=xmiao/100;定时最大是一个三位数

xmiao2=xmiao%100/10;

xmiao3=xmiao%10;

write_com(0x80+0x0a);液晶定位

if(xmiao==100)

{

write_data(0x30+xmiao1);

write_data(0x30+xmiao2);

write_data(0x30+xmiao3);

}

if(xmiao<100)

{

write_com(0x80+0x0c);

write_data(0x00);

write_com(0x80+0x0a);

write_data(0x30+xmiao2);

write_data(0x30+xmiao3);

}

}

//******************************定时程序*******************************

voiddingshi(uchari)

{

TR0=1;

while(miao-1!

=i)

{

tmiao=i-miao;

chaixian(tmiao);

if(zz==1)//是否暂停

{

break;

}

if(fanhui==0)

{

miao=0;

jishu=0;

write_com(0x01);

write_com(0x80+0x02);

write_data('T');

write_data('i');

write_data('a');

write_data('o');

write_data(0x00);

write_data('M');

write_data('o');

write_data(0x00);

write_data('S');

write_data('h');

write_data('i');

break;

}

}

if(zz==0&&(miao-1)==i)

{

TR1=1;

TR0=0;

write_com(0x01);

write_com(0x80+0x04);

write_data('T');

write_data('i');

write_data('m');

write_data('e');

write_com(0x80+0x09);

write_data('E');

write_data('n');

write_data('d');

while(fanhui==1)

{

}

TR1=0;

miao=0;

jishu=0;

write_com(0x01);

write_com(0x80+0x02);

write_data('T');

write_data('i');

write_data('a');

write_data('o');

write_data(0x00);

write_data('M');

write_data('o');

write_data(0x00);

write_data('S');

write_data('h');

write_data('i');

}

}

//******************************键盘扫描程序***************************

voidkeyscan()

{

ucharnum1;

if(tiao==0)

{

Delay1ms(10);

if(tiao==0)

{

num++;

if(num==6)

{

num=0;

}

if(num==1)

{

write_com(0x01);

write_com(0x80+0x04);

write_data('n');

write_data('u');

write_data('m');

write_data(0x30+num);

write_com(0x80+0x0a);

write_data(0x30+1);

write_data(0x30+0);

}

if(num==2)

{

write_com(0x01);

write_com(0x80+0x04);

write_data('n');

write_data('u');

write_data('m');

write_data(0x30+num);

write_com(0x80+0x0a);

write_data(0x30+2);

write_data(0x30+0);

}

if(num==3)

{

write_com(0x01);

write_com(0x80+0x04);

write_data('n');

write_data('u');

write_data('m');

write_data(0x30+num);

write_com(0x80+0x0a);

write_data(0x30+3);

write_data(0x30+0);

}

if(num==4)

{

write_com(0x01);

write_com(0x80+0x04);

write_data('n');

write_data('u');

write_data('m');

write_data(0x30+num);

write_com(0x80+0x0a);

write_data(0x30+5);

write_data(0x30+0);

}

if(num==5)

{

write_com(0x01);

write_com(0x80+0x04);

write_data('n');

write_data('u');

write_data('m');

write_data(0x30+num);

write_com(0x80+0x0a);

write_data(0x30+1);

write_data(0x30+0);

write_data(0x30+0);

}

while(tiao==0)

{

}

}

}

if(kaishi==0)

{

Delay1ms(10);

if(kaishi==0)

{

while(kaishi==0)

{

}

switch(num)

{

case1:

num1=10;break;

case2:

num1=20;break;

case3:

num1=30;break;

case4:

num1=50;break;

case5:

num1=100;break;

}

if(zz==0)

{

ucharmiao=0;

dingshi(num1);

}

if(zz==1)

{

zz=0;

dingshi(num1);

}

}

}

}

//*****************************暂停键*****************************

voidint1(void)interrupt2using0

{zz=1;

TR0=0;

while(zanting==0)

{

}

}

//**************************主程序********************************

voidmain()

{TMOD=0x11;

TH0=0x3c;

TL0=0xb0;

TH1=0xff;

TL1=0x44;

IE=0x8e;

initial_lcd();

while

(1)

{keyscan();

}

}

 

7.2硬件电路图

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2