#include <REGX52.H>
#include <intrins.h>
#include "NIXIE.H"
#include "SYSTEM.H"
sbit scl=P2^0;
sbit sda=P2^1;
#define DELAY_TIME 10
#define PCF8591_ADDRESS 0x90
float DAC_Volt=0;
float Output_Volt=0;
unsigned char Flag=0;
static void I2C_Delay(unsigned char n)
{
do
{
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
}
while(n--);
}
//
void I2CStart(void)
{
sda = 1;
scl = 1;
I2C_Delay(DELAY_TIME);
sda = 0;
I2C_Delay(DELAY_TIME);
scl = 0;
}
//
void I2CStop(void)
{
sda = 0;
scl = 1;
I2C_Delay(DELAY_TIME);
sda = 1;
I2C_Delay(DELAY_TIME);
}
//
void I2CSendByte(unsigned char byt)
{
unsigned char i;
for(i=0; i<8; i++){
scl = 0;
I2C_Delay(DELAY_TIME);
if(byt & 0x80){
sda = 1;
}
else{
sda = 0;
}
I2C_Delay(DELAY_TIME);
scl = 1;
byt <<= 1;
I2C_Delay(DELAY_TIME);
}
scl = 0;
}
//
unsigned char I2CReceiveByte(void)
{
unsigned char da;
unsigned char i;
for(i=0;i<8;i++){
scl = 1;
I2C_Delay(DELAY_TIME);
da <<= 1;
if(sda)
da |= 0x01;
scl = 0;
I2C_Delay(DELAY_TIME);
}
return da;
}
//
unsigned char I2CWaitAck(void)
{
unsigned char ackbit;
scl = 1;
I2C_Delay(DELAY_TIME);
ackbit = sda;
scl = 0;
I2C_Delay(DELAY_TIME);
return ackbit;
}
//
void I2CSendAck(unsigned char ackbit)
{
scl = 0;
sda = ackbit;
I2C_Delay(DELAY_TIME);
scl = 1;
I2C_Delay(DELAY_TIME);
scl = 0;
sda = 1;
I2C_Delay(DELAY_TIME);
}
void Write_Data(unsigned char Command,unsigned char Data)
{
I2CStart();
I2CSendByte(PCF8591_ADDRESS);
I2CWaitAck();
I2CSendByte(Command);
I2CWaitAck();
I2CSendByte(Data);
I2CWaitAck();
I2CStop();
}
unsigned char PCF8591_ReadData(unsigned char Command)
{
unsigned char Data;
I2CStart();
I2CSendByte(PCF8591_ADDRESS);
I2CWaitAck();
I2CSendByte(Command);
I2CWaitAck();
I2CStart();
I2CSendByte(PCF8591_ADDRESS|0x01);
I2CWaitAck();
Data=I2CReceiveByte();
I2CSendAck(1);
I2CStop();
return Data;
}
void DAC_PROCESS()
{
if(Mode==1)
{
if(Temperature>(ParaT*100))
{
Write_Data(0x41,5);
Flag=1;
}
else
{
Write_Data(0x41,0);
Flag=2;
}
}
if(Mode==2)
{
if(Temperature>=4000)
{
Output_Volt=4.0;
}
else if(Temperature<=1000)
{
Output_Volt=1.0;
}
else
{
DAC_Volt=(3.0/20)*(float)(Temperature)-200;
Output_Volt=DAC_Volt/100;
}
Write_Data(0x41,Output_Volt);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
第十二届蓝桥杯单片机真题
共39个文件
obj:8个
c:8个
lst:8个
需积分: 0 0 下载量 113 浏览量
2024-04-03
20:01:56
上传
评论
收藏 65KB RAR 举报
温馨提示
第十二届蓝桥杯单片机真题
资源推荐
资源详情
资源评论
收起资源包目录
第十二届蓝桥杯真题.rar (39个子文件)
第十二届蓝桥杯真题
iic.h 229B
2152500321.uvopt 9KB
ds1302.h 134B
Nixie.c 2KB
ds1302.c 1KB
Key.c 714B
Objects
onewire.obj 6KB
2152500321.obj 7KB
2152500321 40KB
Key.obj 4KB
system.obj 5KB
ds1302.obj 6KB
2152500321.build_log.htm 1KB
2152500321.lnp 234B
Timer.obj 3KB
iic.obj 11KB
Nixie.obj 8KB
2152500321.hex 8KB
Key.h 89B
onewire.c 1KB
2152500321.c 1KB
system.c 812B
Listings
Nixie.lst 4KB
Timer.lst 2KB
Key.lst 3KB
system.lst 3KB
onewire.lst 4KB
ds1302.lst 4KB
iic.lst 7KB
2152500321.lst 4KB
2152500321.m51 36KB
system.h 300B
iic.c 3KB
Nixie.h 319B
Timer.h 91B
2152500321.uvproj 15KB
Timer.c 355B
2152500321.uvgui.suoshuailong 91KB
onewire.h 116B
共 39 条
- 1
资源评论
hurd_suo
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功