国信长天单片机竞赛训练之通过iic光敏,电位器采样(五)

51单片机学习 光敏电阻传感器实验 51单片机学习 光敏电阻传感器实验 一、光敏电阻模块简介 光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号     调节阈值:我们可以通过旋钮来改变它的阈值,如图   当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时( 阅读详情

本次培训内容学iic,要求实现:

        开机显示光敏电阻的值,S4按键控制显示光敏电阻值,S5按键控制显示Rb2电位器的值,S8按键控制存数据进EEPROM,S9按键控制显示存入EEPROM的值。

代码如下:

具体原理可以参考教程:

蓝桥杯单片机比赛学习(全)_哔哩哔哩_bilibili

//main.c
#include "sys.h" 
#include "iic.h"


u16 count=0;
u8 key_temp=0;
u8 key_recall=0;//保留上一个按键的状态
u16 adc_val=0;
u8 flag=0;
u16 erom=255;
u8 s=0;
/*
本次作业:
开机显示光敏电阻的值,S4按键控制显示光敏电阻值,
S5按键控制显示Rb2电位器的值,
S8按键控制存数据进EEPROM,S9按键控制显示存入EEPROM的值。
*/

void delay5ms()
{
	unsigned char i,j;

	i = 54;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
}

void main(){
	 
	
	stop_all();//关蜂鸣器等无关外设
	Timer0Init();
	write_DAC(erom);//默认写入
	while(1){
	   
		 key_temp=key_scan();
			
	    
		if(key_temp>0){
			key_recall=key_temp;
		}
		  DT[4]=key_recall;
	 if(!flag){//默认显示光感
		 adc_val=ReadADC(0x01);//0x01 光敏传感
		 smg_play(adc_val,1);
	 }
	 else if(flag==1){
		 adc_val=ReadADC(0x03);//0x01 光敏传感
		  smg_play(adc_val,1);
		 
	 }
	 
		 smg_play(erom,0);
		 
		 
	  
	 
		
		switch(key_recall){
			case(4)://s4显示光敏电阻
					flag=0;
					break;
			case(5)://s5显示Rb2电位器
					 
					 flag=1;
				
					break;
			default:
				break;
		}
 
		if(key_temp==8){
			AT24C02_WB(1,adc_val);delay5ms();//存当前值  延迟保证已写入epprom	
		}
		else if(key_temp==9){
			
				erom=AT24C02_RB(1);delay5ms();
		}
		
	 
}
	 
}


 void Time0() interrupt 1{
	  
	 count++;
	 if(count==6000){
		 
		 count=0;
		 
	 }
	 smg_show(DT[s],s);//段,位 3 1 10 2
	 if(++s==10){
		 s=0;
	 }
	 
	 
 }
//sys.c
#include "sys.h"
	
sbit buzzer=P0^6;
sbit rely=P0^4;
unsigned char  code smg_index[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x7f,0xbf};
u8 DT[]={10,10,10,10,10,10,10,10,10,10,10};

/*
关蜂鸣器,led,继电器,数码管段,位
*/
#define key_low 0x0f
#define key_high 0xf0
//u8 key_press=0;
 
	void stop_all(){
	 
	P0=0xff;
	P2=P2&0x1f|0x80;
	P2&=0x1f;
 
		
	P0=0;	
	P2=P2&0x1f|0xe0;
	P2&=0x1f;
	 
	P2=P2&0x1f|0xc0;
	P0=0;	
	P2&=0x1f;
	 
	P2=P2&0x1f|0xa0;	
	P04=0;
	P06=0;
 
	P2&=0x1f;
}  
 
/*
数码管显示
*/
 void smg_show(unsigned char du,unsigned char wei){//   DT[S]  s
	   
	P0=1<<wei;	  
	P2=(P2&0x1f)|0xc0;//位选
	P2=P2&0x1f;
	
	
	P0=smg_index[du];    //段选
	P2=(P2&0x1f)|0xe0;
	P2=P2&0x1f;
	 
 }
 void Timer0Init(void)		//100微秒@11.0592MHz  1ms
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0xCD;		//设置定时初值
	TH0 = 0xD4;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	
	EA=1;
	ET0=1;//开启时钟
}

