历史上的今天
今天是:2024年08月27日(星期二)
2020年08月27日 | LCD1602简易计算器实物与仿真
2020-08-27 来源:51hei
proteus仿真:
实物:
/*******************************************************************************
* 标题: LCD1602简易计算器 *
* 时间 2018年7月26日22:32:18 *
* *
* 实验说明:1602简易计算器,可以实现四位数以内的加减乘除, *
********************************************************************************
* 实验心得:当内部ram不够用的时候,可以定义成xdata,使用外部ram,但是有一个问题*
就是在用proteus仿真的时候,如果有xdata的代码,可能仿真会出现点问题,因为peoteus*
不支持外部扩展ram *
********************************************************************************/
#include #include"lcd.h" #include"math.h" //--定义使用的IO口--// #define GPIO_KEY P1 //--定义全局变量--// unsigned char code XuJian[16]="01470258=369+-x/"; long value[16]; unsigned char Num[8];//此处写成unsigend char xdata Num[8]时,实物可以用,但是仿真有点问题,因为proteus不支持外部扩展ram. unsigned long result;//运算结果 unsigned int flag=0;//标志位 unsigned int m; unsigned int c=0; long First=0;//输入的第一位数 long Second=0;//输入的第二位数 unsigned int Key;//符号判断,如果key=12,为+,13,为-,14为×,15为/。 unsigned char KeyValue=-1; //用来存放读取到的键值 //--声明全局函数--// int KeyScan(void);//键值判断函数 void Delay10ms(unsigned int c); //误差 0us void RES();//结果运算函数 /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { LcdInit(); // for(i=0;i<7;i++) // { // LcdWriteData(TiShi[i]); // } while(1) { KeyValue=KeyScan(); switch(KeyValue) { case(0): LcdWriteCom(0x01); KeyValue=-1; First=0; Second=0; c=0; break; case(1): if(flag==0)//flag为0时,正常计算 { LcdWriteData(XuJian[1]); KeyValue=-1; if(c==0) First=10*First+1; else if(c==1) Second=10*Second+1; } else if(flag==1)//flag为1时,可以在第一次运算好后,继续输入数字,开始第二次计算 { LcdWriteCom(0x01); LcdWriteData(XuJian[1]); KeyValue=-1; First=0; Second=0; c=0; flag=0; if(c==0) First=10*First+1; else if(c==1) Second=10*Second+1; } break; case(2): if(flag==0) { LcdWriteData(XuJian[2]); KeyValue=-1; if(c==0) First=10*First+4; else if(c==1) Second=10*Second+4; } else if(flag==1) { LcdWriteCom(0x01); LcdWriteData(XuJian[2]); KeyValue=-1; First=0; Second=0; c=0; flag=0; if(c==0) First=10*First+4; else if(c==1) Second=10*Second+4; } break; case(3): if(flag==0) { LcdWriteData(XuJian[3]); KeyValue=-1; if(c==0) First=10*First+7;
史海拾趣
|
今天在用PWM——IP核时,但在生成的.bdf模块中没有PWM_OUT,感觉是在添加组件是向导中的signal时,PWM_out的interface和signal type没有选好,但试了好些interface和signal type还是没搞好,pwm_out应该是选择export,但我用的是Quartu ...… 查看全部问答> |
|
我朋友自己公司的一个自行车出租管理系统,现在数据库管理这一块已经完成,手持式终端这一块的功能没有人做,朋友开价8万,要求在年后系统可以运行,不知道有没有人感兴趣?手持式终端这边的设备有现成的,基本配置如下: 1. ARM7主芯片 2. GPRS ...… 查看全部问答> |
|
屏幕坐标原点 一般在左上 那么触摸屏坐标原点在那里呢?网上有人说右上有人说右下还有说左下的,把我搞晕了!! 还有platform.reg注册表中的触摸屏信息 [HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\TOUCH] \"MaxCalError\"=dword:7 ...… 查看全部问答> |
|
char HostIPAdd[32]; TCHAR * nHostAddress; WideCharToMultiByte(CP_OEMCP,NULL,nHostAddress,-1,HostIPAdd,0,NULL,FALSE); m_SockHostAddr.sin_addr.S_un.S_addr=inet_addr(HostIPAdd); m_SockHostAddr.sin_port=htons(nHostPort); TCHAR->ch ...… 查看全部问答> |
|
Precautions for connecting APA outputs to other devices 本帖最后由 dontium 于 2015-1-23 13:38 编辑 Precautions for connecting APA outputs to other devices … 查看全部问答> |
|
一、上游外延片生长设备国产化现状 LED产业链通常定义为上游外延片生长、中游芯片制造和下游芯片封装测试及应用三个环节。从上游到下游行业,进入门槛逐步降低,其中LED产业链上游外延生长技术含量最高,资本投入密度最大,是国际竞争最激烈 ...… 查看全部问答> |
|
嵌人式系统是当前最热门最有发展前景的IT应用领域之一,我们平常用的 手机、可视电话、数码相机、摄像机、机顶盒、路由器、数控设备或仪表、医疗 仪器、航天航空设备等都是嵌入式系统,各个行业对嵌人式技 ...… 查看全部问答> |
|
下载出现问题。。。【 could not open file at GEL_load】 今天把launchpad上面5V的接口用排针焊上了,很小心的焊的。然后我再下载程序:惊奇的发现,不能下载了。~~~~(>_<)~~~~ 这是为什么啊??错误提示的 could not open file at GEL_load。几天前提问过问题,我还有好多金币,怎么悬赏啊 ...… 查看全部问答> |
|
1、用于 USB 电池充电器的同步升压 (5V®4A) DC/DC 控制器 NexFET™ 功率 MOSFET CSD16340Q3 能够使功率转换中损耗降至最低,并针对 5V 门极驱动应用进行了优化。 立即下载4331.slpr035.pdf 2、电信应用的参考设计 N 通道 NexFET͐ ...… 查看全部问答> |




