单片机课程设计流水线计数器.docx
- 文档编号:27922542
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:17
- 大小:144.68KB
单片机课程设计流水线计数器.docx
《单片机课程设计流水线计数器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计流水线计数器.docx(17页珍藏版)》请在冰豆网上搜索。
单片机课程设计流水线计数器
单片机课程设计--流水线计数器
课程设计报告
课程名称:
单片机课程设计题目:
流水线计数器
学院:
环境与化学工程系:
过程装备与测控工程
专业:
测控技术与仪器
班级:
学号:
学生姓名:
起讫日期:
2012-12-19,2012-12-26
指导教师:
摘要
单片机在工业领域有着广泛的应用。
在这些应用中,计数器是一个非常基础和重要的组成单元,可以信号数据的记录处理和控制,组成更加整个复杂的控制系统。
虽然在工业上有些功能单元在原理和结构上是很简单基础的,但优化这些基础功能的电路和处理模式对提高整个控制系统工作效率和结构有很大帮助。
如流水生产线上的计数器等。
关键词:
(3,5个)单片机计数器记数报警
摘要..............................................................................................................................................-0-
目录..............................................................................................................................................-0-
一、设计任务、要求..........................................................................................................-1-
1、设计任务:
设计一个基于51单片机的计数显示系统。
..................................-1-
2、设计要求:
............................................................................................................-1-
3、发挥部分:
............................................................................................................-1-二、方案总体设计..............................................................................................................-1-
1、总体描述................................................................................................................-1-
2、总体设计:
............................................................................................................-1-三、硬件设计......................................................................................................................-2-
1、STC89C52单片机最小系统.................................................................................-2-
2、数码管显示电路....................................................................................................-3-
一、键盘输入............................................................................................................-3-
二、复位电路............................................................................................................-4-
三、指示功能电路....................................................................................................-4-
四、整体电路............................................................................................................-5-四、软件设计......................................................................................................................-5-五、系统调试与说明........................................................................................................-6-
1、实物图见附录........................................................................................................-6-
2、使用说明................................................................................................................-6-六、设计总结..............................................................................................................................-7-
附录:
.............................................................................................................................-7-
七、参考文献............................................................................................................................-14-
一、设计任务、要求
1、设计任务:
设计一个基于51单片机的计数显示系统。
2、设计要求:
(1)设计能实现外部输入计数和显示功能的计数器。
(2)计数器具有设置功能,可以完成四位数据的输入。
(3)计数达到预设置数时,能够报警提示。
3、发挥部分:
(1)简化电路,使用四个按键完成四位数据输入。
二、方案总体设计
1、总体描述
(1)单片机采用STC89C52型
(2)数据显示电路:
七段四位共阴极数码管,P1口控制八位段码,P3.4到P3.7
控制四位位码。
(3)数据输入电路:
四个按键完成输入,一号键控制个位加1,可以实现从1加到
9;二号键控制十位加一;三号键控制百位加一;四号键控制千位加一。
(4)功能指示
电路:
上电指示发光二极管,P26口控制蜂鸣器报警功能。
2、总体设计:
(1)设计总体框架图如图1所示。
设置数STC
蜂鸣器报警
89C52开始
-1-计数
图1
(2)总体方案工作原理:
采用STC89C51单片机作为本系统的控制模块,可由键盘输入设置数值,并记录显示外部计数信号。
计数信号达到设置值时,可输出指示和控制信号完成计数和显示控制功能。
三、硬件设计
1、STC89C52单片机最小系统
最小系统包括晶体振荡电路、复位开关和电源部分。
图为STC89C52单片机的最小系统。
复位口为P3.0口,当RST引脚有一个高电平并维持两个机器周期,则CPU就可以响应并将系统复位。
需要200欧,1000欧电阻各一个,22微法电容一个,按键一个。
时钟电路需要在XTAL1,2,两个端口跨接石英晶体及两个电容,电容一般取30pF左右。
-2-
2、数码管显示电路
我的数码管为共阴极,八个段选端接P1口,四个位选端接P3口,如上图所示。
一、键盘输入
上图为3*3矩阵键盘扫描电路的接法,三行分别相连接P2.5,P2.4,P2.3口,三列分别相连接P2.2,P2.1,P2.0口。
先给所有行线一个低电平,然后将列线口的电平状态读入单片机,如果有按键按下,总有一根列线电平被拉至低电平,从而使输入不全为1.
判断键盘中哪一个键被按下是通过将行线逐行置低电平后,检查列输入状态实现的。
方法是:
依次给行线送低电平,然后查所有列线状态,称行扫描。
如果全为1,则所按下的键不在此行,如果不全为1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个键。
-3-
二、复位电路
三、指示功能电路
指示功能电路中,预先给定一个数值,计数达到预设定值时,蜂鸣器发出声音报警。
-4-
四、整体电路
四、软件设计
程序流程下图所示。
-5-
五、系统调试与说明
1、实物图见附录
2、使用说明
系统通电后,进入计数设置功能,等待信号的数据输入,当完成设置数值后,开始计数,此时如果对所记录的数据清零则返回到设置数值界面,可以重新设置数值。
当所记录的数值等于预设定的数时,蜂鸣器发声报警。
321
654
987
键盘模拟图
1一二三四号键分别对应个十百千位数值的设置加一功能。
七号键为计数功能键,八号键为清零键。
在软件编写与调试时,我发现有很多我原来所没有注意到的问题,硬件完成焊接后,先用万用表简单的进行是否短路检测,没有问题后进行通电测试,发现上电指示灯亮,然后下程序到单片机内检测是否能下载程序;刚开始的时候,我的不能下程序,我首先按照原理图检查了一遍最小系统,发现复位电路存在问题,经修改后还是不能下程序,
-6-
怎么试都不行,我又检查了电路和最小系统发现都没有问题,最后听同学说可能是杜邦线的问题,经过检查后发现我的四根杜邦线有两根都是坏的。
这是我所没有想到的,换了好的后,就可以下程序了。
当编写完程序进行调试时,又发现存在很多的问题,首先是数码管的段码位码的问题,这个需要自己根据自己的电路来计算而不是统一的一样,这个问题直到我知道后才解决掉。
然后是矩阵键盘扫描的程序的调试,这个也要自己根据自己的电路接口来计算所要输送的十六进制数码,而且还要通过软件去抖动,还要判断按键是否松开等问题,这个花费的时间较长些,最后通过把按键扫描和数码管动态显示组合到一起,发现还是有问题,这个当然是软件上的问题。
当实现这个功能之后,我要实现自己的计数功能和显示功能,在这个过程中,设置的数的显示和所要计的数的显示又存在问题,原因是他们会同时显示,出现重叠乱码现象,为此我请教了很多同学,最后,通过分别定义不同变量,用数组解决了这个问题。
最后就是要实现蜂鸣器报警的功能。
在这个上面,我没有花费很多时间,而只是简单的让它发出声音即可。
六、设计总结
经过这接近两周的单片机课程设计,完成以STC89C52为核心的计数器的设计和制作,并能实现计数显示和设置功能。
当我回首这几天的生活,发现除了最让我感到满足的充实之外,对所用到知识的不懂也很令我震撼,往日的知识就在使用的时候才显示出它的重要性,我对我往日的无知而深感惭愧。
不是每个人都能随随便便成功。
只有通过勤学多看多思考,多动手把所学的东西用到实际生活中,才能真正感受到知识的力量。
若非一番寒彻骨,怎得梅花扑鼻香~最后当我实现自己所想要表达的东西的时候,那种久违的小成就感油然而生~用一句话来结尾吧:
路漫漫其修远兮,吾将上下而求索。
附录:
实物图:
-7-
源程序:
#include
#defineuintunsignedint#defineucharunsignedchar//段码
ucharcodetable[]={0xD7,0x11,0xCD,0x5D,0x1B,0x5E,0xDE,0x15,0xDF,0x5F};
//位码表
ucharcodewei[]=
{0x7f,0xef,0xdf,0xbf};uinttemp,num,ge,shi,bai,qian,m,numset;
voiddelay(ucharz);
voiddisplay();
voidkey();
-8-
voidshow();
voidshow1();
voidbeep();
sbitd=P2^6;
ucharx,y,z;
intnumber[4];voidmain()
{
m=0;ge=0;shi=0;bai=0;qian=0;
while
(1)
{
key();
show();
while(num==7)
{show1();
key();}
}
}
voidshow()//显示程序2
{
key();
P3=wei[0];
P1=table[ge];
delay(5);
P3=0xff;
if(ge==10)ge=0;
P3=wei[1];
P1=table[shi];
delay(5);
P3=0xff;
if(shi==10)shi=0;
P3=wei[2];
-9-
P1=table[bai];
delay(5);
P3=0xff;
if(bai==10)bai=0;
P3=wei[3];
P1=table[qian];
delay(5);
P3=0xff;
if(qian==10)qian=0;numset=ge+shi*10+bai*100+qian*1000;
}
voidkey()//按键检测
{
P2=0x1f;
temp=P2;
temp=temp&0x1f;
if(temp!
=0x1f)
{
delay(5);
temp=P2;
temp=temp&0x1f;
if(temp!
=0x1f)
{
temp=P2;
switch(temp)
{
case0x1e:
num=1;ge++;break;
case0x1d:
num=2;shi++;break;
case0x1b:
num=3;bai++;break;
}
while(temp!
=0x1f)
{
temp=P2;
-10-
temp=temp&0x1f;
}
}
}
P2=0x2f;
temp=P2;
temp=temp&0x2f;
if(temp!
=0x2f)
{
delay(5);
temp=P2;
temp=temp&0x2f;
if(temp!
=0x2f)
{
temp=P2;
switch(temp)
{
case0x2e:
num=4;qian++;break;
case0x2d:
num=5;break;
case0x2b:
num=6;break;
}
}
while(temp!
=0x2f)
{
temp=P2;
temp=temp&0x2f;
}
}
P2=0x37;
temp=P2;
temp=temp&0x37;
if(temp!
=0x37)
{
-11-
delay(5);
temp=P2;
temp=temp&0x37;
if(temp!
=0x37)
{
temp=P2;
switch(temp)
{
case0x36:
num=7;m++;break;
case0x35:
num=8;m=0;break;
case0x33:
num=9;break;
}
}
while(temp!
=0x37)
{
temp=P2;
temp=temp&0x37;
}
}
}
voiddelay(charz)//延时程序
{
charx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);}
//报警
voidbeep()
{
duan=1;
delay(20000);
duan=0;
-12-
}
//显示程序1
voidshow1()
{
key();
number[0]=m%10;
number[1]=m%100/10;
number[2]=m%1000/100;
number[3]=m/10000/1000;
P3=0xff;
P1=table[number[0]];
P3=wei[00];
delay(5);
P3=0xff;
P1=table[number[1]];
P3=wei[01];
delay(5);
P3=0xff;
P1=table[number[2]];
P3=wei[02];
delay(5);
P3=0xff;
P1=table[number[3]];
P3=wei[03];
delay(5);
if(m==numset)
{
beep();
delay(10);
}
}
-13-
七、参考文献
[1]李朝青.单片机原理及接口技术(第3版)[M].北京:
北京航天航空大学出版社,2005.
-14-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 流水线 计数器