数字电子计数器课程设计论文.docx

上传人:b****8 文档编号:30110117 上传时间:2023-08-05 格式:DOCX 页数:20 大小:127.09KB
下载 相关 举报
数字电子计数器课程设计论文.docx_第1页
第1页 / 共20页
数字电子计数器课程设计论文.docx_第2页
第2页 / 共20页
数字电子计数器课程设计论文.docx_第3页
第3页 / 共20页
数字电子计数器课程设计论文.docx_第4页
第4页 / 共20页
数字电子计数器课程设计论文.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数字电子计数器课程设计论文.docx

《数字电子计数器课程设计论文.docx》由会员分享,可在线阅读,更多相关《数字电子计数器课程设计论文.docx(20页珍藏版)》请在冰豆网上搜索。

数字电子计数器课程设计论文.docx

数字电子计数器课程设计论文

 

绪论

随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的围越来越广,随之而来的竞争也越来越激烈。

过硬的技术也成为众多生产厂商竞争的焦点之一。

厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。

现计数器的种类以增加到:

电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。

计数器的应用围也遍布各个行业。

从单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。

单片机的应用在后PC时代得到了前所未有的发展,但对处理器的综合性能要求也越来越高。

综观单片机的发展,以应用需求为目标,市场越来越细化,充分突出以“单片”解决问题,而不像多年前以MCS51/96等处理器为中心,外扩各种接口构成各种应用系统。

单片机系统作为嵌入式系统的一部分,主要集中在中、低端应用领域(嵌入式高端应用主要由DSP、ARM、MIPS等高性能处理器构成),在这些应用中,目前也出现了一些新的需求,主要体现在以下几个方面:

(1)以电池供电的应用越来越多,而且由于产品体积的限制,很多是用钮扣电池供电,要求系统功耗尽可能低,如手持式仪表、水表、玩具等。

(2)随着应用的复杂,对处理器的功能和性能要求不断提高。

既要外设丰富、功能灵活,又要有一定的运算能力,能做一些实时算法,而不仅仅做一些简单的控制。

(3)产品更新速度快,开发时间短,希望开发工具简单、廉价、功能完善。

特别是仿真工具要有延续性,能适应多种MCU,以免重复投资,增加开发费用。

(4)产品性能稳定,可靠性高,既能加密保护,又能方便升级。

 

一.《微机原理与接口技术》课程设计任务书

(二)

题目:

电子计数器

1.1.课程设计任务

本课题要求应用以51单片机为核心设计电子计数器,能设置起始数值,通过加、减键实现计数功能,设计复位按钮。

数字通过数码管显示,计数结束发出警报。

1.2.课程设计目的

通过本次课程设计使学生掌握:

1)掌握以单片机为核心的控制系统的分析和设计的基本方法;2)控制程序的设计及实现方法;3)提高学生对单片机实时控制系统的设计和调试能力。

1.3.课程设计要求

开机后,设置计数器的初始值,通过加、减键实现向下,或向上计数,通过数码管显示结果,计数结束发出警(可播放一段音乐),暂停按钮,按下暂停按钮,停止计数,再按下暂停按钮,开始计数。

并设置有复位按钮,回到初始状态

1.4.课程设计容

1、计数程序;显示程序;

2、按键,中断程序;

3、硬件电路原理图、软件清单。

1.5.课程设计报告要求

报告中提供如下容:

1、目录

2、正文

(1)课程设计任务书;

(2)总体设计方案

(3)电子计数器部分,要有操作使用说明,以便用户能够正确使用本产品;

(4)硬件原理图,以便厂家生成产(可手画也可用protel软件);

(5)程序流程图及清单(子程序不提供清单,但应列表反映每一个子程序的名称及其功能);

(6)调试、运行及其结果;

3、收获、体会

4、参考文献

二.设计方案:

本设计为累加计数的专用计数器,应用AT89C51芯片作为核心,8位的LED数管显示。

这种实现方法的优点是电路简单,性能可靠,实时性强,操作简单,编程容易。

图1.原理框图

本设计的电子计数器的重要功能为:

1.通过up和down按键设定计数预置值。

2.通过stop键开始进入计数。

3.按下计数按键开始逐次累加计数。

4.累加至预定值报警播放一段音乐。

5.音乐结束后按两次stop键可以继续计数。

6.按rset键复位,重新开始循环。

三.Protues仿真图及相应部分工作原理:

3.1总的仿真图

图1总体仿真图

本设计主要由最小单片机系统、按键部分、显示部分、和计数报警部分组成。

主要用了六个按键、一个电阻排、两个数码管、一个报警器。

首先对计数器进行设定初值:

数码管显示初值设定为00,但并不是计数的值。

所以要预设定一个计数值。

按下up键,显示器上能够逐次加1,按下down键,显示器上能够逐次减1,以此来给出一个计数预置值。

再按下stop键一次,up键和down键停止工作。

进入计数环节。

