单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机计算器--四则运算程序.doc

单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机计算器--四则运算程序.doc

ID:50308199

大小:41.50 KB

页数:5页

时间:2020-03-07

单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机计算器--四则运算程序.doc_第1页
单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机计算器--四则运算程序.doc_第2页
单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机计算器--四则运算程序.doc_第3页
单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机计算器--四则运算程序.doc_第4页
单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机计算器--四则运算程序.doc_第5页
资源描述:

《单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机计算器--四则运算程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、01020304050607080910111213141516171819202122232425262728293031323334353637383940//proj12.c//计算器--四则运算程序#include//52系列单片机头文件#defineucharunsignedchar//宏定义#defineuintunsignedint//宏定义#definedis_portP0//宏定义#definekey_portP3//宏定义sbitdx=P2^6;//定义74HC573段选位sbitwx=P2^7;//定义7

2、4HC573位选位bitfushu;//负数标志bittwobz;//第二个操作数标志bitzero;//0标志(操作数为"0"时此标志为1,此时输入0无效)ucharfh;//fh为运算符号标记uintnum1,num2,number;//分别为第一个操作数,第二个操作数和结果单元变量//定义矩阵键盘码:'D'代表除、'M'代表乘、'S'代表减、'A'代表加、'C'代表清除、'E'代表等号ucharcodejp[4][4]={7,8,9,'D',4,5,6,'M',1,2,3,'S','C',0,'E','A'};//与4*4矩阵键盘相对应/

3、/定义位码数组及相应的值uchardis_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义共阴字形码,前10个元素依次为0~9的字形码,//第11个元素(下标为10)为消隐码、第12个元素为出错标记"E"字形码、第13个元素为"-"的字形码ucharcodeLEDcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x79,0x40};//定义显示缓冲区ucharbuff[8];voiddelay(uintt)//延

4、时子函数{uchari;while(t--)for(i=0;i<5;i++);}//键盘扫描子函数uchargetkey(){ucharhan,lie,pos;pos=0x01;//每次从第一行开始扫描for(han=0;han<4;han++)41424344454647484950515253545556575859606162636465666768697071727374757677787980{key_port=~pos;//逐行扫描,待扫描行输出"0",其它输出"1"if(~key_port&0xf0)//本行有键按下?{delay

5、(100);//去抖动if(~key_port&0xf0)//再次判断本行有键按下?{//确实有键按下,识别本行的哪一列按下switch(~key_port&0xf0){case0x10:lie=0;break;case0x20:lie=1;break;case0x40:lie=2;break;case0x80:lie=3;break;}while(~key_port&0xf0);//等待键释放return(jp[han][lie]);//返回按键行列所对应的键值}}pos=pos<<1;//没键按下继续为下一行扫描做准备}return(0xf

6、f);//4行都没键按下则返回0XFF作为无键按下标志}//初始化显示缓冲区cls1(){buff[0]=buff[1]=buff[2]=buff[3]=buff[4]=buff[5]=buff[6]=10;buff[7]=0;}//初始化各数据及标志变量cls2(){number=num1=num2=fh=fushu=twobz=0;zero=1;}//显示缓冲区左移,新输入的数放在最右边的单元中buffkz(uchark){buff[3]=buff[4];buff[4]=buff[5];818283848586878889909192939

7、49596979899100101102103104105106107108109110111112113114115116117118119120buff[5]=buff[6];buff[6]=buff[7];buff[7]=k;}/*==========数字处理==========*/shuzichuli(uchark){if(zero&&k==0)return;//若输入的是"0"且操作数也还为0则不作处理if(zero){//第一个非0处理zero=0;//"0"标志无效buff[7]=k;//第一个非0显示区不移位只更新最低位}els

8、ebuffkz(k);//从第二个有效数开始调用显示缓冲区处理if(twobz==0)num1=num1*10+k;//第一个操作数elsenum2=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。