• 大小: 18KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: 51单片机  

资源简介

具有记忆功能的简易计算器,支持加减乘除和括号运算,且可判断算式的正确性。

资源截图

代码片段和文件信息

#include“i2c.h“
void Delay10us()
{
    unsigned char ab;
    for(b=1;b>0;b--)
        for(a=2;a>0;a--);
    
}
void I2cStart()
{
    SDA=1;
    Delay10us();
    SCL=1;
    Delay10us();//建立时间是SDA保持时间>4.7us
    SDA=0;
    Delay10us();//保持时间是>4us
    SCL=0;
    Delay10us();
}
void I2cStop()
{
    SDA=0;
    Delay10us();
    SCL=1;
    Delay10us();//建立时间大于4.7us
    SDA=1;
    Delay10us();
}
unsigned char I2cSendByte(unsigned char dat)
{
    unsigned char a=0b=0;//最大255,一个机器周期为1us,最大延时255us。
    for(a=0;a<8;a++)//要发送8位,从最高位开始
    {
        SDA=dat>>7;     //起始信号之后SCL=0,所以可以直接改变SDA信号
        dat=dat<<1;
        Delay10us();
        SCL=1;
        Delay10us();//建立时间>4.7us
        SCL=0;
        Delay10us();//时间大于4us
    }
    SDA=1;
    Delay10us();
    SCL=1;
    while(SDA)//等待应答,也就是等待从设备把SDA拉低
    {
        b++;
        if(b>200)     //如果超过2000us没有应答发送失败,或者为非应答,表示接收结束
        {
            SCL=0;
            Delay10us();
            return 0;
        }
    }
    SCL=0;
    Delay10us();
    return 1;
}
unsigned char I2cReadByte()
{
    unsigned char a=0dat=0;
    SDA=1;            //起始和发送一个字节之后SCL都是0
    Delay10us();
    for(a=0;a<8;a++)//接收8个字节
    {
        SCL=1;
        Delay10us();
        dat<<=1;
        dat|=SDA;
        Delay10us();
        SCL=0;
        Delay10us();
    }
    return dat;
}
void At24c02Write(unsigned char addrunsigned char dat)
{
    I2cStart();
    I2cSendByte(0xa0);//发送写器件地址
    I2cSendByte(addr);//发送要写入内存地址
    I2cSendByte(dat);    //发送数据
    I2cStop();
}
unsigned char At24c02Read(unsigned char addr)
{
    unsigned char num;
    I2cStart();
    I2cSendByte(0xa0); //发送写器件地址
    I2cSendByte(addr); //发送要读取的地址
    I2cStart();
    I2cSendByte(0xa1); //发送读器件地址
    num=I2cReadByte(); //读取数据
    I2cStop();
    return num;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件           0  2019-01-11 12:04  51+1602璁$畻鍣?
     文件        6148  2019-01-10 15:47  51+1602璁$畻鍣?.DS_Store
     目录           0  2019-01-19 14:53  __MACOSX\
     文件           0  2019-01-19 14:53  __MACOSX\51+1602璁$畻鍣?
     文件         120  2019-01-10 15:47  __MACOSX\51+1602璁$畻鍣?._.DS_Store
     文件         516  2018-12-24 20:19  51+1602璁$畻鍣?lcd.h
     文件         243  2018-12-24 20:19  __MACOSX\51+1602璁$畻鍣?._lcd.h
     文件        2045  2018-12-26 17:39  51+1602璁$畻鍣?i2c.c
     文件         243  2018-12-26 17:39  __MACOSX\51+1602璁$畻鍣?._i2c.c
     文件       15093  2019-01-11 12:04  51+1602璁$畻鍣?main.c
     文件         716  2019-01-11 12:04  __MACOSX\51+1602璁$畻鍣?._main.c
     文件       21638  2019-01-07 21:07  51+1602璁$畻鍣?calculator.hex
     文件         539  2019-01-07 21:07  __MACOSX\51+1602璁$畻鍣?._calculator.hex
     文件        1514  2018-12-26 18:12  51+1602璁$畻鍣?lcd.c
     文件         243  2018-12-26 18:12  __MACOSX\51+1602璁$畻鍣?._lcd.c
     文件         322  2018-12-26 17:39  51+1602璁$畻鍣?i2c.h
     文件         243  2018-12-26 17:39  __MACOSX\51+1602璁$畻鍣?._i2c.h

评论

共有 条评论