历史上的今天
返回首页

历史上的今天

今天是:2024年12月21日(星期六)

2020年12月21日 | 51单片机基础计算器

2020-12-21 来源:51hei

51hei.png?imageView2/2/w/550
I5C@K0OU8PS0@1Z1TZJ_QKX.png?imageView2/2/w/550
电路原理图如下:
51hei.png?imageView2/2/w/550

单片机源程序如下:

/*

接盘按键说明:

--------------------------------------------------

            |  1  |  2  |  3  |  +  |  

            - - - - - - - - - - - - -

            |  4  |  5  |  6  |  -  |

            - - - - - - - - - - - - -

            |  7  |  8  |  9  |  *  |

            - - - - - - - - - - - - -

                              |  C  |  0  |  =  |  /  |

--------------------------------------------------*/

//操作简介

// 按第一个数,再按'+-*/',再按'='显示出结果,然后按C清屏

// 加最大9999+9999=19998

// 减最大9999-0   =9999

// 乘最大9999*9999=99980001

// 除 1/9=0.1111 保留小数点后4位

#include

#define uint unsigned int

#define uchar unsigned char

//--------LCD1602-------------------

//P00-07==== D0-7

sbit rs=P2^5;        //指令or数据

sbit wela=P2^6;      //读or写

sbit lcden=P2^7;         //使能信号

//--------LCD1602-------------------

//--------KEY-----------------------

//P1口

//--------KEY-----------------------

uchar code table[]= "                ";


long  int data_a,data_b;         //第一个数和第二个数

long  int data_c;                        //计算结果


uchar dispaly[10];         //显示缓冲


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

// 描述: 延时t us函数

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

void LCD_Delay_us(unsigned int t)

{

        while(t--);           //t=0,退出

}

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

// 描述: 延时t ms函数

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

void LCD_Delay_ms(unsigned int t)

{

        unsigned int i,j;

        for(i=0;i        for(j=0;j<113;j++)                     //执行113次循环

        ;

}

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

// 描述: 1602液晶写指令

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

void write_com(uchar com)            //1602液晶写指令

{

        rs=0;                       //写指令

        lcden=0;                    //使能1602

        P0=com;                     //写入指令com

        LCD_Delay_ms(1);            //延时1ms

        lcden=1;                    //使能1602

        LCD_Delay_ms(2);            //延时2ms  

        lcden=0;                        //使能1602

}

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

// 描述:1602液晶写数据

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

void write_date(uchar date) //1602液晶写数据

{

        rs=1;                        //写数据

        lcden=0;                     //使能1602

        P0=date;                     //写入数据date

        LCD_Delay_ms(1);             //延时1ms

        lcden=1;                     //使能1602

        LCD_Delay_ms(2);             //延时2ms

        lcden=0;                         //使能1602

}

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

// 描述:指定x,y写入字符函数

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

void W_lcd(unsigned char x,unsigned char y,unsigned char Data)

{     

         if (y == 0){write_com(0x80 + x);}   //第一行  

         else{write_com(0xc0 + x);}          //第二行

         write_date( Data);                  //写入数据

}

//指定x,y写入字符串函数

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)

{     

if (y == 0){write_com(0x80 + x);}                 //第一行

else{write_com(0xC0 + x);}                        //第二行

while (*s)                                        //

         {write_date( *s); s++;}                      //写入数据

}

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

// 描述:初始化液晶,及画面初始化

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

void init_lcd(void)            //初始化液晶,及画面初始化

{

        wela=0;                      //写液晶

        lcden=0;                     //使能1602

        write_com(0x38);             //8 位总线,双行显示,5X7 的点阵字符

        LCD_Delay_us(100);           //延时100us

        write_com(0x0c);             //开显示,无光标,光标不闪烁

        write_com(0x06);             //光标右移动

        write_com(0x01);             //清屏

        write_com(0x80);             //DDRAM 地址归0

}

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

// 描述: 反转法键盘扫描

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

short keycheckdown()                                /* 反转法键盘扫描 */

