为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

整数加减乘除

2012-03-02 13页 doc 1MB 83阅读

用户头像

is_958425

暂无简介

举报
整数加减乘除 一、课题任务及要求 要求: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,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索