数字电子计数器课程设计论文Word文件下载.docx
- 文档编号:22233551
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:20
- 大小:126.81KB
数字电子计数器课程设计论文Word文件下载.docx
《数字电子计数器课程设计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字电子计数器课程设计论文Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
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口。
按下up键,显示器上能够逐次加1,按下down键,显示器上能够逐次减1,在按下stop键一次,可以按下计数键进行计数。
计数到达预设定的初值后报警器工作,播放一段音乐。
此时计数器不能继续工作,等到音乐结束后按下stop键计数器恢复计数,按下复位键,重新开始设定计数值开始下一轮计数;
3.4计数报警部分
图4计数报警部分
计数报警部分:
计数报警部分由报警器和计数按键组成。
分别接P3.7和P3.2口。
计数次数达到后报警器开始工作播放一段音乐。
当计数到达预设定的初值后报警器工作,播放一段音乐。
四.程序清单及流程图
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流程图
工作流程:
按下up键,显示器上能够逐次加1,按下down键,显示器上能够逐次减1,在按下stop键一次,可以按下beep键进行计数。
五.调试、运行及其结果
刚开始程序设计中基本上是完好的,程序可以实现设定预置值的加减计数。
然后通过数码管显示预置值。
程序在执行的过程中按下stop键开始允许计数。
通过右边的计数键开始重新计数显示,依然用的刚刚的数码管。
一切功能都进行的很顺利,但是等到一遍程序执行完的时候,按下复位键,数码管归零。
本以为一切都正常的时候重新试了下计数。
发现不能动,没有恢复到初始状态。
最后思考了一下,在rset程序里面加了一个子函数init。
调试了一下果然可以了。
刚开始只设计了报警,也就是简单的让报警器恒等于一。
但是看了任务书,觉得给它加上一段音乐,感觉这个想法不错。
虽说满足了老师的基本要求,但是总觉得可以做的更好,所以我在此基础上给它加了一段音乐,但是乐谱自己真的是没有编过,于是就在网上XX了乐谱,然后结合自己的程序整合了一下,最终选了一个简单的生日歌添加进自己的程序。
只要计数数值达到设定的值就开始播放一段音乐,比起刺耳的报警声和谐了不少!
图5.程序调试运行成功图
六.课程设计的心得体会
这次单片机课程设计进行了两周的时间,学校安排在学期末带给了我们很多的怨言。
人家都考完试回家了,我们却还得呆在这进行两周的实训。
没办法咬咬牙坚持就是胜利。
还好带我们实训的老师在开学的时候就给了我们实训的题目,于是我们早就开始提前在做,这也生了我们好多接下来的时间。
虽说每个人都是抱着不情愿的态度留在这里实训,但是事情存在就是合理的。
一切事物有利就有弊,有弊就有利。
时间虽短,但是可以让我们能高效的完成实训。
即此课程设计。
这次我分到的题目是电子计数器,相对其它的几个课题我这算是最简单的在我看来。
当然拿到题目首先要做的就是看看任务书里面的要求,然后去找资料。
其实大家都懂,首先在XX上面找一些类似的设计。
果然很巧找到了一个相似度很高的题目。
果断下载下来进行参考。
然后图书馆借了一些书籍,再结合以前的教科书。
准备资料工作就算完成了。
在平时的上课学习中,我们对于书上所讲的感觉很抽象。
在做课程设计时我们从最简单的实物开始做起,在制作过程中,我们首先是实验设计,设计电路图,然后画出电路流程图,设计电子计数器运行程序,同时我们还花费了一些时间寻找课程设计的方法以及一些有关材料,并小组讨论设计。
最终,我们在各个方面实现了对各个部分的电路设计。
在设计过程中,我们遇到了很多的问题,但最终在我们小组的共同努力以及老师和同学的帮助下,把问题都解决了。
设计过程中遇到了点问题,虽说不是什么难懂的问题,但是有的时候每个人都会被很简单的问题困扰。
所谓当局者迷,旁观者清,就是这样吧。
过程中遇到的问题都自己调试解决了。
满足任务书的要求,还添加了额外的亮点!
这次单片机课程设计让我学到了很多东西,利用了一些本学期学到的东西,比如说按键消抖等。
收益良多,感觉还是有点成就感的。
对于同学请教的问题,我也能一一作答。
七.参考文献
[1]张毅刚彭喜元彭宇编:
《单片机原理及应用》第二版高等教育出版社2010
[2]路而红主编:
《电子设计自动化应用技术——FPGA应用篇》高等教育出版社2009
[3]张元良王建军等著:
《单片机开发技术实例教程》机械工业出版社2010
[4]皮大能南光群刘金华编著:
《单片机课程设计指导书》北京理工大学出版社2010
[5]胡亚琦主编:
《单片机原理及应用系统设计》西安电子科技大学出版社2010
[6]张毅刚主编《单片机原理及接口技术》人民邮电出版社出版2011
附录
1.主程序代码:
#include<
reg51.h>
#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>
y--);
}
voidPlayMusic()
{
uinti=0,j,k;
while(SONG_LONG[i]!
=0||SONG_TONE[i]!
=0)
for(j=0;
j<
SONG_LONG[i]*20;
j++)//播放各个音符,SONG_LONG为拍子长度
Beep=~beep;
//SONG_TONE延时表决定了每个音符的频率
For(k=0;
k<
SONG_TONE[i]/2;
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);
{
while(!
up);
if(gw==9)
{
gw=0;
P2=table[gw];
if(sw==9)
{
sw=0;
P0=table[sw];
}
else
sw++;
}
else
gw++;
}
}
if(down==0)
delay(5);
if(down==0)
down);
if(gw==0)
{
gw=9;
P2=table[gw];
if(sw==0)
sw=9;
P0=table[sw];
sw--;
gw--;
}
}
if(stop==0)
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;
}
if(reset==0)
{
if(reset==0)
reset);
if((gw!
gw=0;
sw=0;
P0=table[sw];
beep=0;
init();
voidmain()
init();
while
(1)
keyscan();
voidINT()interrupt0
if(gww==9)
gww=0;
P2=table[gww];
sww++;
P0=table[sww];
else
gww++;
beep=0;
if((gww==gw)&
&
(sww==sw))
{EA=0;
PlayMusic();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 电子 计数器 课程设计 论文