欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
PCF8591 AD采集單片機(jī)程序 LCD1602顯示
[打印本頁]
作者:
dch
時(shí)間:
2017-5-8 20:05
標(biāo)題:
PCF8591 AD采集單片機(jī)程序 LCD1602顯示
關(guān)于PCF8591 ad 轉(zhuǎn)換程序源碼
0.png
(47.55 KB, 下載次數(shù): 51)
下載附件
2017-5-8 20:09 上傳
單片機(jī)源程序:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define Delay4us(){_nop_();_nop_();_nop_();_nop_();}
sbit LCD_RS=P2^2;
sbit LCD_RW=P2^1;
sbit LCD_EN=P2^0;
sbit SCL=P1^0; //I2C時(shí)鐘引腳
sbit SDA=P1^1; //I2C數(shù)據(jù)輸入輸出引腳
uchar Recv_Buffer[4]; //數(shù)據(jù)接收緩沖
uint Voltage[]={'0','0','0','0','0','0'}; //數(shù)據(jù)分解為電壓x.xx
bit bdata IIC_ERROR; //I2C錯(cuò)誤標(biāo)志位
uchar LCD_Line_1[]={"DQ . ppm "};
//延時(shí)
void delay(int ms)
{
uchar i;
while(ms--) for(i=0;i<250;i++) Delay4us();
}
//LCD忙檢測(cè)
bit LCD_Busy_Check()
{
bit Result;
LCD_RS=0;LCD_RW=1;
LCD_EN=1;Delay4us();Result=(bit)(P0&0x80);
LCD_EN=0;
return Result;
}
//寫指令
void LCD_Write_Command(uchar cmd)
{
while(LCD_Busy_Check());
LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();
P0=cmd;Delay4us();
LCD_EN=1;Delay4us();LCD_EN=0;
}
// 寫數(shù)據(jù)
void LCD_Write_Data(uchar dat)
{
while(LCD_Busy_Check());
LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;Delay4us();
LCD_EN=1;Delay4us();LCD_EN=0;
}
//初始化
void LCD_Initialise()
{
LCD_Write_Command(0x38);delay(5);
LCD_Write_Command(0x0c);delay(5);
LCD_Write_Command(0x06);delay(5);
LCD_Write_Command(0x01);delay(5);
LCD_Write_Command(0x03);delay(5);
LCD_Write_Command(0x02);delay(5);
}
//設(shè)置顯示位置
void LCD_Set_Position(uchar pos)
{
LCD_Write_Command(pos|0x80);
}
//顯示一行
void LCD_Display_A_Line(uchar Line_Addr,uchar s[])
{
uchar i;
LCD_Set_Position(Line_Addr);
for(i=0;i<16;i++)LCD_Write_Data(s[i]);
}
// 將模數(shù)轉(zhuǎn)換后得到的值分解存入緩存
void Convert_To_Voltage(uchar val)
{
uchar Tmp; //最大值為255,對(duì)應(yīng)5V
Voltage[2]=val/100+'0'; //整數(shù)部分
Voltage[3]=val/10%10+'0' ;
Voltage[4]=val%10+'0' ;
Tmp=val*10; // 第一位小數(shù)
Voltage[1]=Tmp%10+'0';
Tmp=Tmp*10;
Voltage[0]=Tmp%10+'0';
}
//啟動(dòng)I2C總線
void IIC_Start()
{
SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;
}
//停止I2C總線
void IIC_Stop()
{
SDA=0;SCL=1;Delay4us();SDA=1; Delay4us();SCL=0;
}
// 從機(jī)發(fā)送應(yīng)答位
void Slave_ACK()
{
SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;
}
// 從機(jī)發(fā)送非應(yīng)答位
void Slave_NOACK()
{
SDA=1;SCL=1;Delay4us();SCL=0;SDA=0;
}
//發(fā)送一字節(jié)
void IIC_SendByte(uchar wd)
{
uchar i;
for(i=0;i<8;i++) //循環(huán)移入8位
{
SDA=(bit)(wd&0x80);_nop_();_nop_();
SCL=1;Delay4us();SCL=0;wd<<=1;
}
Delay4us();
SDA=1; //釋放總線并準(zhǔn)備讀取應(yīng)答
SCL=1;
Delay4us();
IIC_ERROR=SDA; //IIC_ERROR=1表示無應(yīng)答
SCL=0;
Delay4us();
}
//接收一字節(jié)
uchar IIC_ReceiveByte()
{
uchar i,rd=0x00;
for(i=0;i<8;i++)
{
SCL=1;rd<<=1;rd|=SDA;Delay4us();SCL=0;Delay4us();
}
SCL=0;Delay4us();
return rd;
}
//連續(xù)讀入4路通道的A/D轉(zhuǎn)換結(jié)果并保存到Recv_Buffer
void ADC_PCF8591(uchar CtrlByte)
{
uchar i;
IIC_Start();
IIC_SendByte(0x90); // 發(fā)送寫地址
if(IIC_ERROR==1)return;
// IIC_SendByte(CtrlByte); //發(fā)送控制字節(jié)
//if(IIC_ERROR==1)return;
IIC_Start(); //重新發(fā)送開始命令
IIC_SendByte(0x91); // 發(fā)送讀地址
if(IIC_ERROR==1)return;
IIC_ReceiveByte(); //空讀一次,調(diào)整讀順序
Slave_ACK(); //收到一字節(jié)后發(fā)送一個(gè)應(yīng)答位
for(i=0;i<4;i++)
{
Recv_Buffer[i++]=IIC_ReceiveByte();
Slave_ACK(); //收到一個(gè)字節(jié)后發(fā)送一個(gè)應(yīng)答位
}
Slave_NOACK();
IIC_Stop(); //收到一個(gè)字節(jié)后發(fā)送一個(gè)非應(yīng)答位
}
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
下載:
PCF8591 LCD1602AD采集程序.zip
(32.77 KB, 下載次數(shù): 177)
2017-5-8 20:05 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
284213945
時(shí)間:
2018-5-9 20:03
66666666666666666666666666666666
作者:
何璇
時(shí)間:
2018-5-10 21:27
你好,我想問下你這個(gè)測(cè)得是什么
作者:
luoyua
時(shí)間:
2019-4-18 20:06
沒有接線圖嗎?
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1