资源简介
具有记忆功能的简易计算器,支持加减乘除和括号运算,且可判断算式的正确性。
代码片段和文件信息
#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
- 上一篇:landmarc定位
- 下一篇:IDL树高反演 三阶段算法直线拟合
相关资源
- 基于51单片机/高精度AD(24位)芯片
- 基于51单片机的蓝牙控制继电器程序
- 51单片机篮球计时与计分器
- 基于51单片机的八路抢答器C程序
- 基于步进电机的电梯-51单片机
- 51单片机小车金属丝循迹
- 51单片机——简易计算器设计源码、
- 基于89C51单片机的LCD音乐闹钟(详细注
- 基于STC 51单片机的智能循迹小车
- 51单片机心形流水灯
- 51单片机,DS18B20实现程序
- 交通灯程序设计1
- 51单片机+adc0809+PT100的24路温度巡检仪
- LED点阵显示汉字
- 51单片机流水灯仿真+程序
- 51单片机DHT11温湿度
- 基于51单片机HC-06蓝牙模块使用
- 基于51单片机的HC-08蓝牙程序
- 51单片机实用计算器汇编+数码管.zip
- 51单片机 菜单程序OLED屏
- 51单片机跑uC/OS II 2个任务
- 基于51单片机的GPS定位程序
- 基于51单片机和PROTEUS的非常形象的交
- 最经典的51单片机经典流水灯汇编程序
- QX-mini51开发板资料.zip
- 基于51单片机的智能交通灯设计
- 以51单片机为核心的DS18B20的数码管显
- 基于51单片机pwm控制的呼吸灯程序
- MCS-51单片机期末试题2及答案
- 基于51单片机的打地鼠游戏
评论
共有 条评论