嘉立创产业服务站群
必应搜索
发作品签到
专业版

基于STC8G1K08/20pin单片机自制开发板

工程标签

219
0
0
1

简介

基于STC8G1K08/20pin单片机,自制的开发板,功能包括:RS485、OLED、按键、AD采样、PWM输出控制、蜂鸣器、NTC、LED指示灯

简介:基于STC8G1K08/20pin单片机,自制的开发板,功能包括:RS485、OLED、按键、AD采样、PWM输出控制、蜂鸣器、NTC、LED指示灯
复刻成本:20

开源协议

GPL 3.0

创建时间:2024-11-09 01:50:35更新时间:2024-11-11 02:44:47

描述

项目简介

本项目基于使用STC8G1K08-38I-TSSOP20单片机自制的开发板,芯片小巧,上用空间小。电源使用降压芯片XL7005A,可以从DC5V-DC80V宽范围输入,DC12V或5V输出;开发板具有RS485通讯,可方便学习开发MODBUS-RTU通讯;有3路ADC采样,3个按键和一些输出口,用于学习开发一些小功能是基本够用的。

项目功能

本设计是基于STC8G1K08国产芯片,开发的功能适用于物联网控制,小家电控制,DIY自玩等

项目参数

  • 本设计采用XL7005A宽电压输入降压芯片,不用担心插错供电电源;
  • 本设计采用OLED液晶显示,上面可以开发显示当前的温度和电压;
  • 本设计可开发脉冲充电功能,8.33KHz的电池修复功能;
  • 当温度或湿度超出阈值范围时,有蜂鸣器报警提示,并有对应LED报警灯点亮;

原理解析(硬件说明)

软件代码

示例代码是基于ADC采样,NTC的采集实现:
#include"STC8G.h"
#include"stdio.h"
//#include"intrins.h"
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
typedef unsigned char uint8_t;
typedef unsigned int uint16_t;
typedef unsigned long uint32_t;
#define FOSC 11059200UL  //系统外部时钟频率(无符号长整型)
#define BAUD 9600 //欲配置的串口通信波特率值

void delay(u16 Count);
void IO_init(void);
void ADC_init(void);
void UART_init(void);
char putchar(char ch);//发送字符重定向函数
void UART1_SendByte(u8 dat);//串口发送单字节函数
void SendString(u8 *s);
u16 Get_ADC(void);

