简易单片机-电子定时闹钟程序设计笔记 长按按钮-定时器 蜂鸣器 LED

26 篇文章 1 订阅
24 篇文章 1 订阅

闹钟程序设计

现在程序是最开始完成源程序的只是简单封装了一下。不是一个更加简化的版本:简化后是 255行代码
要看具体效果--》视频效果链接 https://www.bilibili.com/video/bv1HX4y137H8

按钮功能说明:

k1 : 按钮可以在主界面 长按3秒 进入菜单 也可以退出菜单 ,一层一层的退出 菜单


k2: 按钮可以切换 子菜单的选择 有 三个选择 (1,2,3) 轻点 在三个菜单之间切换 ,长按3秒 可以进入到对应的 (1,2,3)菜单 。 子菜单说明:

  • 每个子菜单的功能: 1 : 设置单片机系统的开始的时间 2 : 设置第一个闹钟的时间 3 : 设置第二个闹钟的时间

k3 : 设置单片机系统开始的时间和 两个闹钟的时间 。 (只有四个数码管最高设置9分钟)轻点当前数码管位的时间加一 长按3秒 设置下一位数码管的时间


k4 : 取消闹钟到时后的蜂鸣器


#include <reg52.h>
#include "SmgPackaging.h"
/****************×Ӳ˵¥ÓëÖ÷²Ëµ¥£¨ËùÐ裩********************/
unsigned int Schema = 0;
int pick = 1,value = 0;
int System = 0, BreakSystem = 0; // ϵͳʱ¼äÉèÖñêʶ·û
unsigned int BreakTimerOut = 0, TimerOut = 0, ButtonTimer = 0, ButtonTimer1 = 0, ButtonTimers = 0,ButtonTimer3 = 0;
unsigned int Clock = 0, Clocks = 0; // ÄÖÖÓ¶¨Òå
/****************ģʽÓëÄÖÖÓ£¨ËùÐ裩**********************/
unsigned int i=0,j=0,k=0,l=0,    i1=0,j1=0,k1=0,l1=0,    i2=0,j2=0,k2=0,l2=0,     i3=0,j3=0,k3=0,l3=0;

void main() 
{
	int value_1 = 1;
	
	TMOD = 0X01;
	EA = 1;
	
	TH0 = 0X4C;
	TL0 = 0X00;
	ET0 = 1;
	
	TH1 = 0X4C;
	TL1 = 0X00;
	ET1 = 1;

	
	while(1)
	{
		TR0 = 1;
		// ÉÁ˸ʱ¼äµÄ·¶Î§ÉèÖÃ
		if(BreakTimerOut > 10){
			BreakTimerOut = 0;
		}
		// ÄÖÖÓʱ¼ä
		if(Schema == 0 && i == l1 && j == k1 && k == j1 && l == i1 && System == 1 && BreakSystem == 0) {
			Clock = 1;
		}
		if(Schema == 0 && i == l2 && j == k2 && k == j2 && l == i2 && System == 1 && BreakSystem == 0) {
			Clock = 2;
		}
		if(Clock == 1) {
			// F1 = 0;
			P1 = 0x00;
			Int_DelayTimer(3);
			F1 = 1;
		}
		if(Clock == 2) {
			// F1 = 0;
			P1 = 0x00;
			Int_DelayTimer(3);
			F1 = 1;
		}
		/****************Ê®ÃëÈ¡Ïû ************************/
		if(Clock == 1 || Clock == 2) {
			ButtonTimer1++;
		}
		if(ButtonTimer1 > 1350){		
			Clock = 0;
			P1 = 0xff;
			ButtonTimer1 = 0;
		} 
		
		
		
		if(K4 == 0 ) {
			if(Clock == 1) {
				F1 = 1;
				Clock = 0;
			}
			if(Clock == 2) {
				F1 = 1;
				Clock = 0;
			}
		}
		
		
		
//		if(System == 1) {
//			P1 = 0xef;
//		}
/************** °´Å¥ 1  ½øÈë»òÍ˳ö ²Ëµ¥Ñ¡Ôñ****************/
		if(K1 == 0) {
			ButtonTimer++;
			Int_DelayTimer(3);
		}
		if(ButtonTimer > 300 && Schema == 0) {
			Schema = 1;
			ButtonTimer = 0;
		}else if(ButtonTimer >= 600 && Schema == 1) {
			Schema = 0;
			value = BreakSystem = 1; // ±êʶÒѾ­½øÈëÉèÖÃϵͳʱ¼äģʽ Schema £º 4
			ButtonTimer = 0;
		}else if(ButtonTimer >= 600 && Schema == 2) {
			value = Schema = 1;
			ButtonTimer = 0;
		}else if(ButtonTimer >= 600 && Schema == 3) {
			value = Schema = 1;
			ButtonTimer = 0;
		}else if(ButtonTimer >= 600 && Schema == 4) {
			value = Schema = 1;
			ButtonTimer = 0;
		}else if(K1 == 1 && ButtonTimer < 299) {ButtonTimer = 0;}	
		if(value == 1) {value_1 = 1; value = 0;}
		
		/************** °´Å¥ 2  Ñ¡Èëģʽ**************/
		if(K2 == 0) {
			ButtonTimers++;
			Int_DelayTimer(3);
		}
		
		if(K2 == 1 && ButtonTimers > 1 && ButtonTimers < 500) {
			pick += 1;
			if(pick >= 4) pick = 1;
			ButtonTimers = 0;
		}
		
		if(ButtonTimers > 700 && pick == 1) {
			System = 1;
			Schema = 4;
			ButtonTimers = 0;
		}else if(ButtonTimers > 700 && pick == 2) {
			Schema = 2;
			ButtonTimers = 0;
		}else if(ButtonTimers > 700 && pick == 3) {
			Schema = 3;					
			ButtonTimers = 0;
		}
		/************** °´Å¥ 3  µ÷½Úʱ¼ä**************/
		if(K3 == 0) {
			ButtonTimer3++;
			Int_DelayTimer(3);
		}
		
		if(ButtonTimer3 > 300) {
			value_1 += 1;
			if(value_1 >= 5) value_1 = 1;
			ButtonTimer3 = 0;
		}
		// ģʽ¶þ µÚÒ»¸öÄÖÖÓ
		// ·ÖÖÓSmg
		if(value_1 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 2) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				i1 += 1;
				if(i1 >= 10) i1 = 0;
				ButtonTimer3 = 0;
			}			
		}
		
		// ʮλÃëSmg
		if(value_1 == 2 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 2) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200 ) {
				j1 += 1;
				if(j1 >= 6) j1 = 0;
				ButtonTimer3 = 0;
			}	
		}
		// ¸öλÃë Smg
		if(value_1 == 3 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 2) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				k1 += 1;
				if(k1 >= 10) k1 = 0;
				ButtonTimer3 = 0;
			}	
		}
		// °Ù·ÖÃë Smg
		if(value_1 == 4 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 2) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				l1 += 1;
				if(l1 >= 10) l1 = 0;
				ButtonTimer3 = 0;
			}	
		}
		
		// ģʽ¶þ ÄÖÖÓ
		if(value_1 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 3) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				i2 += 1;
				if(i2 >= 10) i2 = 0;
				ButtonTimer3 = 0;
			}			
		}
		
		// ʮλÃëSmg
		if(value_1 == 2 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 3) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200 ) {
				j2 += 1;
				if(j2 >= 6) j2 = 0;
				ButtonTimer3 = 0;
			}	
		}
		// ¸öλÃë Smg
		if(value_1 == 3 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 3) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				k2 += 1;
				if(k2 >= 10) k2 = 0;
				ButtonTimer3 = 0;
			}	
		}
		// °Ù·ÖÃë Smg
		if(value_1 == 4 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 3) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				l2 += 1;
				if(l2 >= 10) l2 = 0;
				ButtonTimer3 = 0;
			}	
		}
		
		// ģʽ Ò» ÉèÖÃϵͳʱ¼ä
		if(value_1 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 4) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				i3 += 1;
				if(i3 >= 10) i3 = 0;
				ButtonTimer3 = 0;
			}			
		}
		
		// ʮλÃëSmg
		if(value_1 == 2 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 4) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200 ) {
				j3 += 1;
				if(j3 >= 6) j3 = 0;
				ButtonTimer3 = 0;
			}	
		}
		// ¸öλÃë Smg
		if(value_1 == 3 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 4) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				k3 += 1;
				if(k3 >= 10) k3 = 0;
				ButtonTimer3 = 0;
			}	
		}
		// °Ù·ÖÃë Smg
		if(value_1 == 4 && ButtonTimer3 > 1 && ButtonTimer3 < 200 && Schema == 4) {
		
			if(K3 == 1 && ButtonTimer3 > 1 && ButtonTimer3 < 200) {
				l3 += 1;
				if(l3 >= 10) l3 = 0;
				ButtonTimer3 = 0;
			}	
		}
		
		
		/***************ģʽµÄÖ´ÐÐ*****************/
		// Ö÷²Ëµ¥
		if(BreakSystem == 1 && Schema == 0) {
				i = l3;
				j = k3;
				k = j3;
				l = i3;
				Int_DelayTimer(3);
				BreakSystem = 0;
		}
		if(Schema == 0) { 
			SmgPackaging_Dian(i,j,k,l,1);
		}
		// Ñ¡ÔñģʽµÄÉÁ˸
		if(Schema == 1) {
			Led1 = 0;
			if(BreakTimerOut <= 5) {
				Pick_One_Four_SmgPackaging(1,pick,1);			
			}
			if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
				Pick_One_Four_SmgPackaging(0,0,0);
			}	
			
		}else {
			Led1 = 1;
		}	
		
		/**********ģʽ¶þ ÄÖÖÓÒ»********/
		if(Schema == 2) {
			Led2 = 0;
			if(value_1 == 1) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(1,i1,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 2) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(2,j1,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 3) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(3,k1,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 4) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(4,l1,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 != 1) {
				Pick_One_Four_SmgPackaging(1,i1,1);
			}
			if(value_1 != 2) {
				Pick_One_Four_SmgPackaging(2,j1,1);
			}
			if(value_1 != 3) {
				Pick_One_Four_SmgPackaging(3,k1,1);
			}
			if(value_1 != 4) {
				Pick_One_Four_SmgPackaging(4,l1 ,1);
			}
			
		}else {
			Led2 = 1;
		}
		
		/****************ģʽÈý  ÄÖÖÓ¶þ*********************/
		if(Schema == 3) {
			Led3 = 0;
			if(value_1 == 1) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(1,i2,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 2) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(2,j2,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 3) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(3,k2,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 4) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(4,l2,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 != 1) {
				Pick_One_Four_SmgPackaging(1,i2,1);
			}
			if(value_1 != 2) {
				Pick_One_Four_SmgPackaging(2,j2,1);
			}
			if(value_1 != 3) {
				Pick_One_Four_SmgPackaging(3,k2,1);
			}
			if(value_1 != 4) {
				Pick_One_Four_SmgPackaging(4,l2,1);
			}
		}else {
			Led3 = 1;
		}
		
		/***************ϵͳʱ¼äµÄÉèÖÃ************/
		if(Schema == 4) {
			Led4 = 0;
			if(value_1 == 1) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(1,i3,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 2) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(2,j3,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 3) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(3,k3,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 == 4) {		
					if(BreakTimerOut <= 5) {
						Pick_One_Four_SmgPackaging(4,l3,1);			
					}
					if(BreakTimerOut > 5 && BreakTimerOut <= 10) {
						Pick_One_Four_SmgPackaging(0,0,0);
					}	
			}
			if(value_1 != 1) {
				Pick_One_Four_SmgPackaging(1,i3,1);
			}
			if(value_1 != 2) {
				Pick_One_Four_SmgPackaging(2,j3,1);
			}
			if(value_1 != 3) {
				Pick_One_Four_SmgPackaging(3,k3,1);
			}
			if(value_1 != 4) {
				Pick_One_Four_SmgPackaging(4,l3,1);
			}
		}else {
			Led4 = 1;
		}
		/*************ʱ¼äÔö¼ÓËã·¨************/
		if(TimerOut == 2) {
			TimerOut = 0;
			i++;
			if(i == 10) {
				i = 0;
				j++;
				if(j == 10) {
					j = 0;
					k++;
					if(k == 6) {
						k = 0;
						l++;
						if(k == 10) {
							k = 0;
						}
					}
				}
			}
		}
	}	
	
}
void Timer0Interrupt(void) interrupt 1
{
    TH0 = 0x4c;
	TL0 = 0x00;
	TimerOut++;
	BreakTimerOut++;

    //add your code here!
}

