基于51单片机的数字计算器的设计

合集下载

(完整版)基于51单片机的数码管简易计算器

(完整版)基于51单片机的数码管简易计算器

基于51/52单片机的简易计算器制作11级自动化2班王栎斐宋为为闫巨东一、题目利用单片机芯片STC89C52、四位八段共阳数码管及已制作好的电路板等器件设计制作一个计算器。

二、任务与要求要求计算器能实现加减乘除四种运算具体如下1. 加法:四位整数加法计算结果若超过八位则显示计算错误2. 减法:四位整数减法计算结果若超过八位则显示计算错误3. 乘法:多位整数乘法计算结果若超过四位则显示计算错误4. 除法:整数除法5. 有清除功能三、课程设计简述总体设计思路简述1.按照系统设计的功能的要求初步确定设计系统由主控模块、显示模块、键扫描接口电路共三个模块组成。

主控芯片使用STC89C52单片机。

2.键盘电路采用4*4矩阵键盘电路。

3.显示模块采用共阳极数码管构成。

四、硬件电路五、软件编程部份#include<reg52.h>#define uchar unsigned char#define uint unsigned int//uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//共阴极// 0 1 2 3 4 5 6 7 8 9 熄灭-//uchar code loc[]={0xff,0xfe,0xfd,0xfb,0xf7};//uchar code ero[]={0x79,0x50,0x5c};uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x40};//共阳极uchar code loc[]={0x00,0x80,0x40,0x20,0x10};uchar code ero[]={~0x79,~0x50,~0x5c};uint n=0,n1=0,n2=0; //赋初值uchar flag=0; //计算类型选择关键字void delay(int t);void display(int n);void error();main(){while(1){uchar temp;//第一行检测P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=P3;temp=temp&0xfe;if(temp!=0xfe){temp=P3;switch(temp){case 0xee:n1=0;n2=0;n=0;flag=0;break; //清零case 0xde:n1=10*n1+0;n=n1;break;case 0xbe: if(flag==1)n=n2+n1; //=if(flag==2)n=n2-n1;if(flag==3)n=n2*n1;if(flag==4)n=n2/n1;n1=0;break;case 0x7e: // +n2=n1;n1=0;flag=1;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}//扫描第二行P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xed:n1=10*n1+1;n=n1;break; //4case 0xdd:n1=10*n1+2;n=n1;break; //5case 0xbd:n1=10*n1+3;n=n1;break; //6case 0x7d:// -n2=n1;n1=0;flag=2;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}//扫描第三行P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xeb:n1=10*n1+4;n=n1;break;case 0xdb:n1=10*n1+5;n=n1;break;case 0xbb:n1=10*n1+6;n=n1;break;case 0x7b: // *n2=n1;n1=0;flag=3;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}//扫描第四行P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xe7:n1=10*n1+7;n=n1;break; //7case 0xd7:n1=10*n1+8;n=n1;break; //8case 0xb7:n1=10*n1+9;n=n1;break; //9case 0x77: // /n2=n1;n1=0;flag=4;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}display(n);}}//延时函数void delay(int t){int x,y;for(x=0;x<t;x++)for(y=0;y<t;y++);}//数码管显示void display(int n){//溢出处理uchar g,s,b,q;int abs;if((n>9999)||(n<-999)) error();//正数if((n>=0)&&(n<=9999)) {g=n%10;s=n/10%10;b=n/100%10;q=n/1000%10;P0=num[g];delay(5);P2=loc[4];delay(2);P2=loc[0];delay(3);if(n>=10){P0=num[s];P2=loc[3];delay(2);P2=loc[0];delay(3);}if(n>=100){P0=num[b];P2=loc[2];delay(2);P2=loc[0];delay(3);}if(n>=1000){P0=num[q];P2=loc[1];delay(2);P2=loc[0];delay(3);}}//负数if((n<0)&&(n>=-999)){abs=-n;g=abs%10;s=abs/10%10;b=abs/100%10;q=abs/1000%10;P0=num[g];P2=loc[4];delay(2);P2=loc[0];delay(2);if((abs/10%10>0)||(abs/100%10>0)){P0=num[s];P2=loc[3];;delay(2);P2=loc[0];delay(2);if((abs/100%10>0)){P0=num[b];P2=loc[2];delay(2);P2=loc[0];delay(2);if((abs/1000%10>0)){P0=num[q];P2=loc[1];delay(2);P2=loc[0];delay(2);}else{P0=num[11];P2=loc[1];delay(2);P2=loc[0];delay(2);}}else{P0=num[11];P2=loc[2];delay(2);P2=loc[0];delay(2);}}else{P0=num[11];P2=loc[3];delay(2);P2=loc[0];delay(2);}}}//溢出显示void error(){P2=loc[1];P0=ero[0];delay(2);P2=loc[0];delay(3);P2=loc[2];P0=ero[1];delay(2);P2=loc[0];delay(3);P2=loc[3];P0=ero[1];delay(2);P2=loc[0];delay(3);P2=loc[4];P0=ero[2];delay(2);P2=loc[0];delay(3); }。

