蓝桥杯单片机 | 特训案例【进阶05】采样光敏电阻与可调电阻的电压

这篇具有很好参考价值的文章主要介绍了蓝桥杯单片机 | 特训案例【进阶05】采样光敏电阻与可调电阻的电压。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【1】题目要求

新建工程,以I/O模式编写代码,在CT107D单片机综合训练平台上,实现以下功能:

1、将IIC总线的底层驱动代码文件正确移植到工程中。

2、光敏电阻rd1接到PCF8591AIN1通道;可调电阻rb2接到PCF8591的AIN3通道。

3、系统上电后,循环采样AIN1通道和AIN3通道的电压,并将A/D转换结果读出,换算成对应的实际电压值,保留2位小数,单位为V。

4、在数码管上显示采样的实时电压数值,显示格式如图所示,数码管靠左端的三位,显示AIN1通道,即采样光敏电阻rd1的电压数值,数码管靠右端的三位,显示AIN3通道,即采样可调电阻rd3的电压数值,没有使用的数码管熄灭。

蓝桥杯单片机 | 特训案例【进阶05】采样光敏电阻与可调电阻的电压

【小提示】:

IIC接口的基本原理,可见本博客:《【蓝桥杯单片机进阶强化-01】IIC总线接口技术基础》。

PCF8591的基本原理,可见本博客:《【蓝桥杯单片机进阶强化-02】PCF8591的基本原理与A/D转换应用》

【2】核心源码分析

/*==================蓝桥杯单片机特训==================
【进阶05】:采样光敏电阻与可调电阻的电压
**平  台:CT107D单片机综合实训平台
**模  式:IO模式
**底层驱动文件:2022年竞赛资源数据包提供的文件
**设  计:欧浩源(小蜜蜂老师,ohy3686@qq.com)
**时  间:2022-04-01
**更多详见:www.xmf393.com
====================================================*/

#include "reg52.h"
#include "iic.h"

//定义动态显示中单个数码管点亮时长
#define TSMG	500
//-------共阳数码管的段码编码表(无小数点)--------
//0 1 2 3 4 5 6 7 8 9 A B C D E F - .
unsigned char code SMG_NoDot[18]={0xc0,0xf9,
	  0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
    0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};