void Timer1Interrupt(void) interrupt 3
{
	TH1 = 0x4c;
	TL1 = 0x00;
	ButtonTimer++; // °´Å¥1
	ButtonTimer1++;

	ButtonTimers++; // °´Å¥2
	
	ButtonTimer3++; // °´Å¥ 3
    //add your code here!
}


自己封装的 .h 文件 配合上面程序使用


#ifndef _SMGPACKAGING_H_
#define _SMGPACKAGING_H_
//#include "SmgPackaging.c"
#include "reg52.h"

/******ÊýÂë¹Ü******/
sbit Smg1 = P2^4;
sbit Smg2 = P2^5;
sbit Smg3 = P2^6;
sbit Smg4 = P2^7;
/******°´Å¥********/

sbit K1 = P3^4;
sbit K2 = P3^5;
sbit K3 = P3^6;
sbit K4 = P3^7;
/******¶¨ÒåµÆλ******/

sbit Led1 = P1^0;
sbit Led2 = P1^1;
sbit Led3 = P1^2;
sbit Led4 = P1^3;
sbit Led5 = P1^4;
sbit Led6 = P1^5;
sbit Led7 = P1^6;
sbit Led8 = P1^7;

/******·äÃùÆ÷******/

sbit F1 = P2^3;

extern unsigned char code str1[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
extern unsigned char code str2[10] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};


extern void SmgPackaging(unsigned int one, unsigned int tow, unsigned int three, unsigned int four , unsigned int Delay_timer);

//extern void SmgPackaging_Dian(int one, int tow, int three, int four , int Delay_timer);

extern void Pick_SmgPackaging(int number, int value , int Delay_timer);



void Int_DelayTimer(unsigned int jk) {
	unsigned int j,k;
	for(j = jk ; j > 0 ; j--) {
		for(k = 112 ; k > 0 ; k--){};
	}
}


// µ¥Î»ÏÔʾ ÊýÂë¹Ü
void Pick_One_Four_SmgPackaging(int number, int value , int Delay_timer) 
{
	if(number == 1) {
			P0 = str1[value];
			Smg1 = 1;
			Smg2 = 0;
			Smg3 = 0;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
	}else if(number == 2) {
			P0 = str1[value];
			Smg1 = 0;
			Smg2 = 1;
			Smg3 = 0;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
	}else if(number == 3) {
			P0 = str1[value];
			Smg1 = 0;
			Smg2 = 0;
			Smg3 = 1;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
	}else if(number == 4) {
			P0 = str1[value];
			Smg1 = 0;
			Smg2 = 0;
			Smg3 = 0;
			Smg4 = 1;
			Int_DelayTimer(Delay_timer);
	}else if(number == 0) {
			P0 = str1[value];
			Smg1 = 0;
			Smg2 = 0;
			Smg3 = 0;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
	}
}
// ²»´øµãµÄÊýÂë¹Ü
/*
void SmgPackaging(unsigned int one, unsigned int tow, unsigned int three, unsigned int four , unsigned int Delay_timer)
{
			P0 = str1[one];
			Smg1 = 0;
			Smg2 = 0;
			Smg3 = 0;
			Smg4 = 1;
			Int_DelayTimer(Delay_timer);
			P0 = str1[tow];
			Smg1 = 0;
			Smg2 = 0;
			Smg3 = 1;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
			P0 = str1[three];
			Smg1 = 0;
			Smg2 = 1;
			Smg3 = 0;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
			P0 = str1[four];
			Smg1 = 1;
			Smg2 = 0;
			Smg3 = 0;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
	
}*/
// ´øµãµÄµÆ
void SmgPackaging_Dian(int one, int tow, int three, int four , int Delay_timer)
{
			P0 = str1[one];
			Smg1 = 0;
			Smg2 = 0;
			Smg3 = 0;
			Smg4 = 1;
			Int_DelayTimer(Delay_timer);
			P0 = str2[tow];
			Smg1 = 0;
			Smg2 = 0;
			Smg3 = 1;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
			P0 = str1[three];
			Smg1 = 0;
			Smg2 = 1;
			Smg3 = 0;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
			P0 = str2[four];
			Smg1 = 1;
			Smg2 = 0;
			Smg3 = 0;
			Smg4 = 0;
			Int_DelayTimer(Delay_timer);
}



#endif
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59秒)进行倒计时,当计时到0时数码管闪烁“00”(以1Hz闪烁),按键功能如下:   (1)设定键:在倒计时模式时,按下此键后停止倒计时,进入设置状态;如果已经处于设置状态则此键无效。   (2)增一键:在设置状态时,每按一次递增键,初始值的数字增1。   (3)递一键:在设置状态时,每按一次递减键,初始值的数字减1。   (4)确认键:在设置状态时,按下此键后,单片机按照新的初始值进行倒计时及显示倒计时的数字。如果已经处于计时状态则此键无效。   模块1:系统设计 (1)任务分析与整体设计思路 根据题目的要求,需要实现如下几个方面的功能。   计时功能:要实现计时功能则需要使用定时器来计时,通过设置定时器的初始值来控制溢出中断的时间间隔,再利用一个变量记录定时器溢出的次数,达到定时1秒中的功能。然后,当计时每到1秒钟后,倒计时的计数器减1。当倒计时计数器到0时,触发另一个标志变量,进入闪烁状态。   显示功能:显示倒计时的数字要采用动态扫描的方式将数字拆成“十位”和“个位”动态扫描显示。如果处于闪烁状态,则可以不需要动态扫描显示,只需要控制共阴极数码管的位控线,实现数码管的灭和亮。键盘扫描和运行模式的切换:主程序在初始化一些变量和寄存器之后,需要不断循环地读取键盘的状态和动态扫描数码管显示相应的数字。根据键盘的按键值实现设置状态、计时状态的切换。   (2)单片机型号及所需外围器件型号,单片机硬件电路原理图 选用MCS-51系列AT89S51单片机作为微控制器,选择两个四联的共阴极数码管组成8位显示模块,由于AT89S51单片机驱动能力有限,采用两片74HC244实现总线的驱动,一个74HC244完成位控线的控制和驱动,另一个74HC244完成数码管的7段码输出,在输出口上各串联一个100欧姆的电阻对7段数码管限流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值