基于51单片机的计算器设计

基于51单片机的计算器设计

基于51单片机的计算器设计计算器作为一种常用的电子设备,广泛应用于各个领域。

在本文中,我们将基于51单片机来设计一个简单的计算器,并对其进行详细介绍。

一、设计目标我们所设计的计算器需要具备以下功能:1.实现基本的算术运算,包括加、减、乘、除等;2.具备显示功能,能够将输入和运算结果以数字的形式显示在液晶屏上;3.提供清零和删除功能,方便计算器的操作;4.具备较高的计算精度和稳定性。

二、硬件设计计算器的硬件设计主要包括键盘输入、液晶屏输出和计算程序控制三个部分。

1.键盘输入为了简化设计的复杂度,我们采用矩阵键盘来实现输入功能。

矩阵键盘由多个行和多个列交叉连接而成,通过扫描行和列的方式来检测键盘输入的按键信息。

2.液晶屏输出我们选择16x2字符液晶显示屏来作为计算结果的输出设备。

这种液晶屏可以显示16个字符,每个字符由5x8像素点阵组成,具备较好的显示效果。

3.计算程序控制我们将基于51单片机来编写计算器的计算程序,并通过电路连接键盘输入和液晶屏输出设备。

通过读取键盘输入的按键信息,计算程序能够判断用户输入的数字和操作符,并进行相应的计算操作。

最后,计算结果将以数字的形式显示在液晶屏上。

三、软件设计计算器的软件设计主要包括键盘扫描与输入处理、计算程序控制和液晶屏显示三个模块。

1.键盘扫描与输入处理通过循环扫描矩阵键盘的行和列,可以得到按键信息。

根据按键信息的不同,我们可以判断用户输入的数字和操作符,并将其传递给计算程序模块进行处理。

同时,我们需要对一些特殊按键(如清零和删除)做特殊处理。

2.计算程序控制计算程序模块将根据键盘输入的数字和操作符,进行相应的算术运算。

我们可以采用栈的数据结构来处理运算符和运算数,以实现复杂的算术运算。

3.液晶屏显示计算结果将以数字的形式显示在液晶屏上。

我们可以通过51单片机的GPIO口控制液晶显示屏的操作,包括写入指令和写入数据。

通过设定光标位置及写入数字数据,可以将计算结果显示在液晶屏的指定位置上。

基于51单片机的简易计算器

基于51单片机的简易计算器

基于51单片机的简易计算器51单片机是一种广泛应用于嵌入式系统中的常用微控制器。

我们可以利用51单片机的强大功能和丰富的外设资源,设计一个简易计算器。

这个计算器可以进行基本的加减乘除运算,并且具备显示结果的功能。

