基于AT89C52单片机的计算器设计说明书.docx

上传人:b****6 文档编号:5873948 上传时间:2023-01-01 格式:DOCX 页数:13 大小:391.88KB
下载 相关 举报
基于AT89C52单片机的计算器设计说明书.docx_第1页
第1页 / 共13页
基于AT89C52单片机的计算器设计说明书.docx_第2页
第2页 / 共13页
基于AT89C52单片机的计算器设计说明书.docx_第3页
第3页 / 共13页
基于AT89C52单片机的计算器设计说明书.docx_第4页
第4页 / 共13页
基于AT89C52单片机的计算器设计说明书.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于AT89C52单片机的计算器设计说明书.docx

《基于AT89C52单片机的计算器设计说明书.docx》由会员分享,可在线阅读,更多相关《基于AT89C52单片机的计算器设计说明书.docx(13页珍藏版)》请在冰豆网上搜索。

基于AT89C52单片机的计算器设计说明书.docx

基于AT89C52单片机的计算器设计说明书

湄洲湾职业技术学院

基于AT89C52单片机的计算器设计说明书

 

系别:

自动化工程系

 

年级:

10级专业:

电气自动化技术

 

姓名:

小珍学号:

*******111

 

导师姓名:

小光职称:

讲师

2013年5月29日

 

1.前言

 

单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。

作为21世纪的大学生,不仅要熟练地使用通用微机进行各种数据处理,还要把计算机技术运用到本专业领域或相关领域,即具有“开发”能力。

新世纪的工科大专院校的大学生既要掌握通用微机,又要掌握单片机,所以学习单片机这一门学科对我们的学习很重要。

大家都知道,现在市面上已出现很多有关点阵显示器的商品,如广告活动字幕机、股票显示板、活动布告栏等。

它的优点是可按需要的大小、形状、单色、或彩色来组合,可与微处理器连接,做各种广告栏文字或图形变化。

因此可知汉字显示系统在人民的生活当中是何等的重要,也是研究的课题之一。

本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除六位数范围内的基本四则运算,并在LCD上显示相应的结果。

设计电路采用AT89C52单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入。

显示采用字符LCD静态显示。

软件方面使用C语言编程,并用PROTUES仿真。

2.系统设计技术参数要求

 

(1)工作电压:

5V

(2)工作频率:

 50Hz 

(3)计算结果的正确率:

99.9%

(4)LCD显示的精确度:

99%

(5)小数点的精确度:

保留三位小数

3.系统设计

 

3.1系统设计工作总流程

图3-1系统方案

3.2各模块原理说明

1.键盘接口电路模块

如下图3-2所示,在本设计中,计算器输入键盘的4条行线、列线分别连接到MM74C922

的X1-X4、Y1-Y4引脚,MM74C922的数据输出口与单片机的P2口相连,MM74C922的DA引脚经过一个非门连接到单片机的/INT0脚,当MM74C922检测到键盘输入时,DA产生高电平,与之相连的/INT0检测到低电平,给单片机一个中断,单片机从P2口的低四位读入键盘上按下的键的值。

图3-2键盘接口电路图

2.LCD显示模块

本设计采用LCD液晶显示器来显示输出数据。

通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。

图3-3LCD显示器

3.运算模块(单片机控制)

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:

单片机、晶振电路、复位电路、按键输入、显示输出等。

MCS-51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。

如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。

单片机是靠程序运行的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!

因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。

应用89C52单片机设计并制作一个单片机最小系统,达到如下基本要求:

1.具有上电复位和手动复位功能。

2.使用单片机片内程序存储器。

3.具有基本的人机交互接口。

按键输入、LED显示功能。

4.具有一定的可扩展性,单片机I/O口可方便地与其他电路板连接。

3.3系统工作原理说明

根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。

具体设计如下:

