资源简介
基于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
相关资源
- proteus实验\\数字时钟电路设计proteus仿
- DS18B20温度传感器Protues仿真
- 串口通信串口助手发送指令控制单片
- 微机原理PROTUES仿真实现秒表
- 51单片机测量方波频率proteus仿真
- STM32的DS18B20数字温度传感器程序,亲
- Proteus_H型电机驱动
- 两个单片机之间实现串口通信,包括
- 数字逻辑课程设计四路抢答器Proteus设
- 基于8086的交通灯.zip
- C51智能时钟以及Proteus电路图
- 串口帮助类实现超时机制.zip
- proteus8253实验
- 基于单片机和ds18b20温度传感器的温度
- stc15w408as串口通讯
- emeu8086+proteus音乐发声器
- 基于单片机的洗衣机控制系统设计
- 室内有害气体监测系统的设计proteus仿
- Proteus仿真8086数码管显示
- 51单片机读取DS18b20数据加1602显示+pr
- 矩阵键盘程序基于proteus的设计与仿真
- XFS5152语音合成配套程序 C51 串口通信
- ds18b20温度传感器工作原理及其应用电
- 51单片机Protues,仿真DS18b20温度传感器
- 数电设计 数字电子时钟---proteus
- 单片机电子密码锁,1602显示,密码可
- 单片机驱动直流电机 proteus仿真+程序
- STM8S003读取DS18B20温度传感器
- QT开发的串口通讯软件(基于qextseri
- 利用msp430g2553进行串口通信
评论
共有 条评论