硬件课程设计报告剖析(5)

2019-06-02 16:07

for(keynum2--,i++,j=0;keynum2>0;j++,i++,keynum2--) point=point*10+num2[i]; for(;j>0;j--) point*=0.1;

lcdwrite_data(num); ans2=ans2+point; conflag=1;

break; //进行连续计算 } }

if(ac==1) {

ac=0;

continue; //清零后进行下一次运算 }

if(sign=='+') //计算结果 ans=ans1+ans2; if(sign=='-')

ans=ans1-ans2; if(sign=='*')

ans=ans1*ans2; if(sign=='/')

ans=ans1/ans2;

if(sign=='^') //计算多次方 ans=pow(ans1,ans2); if(sqrtflag2==1) //计算开方 ans=sqrt(ans);

lcd_setxy(1,0);

if((ans2==0&&sign=='/')||(ans<0&&(sqrtflag1==1||sqrtflag2==1))) lcdwrite_string(\或被开方数小于0时提示错误

else lcdwrite_float(ans); //显示结果

sqrtflag1=0,newcalc=1; //为新的一次运算准备 ans1=0; ans2=0;

for(i=0;i<8;i++) //清除按键缓存 num1[i]=0;

21

for(i=0;i<8;i++) num2[i]=0;

if(conflag==1) {

conflag=0; goto here; //跳转到连续运算 } } }

/*****初始化程序*****/ void init(void) {

delayms(100); //等待液晶初始化 lcd_init();

lcd_setxy(0,0); lcdwrite_data('0'); lcd_setxy(0,0); IT0=1;//下降沿触发 EX0=1;//开外部中断0 IT1=1;//下降沿触发 EX1=1;//开外部中断1 EA=1; //开中断 }

/***清零中断程序******/ void EX0_int() interrupt 0 {

lcdwrite_com(0x01); //显示清屏 lcd_setxy(0,0); lcdwrite_data('0'); lcd_setxy(0,0); num='N'; //数字初始化

keynum1=0,keynum2=0,sign=0; ans1=0,ans2=0,ans=0,point=0; conflag=0,newcalc=0; ac=1; }

/***中断程序******/

void EX1_int() interrupt 2 {

if(k==0)

22

{

k=1;

lcdwrite_com(0x08);//显示关 }

else { k=0;

lcdwrite_com(0x0c);//显示开 } }

/******显示7位小数*********/ void lcdwrite_float(float n) {

uchar i=0; uint j=0; long nxtemp; if(n==0) {

lcdwrite_data('0'); return; } if(n<0) {

lcdwrite_data('-'); n=0-n; }

nxtemp=n; //数据类型转换 n=n;//+0.000002;

lcdwrite_num(nxtemp); if((n-nxtemp)>0.000009) {

lcdwrite_data('.'); n=(n-nxtemp)*10000000; nxtemp=n;

lcdwrite_data(nxtemp/1000000+0x30);//显示第7位小数

if((nxtemp000000000000000/10!=0)||(nxtemp00000000000000/100!=0)||(nxtemp000000000000/1000!=0)||(nxtemp000000000/10000!=0)||(nxtemp00000/100000!=0))

lcdwrite_data(nxtemp00000/100000+0x30);//显示第6位小数

if((nxtemp000000000000000/10!=0)||(nxtemp00000%

23

10000000000/100!=0)||(nxtemp000000000000/1000!=0)||(nxtemp000000000/10000!=0))

lcdwrite_data(nxtemp000000000/10000+0x30);//显示第5位小数

if((nxtemp000000000000000/10!=0)||(nxtemp00000000000000/100!=0)||(nxtemp000000000000/1000!=0)) lcdwrite_data(nxtemp000000000000/1000+0x30);//显示第4位小数

if((nxtemp000000000000000/10!=0)||(nxtemp00000000000000/100!=0))

lcdwrite_data(nxtemp00000000000000/100+0x30);//显示第3位小数

if((nxtemp000000000000000/10!=0))

lcdwrite_data(nxtemp000000000000000/10+0x30);//显示第2位小数

// lcdwrite_data(nxtemp+0x30);//显示第1位小数 }

else

return; }

24


硬件课程设计报告剖析(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:微积分的思想和方法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: