均值计算器绝对准确.docx

上传人:b****6 文档编号:15604464 上传时间:2023-07-06 格式:DOCX 页数:17 大小:312.97KB
下载 相关 举报
均值计算器绝对准确.docx_第1页
第1页 / 共17页
均值计算器绝对准确.docx_第2页
第2页 / 共17页
均值计算器绝对准确.docx_第3页
第3页 / 共17页
均值计算器绝对准确.docx_第4页
第4页 / 共17页
均值计算器绝对准确.docx_第5页
第5页 / 共17页
均值计算器绝对准确.docx_第6页
第6页 / 共17页
均值计算器绝对准确.docx_第7页
第7页 / 共17页
均值计算器绝对准确.docx_第8页
第8页 / 共17页
均值计算器绝对准确.docx_第9页
第9页 / 共17页
均值计算器绝对准确.docx_第10页
第10页 / 共17页
均值计算器绝对准确.docx_第11页
第11页 / 共17页
均值计算器绝对准确.docx_第12页
第12页 / 共17页
均值计算器绝对准确.docx_第13页
第13页 / 共17页
均值计算器绝对准确.docx_第14页
第14页 / 共17页
均值计算器绝对准确.docx_第15页
第15页 / 共17页
均值计算器绝对准确.docx_第16页
第16页 / 共17页
均值计算器绝对准确.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

均值计算器绝对准确.docx

《均值计算器绝对准确.docx》由会员分享,可在线阅读,更多相关《均值计算器绝对准确.docx(17页珍藏版)》请在冰点文库上搜索。

均值计算器绝对准确.docx

均值计算器绝对准确

信息与电气工程学院

课程设计说明书

(2013/2014学年第二学期)

 

课程名称:

单片机应用课程设计

题目:

求均值计算器的设计

专业班级:

电气工程及其自动化1104班

学生姓名:

韩超

学号:

110060427

指导教师:

刘增环、岑毅南、高敬格等

设计周数:

2周

设计成绩:

2014年6月26日

\

目录

一、课程设计目的„„„„„„„„„„„„„„„„„„„„„„

二、课程设计正文„„„„„„„„„„„„„„„„„„„„„„

2.1、设计所需器材„„„„„„„„„„„„„„„„„„„„

2.2、设计任务和要求„„„„„„„„„„„„„„„„„„„

2.3、设计方案„„„„„„„„„„„„„„„„„„„„„„

2.3.1、硬件设计„„„„„„„„„„„„„„„„„„„

1.STC90C52AD说明„„„„„„„„„„„„„„

2.数码管说明„„„„„„„„„„„„„„„„

3.晶体振荡电路设计„„„„„„„„„„„„„„„„

4.数码管和位选设计„„„„„„„„„„„„„„„„

5.复位设计„„„„„„„„„„„„„„„„„„

6.矩阵键盘设计„„„„„„„„„„„„„„„„

2.3.2、软件设计„„„„„„„„„„„„„„„„„„„

1.主程序流程图„„„„„„„„„„„„„„

2.显示程序流程图„„„„„„„„„„„„„

3.按键扫描程序流程图„„„„„„„„„„„„„„„„

4.系统程序„„„„„„„„„„„„„„„„„„

2.3.3、软硬件调试„„„„„„„„„„„„„„„„„„

三、课程设计总结„„„„„„„„„„„„„„„„„„„„„„„

四、心得体会„„„„„„„„„„„„„„„„„„„„„„„

五、参考文献„„„„„„„„„„„„„„„„„„„„„„„„„

附录一、系统原理图„„„„„„„„„„„„„„„„„„„„„„

附录二、系统PCB图„„„„„„„„„„„„„„„„„„„„„„

附录三、系统仿真图„„„„„„„„„„„„„„„„„„„„„„

 

一、课程设计目的

1.进一步熟悉和掌握单片机的结构及工作原理。

2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。

4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。

二、课程设计正文

2.1设计所需器材

电阻:

330k(7个),1k(3个)

按键开关:

SW-PB(12个)

单片机最小系统(1个)

三极管:

9012PNP型(3个)

数码管:

共阳型(2个)

底座:

DIP40(1个)、DIP20(1个)

万能电路板:

1个

DB9针形座:

1个

排线、电源接线若干

2.2设计任务和要求

本次课程设计,我们要求做的是求均值计算器。

设计的主要内容是采用STC90C52AD作为控制单元,实现计算器设计。

原始数据及主要任务:

设计一个以STC90C52AD单片机为核心的求均值计算器系统。

能够进行10以内的多个数字求平均值运算,且具备清零功能。

10个数字键,2个功能键。

最后求出的均值小数点保留1位显示。

主要任务:

(1)确定总体设计方案;

(2)3位数码管显示电路设计,3*4按键电路设计;