void main()
{
	u16 ADC_NUM=0;//定义变量用于存放ADC转换结果
	float Vin_Val=0;//定义变量用于存放模拟电压值
	IO_init();
	P34=1;
	ADC_init();
	UART_init();
	delay(100);//等待配置稳定
	printf("|************************************************|\r\n");
	printf("|************串口打印光敏电阻分压实验************|\r\n");
	printf("|************************************************|\r\n");
	while(1)
	{
		ADC_NUM=Get_ADC();//获取ADC转换结果
		printf("|ADC_Val: %d ",ADC_NUM);//打印ADC转换结果(份数)
		Vin_Val=ADC_NUM*0.0048828125;//按5V/1024计算得到的结果
		printf("Vin_Val: %f V\r\n",Vin_Val);//打印计算电压结果
		delay(2000);//控制串口数据打印速度
	}
}
void IO_init(void)
{
	  P1M0 = 0xf3; P1M1 = 0x3c; 
    P3M0 |= 0x10; P3M1 &= 0xEF;
//	P3M0 &= 0xFB; P3M1 |= 0x04; 
    P3M0 &= ~0x40; P3M1 |= 0x40; 	
}
void UART_init(void)
{
	SCON=0x50;//8位数据位,波特率可变
	AUXR|=0x40;//定时器1时钟为FOSC,即1T
	AUXR&=0xFE;//串口1选择定时器1为波特率发生器
	TMOD&=0x0F;//设定定时器1为16位自动重载方式
	TL1=(65536-(FOSC/4/BAUD));
	TH1=(65536-(FOSC/4/BAUD))>>8;//设置波特率重装值
	ET1=0;//先禁止定时器1中断
	TR1=1;//启动定时器1
	ES=1;
	EA=1;
}
void UART1_SendByte(u8 dat)
{
	TI=0;
	SBUF=dat;//发送数据到发送缓冲区内
	while(TI==0);//等待发送完毕
	TI=0;
}
void SendString(u8 *s)
{
	while(*s!='\0')
	{
		UART1_SendByte(*s);//调用单字节发送函数依次发送数据
		s++;
	}
}
void ADC_init(void)
{
	ADC_CONTR=0x0E;//ADC输入通道选择
	ADCCFG=0x0F;//左对齐512个时钟
	//ADCCFG=0x2F;//右对齐512个时钟
	ADC_CONTR |=0x80;//打开ADC电源
}
u16 Get_ADC(void)
{
	u16 ADC_Val=0;//定义变量用于存放ADC转换结果
	ADC_CONTR |=0x40;//启动ADC转换
	delay(1);
	while(!(ADC_CONTR &=0x20));//等待ADC转换完成
	ADC_CONTR &=0xDF;//清零ADC转换结束标志位
	ADC_Val=ADC_RES<<2;
	ADC_Val|=ADC_RESL>>6;//处理左对齐格式下的ADC结果
	//ADC_Val=ADC_RES<<8;
	//ADC_Val=|ADC_RESL;//处理左对齐格式下的ADC结果
	return ADC_Val;
}
void delay(u16 Count)
{
	u8 i,j;
	while(Count--)
	{
		for(i=0;i<50;i++)
			for(j=0;j<20;j++);
	}
}
char putchar(char ch)
{
	UART1_SendByte((u8) ch);
	return (ch);
}
u16 adc_Table[]=
{
	969,//-30		0
	966,//-29		1
	963,//-28		2
	959,//-27		3
	955,//-26		4
	951,//-25		5
	947,//-24		6
	943,//-23		7
	938,//-22		8
	933,//-21		9
	928,//-20		10
	923,//-19		11
	918,//-18		12
	912,//-17		13
	906,//-16		14
	900,//-15		15
	894,//-14		16
	888,//-13		17
	881,//-12		18
	874,//-11		19
	867,//-10		20
	860,//-9		21
	852,//-8		22
	844,//-7		23
	836,//-6		24
	828,//-5		25
	820,//-4		26
	811,//-3		27
	802,//-2		28
	793,//-1		29
	784,//0			30	
	774,//1			31	
	765,//2			32	
	755,//3			33	
	745,//4			34	
	734,//5			35	
	724,//6			36	
	714,//7			37	
	703,//8			38	
	692,//9			39	
	681,//10		40
	670,//11		41
	659,//12		42
	648,//13		43
	637,//14		44
	626,//15		45
	614,//16		46
	603,//17		47
	592,//18		48
	580,//19		49
	569,//20		50
	557,//21		51
	546,//22		52
	535,//23		53
	523,//24		54
	512,//25		55
	501,//26		56
	490,//27		57
	479,//28		58
	468,//29		59
	457,//30		60
	446,//31		61
	436,//32		62
	425,//33		63
	415,//34		64
	405,//35		65
	395,//36		66
	385,//37		67
	375,//38		68
	365,//39		69
	356,//40		70
	347,//41		71
	338,//42		72
	329,//43		73
	320,//44		74
	311,//45		75
	303,//46		76
	295,//47		77
	287,//48		78
	279,//49		79
	271,//50		80
	264,//51		81
	256,//52		82
	249,//53		83
	242,//54		84
	235,//55		85
	229,//56		86
	222,//57		87
	216,//58		88
	210,//59		89
	204,//60		90
	198,//61		91
	192,//62		92
	187,//63		93
	182,//64		94
	176,//65		95
	171,//66		96
	166,//67		97
	162,//68		98
	157,//69		99
	152,//70		100
	148,//71		101
	144,//72		102
	140,//73		103
	136,//74		104
	132,//75		105
	128,//76		106
	124,//77		107
	121,//78		108
	117,//79		109
	114,//80		110
	111,//81		111
	108,//82		112
	105,//83		113
	102,//84		114
	99,	//85		115
	96,	//86		116
	93,	//87		117
	91,	//88		118
	88,	//89		119
	86,	//90		120
	83,	//91		121
	81,	//92		122
	79,	//93		123
	76,	//94		124
	74,	//95		125
	72,	//96		126
	70,	//97		127
	68,	//98		128
	66,	//99		129
	65,	//100		130
	63,	//101		131
	61,	//102		132
	60,	//103		133
	58,	//104		134
	56,	//105		135
	55,	//106		136
	53,	//107		137
	52,	//108		138
	51,	//109		139
	49,	//110		140
	48,	//111		141
	47,	//112		142
	45,	//113		143
	44,	//114		144
	43,	//115		145
	42,	//116		146
	41,	//117		147
	40,	//118		148
	39,	//119		149
	38,	//120		150
	37,	//121		151
	36,	//122		152
	35,	//123		153
	34,	//124		154
	33,	//125		155
	33,	//126		156
	32,	//127		157
	31,	//128		158
	30,	//129		159
	29,	//130		160
	29,	//131		161
	28,	//132		162
	27,	//133		163
	27,	//134		164
	26,	//135		165
	25,	//136		166
	25,	//137		167
	24,	//138		168
	24,	//139		169
	23,	//140		170
	23,	//141		171
	22,	//142		172
	21,	//143		173
	21,	//144		174
	21,	//145		175
	20,	//146		176
	20,	//147		177
	19,	//148		178
	19,	//149		179
	18,	//150		180
}
//*****************************************************
//函数名称:Temp_Cal
//函数功能:把读取到的ADC值转换成温度
//入口参数:ADC的数值
//函数返回:当前的温度值,保留一位小数,
//当前版本:
//修改日期:
//当前作者:
//其他备注:int=-32768~32767
//*****************************************************
int Temp_Cal(u16 adc)
{
	u8 i;
	float temp;
	if(adc>adc_Table[0])   //温度大于最小温度的adc数值,表示超量程,返回最小数值
		return -32768;
	else if(adc

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
main.c
11
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航