首先,我们需要准备一块51单片机开发板,一块1602液晶显示屏模块,以及一些按键开关和电阻。

我们可以将运算器主要分为以下几个模块:数码管显示模块、键盘输入模块、运算模块和存储模块。

数码管显示模块:我们使用1602液晶显示屏模块来显示计算器的结果。

我们可以通过51单片机的IO口,将计算结果发送给液晶显示屏模块,实现结果的显示。

键盘输入模块:我们可以使用几个按键开关来实现数字和运算符的输入。

通过对按键的检测,我们可以将用户输入的数字和运算符转化为字符形式,并保存到内存中。

运算模块:我们需要根据用户输入的数字和运算符,进行相应的运算。

我们可以使用栈来实现这个功能。

栈是一种常用的数据结构,具有"先进后出"的特点。

我们可以将用户输入的数字和运算符按照一定的规则入栈,然后按照相应的顺序进行出栈和运算。

最后将结果保存到内存中。

存储模块:我们可以使用内部RAM来保存运算结果。

51单片机的内部RAM具有一定的存储能力,可以满足我们的基本需求。

在编写程序时,我们可以使用汇编语言或者C语言。

通过合理的编程,我们可以实现计算器的各项功能。

总结一下,基于51单片机的简易计算器主要包括数码管显示模块、键盘输入模块、运算模块和存储模块。

我们可以通过合理的编程,将这些模块相互配合,实现一个功能完善的计算器。

这个计算器不仅可以进行基本的加减乘除运算,还可以显示结果,方便用户进行计算。

基于51单片机的简易计算器论文设计

基于51单片机的简易计算器论文设计

基于51单片机的简易计算器论文设计摘要:计算器是一种常见的电子设备,用于数学计算。

随着科技的迅速发展,计算器不再是一种巨大且笨重的机械设备。

相反,它们变得迷你、便携且功能强大。

本论文旨在设计和实现一种基于51单片机的简易计算器。

该设计利用了51单片机的优点,如低功耗、成本低廉和易于学习等特点。

本论文介绍了设计和实现的过程,包括硬件电路设计、软件程序编写以及性能测试等方面。

1.引言计算器广泛应用于日常生活和学习中,人们常常需要进行加减乘除等简单的数学计算。

为了提供便捷的计算功能,传统计算器使用专用的集成电路设计。

然而,这种计算器成本较高,体积较大,且功能有限。

为了满足市场需求,我们设计了一款基于51单片机的简易计算器。

2.硬件电路设计2.1键盘模块键盘模块采用矩阵键盘设计,包括数字键0-9、运算符键+、-、*、/以及等于键=。

采用矩阵建构可以减少IO口资源的使用,并简化设计。

2.2显示模块显示模块采用液晶显示器,能够清晰地显示数字、运算符和结果。

为了实现更好的用户交互体验,还可以添加背光模块。

2.3控制电路控制电路由51单片机和其他常用电子元件组成,可以通过编程控制键盘的输入和显示模块的输出。

其中,51单片机充当了控制中心的作用,负责接收键盘输入、解析用户命令、进行数学计算和控制显示模块的显示。

2.4电源电路电源电路用于提供稳定的电源给整个计算器系统。

电源电路由电池、稳压电路和滤波电路组成,能够为计算器提供稳定的电压和电流。

3.软件程序设计软件程序设计是整个计算器系统的核心。

主要功能包括接收键盘输入、解析输入、进行数学计算、控制显示模块的显示和处理异常情况。

3.1键盘输入接收软件程序通过扫描键盘矩阵来接收键盘输入。

当用户按下一些键时,软件程序会检测到相应的按键信号,并将其转换为数值或运算符。

3.2输入解析软件程序能够解析用户的输入,判断用户输入的是数字还是运算符,并将其保存在相应的变量中。

同时,软件还可以处理异常输入,如除以零等情况。