(3)设计硬件电路原理图和PCB图,绘制软件程序流程图,编写程序;

(4)软硬件联机调试。

技术要求:

以STC90C52AD单片机为核心,使用P1.0-P1.6接3*4矩阵按键;P0.0、P0.1、P0.2用作数码管位选通端口,P2.7控制数码管DP段。

P2.0-P2.6接数码管的a,b,c,d,e,f,g。

2.3设计方案

求均值计算器的主要的部分是STC90C52AD,使用合适的I/O口接3*4矩阵按键及数码管驱动端口,通过行扫描法对矩阵键盘进行扫描,确定是哪一个按键按下,然后单片机实现相应的计算,由对应的段选点亮LED数码管显示计算结果。

2.3.1硬件设计

1.STC90C52AD说明

AT89C51的引说明和功能说明如下:

XTAL1:

接外部晶振的一个引脚。

在单片机内部,它是一反相放大器输入端,这个放大器构成了片内振荡器。

它采用外部振荡器时,些引脚应接地。

XTAL2:

接外部晶振的一个引脚。

在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。

当采用外部振荡器时,则此引脚接外部振荡信号的输入。

RST:

STC90C52AD的复位信号输入引脚,高电位工作,当要对芯片又时,只要将此引脚电位提升到高电位,并持续两个机器周期以上的时间,AT89C51便能完成系统复位的各项工作,使得内部特殊功能寄存器的内容均被设成已知状态。

P0口(P0.0~P0.7)是一个8位漏极开路双向输入输出端口,当访问外部数据时,它是地址总线(低8位)和数据总线复用。

外部不扩展而单片应用时,则作一般双向I/O口用。

P0口每一个引脚可以推动8个LSTTL负载。

P2口(P2.0~P2.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),当访问外部程序存储器时,它是高8位地址。

外部不扩展而单片应用时,则作一般双向I/O口用。

每一个引脚可以推动4个LSTL负载。

P1口(P1.0~P1.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),其输出可以推动4个LSTTL负载。

仅供用户作为输入输出用的端口。

P3口(P3.0~P3.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),它还提供特殊功能,包括串行通信、外部中断控制、计时计数控制及外部随机存储器内容的读取或写入控制等功能。

2.共阳数码管

LED显示器由8段发光二极管组成,排列成8字形状,称为8段LED显示器,器件各引脚如图所示:

为了显示数字或符号,要为LED显示器提供代码,即字形代码。

七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。

均值计算器用到的数字0~9的共阴极字形代码如下表:

显示字符

0

1

2

3

4

5

6

7

8

9

共阳极段码

C0H

F9H

A4H

B0H

99H

92H

82H

F8H

80H

90H

 

3.晶体振荡电路设计

图2.3-2晶体振荡电路

采用6MHZ的晶振,接在芯片的18,19引脚上。

在复位端口加低电平。

4.数码管和位选设计

图2.3-3数码管和位选电路

需要显示数值选用共阳极的数码管是三极管驱动,接有1k欧姆的保护电阻而成的两个数码管在显示时需要选通,采用STC90C52AD的P0.1和P0.2口作为位选信号的输出端,低电平有效。

5.复位设计

复位键直接加在单片机的复位端,当按键RST被按下时,系统复位。

6.矩阵键盘的设计

矩阵键盘

开关接在P1口上,P1.0~P1.7,按键按下后相应的按键由高电平变为低电平,P1.0~P1.3为列。

2.3.2软件设计

1.主程序设计

先将参数初始化,使数码管显示零,然后键盘行扫描,当扫描的键值为0到9时,数码管显示按下的键值,并且将按下的键值累加,存储在一个变量中;当扫描的键值为11时,单片机程序实现求均值功能,数码管显示均值结果;当扫描到的键值是10时,将数码管重新清零。

键盘重复扫描,计算器实现重复工作。

2.显示程序设计

当扫描程序返回的值为0到9并且按下开关的次数小于10次时,右边的数码管选通显示按下的开关对应的数值;当按下开关的次数大于10时,右边的数码管选通并都显示零;当扫描程序返回的值为10时,两个数码管都选通且都显示零;当扫描程序返回的值为11时,左边数码管小数点亮,左边数码管显示个位数,右边数码管显示第一位小数。

3.按键扫描程序设计

逐次列扫描,第一列扫描时P1.0置低电平,然后P1.4到P1.6口依次置低电平,这样能够依次扫描出0、1、2开关,第二列和第三列扫描情况同上。

4.系统程序

#include

#defineucharunsignedchar

#defineuintunsignedint

uintnum,temp,s1,s2,s3,count,ge,yu;

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

voiddelay(uintz)

{

uintx,y;

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

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

;

}

voiddisplay(uchargeucharyu)

