读取的是通道3,通过电位器2调节电压。然后输出的是5V电压,用万能表测量。
main.c文件

#include "stc15f2k60s2.h"
#include "iic.h"typedef unsigned char u8;
typedef unsigned int u16;u8 code duan[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};u16 Rb2=0;void delay(u16 i)
{while(i--);
}void Chan_hc573(chose)
{switch(chose){case 4:P2 = ( P2 & 0x1f ) | 0x80; break;case 5:P2 = ( P2 & 0x1f ) | 0xa0; break;case 6:P2 = ( P2 & 0x1f ) | 0xc0; break;case 7:P2 = ( P2 & 0x1f ) | 0xe0; break;}P2 = ( P2 & 0x1f ) | 0x00;
}void Smg_display(u8 com,u8 dat)
{P0=0xff;Chan_hc573(7);P0=0x01<<com;Chan_hc573(6);P0=dat;Chan_hc573(7);
}void Close_smg()
{P0=0x00;Chan_hc573(6);P0=0xff;Chan_hc573(7);
}void Display_temp()
{Smg_display(0,duan[10]); delay(500);Smg_display(1,duan[10]); delay(500);Smg_display(2,duan[10]); delay(500);Smg_display(3,duan[10]); delay(500);Smg_display(4,duan[10]); delay(500);Smg_display(5,duan[Rb2/100]+0x80); delay(500);Smg_display(6,duan[Rb2/10%10]); delay(500);Smg_display(7,duan[Rb2%10]); delay(500);Close_smg();
}void Init_system()
{P0=0x00;Chan_hc573(5);P0=0xff;Chan_hc573(4);
}void main()
{Init_system();while(1){Rb2=read_pcf8591(3)/0.51;wire_pcf8591(255);Display_temp();}
}

iic.c文件

#include "reg52.h"
#include "intrins.h"
#include "iic.h"#define DELAY_TIME 5#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1//×ÜÏßÒý½Å¶¨Òå
sbit SDA = P2^1;  /* Êý¾ÝÏß */
sbit SCL = P2^0;  /* ʱÖÓÏß */void IIC_Delay(unsigned char i)
{do{_nop_();}while(i--);
}
//×ÜÏßÆô¶¯Ìõ¼þ
void IIC_Start(void)
{SDA = 1;SCL = 1;IIC_Delay(DELAY_TIME);SDA = 0;IIC_Delay(DELAY_TIME);SCL = 0;
}
//×ÜÏßÍ£Ö¹Ìõ¼þ
void IIC_Stop(void)
{SDA = 0;SCL = 1;IIC_Delay(DELAY_TIME);SDA = 1;IIC_Delay(DELAY_TIME);
}
//·¢ËÍÓ¦´ð
void IIC_SendAck(bit ackbit)
{SCL = 0;SDA = ackbit;                    // 0£ºÓ¦´ð£¬1£º·ÇÓ¦´ðIIC_Delay(DELAY_TIME);SCL = 1;IIC_Delay(DELAY_TIME);SCL = 0; SDA = 1;IIC_Delay(DELAY_TIME);
}
//µÈ´ýÓ¦´ð
bit IIC_WaitAck(void)
{bit ackbit;SCL  = 1;IIC_Delay(DELAY_TIME);ackbit = SDA;SCL = 0;IIC_Delay(DELAY_TIME);return ackbit;
}
//ͨ¹ýI2C×ÜÏß·¢ËÍÊý¾Ý
void IIC_SendByte(unsigned char byt)
{unsigned char i;for(i=0; i<8; i++){SCL  = 0;IIC_Delay(DELAY_TIME);if(byt & 0x80) SDA  = 1;else SDA  = 0;IIC_Delay(DELAY_TIME);SCL = 1;byt <<= 1;IIC_Delay(DELAY_TIME);}SCL  = 0;
}
//´ÓI2C×ÜÏßÉϽÓÊÕÊý¾Ý
unsigned char IIC_RecByte(void)
{unsigned char i, da;for(i=0; i<8; i++){   SCL = 1;IIC_Delay(DELAY_TIME);da <<= 1;if(SDA) da |= 1;SCL = 0;IIC_Delay(DELAY_TIME);}return da;
}unsigned char read_pcf8591(unsigned char addr)
{unsigned char dat;IIC_Start();IIC_SendByte(0x90);IIC_WaitAck();IIC_SendByte(addr);IIC_WaitAck();IIC_Stop();IIC_Start();IIC_SendByte(0x91);IIC_WaitAck();dat=IIC_RecByte();IIC_SendAck(1);IIC_Stop();return dat;
}void wire_pcf8591(unsigned char dat)
{IIC_Start();IIC_SendByte(0x90);IIC_WaitAck();IIC_SendByte(0x40);IIC_WaitAck();IIC_SendByte(dat);IIC_WaitAck();
}

iic.h文件

#ifndef _IIC_H
#define _IIC_H
void wire_pcf8591(unsigned char dat);
unsigned char read_pcf8591(unsigned char addr);#endif