{


        short temp1,temp2,temp,a=0xff;

        P1=0xf0;                                                /* 输入行值(或列值) */

        LCD_Delay_ms(20);                                /* 延时 */

        temp1=P1;                                                /* 读列值(或行值) */

        P1=0xff;

        LCD_Delay_ms(20);                                /* 延时 */

        P1=0x0f;                                                /* 输入列值(或行值) */

        LCD_Delay_ms(20);                                /* 延时 */        

        temp2=P1;                                                /* 读行值(或列值) */

        P1=0xff;

        temp=(temp1&0xf0)|(temp2&0xf);        /* 将两次读入数据组合 */

        switch(temp)                                        /* 通过读入数据组合判断按键位置 */

        {



                case 0x77 :a=0x0d;break;//  按键/   

                case 0x7b :a=0x0e; break;// 按键=        

                case 0x7d :a=0;           break;// 按键0

                case 0x7e :a=0x0f; break;// 按键CE


                case 0xb7 :a=0x0c;break;//         按键*

                case 0xbb :a=0x9;break; //  按键9

                case 0xbd :a=0x8;break; //  按键8

                case 0xbe :a=0x7;break; //         按键7


                case 0xd7 :a=0x0b;break;//  按键-

推荐阅读

史海拾趣

ARBOR公司的发展小趣事

随着全球电子市场的日益繁荣,ARBOR公司开始实施国际化战略。公司在多个国家和地区设立了分支机构,积极与当地企业合作,拓展市场份额。通过不断调整和优化产品线,ARBOR公司的产品逐渐在全球范围内赢得了良好的口碑。国际化战略的实施不仅提升了公司的知名度,也为公司的持续发展奠定了坚实基础。

Hirose公司的发展小趣事

随着环保意识的日益增强,ARBOR公司积极响应国家号召,致力于绿色电子产品的研发和生产。公司投入大量资金研发环保材料和技术,成功推出了一系列绿色电子产品。这些产品不仅具有优异的性能,还符合环保标准,得到了消费者的广泛认可。ARBOR公司的绿色环保理念也为整个电子行业树立了榜样。

Equator Technologies公司的发展小趣事

在XX年代中期,Equator迎来了一个重要的转折点——被Pixelworks公司收购。Pixelworks是一家在显示图像处理领域具有领先地位的公司,其产品线广泛,包括用于各种显示设备的图像处理芯片和软件。与Pixelworks的合并使Equator获得了更广阔的市场和资源支持,加速了其技术和产品的发展。合并后,Equator继续专注于视频处理技术的研发,并与Pixelworks共同推出了多款创新产品。

City_Technology公司的发展小趣事

随着业务的不断扩展,City Technology于1990年在英国南海岸的普茨茅斯建立了生产基地,并将办公楼从伦敦中心区迁至该地。这一举措不仅提高了公司的生产效率,也为其进一步拓展国际市场提供了有力支持。此后,公司开始在全球范围内设立销售中心,包括波恩(德国)、苏黎世(瑞士)、上海及芝加哥等地,逐步实现了业务的国际化。

Dexter Research Center Inc公司的发展小趣事

Dexter始终将技术创新作为企业发展的核心动力。公司不断投入研发资源,推动传感器技术的创新和发展。通过与高校、研究机构的合作,Dexter成功引入了多项新技术、新材料,并将其应用于产品中。这些创新产品不仅提高了传感器的性能和精度,还拓展了其应用领域。Dexter的创新精神引领了行业的发展方向,使其成为了行业的佼佼者。

Hama公司的发展小趣事

随着技术的不断成熟,H&D Wireless开始积极拓展市场。公司凭借其创新的物联网技术和解决方案,成功吸引了多个行业巨头的关注。2017年,H&D Wireless与全球知名汽车制造商Scania签署了为期12个月的物联网服务协议,为其Smart Factory提供Raven IoT Sensor Box827解决方案。这一合作不仅提升了Scania工厂的生产效率,还进一步验证了H&D Wireless在物联网领域的实力。

问答坊 | AI 解惑

PIC 8位单片机的分类和特点

PIC 8位单片机的分类和特点 …

查看全部问答>

大赛用芯片资料

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 芯片资料  …

查看全部问答>

2010年的汽车电子趋势预测

中国的汽车产业在今年很有可能触及或跨越年产销一千万辆这个门槛,事实上在实现这个目标以前,中国就已经成为仅次于美国的全球第二大汽车市场。在当前的汽车中,汽车电子系统所占的比重越来越大,很多特色化的功能都是依赖汽车电子技术来实现的,如 ...…

查看全部问答>

淘宝上的linux开发板能买不??

我是新手,以前都是跟着导师做单片机的。感觉单片机有点“不过瘾”的感觉,想往高深的学。想学linux下嵌入式编程,但是身边又没有的这方面的资源。于是想买一块开发板子。请问:淘宝上的那种便宜的开发板比如像2410、2440板子能买不?? 问题1:开 ...…

查看全部问答>

请问一般公司会招聘底层开发(驱动开发)的应届生吗

本人在校学生,最近做的项目都用到了一些驱动的开发,感觉底层这方面的编程比普通的软件开发难度大一点。如果是软件公司招聘的话,他们会招聘新手吗?个人感觉做这方面的真正开发,都是有多年经验的老手。…

查看全部问答>

ce下怎么获取ESN码还有怎么获取是手机的型号啊。。

ce下怎么获取ESN码还有怎么获取是手机的型号啊。。 …

查看全部问答>

伺服系统小结(连续上篇)

三、伺服系统调试   接通伺服驱动器的电源, 先进入测试调整模式,测试调整模式可以执行伺服驱动器的测试操作,报警复位和参数编辑等等.其数字操作器的按键说明如表1: 键 出现的情况 MOD 在不同模式 ...…

查看全部问答>

2812调试时关于看门狗的一些问题

2812调试时关于看门狗的一些问题 大家好, 我目前正在调试一块自己做的2812的板子,遇到关于看门狗的一些问题: 一点连续运行按钮程序就跳到3FFC00处(此处应该是复位向量),而点单步运行的时候程序可以走的.点连续运行的时候用示波器观察reset引脚,发 ...…

查看全部问答>

机械电能表到电子式电能表讲义

机械电能表到电子式电能表讲义,从事电能表行业可以看看哦! [ 本帖最后由 aishuang 于 2011-7-16 12:22 编辑 ]…

查看全部问答>

请大家看看我这个串口的程序哪里不对??很多乱码

单片机的接收端是连接的GPS信号, 发送端连接的是GPRS的接收。 单片机就是把收到的经纬度找出来传给GPRS,用UDP发送。 只要不连GPS, 发送的数据就完全正确。 连了GPS之后,数据就乱了,GPS是一直在发送,速度很快 #include #include #incl ...…

查看全部问答>