u8 key_scan(){
	 
  static key_state=0,key_return=0;   //每次返回值和状态进来不会重置
	u8 key_press;
	switch(key_state)
	{
		case 0:     //未按按键时的状态
			key_return=0;    //返回值置零
			P3=0x0f; P42=0; P44=0; 
			//key_return=0;
			key_press = P3&key_low;
			if(key_press != 0x0f)
				key_state=1;
			break;
		case 1:    //按键按下去后第一次进scan_key的状态,每按一次按键只会进来case 1一次
			P3=0x0f; P42=0; P44=0;
			key_press = P3&key_low;
			if(key_press != 0x0f)
			{
				if(key_press==0x0e) key_return=7;
				if(key_press==0x0d) key_return=6;
				if(key_press==0x0b) key_return=5;
				if(key_press==0x07) key_return=4;
				
				P3=0xf0; P42=1; P44=1;
				key_press = P3&key_high;
				if(key_press==0xe0) key_return+=12;
				if(key_press==0xd0) key_return+=8;
				if(P42==0) key_return+=4;		
				key_state = 2;
			}
			break;
		case 2:    //按键一直按着的状态
			P3=0x0f; P42=0; P44=0;
			key_press=P3&key_low;
			if(key_press == 0x0f)   //放开按键后key_state = 0回到case 0
			{
				key_state = 0;
			}
		default:
			break;
	}
	return key_return;
}
 void smg_play(u8 temp,bit dei){
	 if(dei){
	  if(temp>100){
		 DT[5]=temp/100;
		 DT[6]=temp/10%10;
			DT[7]=temp%10;
		 }
		 else if(temp<100){
			 DT[5]=0;
			 DT[6]=temp/10;
			 DT[7]=temp%10;
		 }
	 
 }
 else{
	 if(temp>100){
		 DT[0]=temp/100;
		 DT[1]=temp/10%10;
			DT[2]=temp%10;
		 }
		 else if(temp<100){
			 DT[0]=0;
			 DT[1]=temp/10;
			 DT[2]=temp%10;
		 }
	 
 }
 }
 





//sys.h
#ifndef __SYS_H_
#define __SYS_H_
 
#include "stc15f2k60s2.h"
 

typedef unsigned char u8;
typedef unsigned int u16;

 u8 DT[];
void smg_show(unsigned char du,unsigned char wei);
void stop_all();
void Timer0Init(void);
u8 key_scan();
void smg_play(u8 temp,bit dei);
#endif

//iic.h
#ifndef _IIC_H
#define _IIC_H


void AT24C02_WB(u8 ward,D);
u8 AT24C02_RB(u8 ward);

u8 ReadADC(u8 ain);
void write_DAC(u8 dat);
 

#endif

//iic.c
/*
  程序说明: IIC总线驱动程序
  软件环境: Keil uVision 4.10 
  硬件环境: CT107单片机综合实训平台 8051,12MHz
  日    期: 2011-8-9
*/

#include "sys.h"
#include "intrins.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;    
}
//adc读取
u8 ReadADC(u8 ain)
{
	u8 Data;
	IIC_Start(); 
	IIC_SendByte(0x90); 
	IIC_WaitAck();  
	IIC_SendByte(ain); 
	IIC_WaitAck(); 
	IIC_Stop();  
	
	IIC_Start(); 
	IIC_SendByte(0x91); 
	IIC_WaitAck();  
	Data=IIC_RecByte(); 
	IIC_Stop();  
	return Data;
}


//EEPROM 写入
void AT24C02_WB(u8 ward,D)
{
	IIC_Start(); 
	IIC_SendByte(0xa0); 
	IIC_WaitAck();  
	IIC_SendByte(ward); 
	IIC_WaitAck(); 
	IIC_SendByte(D); 
	IIC_WaitAck(); 
	IIC_Stop();  
}

//EEPROM 读取
u8 AT24C02_RB(u8 ward)
{
	u8 D;
	IIC_Start(); 
	IIC_SendByte(0xa0); 
	IIC_WaitAck();  
	IIC_SendByte(ward); 
	IIC_WaitAck(); 
	IIC_Start(); 
	IIC_SendByte(0xa1); 
	IIC_WaitAck();
	D=IIC_RecByte();
	IIC_Stop();  
	return D;
}

void write_DAC(u8 dat)
{
	IIC_Start(); 
	IIC_SendByte(0x90); 
	IIC_WaitAck();  
	IIC_SendByte(0x40); 
	IIC_WaitAck(); 
	
	IIC_SendByte(dat); 
	IIC_WaitAck();  
	IIC_Stop();  
}

原理图分享一(单片机_CT107D训练平台使用说明与电路原理图) 这是一个51的原理图,以前上大学的时候参加蓝桥杯使用的一个板子。 阅读详情

相关推荐

蓝桥杯大赛单片机组

模拟智能灌溉系统:要求“模拟智能灌溉系统”能够实现土壤湿度测量、土壤湿度和时间显示、湿度阈值设 定及存储等基本功能。通过电位器 Rb2 输出电压信号,模拟湿度传感器输出信号,再通过 AD 采集完成湿度测量功能;通过 DS1302 芯片提供时间信息;通过按键完成灌溉系统控制 和湿度阈值调整功能,通过 LED 完成系统工作状态指示功能。系统硬件电路主要由单片机 控制电路、显示单元、ADC 采集单元、RTC 单元、EEPROM 存储单元、继电器控制电路及 报警输出电路组成

蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)

AD\DA

河海大学研究生在读的学习笔记 4494

pcf8591原理图

pcf8591原理图,解释了pcf8591的内部结构,方便二次开发和使用

【STM32】第七届嵌入式模拟——“电压测量监控设备”(CT117E电路)

目录 一、题目 设计任务及要求 二、模块化代码分析 main.c adc.c led.c usart.c _24c02.c key.c stm32f10x_it.c的滴答函数的配置 一、题目 设计一个电压测量监控设备,定时通过串口向 PC 机发送电压值,通过串口接收系统配置参数并保存到 E2PROM 中。设备硬件部分主要由电源部分、控制器单元、串口部分、存储单元组成,系统框图如图 1 所示 : 设计任务及要求 1...

码上有的博客 1757

134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)

134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteus仿真和代码)134-光敏电阻测试数码管显示(51单片机C语言实例Proteu

node-red 可视化探索

配置socket选择配置流程产生url。

weixin_44133581的博客 3413

【蓝桥杯单片机】PWM笔记

PWM呼吸灯和电位器控制LED亮暗

qq_65474184的博客 499

Android安全支付(1)-整体架构-keymint

(1)接口定义hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl。keymint是keymaster v4之后的替代设计。所以android 15上最好采用keymint的接口进行硬件功能的对接。同时,我们会集成一款紫光的芯片。3.可以用keyStore.getKey()来获取存储在keyStore中的数据进行加密和解密。四、关于keymint的接口定义和具体实现。

Android系统开发-VR OS-系统安全隐私 1768

第十四届蓝桥杯单片机第一场模拟赛程序

第十四届蓝桥杯单片机第一场模拟赛程序 题目来源于4T评测网 www.4t.wiki。

qq_53520534的博客 1426

HFSS微带线仿真从零到一:材料参数与求解设置优化指南

在射频电路设计中,微带线仿真涉及电磁场求解与传输线理论,其精度高度依赖材料参数和求解设置。相对介电常数、损耗角正切和导体电导率等参数直接影响特性阻抗与插入损耗,而求解频率、网格划分和参数扫描则决定仿真效率与收敛性。合理设置这些参数可显著提升S参数准确性,避免设计迭代。应用场景包括天线馈线、滤波器和微波互连。本文基于HFSS微带线仿真实践,系统讲解材料选择与参数优化全链路,帮助工程师快速复现可靠模型。

weixin_29192211的博客 79

python抓取美团外卖的数据(商家、评分、评论)

本文详细介绍了如何使用Selenium和抓取美团外卖的商家、评分和评论数据。我们从基础的爬虫原理入手,分析了美团外卖的网页结构,提出了应对反爬虫机制的策略,并给出了详细的代码实现。通过使用Selenium,我们能够绕过动态加载内容的限制,直接抓取网页中的商家信息和评论。结合多线程和代理池等技术,我们可以进一步提高爬虫效率,并避免IP被封禁。未来,随着爬虫技术的发展,我们可以进一步探索深度抓取、数据清洗和数据分析等高级应用,以实现更智能的网页数据抓取。

2201_76125261的博客 2698

蓝桥个人总结模块

个人单片机整理模块

hvbkbb的博客 739

Skills入门学习路线

简单来说,Skills就像是给Claude准备的”插件包"或”工具箱”。它是一个集合,里面装了特定的操作指令(Instructions)、可执行脚本(Scripts)和相关素材(Resources)。2025 年 10 月中旬,Anthropic 正式发布 Claude Skills。两个月后,Agent Skills 作为开放标准被进一步发布,意在引导一个新的 AI Agent 开发生态。OpenAI、Github、VS Code、Cursor 均已跟进。为了更好的理解,你可以把。

十二测试录 1098

【蓝桥杯-单片机学习笔记(十八)】ADC/DAC同时使用

一、要求 测量电位器Rb2输出的电压并将电压大小显示在数码管上,同时DAC输出电压跟随Rb2电位器输出电压变化。 关于AD、DA转换可以参看这篇博文: 【蓝桥杯-单片机学习笔记(十六)】PCF8591原理与A/D、D/A转换_傻萌的路飞的博客-优快云博客_pcf8591 二、核心代码 //--------------------------------电压测量---------------------------------// uchar ADC_read_AIN3() { IIC_

Backlight__的博客 2095

Flink上传的Jar包去了哪里?大数据

在使用Flink时,我们通常会将应用程序打包成Jar文件并将其上传到Flink集群以执行。总结起来,Flink上传的Jar包实际上会暂时存储在JobManager的本地文件系统中的一个临时目录中。在上传过程中,Flink会将Jar文件存储在JobManager的本地文件系统中的一个临时目录中。一般来说,Flink会在。希望本文对你解答了Flink上传的Jar包去了哪里的疑问,并且能够帮助你更好地理解Flink的工作原理。接下来,我们可以使用Flink命令行工具将Jar文件提交到Flink集群。

AlianBlank的博客 865

Agent驱动电商运营:从选品到售后的全链路革新

在当今竞争激烈的电商市场中,传统的电商运营模式面临着诸多挑战。从选品到售后,每个环节都需要大量的人力投入和专业知识。选品需要深入了解市场趋势和消费者需求,营销需要精准定位目标用户,客服需要24小时响应用户咨询。这些工作不仅耗时耗力,而且容易受到人为因素的影响,导致效率低下和成本高企。AI Agent是一种能够感知环境、做出决策并采取行动的智能系统。感知能力:能够获取和处理环境信息。决策能力:能够根据感知到的信息做出决策。行动能力:能够执行决策,对环境产生影响。学习能力。

AI 领航者的博客 354

蓝桥杯单片机常用模块(自己整理的)

单片机笔记,自用

Sol-itude的博客 3724

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

iic总线的应用程序(电位器和光敏电阻)

调用数码管显示的函数 调用iic协议来读取ad转换芯片的数值 初始化:模拟iic的时序开始 写入地址:写入ad转化芯片的地址,告诉它单片机要与它进行通信(0x90写入设备地址),(0x91读取设备地址) 等待应答: 写入地址: 写连接ad转换芯片的地址 等待应答: 终止iic协议: 数码管显示() 初始化 iic 写入地址:这次是写入读的地址 0x91 设备要读取它的信息 等待应答: 创建变量接收读取的数据 终止应答: 写入1位停止应答 终止iic协议: 数码管显示: 按键处

w396255075的博客 1140

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝桥杯单片机学习笔记(1)——国信长天CT107竞赛板简述

最近因为延期开学,一直呆在家里,有机会学习准备一下蓝桥杯的电子类单片机组的比赛,正好写点东西,将学习的过程记录一下。 这是第一篇学习笔记,我准备简单介绍一下竞赛使用的单片机开发板——CT107开发板。 1. 概述实验板组成部分 关于开发板的相关资料可以从蓝桥杯官网下载。 大赛使用的单片机是IAP15F2K61S2,是STC公司生产的15系列1T型单片机,在1T模式下比传统8051快8-12倍,内...

qq_42879429的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

蓝桥杯单片机-ADC-A/D转换-测量PCF8591中AIN3通道(滑动变阻器Rb2)的电压

1.旋转滑动变阻器Rb2,读出PCF8591上AIN引脚所输入的电压值 2.其中数码管前两位显示电压值,后三位显示从PCF8591上读到的数据 3.旋转滑动变阻器Rb2,数码管显示数字也会发生变化

diksan的博客 4681

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

第十二届蓝桥杯单片机第二次省赛题(ne555,DAC)

若有错误,欢迎评论指正!

qq_56702245的博客 229

蓝桥杯单片机(十一)PCF8591(A/D转换)

讲解了蓝桥杯单片机开发板的PCF8591,最后写一个数码管显示光敏电阻和滑动变阻器的程序,最后效果如下,前三位显示光敏电阻,后三位显示滑动变阻器。PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行IIC总线接口。首先蓝桥杯单片机开发板上的原理图部分。

darlingqx的博客 3337

【蓝桥杯单片机进阶强化-02】PCF8591的基本原理与A/D转换应用

【1】PCF8591功能概述       PCF8591是具有IIC接口的8位A/D和D/A转换芯片,具有4路模拟输入、一路DAC输出和一个IIC总线接口。其主要的功能特性如下:       ●单电源供电,典型值为5V。       ●通过3个硬件地址引脚编址。       ●8位逐次逼近式A/D转换。       ●片上跟踪与保持电路,采样速率取决与IIC总线速度。       ●4路模拟输入...

小蜜蜂老师的干货铺 7万+

蓝桥杯单片机CT107D ADC

ADC转换需要写入PCF8591三个字节: (1)0x90,器件地址及写控制位; (2)0x01光敏电阻(0x03电位器),选择输入控制位; (3)0x91,器件地址及读控制位; 固定地址部分为 ‘1001’, 可编程地址部分为A2、A1、A0为‘000’; 地址+读= 1001 0001 即‘0x91’; 地址+写= 1001 0000 即‘0x90’; 光敏电阻接AIN1 0x01 Rb2...

qq_41676952的博客 2547

蓝桥杯单片机第十三届第二场考后归纳总结

蓝桥杯单片机第十三届考后总结: LED灯 数码管 按键 定时器 DS18B20 DS1302 AT24C02 PCF8591 AD/DA

咯咯的博客 2646
上一篇: 国信长天单片机竞赛训练之超声波实验(四)
下一篇: Java中flush()的使用
昊月光华
博客等级 码龄6年 340粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值