//-------共阳数码管的段码编码表(带小数点)--------
//0. 1. 2. 3. 4. 5. 6. 7. 8. 9.
unsigned char code SMG_Dot[10]={0x40,0x79,
		0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//-----------------------------------------------

unsigned char adc1_value = 0;		//AIN1的采样数据
float adc1_volt = 0;				//AIN1的换算电压
unsigned int smg1_volt = 0;			//AIN1的显示电压
unsigned char adc3_value = 0;		//AIN3的采样数据
float adc3_volt = 0;				//AIN3的换算电压
unsigned int smg3_volt = 0;			//AIN3的显示电压


/*====锁存器设置和数码管显示的代码参考前面的案例====*
//===================电压值显示函数===================
void DisplaySMG_ADC()
{
	//数码管右起第0位
	DisplaySMG_Bit(7,SMG_NoDot[smg1_volt	% 10]);
	//数码管右起第1位
	DisplaySMG_Bit(6,SMG_NoDot[(smg1_volt / 10) % 10]);		
	//数码管右起第2位
	DisplaySMG_Bit(5,SMG_Dot[smg1_volt / 100]);				

	//数码管右起第5位
	DisplaySMG_Bit(2,SMG_NoDot[smg3_volt	% 10]);
	//数码管右起第6位
	DisplaySMG_Bit(1,SMG_NoDot[(smg3_volt / 10) % 10]);		
	//数码管右起第7位
	DisplaySMG_Bit(0,SMG_Dot[smg3_volt / 100]);		
}
//===============PCF8591电压采样处理函数===============
unsigned char Read_PCF8591_ADC(unsigned char ain)
{
	unsigned char tmp;
	IIC_Start();					
	IIC_SendByte(0x90);		//PCF8591的写设备地址 
	IIC_WaitAck();				
	if(ain == 1)
	{
		IIC_SendByte(0x01); //通道1,光敏电阻电压
	}
	else if(ain == 3)
	{
		IIC_SendByte(0x03); //通道3,可调电阻电压
	}		
	IIC_WaitAck();  						
	IIC_Stop(); 
	
	DisplaySMG_ADC();			//等待电压转换完成
	
	IIC_Start();									
	IIC_SendByte(0x91); 	//PCF8591的读设备地址
	IIC_WaitAck(); 								
	tmp = IIC_RecByte(); 	//读出AD采样数据
	IIC_SendAck(1);			 	//产生非应答信号 								
	IIC_Stop();
	return tmp;
}
//=============采样光敏电阻和可调电阻的电压=============
void Read_AIN1_AIN3()
{
	adc1_value = Read_PCF8591_ADC(1);
	adc1_volt = adc1_value * (5.0 / 255);
	smg1_volt = adc1_volt * 100;
	
	adc3_value = Read_PCF8591_ADC(3);
	adc3_volt = adc3_value * (5.0 / 255);
	smg3_volt = adc3_volt * 100;
}

【注】:更多关于蓝桥杯单片机备赛内容,详见《蓝桥杯单片机设计与开发》小蜜蜂特训手册,本站可下载,相关更多蓝桥杯的案例完整源码及学习备赛笔记,欢迎进入 小蜜蜂笔记 公众号。文章来源地址https://www.toymoban.com/news/detail-412697.html

到了这里,关于蓝桥杯单片机 | 特训案例【进阶05】采样光敏电阻与可调电阻的电压的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯单片机客观题之数电学习(深夜学习——单片机)

    1、数字:\\\'0\\\'——0x30 2、字母:\\\'a\\\'——0x61;\\\'A\\\'——0x41 1、首位不变 2、从左到右,加上每一对相邻的二进制编码位,从而得到下一个格雷码位,舍去进位  1、首位不变 2、新生成的二进制码加上下一位格雷码得到下一位二进制码 1、小数部分的转换方法应该是先得到的是高位,后

    2023年04月09日
    浏览(67)
  • 蓝桥杯单片机(六)PWM

    本文内出现的函数在其他文章有讲: 蓝桥杯单片机(一)流水灯 蓝桥杯单片机(二)独立按键 蓝桥杯单片机(四)动态数码管 蓝桥杯单片机(五)定时器 如图所示,有三列方波在图中,所谓PWM,就是指上述图中的方波,波形在高电平和低电平不断变化,只不过PWM的占空比可变,上图就

    2023年04月14日
    浏览(35)
  • 蓝桥杯单片机(三)矩阵按键

    上章说了独立按键 蓝桥杯单片机(二)独立按键 这章说一下矩阵按键 所谓矩阵按键,就是每一个按键的两端都同时由单片机的IO口进行控制,如原理图所示,上图要想使用矩阵按键,就需要使用跳线帽将排针2引脚和1引脚连接在一起。 连接好了以后,这四排四列就可以看成四列

    2024年02月11日
    浏览(42)
  • 蓝桥杯单片机第十三届国赛客观题(深夜学习——单片机)

    1.填空题 (2)不同的地址范围: data:0x00-0xff idata:0x0000-0xffff xdata:0x0000-0xffff pdata:0x00-0xff code:0x0000-0xffff 2.选择题 (3)模电——》多级放大电路 (6)DS18B20 (7)模电——》二极管  (8)单片机      

    2024年02月11日
    浏览(44)
  • 51单片机蓝牙模块(HC05)运行原理

    在所有工作进行之前首先看一看自己的蓝牙模块是否是正常的,这一步很重要。一块正常的蓝牙模块是所有后续工作的基础! 首先把蓝牙模块链接到51单片机上 这时需要注意!!!我们需要将 蓝牙模块的RXD和单片机上的P30(RXD)引脚连接,将蓝牙模块的TXD和单片机上的P31(

    2023年04月08日
    浏览(51)
  • 蓝桥杯单片机 第十二届 国赛

    蓝桥杯第十二届,模块都比较常规,感觉都和省赛差不多,主要是麻烦在数据处理上,而我们处理的数据又要在界面中显示出来。 对比之前的第十届,其实题目差不多,并且少了串口收发这一比较难的模块。但是多了max,min,avg三个超声波数据的处理。所以按道理时间方面应该

    2023年04月08日
    浏览(30)
  • 蓝桥杯单片机 ——接收字符、字符串

     1定时器中断方法 (完整代码在文末!!)  2.定时的方法(推荐): 蓝桥杯单片机第十四届第三次模拟题_让我来瞅一瞅的博客-CSDN博客 定时器0——定时功能        判断接受数据是否完成  定时器1——串口功能           接受、发送数据   1.接受、发送 均为文本模式

    2023年04月17日
    浏览(33)
  • 【Proteus仿真】【Arduino单片机】HC05蓝牙通信

    本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、HC05蓝牙传感器等。 主要功能: 系统运行后,LCD1602显示蓝牙接收数据。 B站演示视频:https://space.bilibili.com/444388619 视频地址:https://space.bilibili.com/444388619/video 专注于51单片机、STM32、国产32、DSP、Proteus、ardu

    2024年04月16日
    浏览(39)
  • 蓝桥杯单片机模块代码综合(考前快速复习)

    今天做的是蓝桥杯所有模块的综合,只展示模块的核心代码,所以只能作为复习资料,而不是学习资料。这次给原理图全在官方给的资料里,考试记不起来可以在文件夹里找到! (一)LED   核心代码示例: 原理图:   回忆一下,译码器选择Y4使得其为低电平,J13中WR与地连

    2024年02月03日
    浏览(26)
  • 【第十四届蓝桥杯单片机冲刺版】

    明天就是正式比赛啦,今天可以在把各个模块练习一遍,常考的外设相关代码一定要熟练哦。 比赛时拿到资料包了,检查驱动文件,使用到的驱动文件,自己做相应的修改,确保是能够正常使用(驱动修改相关可看之前的文章)。 下面是自己将常考的外设结合一起的练习,

    2023年04月27日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包