基于51单片机计算器设计

基于51单片机计算器设计

基于51单片机计算器设计计算器是一种常见的电子设备,可以进行数学运算、数据处理等功能。

本文将基于51单片机进行计算器设计。

一、设计目标:1.实现基本的数学运算功能,如加减乘除、取余等。

2.能够进行复杂的数学运算,如平方、开方等。

3.具备记忆功能,能够存储中间结果和运算符号。

4.设置输入界面,允许用户输入数字和操作符。

5.显示运算结果和中间过程。

二、硬件系统设计:1.使用51单片机作为主控芯片,具有高集成度和处理能力。

2.连接光栅液晶显示屏,用于显示数值和操作符。

3.连接矩阵键盘,用于获取用户的输入。

4.连接电源电路,保证计算器正常运行。

三、软件系统设计:1.确定界面设计,包括数值显示区、操作符显示区和功能键区。

2.设计输入处理模块,根据用户输入获取相应的数值和操作符,并进行相应的处理。

3.设计运算模块,根据用户输入的操作符进行相应的数学运算,并将结果存储起来。

4.设计显示模块,将计算结果和中间过程显示在液晶屏上。

5.设计存储模块,用来存储中间运算结果和操作符号。

四、软件流程设计:1.系统初始化:包括设置显示模式、清零中间结果等。

2.输入处理:通过矩阵键盘输入数字和操作符,并进行相应的处理。

3.运算处理:根据用户输入的操作符,进行相应的数学运算,并将结果存储起来。

4.结果显示:将计算结果和中间过程显示在液晶屏上。

5.存储结果:将计算结果和操作符存储起来,以备后续计算。

五、测试和调试:在设计完成后,需要进行系统测试和调试,确保计算器的各项功能正常运行。

首先进行单元测试,验证各个模块的功能是否按照设计要求正确执行。

然后进行综合测试,模拟用户输入各种情况下的运算过程,检测是否能够正确进行运算并显示结果。

如果发现问题,则进行调试和修改,直到计算器满足设计要求。

六、总结:基于51单片机进行计算器设计,可以实现基本的数学运算功能,并具备记忆功能。

设计步骤包括确定硬件系统和软件系统设计,设计界面、输入处理、运算处理、显示和存储模块,进行测试和调试确保计算器功能正常运行。

基于51单片机的简易计算器设计

基于51单片机的简易计算器设计

基于51单片机的简易计算器设计基于51单片机的简易计算器设计一、引言随着微电子技术和嵌入式技术的发展,越来越多的智能化设备被应用于日常生活中。

其中,基于51单片机的简易计算器设计具有广泛的应用价值。

本文将介绍如何使用51单片机设计一个简易计算器,实现加减乘除的基本运算功能。

二、设计方案1.硬件组成:本设计采用51单片机作为主控芯片,与键盘、显示器等外围设备相连。

键盘用于输入数字和运算符,显示器则用于显示运算结果。

2.软件设计:软件部分包括主程序和子程序。

主程序负责初始化硬件、读取键盘输入和显示运算结果。

子程序包括加减乘除的运算子程序,可根据输入的运算符和操作数进行相应的运算。

3.算法实现:在加减乘除的运算子程序中,采用基本的数学运算方法实现。

对于加法,直接将两个操作数相加;对于减法,将两个操作数相减;对于乘法,采用循环相乘的方法;对于除法,采用循环相除的方法。

三、实验结果在实验中,我们成功地使用51单片机设计了一个简易计算器,实现了加减乘除的基本运算功能。

在测试过程中,我们输入了不同的数字和运算符,得到了正确的运算结果。

同时,我们也测试了计算器的稳定性,发现其在连续运算时表现良好,没有出现明显的误差或故障。

四、结论基于51单片机的简易计算器设计具有简单易行、实用性强等优点。

通过实验测试,我们验证了其可行性和稳定性。