(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD显示数据和结果。

(2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘。

(3)执行过程:

开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。

(4)错误提示:

当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:

当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD上提示错误。

3.4主控制模块电路的设计

图3-4主控模块电路

3.5系统的操作说明

本设计采用矩阵键盘的方案。

采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为4×4个。

计算器的键盘布局如图5所示:

有16个键组成,在单片机中用一个P口实现16个按键功能。

图3-5矩阵键盘布局图

3.6系统操作注意事项

(1)使用时注意输入电压时5V,电压过低会导致线路无法正常运行。

(2)如发现个别1602灯不亮,请检查灯或线路,如还不亮请检查1602是否坏掉;

(3)不可将产品随意碰撞,否则会导致电路元件损坏或造成虚焊,使电路无法正常运;

(4)通电时不可放于潮湿的地方以免电路短路。

 

参考文献

 

[1]王廷才.电子线路辅助设计Protel99SE[M].北京:

高等教育出版社,2004.

[3]张齐.朱宁西.单片机应用系统设计技术[M].北京:

电子工业出版社,2009.

[4]周润景.张丽娜.PROTEUS入门实用教程[M].北京:

机械工业出版社,2007.

[5]张毅刚.MCS-51单片机应用设计[M].哈尔宾:

哈尔宾工业大学出版社,1997.

[1]韩全立.微机控制技术与应用[M].北京:

机械工业出版社,2003.

[2]佘明辉.电工电子实验实训[M].北京:

理工大学出版社,2009.

[9]王慧玲.电路基础[M].北京:

高等教学出版社,2004.

[10]李建忠.单片机实践与应用[M].西安电子科技大学出版,2008.

[11]李群芳.单片机微型计算机与接口技术(第3版)[M].北京:

电子工业出版社2008.

[12]黄智伟.全国大学生电子设计竞赛系统设计[M].北京:

北京航空天大学出版社,2006.

[13]赵曙光.可编程逻辑器件原理开发与应用[M].西安电子科技大学出版社,2006.

[14]刘修文.实用电子电路设计制作300例[M].北京:

中国电力出版社,2008.

[15]谢自美.电子线路设计(第三版)[M].中华科技大学出版社,2008.

 

致谢词

 

三年前,这个校园是我的梦想。

三年后,微笑回首来路,一幕幕,宛在昨天。

人生就是如此吧,每个段落结束的时候,我们总会感慨时光飞逝。

时光匆匆如流水,转眼便是大学毕业时节,春梦秋云,聚散真容易。

毕业设计的完成也随之进入了尾声。

从开始进入课题到设计的顺利完成,一直都离不开老师、同学、朋友给我热情的帮助,在这里请接受我诚挚的谢意!

本次设计最终得以顺利完成,非常感谢我的导师小光老师。

从选设计课题直到硬件的最终完成,他给予了我尽心尽力的指导。

林寿光老师严谨的治学态度深深地影响着我,对我今后的学习、工作、生活必将产生影响。

借此机会,特向林寿光老师表示最诚挚的感谢。

感谢湄洲湾职业技术学院的所有领导和老师(蔡明雄书记、翁娟钗辅导员、郑维清老师、陈辉煌老师、许振龙老师、李清生老师、邱兴阳老师等等),他们严谨的学风、渊博的知识、诲人不倦的品格一直感染和激励着我不断上进,使我大学三年的时光充实而有意义。

“海纳百川,取则行远”,在这美丽的校园里,不断成长,在这里我所学到的,必将使我受益终生。

在本次课程设计中,我也参照了大量的著作和文章,许多学者的科研成果给我很大启发,在此向这些学者们表示由衷饿感谢。

感谢那些与我朝夕相处了三年的同学,这些日子,他们和我一块努力奋斗共进共退,互相扶持。

最后要感谢的是我的父母,他们不仅培养了我对应用电子技术的浓厚的兴趣,让我在漫长的人生旅途中使心灵有了虔敬的归依,而且也为我能够顺利的完成毕业设计提供了巨大的支持与帮助。

在未来的日子里,我会更加努力的学习和工作,不辜负父母对我的殷殷期望!

我一定会好好孝敬和报答他们!

附录

附录一:

元件清单

序号

元器件名称

型号

个数

1

电阻

10k

1个

2

瓷介电容

22PF

2个

3

极性电容

10UF

1个

4

晶振

12MHz

1个

5

40脚底座

1块

6

电位器

10K

1个

7

按钮

17个

8

排阻

10K

1个

9

1602

1块

10

芯片

AT89C51

1块

 

附录二:

设计原理图

附录三:

程序

1.键盘出入检测程序

有键按下时,单片机响应外部中断0,转入外部中断0中断处理函数,在中断处理函数中完成对按键的判断,以进行下一步的程序处理。

/***********外部中断0处理函数*************/

voidINT_0(void)interrupt0using0

{

key=translate(P2&0x0f);

if(key<='9'&&key>='0')//判断按下的键是否为数值

{

num=num*10+(key-'0');

if(operators>0)

{

y=num;

iny=1;

}

else

x=num;

if(num<134217728&&num>-134217728)//当前数值是否超出限定范围

{

display(num);

}

else

dataoverflow();

}

else

{

switch(key)

{

case'c':

x=0;

y=0;

num=0;

iny=0;

operators=0;

display(num);

break;

case'=':

arithmetic();

iny=0;

operators=0;

num=0;

break;

case'+':

if(operators)

arithmetic();

operators=1;

num=0;

break;

case'-':

if(operators)

arithmetic();

operators=2;

num=0;

break;

case'*':

if(operators)

arithmetic();

operators=3;

num=0;

break;

case'/':

if(operators)

arithmetic();

operators=4;

num=0;

break;

}

}

}

2.LCD显示程序

利用LCD静态显示,通过程序向LCD写指令字或数据使LCD完成不同功能或显示相应数据。

/**************LCD初始化函数*************/

voidinit_LCM()

{

write_com(0x30);

write_com(0x30);

write_com(0x30);

write_com(0x38);

write_com(0x08);

write_com(0x01);

write_com(0x06);

write_com(0x0e);

}

/***********LCD写数据函数*************/

voidwrite_data(charddata)

{

RS=1;/*写指令*/

R_W=0;

EN=1;/*使能信号开*/

P1=ddata;/*将数据送入p1口*/

EN=0;/*使能信号关*/

check_BF();

}

/***********LCD写指令函数*************/

voidwrite_com(charcommand)

{

RS=0;/*写指令*/

R_W=0;

EN=1;/*使能信号开*/

P1=command;/*将数据送入p1口*/

EN=0;/*使能信号关*/

check_BF();

}

/************LCD检查忙碌函数***********/

voidcheck_BF()

{

chari,x=0x80;

P1=0xff;

while(x&0x80)

{

RS=0;

R_W=1;

EN=1;

x=P1;

EN=0;

for(i=0;i<10;i++);

}

EN=0;/*关闭使能信号*/

}

/**********LCD清屏函数**********/

voidclearLCD()

{

write_com(0x01);

}

/**********LCD显示函数**********/

voiddisplay(longa)

{

longtemp,b,c=-1;

intlenth=1,i,j;

clearLCD();

if(a<0)

{

a=a*c;

write_data('-');

}

temp=a;

while((temp=temp/10)!

=0)

{

lenth++;

}

for(i=lenth;i>0;i--)

{

b=1;

for(j=0;j

{

b=b*10;

}

write_data(0x30+a/b);

a=a%b;

}

}

3.错误处理及提示程序

/**********除数为处理函数**********/

voiddealerror()

{

inti=0;

clearLCD();

for(i=0;i<5;i++)

write_data(error[i]);

}

/*********数值溢出处理函数**********/

voiddataoverflow()

{

inti=0;

clearLCD();

for(i=0;i<8;i++)

write_data(overflow[i]);

}

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

当前位置:首页 > 自然科学

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

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