{

P2=table[ge];

P0=0xfd;

Delay(5);

P2=table[yu];

P0=0xfb;

Delay(5);

}

voidmain()

{

s1=0;

s2=0;

s3=0;

count=0;

while

(1)

{

P1=0xfe;

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P1;

switch(temp)

{

case0xee:

s1=0;

break;

case0xde:

s1=1;

break;

case0xbe:

s1=2;

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

count++;

s3=s1*10;

s2=s2+s3;

}

}

P1=0xfd;

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P1;

switch(temp)

{

case0xed:

s1=3;

break;

case0xdd:

s1=4;

break;

case0xbd:

s1=5;

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

count++;

s3=s1*10;

s2=s2+s3;

}

}

P1=0xfb;

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P1;

switch(temp)

{

case0xeb:

s1=6;

break;

case0xdb:

s1=7;

break;

case0xbb:

s1=8;

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

count++;

s3=s1*10;

s2=s2+s3;

}

}

P1=0xf7;

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P1;

switch(temp)

{

case0xe7:

s1=9;

count++;

s3=s1*10;

s2=s2+s3;

break;

case0xd7:

s1=0,s2=0,count=0;

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

}

shi=s2/count/100;

ge=s2/count%100/10;

yu=s2/count%100%10;

display(ge,yu);

}

}

2.3.3、软硬件调试

系统调试:

根据系统设计方案,本系统的调试共分为两大部分:

硬件调试,软件调试。

(1)硬件调试

对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。

首先用数字万用表对实物板上的各元器件进行测试,在测试过程中,检验出一些错误,例如,数码管的a-g端所对应的引脚是哪一位,正确焊接电路。

(2)软件调试

软件调试采用单片机仿真器keiluVision及protus,将编好的程序进行调试,首先主要是检查语法错误。

再进行仿真,检验各个子程序是否正确执行,和硬件模块的协调性。

由于能力有限,程序中仍然存在很多错误,不能显示均值结果,经过大家互相讨论和别的同学的指点,最终能够正常显示出平均值。

三、课程设计总结

我们课程设计的题目是“求均值计算器”,看似简单,题目要求也不多,但是真正着手时才发现无从下手,虽然有两星期的时间,但是感觉非常的紧迫。

究其原因是平时学习生活中,对单片机等理论知识不够精通,而且很多东西仅凭书本上的介绍根本没有办法实现。

我们组有四个成员,令人欣慰的是,经过我们不懈的努力,课程设计取得一定的成果。

我们是第一次遇到关于单片机这样的设计题目,通过亲身经历课程设计的全过程,我们感觉在单片机领域,我们认识到的还远远不够,还有很多知识需要学习掌握,当我们通过自己的努力取得成果时,一种心理上的自豪感和成就感油然而生。

而且,在课程设计过程中,我们认识到了团队协作的重要性,大家分工合作,感觉很充实。

在查阅资料的过程中我还了解到了单片机的巨大应用市场,认识到其重要性。

我想在以后的日子里,这个过程会成为我人生的美好而难忘的回忆,汗水是我们努力的过程,更是成功的使者。

最后,我真心的感谢所有帮助过的同学们,还有实验室为大家不辞辛劳的各位老师!

希望这样的课程设计能够继续下去,帮助更多的学生锻炼动手动脑的实践能力。

四.心得体会

三人一组的为期两周的单片机课程设计,虽然时间短,但是增强了动手能力,把课本知识与实践相结合,理论联系实际。

同时也从这次课设中受益匪浅,感触最深的是,动手之前一定要清晰的设计思路,并且千万记得先检查电子器件的好坏,否则前功尽弃,比如我们组在焊接电路板是没有检查电路板的完好与连通性,电路板上的P1.0所在的连通的线路并没有导通,使得所焊接的键盘的第一列扫描不上而出现乱码;除此之外,还要在上电前,检查线路端口的极性,以免烧坏器件等问题。

实际和理论是有一定差距的

五.参考文献

[1]张毅刚.单片机原理及应用.高等教育出版社,2003

[2]苏家键等.单片机原理及应用技术.北京:

高等教育出版社,2004

[3]钟睿.MCS-51单片机原理及应用开发技术.北京:

中国铁道出版社,2006

[4]蓝清华等.单片机应用教程.北京:

清华大学出版社,1999

[5]范蟠果.工控单片机原理及应用.北京:

清华大学出版社,2007

 

附录一、系统原理图

 

附录二、PCB图

 

附录三、仿真图

附释(在仿真图中我们运用了CD4511共阴极数码管驱动芯片,但在实际中我们却只用了共阳极数码管,时间仓促,没来得及修改,原因只是单片机最小系统上引脚覆铜存在断路,P3口无法实现动态显示的位扫描,主题原因不详,过多的耽误了时间)

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

当前位置:首页 > 经管营销 > 经济市场

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

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