完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一,打开文件(可以随文下载放置在文档中打开)。(如下图1所示)
图1 二,调整原理图大小,适合可视,另存工程文件。(如下图2,3,4所示) 图2 图3 图4 三,点击Source Code标签。(如下图5所示) 图5 四,编辑main.c Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a19_DS18B20_LCD1602 (如下图6所示) 图6 五,Main.c 代码: //----------------------------------------------------------------- // 名称: DS18B20温度传感器测试 //----------------------------------------------------------------- // 说明: 运行本例时,外界温度将显示在1602LCD上. // 调节DS18B20时,所模拟的外界温度值将刷新显示在液晶显示屏上, // 包括正负温度及小数位. // //----------------------------------------------------------------- #include “lcd1602.h” #include “ds18B20.h” extern INT8U DS18B20_ERROR; //----------------------------------------------------------------- // 主程序 //----------------------------------------------------------------- int main() { DDRB= 0x00; PORTB= 0x00; DDRC= 0xFF; DDRD= 0xFF; Initialize_LCD(); LCD_ShowString(0, 0, “DS18B20 Test PRG”, 16); LCD_ShowString(0, 1, " Wait… ", 16); Read_Temperature(); _delay_ms(1000); LCD_ShowString(0, 1, " ", 16); while(1) { Read_Temperature(); if(!DS18B20_ERROR) { Temperature_Convert(); Disp_Temperature(); _delay_ms(100); } } } Myfunc01.h //****************************************************************************************** #ifndef DS18B20_H #define DS18B20_H #include “lcd1602.h” //DS18B20引脚定义 #define DQ PB3 //设置数据方向 #define DQ_DDR_0() DDRB &= ~_BV(DQ) #define DQ_DDR_1() DDRB |= _BV(DQ) //温度管引脚操作定义 #define DQ_1() PORTB |= _BV(DQ) #define DQ_0() PORTB &= ~_BV(DQ) #define RD_DQ_VAL() (PINB & _BV(DQ)) //注意保留这一行的括号 //温度小数位对照表 //如果不使用此表,也可以使用本例后面代码中提供的小数位计算程序. static INT8U df_Table[]= {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9}; //----------------------------------------------------------------- // 初始化DS18B20 //----------------------------------------------------------------- //----------------------------------------------------------------- // 显示温度信息 //----------------------------------------------------------------- //void Disp_Temperature(); INT8U Init_DS18B20(); INT8U ReadOneByte(); void WriteOneByte(INT8U dat); void Read_Temperature(); void Temperature_Convert(); #endif 六,点击构建工程按钮,编译工程。(如下图7所示) 图7 七,点击窗口左下方仿真按钮,可见虚拟温度在虚拟LCD显示屏显示。 (如下图8,9,10所示) 图8 图9 图10 八,选择release,点击构建工程按钮,编译工程生成Hex文件。(如下图11所示) 图11 附件Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a19_DS18B20_LCD1602在已安装Proteus8.9的计算机文件夹中打开即可 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:26 , Processed in 1.512611 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号