资源简介
基于Proteus的温度传感器仿真,单片机是89C52系列的,可设置温度等参数,将数据通过串口发送到上位机。

代码片段和文件信息
/***********************************************************************************
参考网址 http://www.sensirion.com.cn/download_sd.aspx
仿真调试 济宁职业技术学院 胡建波
***********************************************************************************/
#include //Microcontroller specific library e.g. port definitions
#include //Keil library (is used for _nop()_ operation)
#include //Keil library
#include //Keil library
typedef union
{ unsigned int i;
float f;
} value;
//----------------------------------------------------------------------------------
// modul-var
//----------------------------------------------------------------------------------
enum {TEMPHUMI};
sbit DATA=P1^0;
sbit SCK=P1^1;
#define noACK 0
#define ACK 1
//adr command r/w
#define STATUS_REG_W 0x06 //000 0011 0
#define STATUS_REG_R 0x07 //000 0011 1
#define MEASURE_TEMP 0x03 //000 0001 1
#define MEASURE_HUMI 0x05 //000 0010 1
#define RESET 0x1e //000 1111 0
//----------------------------------------------------------------------------------
char s_write_byte(unsigned char value)
//----------------------------------------------------------------------------------
// writes a byte on the Sensibus and checks the acknowledge
{
unsigned char ierror=0;
for (i=0x80;i>0;i/=2) //shift bit for masking
{ if (i & value) DATA=1; //masking value with i write to SENSI-BUS
else DATA=0;
SCK=1; //clk for SENSI-BUS
_nop_();_nop_();_nop_(); //pulswith approx. 5 us
SCK=0;
}
DATA=1; //release DATA-line
SCK=1; //clk #9 for ack
error=DATA; //check ack (DATA will be pulled down by SHT11)
SCK=0;
return error; //error=1 in case of no acknowledge
}
//----------------------------------------------------------------------------------
char s_read_byte(unsigned char ack)
//----------------------------------------------------------------------------------
// reads a byte form the Sensibus and gives an acknowledge in case of “ack=1“
{
unsigned char ival=0;
DATA=1; //release DATA-line
for (i=0x80;i>0;i/=2) //shift bit for masking
{ SCK=1; //clk for SENSI-BUS
if (DATA) val=(val | i); //read bit
SCK=0;
}
DATA=!ack; //in case of “ack==1“ pull down DATA-Line
SCK=1; //clk #9 for ack
_nop_();_nop_();_nop_(); //pulswith approx. 5 us
SCK=0;
DATA=1; //release DATA-line
return val;
}
//----------------------------------------------------------------------------------
void s_transstart(void)
//----------------------------------------------------------------------------------
// generates a transmission start
// _____ ________
// DATA: |_______|
// ___ ___
// SCK : ___| |___| |______
{
DATA=1; SCK=0; //Initial state
_nop_();
SCK=1;
_nop_();
DATA=0;
_nop_();
SCK=0;
_nop_();_nop_();_nop_();
SCK=1;
_nop_();
DATA=1;
_nop_();
SCK=0;
}
//----------------------------------------------------------------------------------
void s_connectionreset(void)
//------------------------------------------------
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-07-08 19:00 基于Proteus的温度传感器仿真\
文件 8105 2020-07-07 18:18 基于Proteus的温度传感器仿真\Backup Of sht11_rs232.pdsbak
文件 19199 2020-07-06 21:52 基于Proteus的温度传感器仿真\Last Loaded sht11_rs232.DBK
文件 8104 2020-07-07 23:06 基于Proteus的温度传感器仿真\Last Loaded sht11_rs232.pdsbak
文件 16449 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11
文件 14452 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11.LST
文件 18320 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11.M51
文件 14816 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11.OBJ
文件 1031 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11.Opt
文件 2129 2020-07-06 21:55 基于Proteus的温度传感器仿真\SHT11.Uv2
文件 9692 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11.c
文件 12634 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11.hex
文件 42 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11.lnp
文件 503 2020-07-06 22:12 基于Proteus的温度传感器仿真\SHT11.plg
文件 1031 2020-07-06 21:58 基于Proteus的温度传感器仿真\SHT11_Opt.Bak
文件 1990 2020-07-06 21:52 基于Proteus的温度传感器仿真\SHT11_Uv2.Bak
文件 19198 2020-07-06 21:52 基于Proteus的温度传感器仿真\sht11_rs232.DSN
文件 795 2020-07-06 21:52 基于Proteus的温度传感器仿真\sht11_rs232.PWI
文件 15459 2020-07-08 11:41 基于Proteus的温度传感器仿真\sht11_rs232.pdsprj
文件 2198 2020-07-08 19:03 基于Proteus的温度传感器仿真\sht11_rs232.pdsprj.LAPTOP-MU7MFRH1.ASUS.workspace
相关资源
- 易语言OTG串口通信
- delphi 串口通讯
- 51单片机PWM程序,占空比、周期可调整
- DELPHI与西门子200PLC的串口通信实例
- proteus仿真 AT89C51输出各种波形
- 00
- 单片机与温度传感器DS18B20的程序设计
- 毕业论文之温度传感器DS18B20(源码
- stm32 ds18b20 温度传感器 测试通过
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- 单片机与PC机串口通讯仿真
- DS18B20分布式多点测温的Proteus仿真
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 51多机通信(内附Proteus及.hex文件)
- 《Visual Basic 串口通信与测控应用技术
- IIC proteus仿真实验
- MFC串口通信
- 8086交通灯 Proteus原理图及程序
- 单片机仿真软件proteus6.7免安装绿色版
- 基于STM32的深海钻机甲板控制系统
- 4_USART串口通信(空闲中断+DMA.zip
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- 单片机驱动4相步进电机proteus仿真
- 三菱PLC串口通信调试软件.rar
评论
共有 条评论