简易计算器课程设计 报告Word文档格式.docx
- 文档编号:20717250
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:21
- 大小:201.84KB
简易计算器课程设计 报告Word文档格式.docx
《简易计算器课程设计 报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《简易计算器课程设计 报告Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
二、课程设计正文
2.1设计所需器材
电阻:
1K(8个)0.330k(8个)10k(1个)按键开关:
17个
极性电容(1个10uf)
非极性电容:
30pf(5个)
晶振:
6MHZ(1个)
三极管:
PNP(1个)NPN(2个)
共阴极数码管:
2个
蜂鸣器:
1个
底座:
DIP40(1个)DIP16(1个)
万能电路板:
芯片:
STC90C52AD(1片)MAX232(1片),74HC573(片)
发光二极管:
3个
接线端子:
2.2设计任务和要求
课程设计任务要求做一个简易数字计算器。
设计的主要内容是采用STC90C51AD作为控制单元,实现简易计算器功能。
原始数据及主要任务:
设计一个以MCS-51单片机为核心的简易计算器系统。
能够进行5以内的数字简单的加,减,乘,除运算,用2个数码管显示运算结果。
若进行除法运算,则小数点保留1位显示。
如果除数为0,则清0显示,且蜂鸣器响,当按下任意键后,蜂鸣器停止。
主要任务:
(1)确定总体设计方案;
(2)2位数码管显示电路设计,4*4按键电路设计,报警电路设计;
(3)设计硬件电路原理图和PCB图,绘制软件程序流程图,编写程序;
(4)软硬件联机调试。
技术要求:
以MCS-51单片机为核心,主机用P1口接4*4矩阵按键;
P0口用作数码管段码接口,P2端口用作数码管位码选通接口和蜂鸣器电路接口。
2.3设计方案
简易数字计算器设计,主要的部分是STC90C52AD,编写程序,实现软硬结合,能够进行5以内的数字简单的加,减,乘,除运算,且具备清零功能。
6个数字键,6个功能键。
进行除法运算时,小数点保留1位显示。
如果除数为0,则清0显示,蜂鸣器响,当按下任意键后,蜂鸣器停止。
可扩展计算连续功能,数据溢出清0显示,蜂鸣器响,按下任意键后,蜂鸣器停止。
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位地址。
每一个引脚可以推动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的共阴极字形代码如下表:
显示字符
1
2
3
4
5
+
-
*
/
段码
3FH
06H
5BH
4FH
66H
6DH
70H
40H
76H
49H
3.晶体振荡电路设计
图2.3-2晶体振荡电路
采用12MHZ的晶振,接在芯片的18,19引脚上。
在复位端口加低电平。
4.数码管和位选设计
图2.3-3数码管和位选电路
需要显示时间选用共阴极的数码管是三极管驱动,接有1000欧姆的保护电阻而成的两个数码管在显示时需要选通,采用STC90C52AD的P0口作为位选信号的输出端,高电平有效。
由于P0口有8个输出端,当端口为高电平使对应的数码管选通。
共阴极的数码管是低电平有效,所以采用NPN的三极管。
5.复位设计
复位键直接加在单片机的复位端,当按键S1被按下时,系统复位。
图2.3-4复位电路
6.蜂鸣器电路设计
图2.3-5蜂鸣器电路
蜂鸣器接在P3.5口上,当触发时P3.5产生低电平使其导通,蜂鸣器响,报警。
7.矩阵键盘的设计
图2.3-6矩阵键盘
开关接在P1口上,P1.0~P1.7,按键按下后相应的按键由高电平变为低电平,P1.0~P1.3为行。
2.3.2软件设计
系统程序:
#include<
stdio.h>
reg52.h>
absacc.h>
intrins.h>
math.h>
#defineuintlong
#defineucharunsignedchar
//'
0'
'
1'
2'
3'
4'
5'
6'
7'
8'
9'
-'
ucharzixing[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
ucharzixing1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//
floatnum,a_chufa;
uintop=0;
//用来存储加、减、乘、除、清零,操作符
uintpreop=20;
//操作符记忆,记忆一次按下的操作符
uintfirst=0;
//前一个数值
uintsecond=0;
//按键输入数值
uintresult=0;
//执行运算后的结果
uintkey=12;
//读取的键值
floatdisp=0;
//显示的数值
sbits0=P2^2;
//蜂鸣器接P口
sbits1=P0^7;
//小数点亮灭控制P口
voiddisplay();
//显示子程序
ucharkbscan(void);
//键盘扫描子程序
voidyunsuan(void);
//运算子程序
voidd1ms(intn);
//延时子程序
voidsound(void);
/*------主程序------*/
voidmain(void)
{
uchari,j=0;
P0=0xc0;
//数码管显示数值清零
while
(1)//主循环
{
display();
//读取键值
d1ms
(1);
//延时1ms
if(key>
=0&
&
key<
=5)//按键为0~5,读取数值并显示second
{
second=key;
disp=second;
display();
key=12;
if(preop==55)//等号结束后,输入新数字。
清零各项
{preop=20;
}
d1ms
(1);
}
elseif(key>
=6&
=9)//按键为6~9,调用四则运算
op=key;
if((key==6)||(key==7))
//+-
else
key=13;
yunsuan();
elseif(key==10)//键值为10时为C/ON键
disp=0;
first=0;
//清零,恢复初始状态
second=0;
op=0;
result=0;
preop=20;
}
elseif(key==11)//键值为11时,为等号
op=key;
preop=55;
//表示清除操作符记忆
for(i=0;
i<
200;
i++){};
}
/*------四则运算子程序------*//*改过再看一遍*/
voidyunsuan(void)
if(op!
=0)
switch(preop)
case6:
//加法
result=first+second;
first=result;
disp=result;
preop=op;
op=0;
second=0;
break;
case7:
//减法
result=first-second;
case8:
//乘法
result=first*second;
//0
//0
//8
if(key==12)//+-
else
second=1;
case9:
//除法
if(second==0)//除数为零,清零,蜂鸣器响
{
disp=100;
sound();
}
a_chufa=(first*10*0.1)/second;
first=a_chufa;
disp=a_chufa;
preop=op;
op=0;
if(key==12)//+-
else
second=1;
case20:
//初次运行执行这里,没有操作符记忆时(什么叫初次运行)
first=second;
default:
//其他,请按键输入数字
}
/*------显示子程序------*/
voiddisplay()
uintbuf1,buf2,a,b;
floatk=0.0;
key=kbscan();
k=disp;
if(k<
0&
k>
-10)
k=-k;
P2=0xfe;
P0=zixing[10];
P2=0xff;
P2=0xfd;
P0=zixing[(int)k];
}
elseif(k>
k<
10)//有小数时
a=((int)(k*100))%10;
//第二位小数数值
b=((int)(k*10))%10;
//第一位小数数值
buf1=(int)k;
if(a>
=5)
buf2=b+1;
elsebuf2=b;
if(a!
=0||b!
P2=0xfe;
P0=zixing1[buf1];
P2=0xfd;
P0=zixing[buf2];
else
P0=zixing[buf1];
=10&
=99)//两位数时
buf1=(int)k/10;
buf2=(int)k%10;
P0=zixing[buf1];
P0=zixing[buf2];
=100||k<
=-10)//超出显示范围报错
P0=0x86;
sound();
//
voidd1ms(intn)
inti;
for(;
n>
0;
n--)
250;
ucharkbscan(void)
ucharvalue=12,temp;
P1=0xfe;
//扫描第一行
temp=P1;
temp=temp&
0xf0;
if(temp!
=0xf0)
d1ms(5);
if(temp!
{
switch(temp)
case0xe0:
value=3;
break;
case0xd0:
value=2;
case0xb0:
value=1;
case0x70:
value=0;
}
P1=0xfd;
//扫描第二行
value=7;
value=6;
value=5;
value=4;
}
P1=0xfb;
//扫描第三行
value=11;
value=10;
value=9;
value=8;
returnvalue;
/*----发声子程序----*/
voidsound(void)
s0=0;
while(!
s0)
key=kbscan();
if(key<
14)
s0=1;
2.4、软硬件调试
系统调试:
根据系统设计方案,本系统的调试共分为两大部分:
硬件调试,软件调试。
(1)硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
首先用数字万用表对实物板上的各元器件进行测试,在测试过程中,检验出一些错误,如数码管的引脚接错了,导致数码管无法显示,将数码管各引脚正确焊接后,数码管正常工作。
(2)软件调试
软件调试采用单片机仿真器keiluVision及protus,将编好的程序进行调试,主要是检查语法错误。
再进行仿真,检验各个子程序是否正确执行,和硬件模块的协调性。
由于能力有限,程序中仍然存在如下BUG,不能进行连续除法,尚未实现加减法和乘除法之间的混合运算,错误报警后按运算符号键结束警报
三、课程设计总结
为之两周的单片机课程设计即将结束,在这两周的时间我学会很多东西,明白了很多道理。
一开始的自认为课设题目很简单,到动手时的不知所措,后来静下心来开始分析,发挥整个团队的力量,最后完成任务。
在这两周里加深巩固我所学过的知识,使我专业知识增加,使我所学过的知识融会贯通,使我的动手能力大大增强。
课设期间我们犹如做过山车一般,有失望也有喜悦,最终我们完成任务。
课设期间遇到许多困难,但我和我的团队没有放弃,大家群策群力,查阅资料,一起探讨,使我们能够克服困难,解决问题,完成任务。
记得调试电路板时,由于数码管焊接有错误,使程序不能完成任务。
当我从新修改时越来也乱,线路也变得很乱,但我们安静的坐在那里,一根一根的去测,去焊接,直到问题解决。
程序调试时总有几个错误的地方,花很多时间但有可能还没有找到任何解决的办法,坐在枯燥的电脑旁我们始终坚持着。
像这种困难还有很多,但我们都一路坚持下来。
回想起这两个星期的奋斗时光,感谢我的团队,我们很棒。
团队合作是我最大的收获,在我们这次课设期间,我焊接时出了些问题,但其他两位组员没有埋怨,只有无私的帮助和真诚的鼓励。
这一点让我很感动,使我知道团队的力量是多么重要。
课设不仅考察我们对专业知识的掌握程度,同时也考验我们的性格和对待挫折的态度,更增加了我的团队精神,使我学会与人合作,更增加了我们兄弟间的感情,非常感谢。
四.参考文献
[1]张毅刚.单片机原理及应用.高等教育出版社,2003
[2]苏家键等.单片机原理及应用技术.北京:
高等教育出版社,2004
[3]钟睿.MCS-51
单片机原理及应用开发技术.北京:
中国铁道出版社,2006
[4]范蟠果.工控单片机原理及应用.北京:
清华大学出版社,2007
附录一、系统原理图
附录二、PCB图
课程设计评语及成绩
课程设计
评语
成绩
指导教师
(签字)
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易计算器课程设计 报告 简易 计算器 课程设计