• 大小: 40KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: 其他
  • 标签: LCD1602  计算器  

资源简介

通过4*4按键实现+、-、*、/功能的计算器。LCD1602液晶显示出来。

资源截图

代码片段和文件信息

/*******************************************************************/
/***部分内容抄自:ME300B单片机开发系统演示程序 - 矩阵键盘键值显示***/  
/*******************************************************************/

#include 
#include 

sbit BEEP = P3^7;          //蜂鸣器
unsigned char  dis_buf;    //显示缓存
unsigned char addr;        //lcd 显示地址
unsigned char m;
unsigned char data n; 
unsigned char data k;

void beep();               //蜂鸣器
void delay0(unsigned char x);      //x*0.14MS
void cleansec();
void  keydown(void);
void addi(void);    //加法
void subt(void);    //减法
void mult(void);    //乘法
void divi(void);    //除法

sbit LCD_RS = P2^0;             
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;

unsigned char code  cdis1[ ] = {“ A & B  = RESULT“};
unsigned char code  cdis2[ ] = {“                “};
unsigned char data  front[] = {000};
unsigned char data  back[ ] = {000};
unsigned char code result[ ] = {“000000“};

/*************************************************************/
/*                                                           */
/* 延时子程序                                                */
/*                                                           */
/*************************************************************/
void  delay(unsigned char x)
{ unsigned char j;
    while(x--)
    { for(j=0;j<125;j++);
    }
}

/*************************************************************/
/*                                                           */
/*检查LCD忙状态                                              */
/*lcd_busy为1时,忙,等待。lcd-busy为0时闲,可写指令与数据  */
/*                                                           */
/*************************************************************/ 
bit lcd_busy()
 {                          
    bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    _nop_();
    result = (bit)(P0&0x80);
    LCD_EN = 0;
    return(result); 
 }

/*******************************************************************/
/*                                                                 */
/*写指令数据到LCD                                                  */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */
/*                                                                 */
/*******************************************************************/
void lcd_wcmd(unsigned char cmd)
{                          
   while(lcd_busy());
    LCD_RS = 0;
    LCD_RW = 0;
    LCD_EN = 0;
    _nop_();
    _nop_(); 
    P0 = cmd;
    _nop_();
    LCD_EN = 1;
    _nop_();
    LCD_EN = 0;  
}

/*******************************************************************/
/*                                                                 */
/*写显示数据到LCD                                                  */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
/*                                                                 */
/*****************************************************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      26550  2006-08-11 16:25  计算器\count

     文件      15770  2009-06-18 19:36  计算器\count.c

     文件      13115  2006-08-11 16:25  计算器\count.hex

     文件      26700  2006-08-11 16:25  计算器\count.LST

     文件      30048  2006-08-11 16:25  计算器\count.M51

     文件      30922  2006-08-11 16:25  计算器\count.OBJ

     文件       1080  2006-08-11 21:43  计算器\count.Opt

     文件        154  2006-08-11 21:43  计算器\count.plg

     文件       2055  2006-08-11 16:25  计算器\count.Uv2

     文件       1092  2006-08-11 16:25  计算器\count_Opt.Bak

     文件          0  2006-08-11 16:13  计算器\count_Uv2.Bak

     文件       5115  2002-04-16 15:32  计算器\STARTUP.A51

     文件      11754  2006-08-11 16:25  计算器\STARTUP.lst

     文件        834  2006-08-11 16:25  计算器\STARTUP.obj

     目录          0  2009-05-11 00:04  计算器

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

               165189                    15


评论

共有 条评论