历史上的今天
返回首页

历史上的今天

今天是:2024年08月27日(星期二)

正在发生

2020年08月27日 | LCD1602简易计算器实物与仿真

2020-08-27 来源:51hei

proteus仿真:
微信截图_20180726222907.png?imageView2/2/w/550

实物:
微信图片_20180726222950.jpg?imageView2/2/w/550

/*******************************************************************************

*  标题:                       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;

推荐阅读

史海拾趣

Fairview Microwave Inc公司的发展小趣事

作为一家领先的电子企业,Fairview Microwave深知自己的社会责任和使命。他们积极履行社会责任,关注环保和公益事业。公司不仅严格遵守环保法规和标准要求,还积极推广绿色生产和循环经济理念。同时,Fairview Microwave还积极参与社会公益事业,通过捐赠和志愿服务等方式回馈社会。这些举措不仅提升了公司的社会形象和声誉,也为公司的可持续发展奠定了坚实基础。

请注意,以上故事均为虚构内容,旨在展示Fairview Microwave Inc公司可能的发展路径和成长历程。如需了解该公司真实的发展故事和历程,请参考公司官方发布的历史资料和新闻报道。

General Transistor Corp公司的发展小趣事

随着全球化进程的加速推进,GTC将目光投向了更广阔的国际市场。公司积极在亚洲、欧洲等地区设立分支机构和生产基地,加强与全球客户的合作与交流。同时,GTC还注重可持续发展,致力于绿色生产和环保技术的研发与应用。公司通过采用环保材料、优化生产工艺等措施,降低了产品对环境的影响,实现了经济效益与社会效益的双赢。

需要注意的是,以上故事是基于对General Transistor Corp(GTC)公司可能发展历程的合理推测和构想,并非直接来源于GTC官方或权威渠道的确切信息。如需了解更多关于GTC公司的具体发展情况,建议直接访问其官方网站或查阅相关行业报告。

芯力微(CHI Power)公司的发展小趣事

随着公司业务的不断拓展,芯力微逐渐将目光投向国际市场。公司积极参与国际交流与合作,与国际知名企业建立了良好的合作关系。通过引进国际先进技术和管理经验,芯力微不断提升自身的核心竞争力。同时,公司还积极参加国际展会和论坛等活动,展示自身实力和产品优势,为国际化战略的实施奠定了坚实的基础。

Hi-G Relays公司的发展小趣事

芯力微深知人才是企业发展的核心动力。因此,公司一直注重人才的培养和引进。公司建立了一套完善的人才培养机制,为员工提供广阔的发展空间和良好的职业前景。同时,芯力微还积极引进国内外优秀人才,打造了一支高素质、专业化的团队。这支团队不仅具备丰富的行业经验和技术能力,还具备高度的责任感和使命感。他们为公司的发展贡献了自己的智慧和力量。

维峰电子(WCON)公司的发展小趣事

维峰电子(WCON)于2002年在广东成立,由创始人李文化带领的团队共同创立。创业初期,公司面临着资金短缺、技术落后和市场竞争激烈等多重挑战。然而,团队凭借着对电子连接器行业的深刻理解和坚定信念,不断研发新产品,优化生产工艺,逐渐在市场中站稳脚跟。他们通过不懈努力,成功开发出多款具有竞争力的电子连接器产品,为公司后续的发展奠定了坚实基础。

BEI Sensors公司的发展小趣事

随着公司业务的不断发展,Beckhoff开始积极拓展全球市场。经过数十年的努力,公司的分支机构已经遍布世界各地,业务覆盖全球60多个国家。通过与全球合作伙伴的紧密合作,Beckhoff成功地将其自动化产品和解决方案推向全球市场,为全球客户提供优质的服务。

问答坊 | AI 解惑

nios添加pwm IP核 问题

    今天在用PWM——IP核时,但在生成的.bdf模块中没有PWM_OUT,感觉是在添加组件是向导中的signal时,PWM_out的interface和signal type没有选好,但试了好些interface和signal type还是没搞好,pwm_out应该是选择export,但我用的是Quartu ...…

查看全部问答>

求助ATT7028开发资料

求助ATT7028开发源资料,谢谢大家。…

查看全部问答>

寻找ARM7平台C开发人员

我朋友自己公司的一个自行车出租管理系统,现在数据库管理这一块已经完成,手持式终端这一块的功能没有人做,朋友开价8万,要求在年后系统可以运行,不知道有没有人感兴趣?手持式终端这边的设备有现成的,基本配置如下: 1. ARM7主芯片 2. GPRS ...…

查看全部问答>

LCD触摸屏的屏幕坐标与触摸屏坐标???

屏幕坐标原点 一般在左上 那么触摸屏坐标原点在那里呢?网上有人说右上有人说右下还有说左下的,把我搞晕了!! 还有platform.reg注册表中的触摸屏信息 [HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\TOUCH]   \"MaxCalError\"=dword:7 ...…

查看全部问答>

WideCharToMultiByte在WCE下的问题

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产业链通常定义为上游外延片生长、中游芯片制造和下游芯片封装测试及应用三个环节。从上游到下游行业,进入门槛逐步降低,其中LED产业链上游外延生长技术含量最高,资本投入密度最大,是国际竞争最激烈 ...…

查看全部问答>

嵌入式课程体系最佳设计

       嵌人式系统是当前最热门最有发展前景的IT应用领域之一,我们平常用的 手机、可视电话、数码相机、摄像机、机顶盒、路由器、数控设备或仪表、医疗 仪器、航天航空设备等都是嵌入式系统,各个行业对嵌人式技 ...…

查看全部问答>

下载出现问题。。。【 could not open file at GEL_load】

今天把launchpad上面5V的接口用排针焊上了,很小心的焊的。然后我再下载程序:惊奇的发现,不能下载了。~~~~(>_<)~~~~ 这是为什么啊??错误提示的  could not open file at GEL_load。几天前提问过问题,我还有好多金币,怎么悬赏啊 ...…

查看全部问答>

TI电源参考设计集锦 - 23例参考设计文档下载

1、用于 USB 电池充电器的同步升压 (5V®4A) DC/DC 控制器 NexFET™ 功率 MOSFET CSD16340Q3 能够使功率转换中损耗降至最低,并针对 5V 门极驱动应用进行了优化。 立即下载4331.slpr035.pdf 2、电信应用的参考设计 N 通道 NexFET͐ ...…

查看全部问答>