此外,该设计还可以根据需要进行扩展和优化,例如增加更多的运算功能、优化算法等。

未来,我们可以进一步研究如何提高计算器的运算速度和精度,以及如何将其应用于更多的实际应用场景中。

五、改进意见与展望1.增加更多的运算功能:例如实现括号、开方、指数等高级运算,满足更复杂的数学计算需求。

2.优化算法:针对现有的加减乘除运算算法进行优化,提高运算速度和精度。

例如采用更高效的除法算法,减少运算时间。

3.增加存储功能:在计算器中加入存储单元,使得用户可以在多个步骤之间进行数据传递和保存。

4.增强人机交互界面:优化显示器的显示效果,增加用户输入的便捷性,提高用户体验。

51单片机简易计算器设计

51单片机简易计算器设计

51单片机简易计算器设计一、设计思路计算器的基本功能包括加法、减法、乘法和除法。

我们可以使用按键作为输入方式,将输入的数字和操作符暂时保存在内存中,然后根据操作符进行相应的运算。

最后再将运算结果显示在数码管上。

具体设计思路如下:1.确定计算器所需的硬件组件:数码管、按键、51单片机和相关电路。

2.定义按键与数字和操作符的对应关系。

3.编写51单片机的程序,实现按键输入、运算和结果显示的功能。

二、硬件设计1.数码管:使用常见的7段数码管作为显示器,通过引脚连接到51单片机的IO口。

2.按键:使用4个按键分别表示数字输入键、加法键、减法键和等于键。

三、软件设计1.初始化:将数码管引脚设为输出模式,将按键引脚设为输入模式。

2.按键处理:采用中断方式检测按键输入,通过编程判断所按的键。

3.数字输入:将按键所对应的数字保存在变量中,最多支持四位数的输入。

4.操作符输入:将按下的操作符保存在变量中。

5.运算:根据保存的操作符进行相应的运算,并将结果保存在变量中。

6.结果显示:将结果显示在数码管上。

四、代码实现下面是一个示例代码的框架,供参考:```c#include <reg52.h>sbit SDA = P0^0; // I2C总线数据线sbit SCL = P0^1; // I2C总线时钟线//定义按键的IO口sbit BUTTON0 = P1^0; // 数字输入键sbit BUTTON1 = P1^1; // 加法键sbit BUTTON2 = P1^2; // 减法键sbit BUTTON3 = P1^3; //等于键unsigned char num1 = 0; // 第一个操作数unsigned char num2 = 0; // 第二个操作数unsigned char op = 0; // 操作符unsigned char result = 0; // 运算结果//判断按键所对应的数字或操作符void buttonif (BUTTON0 == 0) // 数字输入键//将按键所对应的数字保存在变量中//显示数字}else if (BUTTON1 == 0) // 加法键//保存操作符为加号}else if (BUTTON2 == 0) // 减法键//保存操作符为减号}else if (BUTTON3 == 0) //等于键//根据保存的操作符进行相应的运算//将结果保存在变量中//显示结果}void mainwhile (1)button(; // 按键处理}```五、总结通过以上的设计思路和示例代码,我们可以轻松地实现一个简易的计算器。

基于51单片机计算器设计

基于51单片机计算器设计

基于51单片机计算器设计计算器是一种常用的计算工具,用来进行加减乘除等基本运算。

本文将介绍基于51单片机的计算器设计,主要包括功能设计、硬件设计和软件设计。

一、功能设计:1.基本计算功能:实现加法、减法、乘法和除法四种基本运算功能。

2.小数运算功能:支持小数的四则运算。

3.多位数运算功能:支持多位数的四则运算。

4.括号运算功能:支持括号运算,可以进行复杂的运算。

5.求平方功能:支持对一个数求平方。

6.求开方功能:支持对一个数求开方。

7.求倒数功能:支持对一个数求倒数。

8.清零功能:清零计算器,重新开始计算。

