Proteus仿真 | 您所在的位置:网站首页 › proteus中lcd1602在哪 › Proteus仿真 |
一、硬件链接 在元件库中搜索DS18B20,按下图的连接方式链接。 二、驱动代码 #define uchar unsigned char #define uint unsigned int sbit DS1820_dat=P3^2; void DS18B20_delay(uint T) //???? { while(T--); } void Initial() { DS1820_dat=1; DS18B20_delay(8); //??16?? DS1820_dat=0; DS18B20_delay(80); DS1820_dat=1; DS18B20_delay(15); } void Input(uchar f) //18B20??????? { uchar j; for (j=0;j>=1; } } uchar Output() //18b20 ???????? { uchar j,b; for (j=0;j>=1; DS1820_dat=1; if (DS1820_dat) { b=b|0x80; } DS18B20_delay(10); } return(b); } int Temper() { int Store; int Store_2,Store_1; Initial(); //对 DS18B20 复位 Input(0xcc); //跳过 ROM Input(0x44); //启动温度转换 Initial(); //对 DS18B20 复位 Input(0xcc); //跳过 ROM Input(0xbe); //读 RAM 命令 Store_1=Output(); //读温度的低字节 Store_2=Output(); //读温度的高字节 Store_2=(Store_2*256)+Store_1; //合起来为温度的整数部分 Store=(int) Store_2*0.625; return Store; }三、软件示例 完整代码功能为51单片机温度控制系统,proteus仿真资料 功能: 1、低于设定最低温度时加热丝加热,高于最高温度时停止加热。可用按键设置高低温度。 2、显示当前时间,时间可设置。 3、DAC液位监测,液位低于10%开启电机上水,高于90%关闭电机上水,百分比可在程序中修改 /*****************主函数********************/ void main() { beep = 0; //开机蜂鸣器叫一声 delay_1ms(200); P0 = P1 = P2 = P3 = 0xff; //初始化IO口 init_time0(); //初始化定时器 init_1602(); //lcd1602初始化 init_1602_dis_csf(); //lcd1602初始化显示 do { temp=Temper(); } while(temp==850); //因为DS18B20上电之后会读出来850,但不是温度值,所以等待读出温度值 delay_1ms(100); while(1) { key(); //按键程序 if(key_can > 0) { beep = 0; delay_1ms(50); beep = 1; key_with(); } if(flag_200ms == 1) { flag_200ms = 0; if(menu_1 == 0) { read_time(); //读时间 init_1602_ds1302(); //显示时钟 vol_value=VOL_VAL*A_D()/256; //获取模拟电压值 percent = 100.0*vol_value/VOL_VAL; display_temp(55); } } delay_1ms(1); } }关注下方公众号,回复公众号“204”获取完整工程文件 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |