基于单片机的简单计算器(6)

2020-02-20 22:51

基于单片机控制的简单计算器设计与仿真

display(num); } else

dataoverflow(); break; case 3: x=x*y; num=x;

if(num<134217728&&num>-134217728) {

display(num); } else

dataoverflow(); break; case 4: if (y==0) dealerror(); else { x=x/y; num=x;

if(num<134217728&&num>-134217728) {

display(num); } else

dataoverflow(); } break; } y=0; }

- 22 -

}

(3)LCD显示程序设计:

利用LCD静态显示,通过程序向LCD写指令字或数据使LCD完成不同功能或显示相应数据。

/**************LCD初始化函数*************/ void init_LCM() {

write_com(0x30); write_com(0x30); write_com(0x30); write_com(0x38); write_com(0x08); write_com(0x01); write_com(0x06); write_com(0x0e); }

/***********LCD写数据函数*************/ void write_data(char ddata) {

RS=1;/*写指令*/ R_W=0;

EN=1;/*使能信号开*/ P1=ddata;/*将数据送入p1口*/ EN=0;/*使能信号关*/ check_BF(); }

/***********LCD写指令函数*************/ void write_com(char command) {

RS=0;/*写指令*/ R_W=0;

- 23 -

基于单片机控制的简单计算器设计与仿真

EN=1;/*使能信号开*/

P1=command;/*将数据送入p1口*/ EN=0;/*使能信号关*/ check_BF(); }

/************LCD检查忙碌函数***********/ void check_BF() {

char i,x=0x80; P1=0xff; while(x&0x80) { RS=0; R_W=1; EN=1; x=P1; EN=0;

for (i=0;i<10;i++); }

EN=0;/*关闭使能信号*/ }

/**********LCD清屏函数**********/ void clearLCD() {

write_com(0x01); }

/**********LCD显示函数**********/ void display(long a) {

long temp,b,c=-1; int lenth=1,i,j; clearLCD(); if(a<0)

- 24 -

{ a=a*c;

write_data('-'); } temp=a;

while((temp=temp/10)!=0) { lenth++; }

for(i=lenth;i>0;i--) { b=1;

for(j=0;j

write_data(0x30+a/b); a=a%b; }

}

(4)错误处理及提示程序设计: /**********除数为处理函数**********/ void dealerror() { int i=0; clearLCD(); for(i=0;i<5;i++) write_data(error[i]); }

/*********数值溢出处理函数**********/ void dataoverflow() { int i=0;

- 25 -

基于单片机控制的简单计算器设计与仿真

clearLCD(); for(i=0;i<8;i++) write_data(overflow[i]);

- 26 -


基于单片机的简单计算器(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:九年级物理全册 第18章 第2节 第2课时 电功率的综合计算教案(新

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

马上注册会员

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