9.删除功能:删除输入的数字或者运算符。

二、硬件设计:硬件设计主要包括51单片机、LCD显示屏、矩阵按键、蜂鸣器和电源电路等。

1.51单片机:作为计算器的核心控制器,负责接收输入的数据和指令,并进行相应的计算和显示。

2.LCD显示屏:用于显示计算器的输入和输出结果。

3.矩阵按键:用于接收用户输入的数字和运算符。

4.蜂鸣器:用于发出提示音,比如输入错误时进行报警。

5.电源电路:提供计算器运行所需的电源。

三、软件设计:1.输入处理:计算器通过矩阵按键接收用户输入的数字和运算符,并使用数组保存输入的数据和指令。

2.数字运算:计算器需要根据用户输入的数字和运算符进行相应的运算,如加法、减法、乘法和除法等。

3.显示处理:计算器使用LCD显示屏将输入和计算结果显示出来。

4.错误处理:计算器需要对用户输入错误进行相应的处理,如输入非法字符时进行提示或报警。

5.性能优化:计算器需要进行相关的性能优化,如加入负责时间延迟,以适应不同的使用场景。

四、总结:本文介绍了基于51单片机的计算器设计,包括功能设计、硬件设计和软件设计。

这种计算器可以实现基本的四则运算功能,并支持小数运算、多位数运算和括号运算等复杂运算。

通过合理的硬件设计和软件设计,可以使得计算器更加稳定和可靠。

这种设计不仅可以提高计算器的使用体验,还可以为用户提供更多的计算功能和更加便捷的计算方式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机技术及其应用》课程设计报告专业:通信工程班级:09312班姓名:某某某学号:09031069指导教师:二0一二年六月十八日目录1设计目的 (1)2 设计题目描述与要求 (1)3 设计过程 (2)4硬件总体方案及说明 (6)5 软件总体方案及设计流程 (9)6 调试与仿真 (13)7 心得体会 (14)8 指导老师意见 (15)9 参考文献 (16)附录一 (16)附录二 (21)基于51单片机的数字计算器的设计1设计目的简易计算器的原理与设计是单片机课程设计课题中的一个。

在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用和单片机完整程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。

单片机课程设计既巩固了课本学到的理论,还学到了单片机硬件电路和程序设计,简易计算器课程设计通过自己动手用计算机电路设计软件,编写和调试,最后仿真,来加深对单片机的认识,充分发挥我们的个人创新和动手能力,并提高我们对单片机的兴趣,同时学习查阅资料、参考资料的方法。

本设计是基于51系列的单片机进行的简易计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED 上相应的显示结果。

设计过程在硬件与软件方面进行同步设计。

硬件选择AT89C51单片机和74ls164,输入用4×4矩阵键盘。

显示用5位7段共阴极LED静态显示。

软件从分析计算器功能、流程图设计,再到程序的编写进行系统设计。

选用编译效率最高的Keil软件进行编程,并用proteus仿真。

2 设计题目描述与要求基于AT89C51数字计算器设计的基本要求与基本思路:(1)扩展4*4键盘,其中10个数字,5个功能键,1个清零(2)使用五位数码管接口电路(3)完成十进制的四则运算(加、减、乘、除)(4)实现低于三位小于255数字的连续运算(5)使用keil软件编写程序(6)最后用ptoteus仿真3 设计过程3.1设计思路按照2的设计要求,本课题需要使用数码管显示和扩展4*4键盘,由于实验箱的硬件电路已经固定,故选择串行静态显示和用P1口扩展4*4键盘,扩展的4*4键盘定义十个数字键,六个功能键,使用串行静态显示显示运算结果。

主程序进行初始化,采用定时器0进行查键,每次按键后调用显示子程序3.2单片机简要原理在该课程设计中,主要用到一个AT89c51芯片和串接的五个74LS164芯片。

作为该设计的主要部分。

