欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
ADS1115+STM32發送16進制數據指令返回ADC源程序 (含上位機源碼)
[打印本頁]
作者:
findoctorlin
時間:
2018-4-17 17:08
標題:
ADS1115+STM32發送16進制數據指令返回ADC源程序 (含上位機源碼)
RT-STM32F103c8t6源碼例程分享-發送指令返回ADC
ADS1115_模式1_發送指令返回ADC數據(16進制數據)
ADS1115板-模式1-上位測試程序-DELPHI7:
0.png
(80.81 KB, 下載次數: 59)
下載附件
2018-4-17 17:54 上傳
1,項和值的數據不要修改
2,點控件源路徑的“打開”按鈕,顯示框找到MSCOMM32.OCX這個文件所在的位置,然后按“添加控件”,系統會提示“添加成功”。
3,點“注冊按鈕”,提示注冊成功。
4,如果不確定這個控件是否被添加,請打開C:\windows\system32里查看
ADS1115板-模式1單片機程序-KEIL5 MDK
單片機源程序如下:
#include "stm32f10x.h"
#include <stdio.h>
#include "ADS_1115.h"
uchar dat,i;
/*************************************************/
void delayad(unsigned int tt)
{
unsigned int i,j;
for(j=tt;j>0;j--)
for(i=20;i>0;i--);
}
/*************************************************/
void delayad_nopar(void)
{
unsigned long i =20;
while(i--);
}
/*************************************************
函數: void RCC_Configuration(void)
功能: 復位和時鐘控制 配置
參數: 無
返回: 無
**************************************************/
void RCC_Configuration(void)//配置時鐘
{
ErrorStatus HSEStartUpStatus; //定義外部高速晶體啟動狀態枚舉變量
RCC_DeInit(); //復位RCC外部設備寄存器到默認值
RCC_HSEConfig(RCC_HSE_ON); //打開外部高速晶振
HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待外部高速時鐘準備好
if(HSEStartUpStatus == SUCCESS) //外部高速時鐘已經準別好
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //開啟FLASH預讀緩沖功能,加速FLASH的讀取。所有程序中必須的用法.位置:RCC初始化子函數里面,時鐘起振之后
FLASH_SetLatency(FLASH_Latency_2); //flash操作的延時
RCC_HCLKConfig(RCC_SYSCLK_Div2); //配置AHB(HCLK)時鐘等于==SYSCLK
RCC_PCLK1Config(RCC_HCLK_Div2); //配置APB1(PCLK1)鐘==AHB1/2時鐘
RCC_PCLK2Config(RCC_HCLK_Div2); //配置APB2(PCLK2)鐘==AHB時鐘
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //配置PLL時鐘 == 外部高速晶體時鐘 * 9 = 72MHz
RCC_PLLCmd(ENABLE); //使能PLL時鐘
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL時鐘就緒
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //配置系統時鐘 = PLL時鐘
while(RCC_GetSYSCLKSource() != 0x08) //檢查PLL時鐘是否作為系統時鐘
{
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_AFIO, ENABLE);
//允許GPIOB、AFIO時鐘
}
/*******************************************************************************
函數: GPIO_Configuration(void)
功能: 配置GPIO口
參數: 無
返回: 無
*******************************************************************************/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定義GPIO初始化結構體
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_14 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/*******************************************************************************
函數: NVIC_Configuration(void)
功能: 配置中斷功能
輸入: 無
輸出: 無
返回: 無
*******************************************************************************/
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/* Enable the USART1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //通道設置為串口1中斷
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //中斷響應優先級0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //打開中斷
NVIC_Init(&NVIC_InitStructure); //初始化
}
/*******************************************************************************
函數名:USART1_Configuration
輸 入:
輸 出:
功能說明:配置串口參數
******************************************************************************/
void USART1_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
/* 打開GPIO和USART部件的時鐘 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
/* 將USART Tx的GPIO配置為推挽復用模式 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 將USART Rx的GPIO配置為浮空輸入模式
由于CPU復位后,GPIO缺省都是浮空輸入模式,因此下面這個步驟不是必須的
但是,我還是建議加上便于閱讀,并且防止其它地方修改了這個口線的設置參數
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 配置USART1參數
- BaudRate = 9600 baud
- Word Length = 8 Bits
- One Stop Bit
- No parity
- Hardware flow control disabled (RTS and CTS signals)
- Receive and transmit enabled
*/
USART_InitStructure.USART_BaudRate =115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
/* 若接收數據寄存器滿,則產生中斷 */
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
/* 使能 USART1, 配置完畢 */
USART_Cmd(USART1, ENABLE);
/* 如下語句解決第1個字節無法正確發送出去的問題 */
USART_ClearFlag(USART1, USART_FLAG_TC); // 清標志
}
/*******************************************************************************
函數名:Uart1_PutChar()
輸 入:
輸 出:
功能說明:串口發送一字節數據
********************************************************************************/
void Uart1_PutChar(u8 ch)
{
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
/*******************************************************************************
函數: USART1_IRQHandler(void)
功能: 串口中斷函數
參數: 無
返回: 無
*******************************************************************************/
void USART1_IRQHandler(void) //在中斷服務程序中,由于主機響應中斷時并不知道是哪個中斷源發出中斷請求
{
// 是不用做上述判別的。但是無論什么情況,做上述判別是個好習慣
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //若接收數據寄存器滿
{
dat = USART_ReceiveData(USART1);
}
}
void Send_data(uchar y)
{
ADC_DAT=((Result[0]*256+Result[1])/3.2768)*6.144;
if(ADC_DAT>=0xffff)
ADC_DAT=0;
Uart1_PutChar('A');
Uart1_PutChar('N');
Uart1_PutChar(y+0x30);
Uart1_PutChar(':');
Uart1_PutChar((ADC_DAT/10000)+0X30);
Uart1_PutChar('.');
Uart1_PutChar((ADC_DAT%10000/1000)+0X30);
Uart1_PutChar((ADC_DAT%1000/100)+0X30);
Uart1_PutChar((ADC_DAT%100/10)+0X30);
Uart1_PutChar((ADC_DAT%100%10)+0X30);
Uart1_PutChar('V');
Uart1_PutChar(' ');
}
void get_data()
{
}
/*********************************************************************************
函數: int main(void)
功能: main主函數
參數: 無
返回: 無
*********************************************************************************/
int main(void)
{
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
USART1_Configuration();
while(1)
{
if(dat==0xa0)
{
dat=0;
ADS1115(0,0);
Uart1_PutChar(0xA0);
Uart1_PutChar(Result[0]);
Uart1_PutChar(Result[1]);
Uart1_PutChar(0xBB);
}
if(dat==0xa1)
{
dat=0;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png
(48.48 KB, 下載次數: 59)
下載附件
2018-4-17 17:57 上傳
所有資料51hei提供下載:
ADS1115_模式1_發送指令返回ADC數據(16進制數據).rar
(1.08 MB, 下載次數: 230)
2018-4-17 18:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
quinn1
時間:
2018-7-17 08:37
不錯正需要
作者:
bleach
時間:
2018-8-14 09:42
謝謝樓主分享
作者:
龍影隨風
時間:
2018-11-30 10:53
多謝樓主,正需要參考
作者:
旭日青草
時間:
2019-7-2 21:24
贊樓主!!!!
作者:
旭日青草
時間:
2019-7-2 21:25
感謝樓主分享程序!
作者:
125713018
時間:
2019-9-2 09:25
幫樓主頂一個 謝謝分享
作者:
HiHiHiHi
時間:
2019-9-14 19:05
贊一個謝謝樓主,好人一生平安
作者:
melodyfree
時間:
2019-9-27 14:04
樓主,您好我用這個工程,但是測下來AD都是滿量程,會是什么原因呢,謝謝~
作者:
wxh126
時間:
2019-10-12 17:02
謝謝樓主分享
作者:
yyjzd0414
時間:
2019-12-18 11:08
多謝分享,學習學習
作者:
林總呀
時間:
2019-12-18 16:27
謝謝樓主
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1