传感器proteus虚拟实验通信电子电子设计通信电子电子设计.pdf
《传感器proteus虚拟实验通信电子电子设计通信电子电子设计.pdf》由会员分享,可在线阅读,更多相关《传感器proteus虚拟实验通信电子电子设计通信电子电子设计.pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、传感器原理与应用实验指导书 Proteus-V1.0 版本实验 1:基于 DS18B20 传感器温度测量实验 步骤:(1)在 Proteus 软件画出电路图(2)用 keil C 软件写出 C 程序,并生成.hex 文件,导入到单片机当中,进 行仿真,观察结果。件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位数据端口行显示点阵开
2、启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想包括:2 个头文件 LCD1602.h 和 DS18B20.h;1 个源文件 LCD_18b20.c;代码如下 LCD1602.h:#include/用 AT89C51 时就用这个头文件/#include/用华邦 W78E58B 时必须用这个头文件#include /注意那个 LCD_Wait()函数,它是判 忙标志的,在实际硬件
3、要把注掉的那种打开/Dzr+*sbit LcdRs=P2A0;sbit LcdRw=卩2人1;sbit LcdEn=P2A2;sfr DBPort=0 x80;/P0=0 x80,P1=0 x90,P2=0 xA0,P3=0 xB0.数据端口/内 部等待 函 件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位数据端口行显示点阵开启
4、显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想unsigned char LCD_Wait(void)LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();/while(DBPort&0 x80);/在用 Proteus 仿真时,注意用屏蔽此语句,在调用 GotoXY()时,会进入死循环,/可能在写该控制字时,该模块没有返回写入完备命令,即 DBPor
5、t&0 x80=0 x80/实际硬件时打开此语句 LcdEn=0;return DBPort;void LCD_Write(bit style,unsigned char input)LcdEn=0;LcdRs=style;/向 LCD 写入命令或数据*#define LCD_COMMAND 0/Command#define LCD_DATA 1/Data#define LCD_CLEAR_SCREEN 0 x01/清屏#define LCD_HOMING 0 x02/光标返回原点 件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那
6、个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位数据端口行显示点阵开启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想DBPort=input;_nop_();/注 意 顺序 LcdEn=1;nop();/注意顺序 LcdE
7、n=0;_nop_();LCD_Wait();*void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND,0 x08|DisplayMode);/设置显示模式#define LCD_SHOW#define LCD_HIDE 0 x04/显示开 0 x00/显示关#define LCD_CURSOR 0 x02/显示光标#define LCD_NO_CURSOR 0 x00/无光标#define LCD_FLASH 0 x01/光标闪动#define LCD_NO_FLASH 0 x00/光标不闪动 件导入到单片机当中
8、进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位数据端口行显示点阵开启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想#defin
9、e LCD_AC_UP 0 x02 void LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND,0 x04|InputMode);*void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0 x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);/开启显示,无光标 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);/清屏#define LCD_AC_DOWN 0 x00/default#define LCD_MOVE#def
10、ine LCD_NO_MOVE 0 x01/画面可平移 0 x00/default/初始化 LCD*LCD_Write(LCD_COMMAND,0 x38);/8 位数据端口,2 行显示,5*7 点阵 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位数据端口
11、行显示点阵开启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想 void GotoXY(unsigned char x,unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0 x80|x);if(y=1)LCD_Write(LCD_COMMAND,0 x80|(x-0 x40);void Print(unsigned char*str)whi
12、le(*str!=0)LCD_Write(LCD_DATA,*str);str+;void LCD_Print(unsigned char x,unsigned char y,unsigned char*str)GotoXY(x,y);Print(str);/AC 递增,画面不动 件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位
13、数据端口行显示点阵开启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想DS18b20.h void delay_18B20(unsigned int i)while(i-);void Init_DS18B20(void)unsigned char x=0;DQ=1;/DQ 复位 delay_18B20(8);/稍做延时 DQ=0;/单片机将 DQ 拉低 delay_18B20(8
14、0);/精确延时 大于 480us#include/用 AT89C51 时就用这个头文件/#include/用华邦 W78E58B 时必须用这个头文件 sbit DQ=P3A4;/定义 DQ 引脚为 P3.4/*ds18b20 延迟子函数(晶振 12MHz)*/*DS18B20 对时间要求很严,但只能长不能短*在 11.0592M 下也行,因为时间长些*/*ds18b20 初始化函数*件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据
15、清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位数据端口行显示点阵开启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想delay_18B20(14);x=DQ;/稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败 delay_18B20(20);unsigned char ReadOneChar(void)uns
16、igned char i=0;unsigned char dat=0;for(i=8;i0;i-)DQ=0;/给脉冲信号 dat=1;DQ=1;/给脉冲信号 if(DQ)dat|=0 x80;delay_18B20(4);return(dat);/*ds18b20 读一个字节*/件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位数
17、据端口行显示点阵开启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想 void WriteOneChar(unsigned char dat)unsigned char i=0;for(i=8;i0;i-)DQ=0;DQ=dat&0 x01;delay_18B20(5);DQ=1;dat=1;unsigned char*ReadTemperature(char TH,char T
18、L,unsigned char RS)unsigned char tt2;Init_DS18B20();WriteOneChar(0 xCC);/跳过读序号列号的操作/写入写暂存器命令,修改TH和TL和分辩率配置寄存 *ds18b20 写一个字节*读取 ds18b20 当前温度*/WriteOneChar(0 x4E);件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无
19、光标光标闪动光标不闪动画面可平移初始化位数据端口行显示点阵开启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想/先写TH,再写TL,最后写配置寄存器 WriteOneChar(TH);/写入想设定的温度报警上限 WriteOneChar(TL);/写入想设定的温度报警下限 WriteOneChar(RS);/写配置寄存器,格式为 0 R1 R0 1,1 1 1 1/R1R0-00
20、 分辨率娄 9位,R1R0=11 分辨率为12位 delay_18B20(80);/this message is wery important Init_DS18B20();WriteOneChar(0 xCC);/跳过读序号列号的操作 WriteOneChar(0 x44);/启动温度转换 delay_18B20(80);/this message is wery important Init_DS18B20();WriteOneChar(0 xCC);/跳过读序号列号的操作 WriteOneChar(0 xBE);/读取温度寄存器等(共可读 9 个寄存器)前两个就是温 度 delay_1
21、8B20(80);tt0=ReadOneChar();/读取温度值低位 tt1=ReadOneChar();/读取温度值高位 return(tt);件导入到单片机当中进行仿真观察结果包括个头文件和个源文件代码如下用时就用这个头文件用华邦时必须用这个头文件注意那个函数它是判忙标志的在实际硬件要把注掉的那种打开卩人数据端口内部等待函在用仿真时注意用屏蔽命令或数据清屏光标返回原点注意顺序注意顺序设置显示模式显示开显示关显示光标无光标光标闪动光标不闪动画面可平移初始化位数据端口行显示点阵开启显示无光标清屏递增画面不动用时就用这个头文件用华邦时必须用这个头单片机将拉低精确延时大于稍做延时后如果则初始化成
22、功则初始化失败读一个字节给脉冲信号给脉冲信号写一个字节读取当前温度跳过读序号列号的操作写入写暂存器命令修改和和分辩率配置寄存先写再写最后写配置寄存器写入想LCD_18b20.c#include/用 AT89C51 时就用这个头文件/#include/用华邦 W78E58B 时必须用这个头文件#include#include#include#include#include#include#include LCD1602.h/液晶显示头文件/sbit DQ=P3A4;/定义 DQ 引脚为 P3.4 unsigned char t2,*pt;/用来存放温度值,测温程序就是通过这个数组与 主函数通信的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传感器 proteus 虚拟 实验 通信 电子 电子设计
限制150内