整数加减乘除
一、课题任务及要求
要求:1、掌握数码管移位动态扫描显示的编程方法
2、掌握矩阵扫描的编程方法
3、掌握数据在内部运算的编程方法
任务:1、实现最大6位正整数加、减、乘、除
2、具备清零、等于功能
3、16个按键功能依次为: 数字0、数字1、数字2、数字3、数字4、数字5、数字6、数字7、数字8、数字9、清零、等于、加、减、乘、除
二、硬 件 设 计
原理图
原理分析
该设计通过89C51芯片控制6个一位数码管显示,并实时检测按键按下情况来实现计算器功能,16个按键有10个为数字按键 其...
一、课题任务及要求
要求:1、掌握数码管移位动态扫描显示的编程方法
2、掌握矩阵扫描的编程方法
3、掌握数据在内部运算的编程方法
任务:1、实现最大6位正整数加、减、乘、除
2、具备清零、等于功能
3、16个按键功能依次为: 数字0、数字1、数字2、数字3、数字4、数字5、数字6、数字7、数字8、数字9、清零、等于、加、减、乘、除
二、硬 件 设 计
原理图
原理分析
该
通过89C51芯片控制6个一位数码管显示,并实时检测按键按下情况来实现计算器功能,16个按键有10个为数字按键 其他6个分别为加、减、乘、除、复位、等于
电路接上电源后 数码管显示个位显示数字0 ,芯片对按键进行实时扫描,通过矩阵键盘进行计算,特别注意的是,当结果为负数时,数码管显现EORR。
(一)、硬件部分
1、数码管为一位共阴数码管,共6个;故在段码输出口外加NPN型三极管作驱动
2、51芯片P1口接键盘端(矩阵按键)、P3口接段码、P2口的P2_0—P2_5接位码
3、按键为四乘四矩阵,共16个键
(二)、软件部分
1、数码管移位显示的实现是通过标志位wei2的数值变化控制dispiay函数显示位来实现的
2、程序的重要算法是通过类型为unsigned int 的数temp和数组str[]实现整体加减乘除、各位显示的 只要弄懂这一算法,此程序就可轻易掌握
PCB图
略。
元件清单及造价预算
按键 20个 单价 0.2 元 总计 4元
万用板 2块 单价 4 元 总计 8元
一位共阴数码管 6个 单价 2 元 总计 2元
三极管 7个 单价 0.2 元 总计 1.4元
1K电阻 20个 单价 0.01 元 总计 2毛
排插及排线 5对 单价 1元 总计 5元
电容 3个 单价 0.2元 总计 6毛
晶振 1个 单价 1元 总计 1元
8051芯片 1 个 单价 6元 总计 6元
费用总计 26.2元
5.实物照片
三、程 序 设 计
头程序
str[6]=str[5]=str[4]=str[3]=str[2]=str[1]=10;
str1[6]=str1[5]=str1[4]=str1[3]=str1[2]=str#include
//51单片机基本定义头文件
#include //循环位移头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
sbit P1_4=P1^4; //IO端口定义 (矩阵扫描后4位端口)
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
uchar i,num,s; //全局变量定义
uchar wei,wei2,ss,ss1,ss2,str1[]={0,0,0,0,0,0,0};
long temp,temp1,str[]={10,10,10,10,10,10,10};
uchar code dutable[]={ //段位编码
0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar code wetable[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void init(); //函数声明
void panduan();
void display();
void delay(uint z);
void shaomiao();
void main() //主函数
{
init(); //调用变量初始化函数
while(1) //大循环
{
shaomiao(); //调用矩阵扫描加处理函数
display(); //调用显示函数
}
}
void init() //变量初始化函数
{
ss2=0;
wei2=1;
temp1=0;
ss=0;
ss1=0;
temp=0;
wei=0;
num=0;
}
void delay(uint z)//延时函数(单位ms)
{
uchar i;
uint j;
for(j=z;j>0;j--)
for(i=114;i>0;i--);
}
void shaomiao() //扫描加处理函数
{
for(i=0,s=0xfe;i<4;i++) //低四位端口依次赋值1
{
P1=s; //对P1口赋值
panduan(); //调用判断处理函数
s=_crol_(s,1); //s循环位左移
s=s|0xf0; //进行位或运算
} (使高4位复原)
}
void panduan()
{
uchar n;
if(P1_4==0||P1_5==0||P1_6==0||P1_7==0)
{
delay(10);
P1=s|0xf0;
if(P1_4==0||P1_5==0||P1_6==0||P1_7==0)
{
if(P1_4==0)
{ n=1;num=i*4+n-1;}
else if(P1_5==0)
{ n=2;num=i*4+n-1;}
else if(P1_6==0)
{ n=3;num=i*4+n-1;}
else if(P1_7==0)
{ n=4;num=i*4+n-1;}
if(num<10&&wei!=7)
{
wei++;
if(ss1==1)
{
temp=0;
str[6]=str[5]=str[4]=str[3]=str[2]=str[1]=10; str1[6]=str1[5]=str1[4]=str1[3]=str1[2]=str1[1]=0;
ss1=0;
}
str[wei]=num;
if(str[1]!=10) temp=str[1];
if(str[2]!=10) temp=str[1]*10+str[2];
if(str[3]!=10) temp=str[1]*100+str[2]*10+str[3];
if(str[4]!=10) temp=str[1]*1000+str[2]*100+str[3]*10+str[4];
if(str[5]!=10) temp=str[1]*10000+str[2]*1000+str[3]*100+str[4]*10+str[5];
if(str[6]!=10)
temp=str[1]*100000+str[2]*10000+str[3]*1000+str[4]*100+str[5]*10+str[6];
}
if(num>=10)
{
wei=0;
if(num==10)
{
temp=0;
1[1]=0;
wei=0;
temp1=0;
ss=0;
wei2=1;
}
if(ss1==0&&num==11||(ss1==0&&ss2!=0&&num>11&&num<16))
{
if(num==11)
ss2=0;
switch(ss)
{
case 0: break;
case 1: temp=temp+temp1;break;
case 2: temp=temp1-temp;break;
case 3: temp=temp*temp1;break;
case 4: temp=temp1/temp;break;
}
if(temp>999999)
temp=0;
ss1=1;
}
if(num==12)
{
temp1=temp;
ss=1;ss1=1;ss2=1;
}
if(num==13)
{
temp1=temp;
ss=2;ss1=1;ss2=1;
}
if(num==14)
{
temp1=temp;
ss=3;ss1=1;ss2=1;
}
if(num==15)
{
temp1=temp;
ss=4;ss1=1;ss2=1;
}
}
}
str1[6]=temp/100000;
str1[5]=temp%100000/10000;
str1[4]=temp%10000/1000;
str1[3]=temp%1000/100;
str1[2]=temp%100/10;
str1[1]=temp%10/1;
if(str1[1]!=0)
wei2=1;
if(str1[2]!=0)
wei2=2;
if(str1[3]!=0)
wei2=3;
if(str1[4]!=0)
wei2=4;
if(str1[5]!=0)
wei2=5;
if(str1[6]!=0)
wei2=6;
}
while(P1_4==0||P1_5==0||P1_6==0||P1_7==0);
}
void display()
{
char i1;
for(i1=1;i1
本文档为【整数加减乘除】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。