通过按下计数键进行计数,计数过程中可以暂停计数,通过按下stop键即可暂停。

同样再按一下stop键则可以继续进行计数。

直到计数到达预设定的初值后报警器工作,播放一段音乐。

然后stop键需要按两次才能再进行计数。

因为播放音乐子函数是一个时间段的函数。

所以不能够在音乐播放的过程中给它任何指令,只有等音乐结束后按下stop键计数器恢复计数。

或者按下复位键,重新开始设定计数值开始下一轮计数;

3.2显示部分

图2数码管显示

显示部分:

显示部分由两个数码管一个电阻排组成。

通过P0口P1口连接数码管。

其中P0口要外接上拉电阻,这里用一个电阻排代替八个电阻。

数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更精确的表示数码管想要显示的容;按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位等数码管。

按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

数码管的驱动方式主要由静态和动态两种。

静态驱动也称直流驱动。

静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

本次用的就是静态显示!

3.3按键部分

图3按键部分

按键部分:

按键部分连接的是地端和P1口,由四个按键组成。

Up键和down键设定计数初值。

Stop键进入中断,rset键复位。

分别接P1.0P1.3P1.6P1.7口。

首先对计数器进行设定初值:

数码管显示初值设定为00,但并不是计数的值。

所以要预设定一个计数值。

按下up键,显示器上能够逐次加1,按下down键,显示器上能够逐次减1,在按下stop键一次,可以按下计数键进行计数。

计数到达预设定的初值后报警器工作,播放一段音乐。

此时计数器不能继续工作,等到音乐结束后按下stop键计数器恢复计数,按下复位键,重新开始设定计数值开始下一轮计数;

3.4计数报警部分

图4计数报警部分

计数报警部分:

计数报警部分由报警器和计数按键组成。

分别接P3.7和P3.2口。

计数次数达到后报警器开始工作播放一段音乐。

当计数到达预设定的初值后报警器工作,播放一段音乐。

此时计数器不能继续工作,等到音乐结束后按下stop键计数器恢复计数,按下复位键,重新开始设定计数值开始下一轮计数;

四.程序清单及流程图

4.1.电子器件清单

设计的电子计数器所需的元器件的代号为

1、单片机代号为:

AT89C51

2、电容C1、C2的代号为:

CERAMIC22P

3、电容C3的代号为:

MINELECT10U16V

4、晶振X1的代号为:

CRYSTAL

5、电阻R1、R2的代号分别为:

CHIPRES10K、CHIPRES100R

6、上拉电阻RP1的代号为:

RESPACK-8

7、显示器的代号为:

7SEG-MP*1-CC

8、开关六个的代号为BUTTON

 

4.2.程序流程图

 

Y

 

N

 

图4流程图

工作流程:

首先对计数器进行设定初值:

数码管显示初值设定为00,但并不是计数的值。

所以要预设定一个计数值。

按下up键,显示器上能够逐次加1,按下down键,显示器上能够逐次减1,在按下stop键一次,可以按下beep键进行计数。

计数到达预设定的初值后报警器工作,播放一段音乐。

此时计数器不能继续工作,等到音乐结束后按下stop键计数器恢复计数,按下复位键,重新开始设定计数值开始下一轮计数;

五.调试、运行及其结果

刚开始程序设计中基本上是完好的,程序可以实现设定预置值的加减计数。

然后通过数码管显示预置值。

程序在执行的过程中按下stop键开始允许计数。

通过右边的计数键开始重新计数显示,依然用的刚刚的数码管。

一切功能都进行的很顺利,但是等到一遍程序执行完的时候,按下复位键,数码管归零。

本以为一切都正常的时候重新试了下计数。

发现不能动,没有恢复到初始状态。

最后思考了一下,在rset程序里面加了一个子函数init。

调试了一下果然可以了。

刚开始只设计了报警,也就是简单的让报警器恒等于一。

但是看了任务书,觉得给它加上一段音乐,感觉这个想法不错。

虽说满足了老师的基本要求,但是总觉得可以做的更好,所以我在此基础上给它加了一段音乐,但是乐谱自己真的是没有编过,于是就在网上XX了乐谱,然后结合自己的程序整合了一下,最终选了一个简单的生日歌添加进自己的程序。

只要计数数值达到设定的值就开始播放一段音乐,比起刺耳的报警声和谐了不少!

图5.程序调试运行成功图

六.课程设计的心得体会

这次单片机课程设计进行了两周的时间,学校安排在学期末带给了我们很多的怨言。

人家都考完试回家了,我们却还得呆在这进行两周的实训。

没办法咬咬牙坚持就是胜利。

还好带我们实训的老师在开学的时候就给了我们实训的题目,于是我们早就开始提前在做,这也生了我们好多接下来的时间。

虽说每个人都是抱着不情愿的态度留在这里实训,但是事情存在就是合理的。

一切事物有利就有弊,有弊就有利。

时间虽短,但是可以让我们能高效的完成实训。

