计算器加法练习题
精品文档
2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1
计算器加法练习题
//用数码管显示两位数的加法计算器;
//P0作为数码管的段码
//P1作为数码管的位码
//P2口作为矩阵键盘09,+,=;//本实训箱只有12个按键,P20P26;P27未用;先输入第一个数,当按+时,清屏,再显示输入的第二个数,
按=时,显示他们的和,再次按=数据清0;
//本程序在普中单片机实训箱上通过
//=========王庐山作于2011年3月19日================
//十堰市计算机学校电子电工教研室=============
*/
#include”reg51.h”
#include
#define uint unsigned int
#define uchar unsigned char
uchar code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x00};
uchar wula[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar table[8]={0,0,10,10,10,10,10,10};
uchar add1[2]={0,10};
uchar add2[2]={0,10};
uchar sum[3]={0,10,10};
uchar sum1,aa,bb,cc;
bit flagsum,flagadd,flag;
uchar x,y,z,k,keyword;
void dispadd1;
void dispadd2;
void dispsum;
void delay;
void display;
void jisuan;
void keyscan;
void main
keyword=0;
k=0;
while
{
keyscan;
if&&) dispadd1;
if&&) dispadd2;
if)
dispsum;
}
}
void keyscan
{
uchar temp1,temp2;
P2=0xf0;
if
{
delay;
P2=0xf0;
if
{
temp1=P2;
P2=0x0f;
temp2=P2;
while;
keyword=temp1|temp2;
switch
{
case 0xed: keyword=0;flag=0;break; case 0xdd: keyword=1;flag=0;break; case 0xbd: keyword=2;flag=0;break; case 0x7d: keyword=3;flag=0;break;
case 0xeb: keyword=4;flag=0;break; case 0xdb: keyword=5;flag=0;break; case 0xbb: keyword=6;flag=0;break; case 0x7b: keyword=7;flag=0;break; case 0xe7: keyword=8;flag=0;break; case 0xd7: keyword=9;flag=0;break; case 0xb7: {flagadd=1;
flag=1;}break;
case 0x77: {flagsum=~flagsum;cc++;}break; default: break;
}
if&&) {
add1[k]=keyword;
if
k=1;//}
else
k++;}
if&&) {if
{k=0;flag=0;}
else
{ add2[k]=keyword;
if
k=1;