久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
PCF8591 ADC電壓采樣
[打印本頁]
作者:
apin123
時間:
2015-7-26 11:35
標題:
PCF8591 ADC電壓采樣
-------------------------------------------------------
文件名: IIC_drv.c
描述: IIC通信驅動c文件
作者:
=========================================================
-----------------------------------------------------------------------------------------------------------*/
#include "IIC_drv.h"
/**********************************************
功能:
起始信號
輸入參數:
無
輸出參數:
無
返回值:
**********************************************/
static void Start(void)
{
Sda = 1;
Scl = 1;
Sda = 0;
}
/**********************************************
功能:
停止信號
輸入參數:
無
輸出參數:
無
返回值:
**********************************************/
static void Stop(void)
{
Sda = 0;
Scl = 1;
Sda = 1;
}
/**********************************************
功能:
應答位
輸入參數:
無
輸出參數:
無
返回值:
設備是否應答
1:應答;0:應答
**********************************************/
static unsigned char Respons(void)
{
unsigned char OverTime = 0; //超時
unsigned char TempFlag = 0;
OverTime = 0;
Sda = 1; //釋放數據線
Scl = 1;
while(1)
{
if(Sda) //應答信號沒來
{
if(OverTime++ > 200)
{
TempFlag = 0; //應答信號長時間沒有來,認為無應答
break;
}
}
else
{
TempFlag = 1; ///檢測到應答信號
break;
}
}
Scl = 0;
return 1;
}
/**********************************************
功能:
非應答位
輸入參數:
無
輸出參數:
無
返回值:
**********************************************/
static void NoRespons(void) //非應答
{
Sda = 1; //釋放數據線
Scl = 1;
Scl = 0;
}
/**********************************************
功能:
寫字節
輸入參數:
temp: 要寫的字節參數
輸出參數:
無
返回值:
**********************************************/
static void WriteByte(unsigned char temp)
{
unsigned char i;
Scl = 0;
for(i = 0;i < 8;i++)
{
Sda = temp & 0x80;
temp <<= 1;
Scl = 1; //scl拉高,準備寫數據
Scl = 0; //scl拉低,寫數據完成
}
}
/**********************************************
功能:
讀字節
輸入參數:
無
輸出參數:
無
返回值:
讀取的字節
**********************************************/
static unsigned char ReadByte(void)
{
unsigned char i;
unsigned char x = 0;
for(i = 0;i < 8;i++)
{
Scl = 1;
x <<= 1;
x |= (unsigned char)Sda;
Scl = 0;
}
return x;
}
/**********************************************
功能:
寫數據到對應設備
輸入參數:
device: 設備地址
parameter:參數
temp: 寫入的內容
輸出參數:
無
返回值:
**********************************************/
void WriteIIC(unsigned char device,unsigned char parameter,unsigned char temp)
{
Start();
WriteByte(device);
if(Respons())
{
WriteByte(parameter);
if(Respons())
{
WriteByte(temp);
if(Respons())
{
Stop();
}
else
{
Stop();
}
}
else
{
Stop();
}
}
else
{
Stop();
}
}
/**********************************************
功能:
從對應設備讀取數據
輸入參數:
device: 設備地址
parameter:參數
輸出參數:
無
返回值:
讀取的內容
**********************************************/
unsigned char ReadIIC(unsigned char device,unsigned char parameter)
{
unsigned char x;
Start();
WriteByte(device);
if(Respons())
{
WriteByte(parameter);
if(Respons())
{
Start();
WriteByte(device | 0x01);
if(Respons())
{
x = ReadByte();
NoRespons();
Stop();
}
else
{
Stop();
}
}
else
{
Stop();
}
}
else
{
Stop();
}
return x;
}
復制代碼
---------------------------------------------------------
文件名: digitron_drv.c
描述: 數碼管模塊驅動c文件
作者:
=========================================================
-----------------------------------------------------------------------------------------------------------*/
#include "digitron_drv.h"
code uint8 Segment[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
code uint8 Select[] = {0xff,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/**********************************************
功能:
輸出位選字節和段碼字節
輸入參數:
SelectByte: 位選字節
SegmentByte: 段碼字節
輸出參數:
無
返回值:
**********************************************/
static void DigOutput(uint8 SelectByte, uint8 SegmentByte)
{
uint8 i;
DIG_SHCP = 0;
DIG_STCP = 0;
for(i=0; i<8; i++)
{
if(SegmentByte&0x80)
{
DIG_DATA = 1;
}
else
{
DIG_DATA = 0;
}
_nop_();
DIG_SHCP = 1;
_nop_();
DIG_SHCP = 0;
_nop_();
SegmentByte <<= 1;
}
for(i=0; i<8; i++)
{
if(SelectByte&0x80)
DIG_DATA = 1;
else
DIG_DATA = 0;
_nop_();
DIG_SHCP = 1;
_nop_();
DIG_SHCP = 0;
_nop_();
SelectByte <<= 1;
}
DIG_STCP = 1;
_nop_();
DIG_STCP = 0;
_nop_();
}
/**********************************************
功能:
在某位顯示自定義段碼
輸入參數:
DigSelect: 數碼管位選擇(1——8,即最右到最左)
CustomSeg: 自定義段碼值
輸出參數:
無
返回值:
**********************************************/
void DigShowCustom(uint8 DigSelect, uint8 CustomSeg)
{
if(0<DigSelect<9)
{
DigOutput(Select[DigSelect],CustomSeg);
}
}
/**********************************************
功能:
在某位顯示數字
輸入參數:
DigSelect: 數碼管位選擇(1——8,即最右到最左)
Number: 數字(0——9)
Dp: 小數點(1:顯示;0:不顯示)
輸出參數:
無
返回值:
**********************************************/
void DigShowNumber(uint8 DigSelect, uint8 Number, bit Dp)
{
if((0<DigSelect<9)&&(Number<10))
{
if(Dp)
{
DigOutput(Select[DigSelect],(Segment[Number]&~0x80));
}
else
{
DigOutput(Select[DigSelect],(Segment[Number]|0x80));
}
}
}
/**********************************************
功能:
初始化數碼管,使數碼管全滅
輸入參數:
無
輸出參數:
無
返回值:
**********************************************/
void DigInit(void)
{
DIG_DATA = 0;
DIG_SHCP = 0;
DIG_STCP = 0;
DigOutput(0x00,0xff);
}
#include "PCF8591_AD_drv.h"
/**********************************************
功能:
配置PCF8591的工作模式
輸入參數:
anlog_sw: 模擬信號輸出開關
input_model: 模擬輸入模式設置
auto_increment: 通道自動增量設置
AD_channel:模擬轉換通道設置
輸出參數:
無
返回值:
配置完成后的控制字節
**********************************************/
unsigned char model_set(bit anlog_sw,unsigned char input_model,bit auto_increment,unsigned char AD_channel)
{
unsigned char Control_Key;
Control_Key = 0x00;
if(anlog_sw)
{
Control_Key |= 0x40;
}
input_model = input_model << 4;
Control_Key |= input_model;
if(auto_increment)
{
Control_Key |= 0x04;
}
Control_Key |= AD_channel;
return Control_Key;
}
---------------------------------------------------------
文件名: PCF8591_AD.c
描述: AD采集溫度,光照強度變化
作者:
=========================================================
-----------------------------------------------------------------------------------------------------------*/
#include <reg52.h>
#include "digitron_drv.h"
#include "IIC_drv.h"
#include "PCF8591_AD_drv.h"
/**********************************************
功能:
數碼管顯示
輸入參數:
Data: 數據
輸出參數:
無
返回值:
**********************************************/
void Display(unsigned int Data1,unsigned int Data2)
{
DigShowNumber(8,Data1/100,0);
DigShowNumber(7,Data1%100/10,0);
DigShowNumber(6,Data1%10,0);
DigShowNumber(3,Data2/100,0);
DigShowNumber(2,Data2%100/10,0);
DigShowNumber(1,Data2%10,0);
}
/*---------------------------------------------------------------------------------------------------------*/
/**********************************************
主函數
**********************************************/
void main()
{
unsigned char model;
unsigned char hot,light;
while(1)
{
model = model_set(anlog_output_off,anlog_model_0,auto_increment_off,anlog_channel_0);
hot = ReadIIC(0x90,model);
model = model_set(anlog_output_off,anlog_model_0,auto_increment_off,anlog_channel_1);
light = ReadIIC(0x90,model);
Display(hot,light);
}
}
好東西值得擁有
PCF8591 ADC電壓采樣.pdf
2015-7-26 11:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
2.81 MB, 下載次數: 54, 下載積分: 黑幣 -5
作者:
caigen0001
時間:
2015-10-1 16:38
謝謝分享。。。
作者:
owenliang
時間:
2018-2-26 22:56
謝謝分享
作者:
danpianji3501
時間:
2018-4-10 06:53
謝謝 !銳志開發板上就用的這個,就是不見開發板的視頻教程!
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕视频一区
|
国产亚洲精品精品国产亚洲综合
|
欧产日产国产精品视频
|
日本免费在线看
|
日本不卡一二三
|
一区二区三区视频在线观看
|
蜜桃视频一区二区三区
|
亚洲一区中文字幕在线观看
|
亚洲精品日韩欧美
|
国产一级久久久久
|
在线播放国产视频
|
欧洲一区在线观看
|
亚洲欧美日韩精品久久亚洲区
|
日韩高清一区
|
久久久久久综合
|
国产一区久久久
|
国产精品国产三级国产aⅴ入口
|
日本一区二区三区四区
|
91精品国产综合久久小仙女图片
|
中文字幕韩在线第一页
|
欧美一区二区三区在线观看
|
chinese中国真实乱对白
|
www.夜夜草
|
精品久久久久久久久久久久久久
|
日韩精品一区二区三区在线播放
|
伊人网91
|
高清欧美性猛交xxxx黑人猛交
|
精品一区二区三区在线视频
|
欧美日本在线观看
|
欧美一区二区三区高清视频
|
麻豆国产一区二区三区四区
|
成人在线日韩
|
日本黄色影片在线观看
|
久久精品网
|
欧美日韩在线一区二区
|
高清一区二区三区
|
欧美综合精品
|
91精品国产91
|
国产成人综合久久
|
日韩精品在线播放
|
国产精品久久久久久吹潮
|