下面将对这两个芯片原理及功能做已详细介绍和说明。

1.AT89C51介绍芯片AT89C51的外形结构图图3-2-1芯片AT89C51的外形结构和引脚图如3-2-1所示。

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

A 主要特性:8051 CPU与MCS-51 兼容4K字节可编程FLASH存储器(寿命:1000写/擦循环)全静态工作:0Hz-24KHz三级程序存储器保密锁定128*8位内部RAM32条可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路B 管脚说明:VCC:供电电压(图中未画出)GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令时才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出引脚。

2.芯片74LS164介绍74LS164是一个串入并出的8位移位寄存器,他常用于单片机系统中,下面结束一下这个元件的基本知识。

74LS164外部结构和引脚图图3-2-2A 主要特性:串行输入带锁存时钟输入,串行输入带缓冲异步清除最高时钟频率可高达36Mhz功耗:10mW/bit74系列工作温度:0C to 70CVcc最高电压:7V输入最高电压:7V最大输出驱动能力:高电平:-0.4mA ; 低电平:8mAB 管脚说明在单片机系统中,如果并行口的IO资源不够,而串行口又没有其他的作用,那么我们可以用74LS164来扩展并行IO口,节约单片机资源。

74LS164是一个串行输入并行输出的移位寄存器。

并带有清除端。

其中,Q0—Q7并行输出端;A,B 串行输入端;MR 清除端,为0时,输出清零;CP 时钟输入端。

4硬件总体方案及说明简易数字计算器系统硬件设计主要包括:键盘电路,显示电路以及其他辅助电路。

下面分别进行设计。

4.1键盘电路的设计键盘可分为两类:编码键盘和非编码键盘。

编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。

通用计算机使用的标准键盘就是编码键盘。

在智能仪器中,使用并行接口芯片8279或串行接口芯片HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。

当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。

但大多数智能仪器和电子产品的按键数目都不太多(20个以内),为了降低成本和简化电路通常采用非编码键盘。

非编码键盘的接口电路有设计者根据需要自行决定,按键信息通过接口软件来获取。

本课题需要的是16个按键,故选择用非编码键盘,为了减少所占用的端口,由P1口采用4*4矩阵式键盘。

具体电路连接如图4-1-1所示所对应的键码为:C0=+123-456*图4-2-2789/图4-1-14.2显示电路设计当系统需要显示少量数据时,采用LED数码管进行显示是一种经济实用的方法。

数码管显示有静态显示和动态显示两种方法。

为了减少端口的使用,故选择静态显示,并采用共阴极接法电路如图4-2-1所示图4-2-1LED数码管显示块是由发光二极管显示字段的显示器件。

在单片机应用中通常使用七段LED。

这种显示块有共阴极和共阳极两种。

4.3时钟电路及数码管电路设计1.时钟电路机器周期(24个时钟周期)的高电平即可对单片机实现复位操作当主电源Vcc发生掉电或者是电压降低到电平规定值时,VPD上外接的备用电源自动启用,为单片机内部RAM提供电源,以保护片内RAM中的信息不丢失,使系统在恢复上电后能正常运行时钟电路图4-3-12.多位数码管电路显示的驱动电路单片机应用中只有一位的的数字显示是不常见的,即要同时驱动多个数码管显示,就必须要同时让多个数码管加上各自不同的选片段,这个属于静态显示。

所谓静态显示,就是每一个显示器,都要占用单独的具有封锁功能的I/O 接口用于笔画字段形代码,单片机只要把显示的字形代码发送到接口电路,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小,可以提高单独锁存的I/O接口电路很多,这里以常用的串并转化电路74LS164为例介绍一种常用静态显示电路。

如图所示,5片74LS164首尾相串,而时钟端接在一起,这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到第一个74LS164中了,当第二个8个脉冲到来时,这个数据就进入了第二个片74LS164,新的数据则进入了第一个74LS164。

相关文档
最新文档