ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:62.01KB ,
资源ID:9250397      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9250397.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算器液晶显示.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算器液晶显示.docx

1、计算器液晶显示key.c/*按键相关处理程序*/#include #include work.h/=void jiahander(void);void jianhander(void);void chenghander(void);void chuhander(void);/=/键盘扫描函数 返回键值 1-16/=uchar keys(void) unsigned char recode,i,j; for(i=0;i4;i+) KEY=(0x014; if(recode0x0f) for(j=0;j4;j+) if(!(recode&0x01j)break; return (i2)+(j+1)

2、; /返回键值 1-16 delayms(5); /延时5ms return 0; /无按键返回/=/给键值定义值/=uchar scanzhi(void) uchar zhi,k; k=keys(); switch(k) case 0: zhi=27;break; case 1: zhi=7;break; case 2: zhi=8;break; case 3: zhi=9;break; case 4: zhi=24;break; / / case 5: zhi=4;break; case 6: zhi=5;break; case 7: zhi=6;break; case 8: zhi=23

3、;break; /* case 9: zhi=1;break; case 10: zhi=2;break; case 11: zhi=3;break; case 12: zhi=22;break; /- case 13: zhi=26;break; /nc case 14: zhi=0;break; case 15: zhi=25;break; /= case 16: zhi=21;break; /+ return(zhi);/=void keyscan(void) uchar key; key=scanzhi(); if(key!=27) /-有无按键 if(key20)/-符号输入 pfl

4、ag=1; switch(key) case 21: jiahander();break; /+ case 22: jianhander();break; /- case 23: chenghander(); break; /* case 24: chuhander(); break; / / case 25: if(sfflag=0x01) break; if(qflag=1) sfflag=0; break; czshu=bczs;jishuan();sfflag=0x01;pbuffer1k+=;break; /= case 26: bczs=0;jguo=0;bczshu=0;czsh

5、u=0;sfflag=0; clearplay(3);k=0;qflag=0;jsfuhao=0; break; /nc while(scanzhi()!=27); /=/等号处理函数/=void jishuan(void) switch(jsfuhao) case 1: jguo=bczshu+czshu;jchangep();break; case 2: jguo=bczshu-czshu;jchangep();break; case 3: jguo=bczshu*czshu;jchangep();break; case 4: jguo=bczshu/czshu;jchangep();br

6、eak; jsfuhao=0; qflag=1; /=/加号处理函数/=void jiahander(void) if(sfflag=0x82) return; if(sfflag&0x80)!=0) k-; pbuffer1k+=+; jsfuhao=1; return; if(qflag=1) qflag=0;exchangexx(); bczshu=jguo; bczs=0;pbuffer1k+=+; else bczshu=bczs;bczs=0;pbuffer1k+=+; sfflag|=0x80; sfflag+=0x01; jsfuhao=1;/=/减号处理函数/=void ji

7、anhander(void) if(sfflag=0x82) return; if(sfflag&0x80)!=0) k-; pbuffer1k+=-; jsfuhao=2; return; if(qflag=1) qflag=0;exchangexx(); bczshu=jguo; bczs=0;pbuffer1k+=-; else bczshu=bczs;bczs=0;pbuffer1k+=-; sfflag|=0x80; sfflag+=0x01; jsfuhao=2; /= /乘号处理函数 /=void chenghander(void) if(sfflag=0x82) return;

8、 if(sfflag&0x80)=0x80) k-; pbuffer1k+=*; jsfuhao=3; return; if(qflag=1) qflag=0;exchangexx(); bczshu=jguo; bczs=0;pbuffer1k+=*; else bczshu=bczs;bczs=0;pbuffer1k+=*; sfflag|=0x80; sfflag+=0x01; jsfuhao=3;/=/除号处理函数/=void chuhander(void) if(sfflag=0x82) return; if(sfflag&0x80)!=0) k-; pbuffer1k+=/; js

9、fuhao=4; return; if(qflag=1) qflag=0;exchangexx(); bczshu=jguo; bczs=0;pbuffer1k+=/; else bczshu=bczs;bczs=0;pbuffer1k+=/; sfflag|=0x80; sfflag+=0x01; jsfuhao=4;Lcd1602.c/*LCD1602的驱动程序*/#include #include work.h#include /=/延时约1毫秒/=void delayms(uint z) uint x,y; for(x=z;x0;x-) for(y=120;y0;y-);/=/lcd读