蓝桥杯pcf8591读和写相关推荐

  1. 第十三届蓝桥杯 2022年省赛真题(Java 大学C组)

    蓝桥杯 2022年省赛真题(Java 大学C组) 目录 试题 A: 排列字母 试题 B: 特殊时间 试题 C: 纸张尺寸 试题 D: 求和 试题 E: 矩形拼接 试题 F: 选数异或 试题 G: GC ...

  2. 蓝桥杯单片机设计与开发笔记(一)

    近期和我们实验室的小伙伴一起参加了第七届蓝桥杯单片机开发与设计组省赛,在这里将备赛期间的一些资料和经验总结一下,并分享给大家. 蓝桥杯单片机开发板是国信长天的CT107D单片机综合训练平台,个人感觉这 ...

  3. 算法比赛经历--蓝桥杯,天梯赛,力扣,牛客,cf,acwing,acm

    第一次蓝桥杯,是去年,用c++写,混了个省二等. 今年蓝桥杯,用java写,水进上海前三,混了个省一等,国赛混了个二等 天梯赛混了个团三... 然后是查缺补漏,扩展算法知识点,真枯燥,临近白发,刷题太 ...

  4. PCF8591详解(蓝桥杯单片机模块(IIC总线))

    文章目录 概述 特性 总体 框图 引脚 功能描述 寻址 控制字节 D/A转换 D/A转换过程 A/D转换 A/D转换过程 蓝桥杯部分 原理图部分 AD部分 DA部分 结束 概述 PCF8591是一款单 ...

  5. 蓝桥杯单片机之PCF8591模块的使用

    蓝桥杯单片机之PCF8591模块的使用 简述 原理图: 引脚定义: 相关地址 IIC寻址设备地址 控制地址 IIC时序分析 数模转换D/A 模数转换 代码: 一:光敏电阻和可变电阻的AD转换,S4控制 ...

  6. 蓝桥杯 模板Template Part9:PCF8591 ADC/DAC

    九层妖塔 起于垒土 蓝桥杯 模板Template Part9:PCF8591 ADC/DAC 一.原理图 二.通过IIC对PCF8591的写操作与读操作 写操作 读操作 三.基本模板 1.`头文件` ...

  7. 【蓝桥杯13】——PCF8591的应用(AD转换)

    功能概述 PCF8591是具有IIC接口的8位A/D和D/A转换芯片 如果硬件地址引脚A0.A1.A2均接地,那么,PCF8591的设备的读操作地址为:0x91:而写操作地址则为:0x90. 蓝桥杯单 ...

  8. 蓝桥杯单片机比赛学习:9、PCF8591的基本原理和使用方法

    前面一节我们说了PWM呼吸灯的基本原理和使用方法,下面我们来看第二个模块,也是蓝桥杯单片机比赛中常考的一个模块--PCF8591.我主页有其他模块的使用方法和基本原理(2条消息) Do My Best ...

  9. 蓝桥杯各模块使用总结 时钟DS1302 ,ADC DAC PCF8591 ,温度传感器DS18B20 存储AT24C02

    2021/4/14 周三 下午 距蓝桥杯仅四天 为复习各模块的使用,防止在比赛时脑子抽住 首先是资源数据包里的底层代码驱动 驱动代码说明 1-本文件夹中提供的驱动代码供参赛选手完成程序设计参考之用. ...

  10. 【蓝桥杯单片机进阶强化-04】PCF8591与24C02综合应用-智能照明自动控制器

    [1]题目要求 在蓝桥杯大赛"单片机设计与开发"的在CT107D综合训练平台上,利用竞赛提供的IIC底层驱动代码,设计程序,实现以下的功能: 1- 系统上电后,通过采样PCF859 ...

最新文章

  1. mxmkc编译器参数!
  2. 可以打开md_热议MD有病!旭旭宝宝怒斥CG偷开“录像轮播”:人家不开还不行?...
  3. HDU 5001 概率DP || 记忆化搜索
  4. 关于window对象
  5. from rfc 2068 hypertext怎么解决_你好,打工人!用英语怎么表达“打工人”?可别直接说 worker...
  6. python实现嵌套功能_我应该如何在Python中实现“嵌套”子命令?
  7. 计算机科学与python编程导论_【基于Python】MIT OCW 计算机科学与编程导论
  8. 计算机知识wendang,计算机基础知识Microsoft Word 文档
  9. java8新特性—— Lambda来由
  10. 智能汽车软件行业深度研究:汽车软件的星辰大海
  11. 飞凌单片机解密_浅谈单片机解密 单片机解密方法
  12. android 2k屏分辨率是多少,为什么大多数手机屏幕都用1080P分辨率而不用2K?
  13. java 静态抽象类_java--抽象类实例(包含静态内部抽象类)
  14. 十二、适配器模式——解决充电的烦恼 #和设计模式一起旅行#
  15. lammps学习(一)单晶硅纳米磨削
  16. 微服务框架springcloud(实用篇)【5】Elasticsearch 01
  17. Mybatis-Plus的条件构造器(Wrapper)
  18. 2017高考计算机试卷,2017年高考模拟试卷 信息技术卷.doc
  19. 研究生、本科生Java开发、后台、软件工程师秋招春招经验
  20. 计算机考研调剂是按分数的么,考研调剂是不是看初试分数的

热门文章

  1. JTextArea:文本域组件
  2. 【数据分享】2022年11月华东地区POI数据分享(上海、江苏、浙江、安徽)
  3. python 换国内源
  4. 大疆 机器视觉 图像相关岗位的招聘要求
  5. 展锐物联网芯片8910DM获德国电信认证
  6. Java基础篇--异常机制
  7. Windows64位下DNW的安装及使用
  8. java实现1 12 123 1234 12345 123456 输出
  9. 谷歌Mediapipe运行环境配置
  10. golang 实现微信授权