微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于STM8的ADC0832采集及蓝牙通信系统

基于STM8的ADC0832采集及蓝牙通信系统

时间:09-25 来源:互联网 点击:

TypeDef)DO_GPIO_PINS); /*在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号*/

asm("nop");

asm("nop");

GPIO_WriteLow(CS_GPIO_PORT, (GPIO_Pin_TypeDef)CS_GPIO_PINS); //使能ADC0832

asm("nop");

asm("nop");

GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);

asm("nop");

asm("nop");

GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS); //形成下降沿1

asm("nop");

asm("nop"); /*在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能*/

if( i==0 )

GPIO_WriteLow(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);

if( i==1 )

GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);

asm("nop");

asm("nop");

GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);

asm("nop");

asm("nop");

GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS); //形成下降沿2

asm("nop");

asm("nop");

if( i==0 )

GPIO_WriteLow(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);

if( i==1 )

GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);

GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);

asm("nop");

asm("nop");

GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS); //形成下降沿3

asm("nop");

asm("nop");

}

/********************************************************

函数名称:uchar AD_read()

函数作用:读取ADC0832转换的数据

参数说明:无

函数返回:返回8位的数据

********************************************************/

u8 AD_read()

{

u8 temp1 = 0;

u8 temp2 = 0;

uchar i = 0;

GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);

asm("nop");

asm("nop");

ioChange(1); //作为输入

for(i = 0; i < 8; i++)

{

GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);

asm("nop");

asm("nop");

GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS); //形成下降沿

asm("nop");

asm("nop");

temp1 = temp1 << 1;

if(GPIO_ReadInputPin(DI_GPIO_PORT, (GPIO_Pin_TypeDef)DI_GPIO_PINS) !=0)

temp1 |= 0x01;

else temp1 |= 0x00;

}

for(i = 0; i < 8; i++)

{

temp2 = temp2>>1;

if(GPIO_ReadInputPin(DI_GPIO_PORT, (GPIO_Pin_TypeDef)DI_GPIO_PINS) !=0)

temp2 = temp2|0x80;

GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);

asm("nop");

asm("nop");

GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS); //形成下降沿

asm("nop");

asm("nop");

}

GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);

asm("nop");

asm("nop");

GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);

asm("nop");

asm("nop");

GPIO_WriteHigh(CS_GPIO_PORT, (GPIO_Pin_TypeDef)CS_GPIO_PINS); //使能ADC0832

asm("nop");

asm("nop");

if(temp1 == temp2)

return temp1;

else

return 0;

}

#endif

再说说安卓上位机,一个简单蓝牙接收的apk,用于实时画图,可以显示和画出一段时间内的STM8采样的数值,从后台接收数据,发送消息至进程更新UI。

为了方便大家学习,工程已经打包上传,http://download.csdn.net/detail/devintt/8029389

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top