10、忙标志/=uchar lcdbusy() bit result; lcd_rs = 0; lcd_rw = 1; lcd_en = 1; delayms(1); result = (bit)(P0 &0x80); lcd_en = 0; return (result);/=/写数据函数void writedata(uchar wrdata1) /写数据函数 while(lcdbusy(); lcd_rs=1; /write data lcd_rw=0; lcd_en=1; DQ=wrdata1; delayms(5); lcd_en=0; /=/写命令函数/= void writecom(uc

11、har comd) /写命令函数 while(lcdbusy(); lcd_rs=0; lcd_rw=0; lcd_en=1; DQ=comd; delayms(5); lcd_en=0; /*写字符串函数 *void writestr(uchar *p) /无地址,写之前要先写一个地址 uchar i; i=0; while (pi != 0) writedata(pi); i+; */-此函数没有调用过,故注释掉-/*初始化函数*void lcdinit(void) writecom(0x38); /5*8双行显示 delayms(5); writecom(0x06); delayms(5

12、); writecom(0x0c); delayms(5); writecom(0x01); /清屏 writecom(0x80);/=/ 显示清除/=void clearplay(uchar x) uchar i; if(x=1) for(i=0;i16;i+) pbuffer1i=0; else if(x=2) for(i=0;i16;i+) pbuffer2i=0; else if(x=3) for(i=0;i16;i+) pbuffer1i=0; pbuffer2i=0; pbuffer215=0x30; pflag=1; /=/刷全屏:进行一次全屏的刷写/=void displaya

13、ll(void) uchar i; if(pflag=1) writecom(0x0c); writecom(0x80+0x40); /第二行 for(i=0;i16;i+) writedata(pbuffer2i); writecom(0x80); for(i=0;i0;i-) pbuffer1i=pbuffer1i-1; pbuffer10=0; else if(flag=2) for(i=15;i0;i-) pbuffer2i=pbuffer2i-1; pbuffer20=0; /=/功能:结果显示传换/说明:显示的结果小数部分是六位的,显示的只是表像结果,/ 当进行连运算时,结果就不对

14、了,显示结果没有更改上一次的计算结果/=void jchangep(void) /结果显示传换 uchar i,p,q; /i循环变量,p整数位数,q小数位数 uchar n; long int j,m,xs; / float xsj,jguo1; if(jguo15-q;i-) pbuffer2i=xs%10+0x30; xs=xs/10; if(jguo6) n=q-6; for(i=0;in;i+) moveright(2); while(pbuffer215=0x30) /小数点后的0不显示 moveright(2); else if(xsj0.000000002)/-无小数- q=0

15、; for(i=0;i10;i+) m=(long int)pow(10,i); /p整数个数。q小数个数 if(j/m!=0) p=i+1; if(jguo15-p;i-) pbuffer2i=j%10+0x30; j=j/10; else /-小数和整数部分都有- p=1; q=9; xs=xsj*(long int)pow(10,9); while(xs%10=0) xs=xs/10; q-; /取小数个数 p=0; for(i=0;i15-q;i-) pbuffer2i=xs%10+0x30; xs=xs/10; pbuffer215-q=.; if(jguo15-q-p-1;i-) pbuffer2i=j%10+0x30; j=j/10; if(q6) n=q-6; for(i=0;in;i+) moveright(2); while(pbuffer215=0x30) /小数点后的0不显示 moveright(2); pflag=1; /刷屏标志置1/=/连运算的上下两行显示转换/=void exchangexx(void) uchar i,j; j=0; while(pbuffer2j=0) j+; for(i=0;i16;i+) if(j16) pbuffer1i=pbuffer2j+; else pbuffer1i=0; for(i=0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1