即此课程设计。

这次我分到的题目是电子计数器,相对其它的几个课题我这算是最简单的在我看来。

当然拿到题目首先要做的就是看看任务书里面的要求,然后去找资料。

其实大家都懂,首先在XX上面找一些类似的设计。

果然很巧找到了一个相似度很高的题目。

果断下载下来进行参考。

然后图书馆借了一些书籍,再结合以前的教科书。

准备资料工作就算完成了。

在平时的上课学习中,我们对于书上所讲的感觉很抽象。

在做课程设计时我们从最简单的实物开始做起,在制作过程中,我们首先是实验设计,设计电路图,然后画出电路流程图,设计电子计数器运行程序,同时我们还花费了一些时间寻找课程设计的方法以及一些有关材料,并小组讨论设计。

最终,我们在各个方面实现了对各个部分的电路设计。

在设计过程中,我们遇到了很多的问题,但最终在我们小组的共同努力以及老师和同学的帮助下,把问题都解决了。

设计过程中遇到了点问题,虽说不是什么难懂的问题,但是有的时候每个人都会被很简单的问题困扰。

所谓当局者迷,旁观者清,就是这样吧。

过程中遇到的问题都自己调试解决了。

满足任务书的要求,还添加了额外的亮点!

这次单片机课程设计让我学到了很多东西,利用了一些本学期学到的东西,比如说按键消抖等。

收益良多,感觉还是有点成就感的。

对于同学请教的问题,我也能一一作答。

 

七.参考文献

[1]毅刚喜元宇编:

《单片机原理及应用》第二版高等教育2010

[2]路而红主编:

《电子设计自动化应用技术——FPGA应用篇》高等教育2009

[3]元良王建军等著:

《单片机开发技术实例教程》机械工业2010

[4]皮大能南光群编著:

《单片机课程设计指导书》理工大学2010

[5]胡亚琦主编:

《单片机原理及应用系统设计》电子科技大学2010

[6]毅刚主编《单片机原理及接口技术》人民邮电出版2011

 

附录

1.主程序代码:

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitup=P1^0;

sbitdown=P1^3;

sbitstop=P1^6;

sbitreset=P1^7;

sbitbeep=P3^7;

uintgw,sw,gww,sww,temp;

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

ucharcodeSONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,

212,212,106,126,159,169,190,119,119,126,159,142,159,0};//生日快乐歌的音符频率表,不同频率由不同的延时来决定

ucharcodeSONG_LONG[]={9,3,12,12,12,24,9,3,12,

12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0};//生日快乐歌节拍表,节拍决定每个音符的演奏长短

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

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

}

voidPlayMusic()

{

uinti=0,j,k;

while(SONG_LONG[i]!

=0||SONG_TONE[i]!

=0)

{

for(j=0;j

{

Beep=~beep;

//SONG_TONE延时表决定了每个音符的频率

For(k=0;k

}

Delay(10);

i++;

}

}

voidinit()

{

gw=0;

gww=0;

sw=0;

sww=0;

temp=0;

P0=0;

P2=0xff;

P3=0xff;

beep=0;

P0=table[sw];

P2=table[gw];

IT0=1;

EX0=1;

}

voidkeyscan()

{

if(temp==0)

{

if(up==0)

{

delay(5);

if(up==0)

{

while(!

up);

if(gw==9)

{

gw=0;

P2=table[gw];

if(sw==9)

{

sw=0;

P0=table[sw];

}

else

{

sw++;

P0=table[sw];

}

}

else

{

gw++;

P2=table[gw];

}

}

}

if(down==0)

{

delay(5);

if(down==0)

{

while(!

down);

if(gw==0)

{

gw=9;

P2=table[gw];

if(sw==0)

{

sw=9;

P0=table[sw];

}

else

{

sw--;

P0=table[sw];

}

}

else

{

gw--;

P2=table[gw];

}

}

}

}

if(stop==0)

{

delay(5);

if(stop==0)

{

while(!

stop);

if((gw!

=0)||(sw!

=0))

{

temp++;

if(temp==1)

EA=1;

if(temp==2)

EA=0;

if(temp==3)

{

temp=1;

EA=1;

}

}

}

}

if(reset==0)

{

delay(5);

if(reset==0)

{

while(!

reset);

if((gw!

=0)||(sw!

=0))

{

gw=0;

sw=0;

P2=table[gw];

P0=table[sw];

beep=0;

init();

EA=1;

}

}

}

}

voidmain()

{

init();

while

(1)

{

keyscan();

}

}

voidINT()interrupt0

{

if(gww==9)

{

gww=0;

P2=table[gww];

sww++;

P0=table[sww];

}

else

{

gww++;

P2=table[gww];

P0=table[sww];

}

beep=0;

if((gww==gw)&&(sww==sw))

{EA=0;

PlayMusic();

}

}

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

当前位置:首页 > 高等教育 > 文学

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

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