基于labview的温度采集系统 - 图文(8)

2019-04-22 11:51

河南师范大学本科毕业论文(设计)

DQ_CLR; delayUs(255);

/*延时500uS(480-960)*/

delayUs(255); delayUs(128); DQ_SET; DQ_IN; delayUs(100);

/*延时80uS*/

i = DQ_R; delayUs(255);

/*延时500uS(保持>480uS)*/

delayUs(255); delayUs(128); if (flag & 0x80) {

/*恢复中断状态*/

SEI(); }

if (i) {

return 0x00; }

else {

return 0x01;

}

}

/*DS18B20字节读取函数*/

unsigned char ds1820_read_byte(void) { unsigned char i; unsigned char value = 0; flag = SREG; /*中断保护*/ CLI();

/*关中断*/

for (i = 8; i != 0; i--) {

value >>= 1; DQ_OUT; DQ_CLR; delayUs(2); /*延时4uS*/

NOP();

NOP();

35

河南师范大学本科毕业论文(设计)

NOP(); NOP(); NOP(); DQ_SET; DQ_IN; delayUs(4);

/*延时10uS*/

delayUs(4); if (DQ_R) { value|=0x80;

}

delayUs(35);

/*延时60uS*/ delayUs(35); }

if (flag & 0x80) {

/*恢复中断状态*/

SEI();

}

return(value);

}

/*DS18B20字节写入函数*/

void ds1820_write_byte(unsigned char value) { unsigned char i; flag = SREG; /*中断保护*/ CLI();

/*关中断*/

for (i = 8; i != 0; i--) {

DQ_OUT; DQ_CLR; delayUs(2); /*延时4uS*/

NOP(); NOP(); NOP(); NOP(); NOP();

if (value & 0x01) {

DQ_SET;

36

河南师范大学本科毕业论文(设计)

}

delayUs(100); /*延时80uS*/ DQ_SET;

/*位结束*/

value >>= 1;

}

if (flag & 0x80) {

/*恢复中断状态*/

SEI();

}

}

/*启动ds1820转换*/ void ds1820_start(void) { ds1820_reset();

ds1820_write_byte(0xCC); /*勿略地址*/ ds1820_write_byte(0x44);

/*启动转换*/

}

/*DS8B20读取温度信息*/

unsigned int ds1820_read_temp(void) { unsigned int i; unsigned char buf[9]; ds1820_reset();

ds1820_write_byte(0xCC); /*勿略地址*/ ds1820_write_byte(0xBE); /*读取温度*/

for (i = 0; i < 9; i++) { buf[i] = ds1820_read_byte();

}

i = buf[1]; i <<= 8; i |= buf[0]; return i;

}

37

河南师范大学本科毕业论文(设计)

//DS18B20用数据位端口初始化 void port_1820(void) {

DDRA=0x00; PORTA=0x80; //DS18B20的数据位接口上拉

}

串口通信函数 #include \#include /*串口初始化函数*/ void Uart_Init(void) { UCSRA = 0x00;

UCSRB = 0x18; /*允许接收和发送*/ UCSRC = 0x06; /*8位数据*/ UBRRH = 0x00; UBRRL = 47;

/*9600*/

}

/*数据发送,查询方式*/

void Uart_Transmit(unsigned char i) { while (!(UCSRA & (1<

UDR = i;

/* 发送数据*/

}

/*数据接收,查询方式*/

unsigned char Uart_Receive( void ) { while (!(UCSRA & (1<

return UDR;

/* 获取并返回数据*/

}

PWM函数 #include #include #define OCR OCR1A

38

河南师范大学本科毕业论文(设计)

int OcrReg = 1024; //OCR1A初始值

int Icr1Reg = 0x7ff; //PWM的计数顶部值 Icr1Reg = 2047 void pwm_init(void) {

//比较匹配时清零,计数到最大时置位OC1A TCCR1A |= (1<

//11位分辨率,快速PWM模式,使用系统时钟作为计数时钟 TCCR1B |= (1<

} 延时函数

#include\#include

/********************************************************************** functionName: void delayUs(BYTE temp) description :延时函数 晶振频率:7.3728MHZ delayUs(1); //2.71us delayUs(2); //3.53us delayUs(4); //5.15us delayUs(8); //8.41us delayUs(16); //14.92us delayUs(32); //27.94us delayUs(64); //53.98us delayUs(128); //106.07us delayUs(255); //209.42us delayUs(18); //16.55us delayUs(34); //29.57us delayUs(35); //30.38us delayUs(100); //83.28 _NOP(); //0.14us

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

void delayUs(unsigned int temp) {

39


基于labview的温度采集系统 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:采购业务行为准则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: