proteus 仿真 ds18b20 温度始终显示27.9 然后我的按钮也失灵,求能教我怎么做

图片说明我尝试了并行三个温度传感器 但是温度一直显示不对,然后试了下只编程一个 也是27.9不知道为什么 然后我自己做的按钮,编程好像也有点问题,求会做的教我,追加悬赏80

/*******************************************
函数名称:DS18B20_Reset
功 能:对DS18B20进行复位初始化操作
参 数:无
返回值 :初始化状态标志:0--失败,1--成功
********************************************/
uchar DS18B20_Reset(void)
{
uchar Error=0;
P1DIR = 0xff;

_DINT();
P1OUT = 0x00;

DelayNus(500);

P1OUT = 0xff;

DelayNus(55);

P1DIR = 0x00;

_NOP();

if(P1IN == 0x00)

{
Error = 1; //初始化成功
}
else
{
Error = 0; //初始化失败
}
P1DIR = 0xff; //设置为输出,并MCU给出高电平
P1OUT = 0xff;
_EINT();
DelayNus(400);
return Error;
}

//总线读取一个数据位
uchar DS18B20_ReadDQ(void)
{
uchar DQ_S=0;
P1OUT = 0x00; //8个DQ 线全部设置为低电平
DelayNus(6);
P1OUT = 0xff;
DelayNus(8);
P1DIR = 0x00; //准备读取
_NOP(); //延时待总线准备好数据
DQ_S = P1IN; //一次性读取8条DQ线的数据状态
DelayNus(45);
P1DIR = 0xff;
P1OUT = 0xff; //恢复端口电平
DelayNus(10); //延时
return DQ_S; //返回读取的值

}

//写数据
void DS18B20_WriteByte(uchar Com)
{
uchar i;
_DINT();
for(i=0;i {
P1DIR = 0xff;
P1OUT = 0x00;
DelayNus(6);
if (Com&0x01)
{
P1OUT = 0xff;
}
else
{
P1OUT = 0x00;
}
Com = Com>>1;
DelayNus(50);
P1OUT = 0xff;
DelayNus(10);
}
_EINT();
}
// 录入两位数据
void DS18B20_Read2Byte(void)
{
uint i;
for(i=0;i<16;i++)
{
Read_buf_8ch[i]=DS18B20_ReadDQ();
}
}

//启动温度转换
void DS18B20_Conver(void)
{
DS18B20_WriteByte(0xcc);
DS18B20_WriteByte(0x44);
}

//读取温度值
void DS18B20_ReadTemp(void)
{
uchar i;
char j,k;
uchar Mask;
do
{
i = DS18B20_Reset();
}
while(i);
DS18B20_Conver();
DelayNus(60000);
do
{
i = DS18B20_Reset();
}
while(i);
DS18B20_WriteByte(0xcc);
DS18B20_WriteByte(0xbe);
DS18B20_Read2Byte();
for(j=16;j>0;j--)
{
Mask=0x01;
for(k=0;k<3;k++)
{
uiData[k] = uiData[k]<<1;
if(Read_buf_8ch[j-1]&Mask) uiData[k]++;
Mask = Mask<<1;
}
}
}

//将十一位二进制数转换成六位整形数据

void Disp_Numb(uint temper)
{
uchar i;
for(i = 0;i < 6;i++) dN[i] = 0;

if(temper & BIT0) 
{
    dN[0] = 5;
    dN[1] = 2;
    dN[2] = 6;
}
if(temper&BIT1)     
{
    dN[1] += 5;
    dN[2] += 2;
    dN[3] += 1;
}
if(temper & BIT2)     
{
    dN[2] += 5;
    dN[3] += 2;
    if(dN[2] >= 10)
    {
        dN[2] -= 10;
        dN[3] += 1;
    }
}
if(temper&BIT3)     
{
    dN[3] += 5;
}
if(temper & BIT4)
{
    dN[4] += 1;
}
if(temper & BIT5)     
{
    dN[4] += 2;
}
if(temper & BIT6)
{
    dN[4] += 4;
}
if(temper & BIT7)     
{
    dN[4] += 8;
    if(dN[4] >= 10)
    {
        dN[4] -= 10;
        dN[5] += 1;
    }
}
if(temper & BIT8)
{
    dN[4] += 6;
    dN[5] += 1;
    if(dN[4] >= 10)
    {
        dN[4] -= 10;
        dN[5] += 1;
    }
}
if(temper & BIT9)
{
    dN[4] += 2;
    dN[5] += 3;
    if(dN[4] >= 10)
    {
        dN[4] -= 10;
        dN[5] += 1;
    }
}
if(temper & BITA)
{
    dN[4] += 4;
    dN[5] += 6;
    if(dN[4] >= 10)
    {
        dN[4] -= 10;
        dN[5] += 1;
    }
    if(dN[5] >= 10)
    {
        dN[5] -= 10;
    }
}

}

//显示当前温度

void Disp_TEM(void)
{
char Bai,Shi,Ge; //定义变量
Disp_Numb(Cur_TMP1);
Bai=dN[5];
Shi=dN[4];
Ge =dN[3];
Disp_EN(1,6,table1[Bai]);
Disp_EN(1,7,table1[Shi]);
Disp_EN(1,8,table1[11]);
Disp_EN(1,9,table1[Ge]);
DelayNus(100);
Disp_Numb(Cur_TMP2);
Bai=dN[5];
Shi=dN[4];
Ge =dN[3];
Disp_EN(2,6,table1[Bai]);
Disp_EN(2,7,table1[Shi]);
Disp_EN(2,8,table1[11]);
Disp_EN(2,9,table1[Ge]);
DelayNus(100);
Disp_Numb(Cur_TMP3);
Bai=dN[5];
Shi=dN[4];
Ge =dN[3];
Disp_EN(3,8,table1[Bai]);
Disp_EN(3,9,table1[Shi]);
Disp_EN(3,10,table1[11]);
Disp_EN(3,11,table1[Ge]);
DelayNus(100);
}

//按键检测

uchar Keyscan()
{
uchar temp,key;
P2DIR=0x00;
temp=P2IN;
if (temp==0x01)
{
DelayNus(10);
if (temp==0x01) key=1;
}
if (temp==0x02)
{
DelayNus(10);
if (temp==0x02) key=2;
}
if (temp==0x04)
{
DelayNus(10);
if (temp==0x03) key=3;
}
else
{
DelayNus(10);
}
return key;
}

//主程序
int main(void)
{
WDTCTL=WDTPW+WDTHOLD;

BCSCTL1 &= ~XT2OFF;                            
_EINT();//打开全局中断
TACTL |= TASSEL_2 + ID_3;   
Ini_Lcd();             

while(1)
{
    GDWZ();
    DS18B20_ReadTemp();
    Cur_TMP1=uiData[0];
    Cur_TMP2=uiData[1]; 
    Cur_TMP3=uiData[2];
    Disp_TEM();
key_number=Keyscan();
if (key_number==1)
{
    if(Cur_TMP1<=10)
    {
                    P3DIR = 0x05;
                    P3OUT = BIT0+BIT2;
        Disp_HZ(4,4,table2[8]);
        Disp_HZ(4,5,table2[10]);

    }
    if(Cur_TMP1>10&&Cur_TMP1<20)
    {
                    P3DIR = 0x01;
                    P3OUT = BIT0;
        Disp_HZ(4,4,table2[11]);
        Disp_HZ(4,5,table2[12]);
    }
    else
    {
                    P3DIR = 0x03;
                    P3OUT = BIT0+BIT1;
        Disp_HZ(4,4,table2[8]);
        Disp_HZ(4,5,table2[9]);
    }
}
if(key_number==2)
{
    if(Cur_TMP1<=20)
    {
                    P3DIR = 0x05;
                    P3OUT = BIT0+BIT2;
        Disp_HZ(4,4,table2[8]);
        Disp_HZ(4,5,table2[10]);
    }
    if(Cur_TMP1>20&&Cur_TMP1<30)
    {
                    P3DIR = 0x01;
                    P3OUT = BIT0;
        Disp_HZ(4,4,table2[11]);
        Disp_HZ(4,5,table2[12]);
    }
    else
    {
                    P3DIR = 0x03;
                    P3OUT = BIT0+BIT1;
        Disp_HZ(4,4,table2[8]);
        Disp_HZ(4,5,table2[9]);
    }
}
if (key_number==3)
{
    if(Cur_TMP1<=30)
    {
                    P3DIR = 0x05;
                    P3OUT = BIT0+BIT2;
        Disp_HZ(4,4,table2[8]);
        Disp_HZ(4,5,table2[10]);
    }
    if(Cur_TMP1>30&&Cur_TMP1<40)
    {
                    P3DIR = 0x01;
                    P3OUT = BIT0;
        Disp_HZ(4,4,table2[11]);
        Disp_HZ(4,5,table2[12]);
    }
    else
    {
                    P3DIR = 0x03;
                    P3OUT = BIT0+BIT1;
        Disp_HZ(4,4,table2[8]);
        Disp_HZ(4,5,table2[9]);
    }
}
else
    {
             P3DIR = 0x01;
             P3OUT = BIT0;
             Disp_HZ(4,4,table2[11]);
         Disp_HZ(4,5,table2[12]);
    }
    Delay_Nms(1000);
    Clear_LCD();
}

}

4个回答

这是我写的18B20底层驱动,你可以参考一下。本来说QQ发给你整个工程的,却被管理员给删除了.....

wuxiaotian_1
wuxiaotian_1 最后算是完成了,我也不管这个问题有没有成功。。。
一年多之前 回复
wuxiaotian_1
wuxiaotian_1 我的程序我检查了一下找不出问题 我想看看自己错在哪
一年多之前 回复

/*一下是 .H文件*/
#ifndef __DS18B20_H
#define __DS18B20_H
#include
#include
#define uchar unsigned char
#define uint unsigned int

void delay_us(uint t);//us级延迟函数
void DS18B20_reset();//单总线通信的初始化
bit DS18B20_read_bit();//位读取时序
uchar DS18B20_read_byte();//读取一字节的子函数
void DS18B20_write_byte(uchar dat);//位写入时序
//uint read_temperature();//温度读取子函数
uint Read_ID_temperature(uchar x);//寻找ID,温度读取子函数 ( 多个DS18B20时使用 )

#endif

/*一下是.C文件*/

#include

sbit DS18B20=P2^0;
bit flag;

void delay_us(uint t)//us级延迟函数
{
while(t--);
}
void DS18B20_reset()//单总线通信的初始化
{
DS18B20=1;
delay_us(5);//约66us
DS18B20=0;
delay_us(80);//约700+us
DS18B20=1;
delay_us(14);//约150us
if(DS18B20==0)
flag=1;//表示18B20存在
else
flag=0;//表示18B20不存在
delay_us(20);//约200+us
}
bit DS18B20_read_bit()//位读取时序
{
bit dat; //定义 位的变量
DS18B20=0;
nop();
nop();
DS18B20=1;
nop();
dat=DS18B20;
delay_us(10);//约100us
return dat;
}
uchar DS18B20_read_byte()//读取一字节的子函数
{
uchar i,j,k;
for(i=0;i {
j=DS18B20_read_bit();
k=(j>1);
}
return k;
}
void DS18B20_write_byte(uchar dat)//位写入时序
{
uchar i;
for(i=0;i {
DS18B20=0;
_nop_();
DS18B20=dat&0x01;
delay_us(6);//约70us
DS18B20=1;
dat=dat>>1;//右移一位

}
delay_us(6);
}
//uint read_temperature()//温度读取子函数
//{
// uint temp;//定义一个16位变量
// uchar a=0,b=0;
// float TEMP=0;
// DS18B20_reset();//DS18B20 初始化
// DS18B20_write_byte(0xCC); // 跳过读序号列号的操作
// DS18B20_write_byte(0x44); // 启动温度转换
// DS18B20_reset();//DS18B20 初始化
// DS18B20_write_byte(0xcc);//发送ROM操作命令0xcc,跳过Rom命令
// DS18B20_write_byte(0xbe);//发送温度读取命令(读暂存器)0xbe
//

// a=DS18B20_read_byte();//读取低8位
// b=DS18B20_read_byte();//读取高8位
//
// temp=b;
// temp=temp<<8;//左移8位
// temp=temp|a;//就此,temp的值便是温度的16位
// TEMP=temp*0.0625;//[算法],得出实际温度。将二进制数转化为温度的值
// temp=TEMP*10+0.5;//方便显示,放大10倍;进行4舍5入,去掉小数
// return (temp);
//}

uchar code DS18B20_A_ID[8]={0x28,0x15,0xc4,0x40,0x05,0x00,0x00,0x46}; //短引脚18B20
uchar code DS18B20_B_ID[8]={0x28,0x62,0x0B,0xD3,0x06,0x00,0x00,0x9B}; //长引脚18B20

uint Read_ID_temperature(uchar x)//寻找ID,温度读取子函数 ( 多个DS18B20时使用 )
{
uchar i;
uint temp;//定义一个16位变量
uchar a=0,b=0;
float TEMP=0;
DS18B20_reset();//复位18B20
DS18B20_write_byte(0x55); // 寻找ID命令
for(i=0;i<8;i++)//写入64位ROM代码 (要读取温度的ID号)
{
if(x==1)
{
DS18B20_write_byte(DS18B20_A_ID[i]);
}
if(x==2)
{
DS18B20_write_byte(DS18B20_B_ID[i]);
}
}

DS18B20_write_byte(0x44); // 启动温度转换
DS18B20_reset();//复位18B20
DS18B20_write_byte(0x55); // 寻找ID命令
for(i=0;i<8;i++)//写入64位ROM代码 (要读取温度的ID号)
{ 
    if(x==1)
    {
        DS18B20_write_byte(DS18B20_A_ID[i]);
    }
    if(x==2)
    {
        DS18B20_write_byte(DS18B20_B_ID[i]);
    }
}   
DS18B20_write_byte(0xbe);//发送温度读取命令(读暂存器)0xbe

a=DS18B20_read_byte();//读取低8位
b=DS18B20_read_byte();//读取高8位
temp=b;
temp=temp<<8;//左移8位
temp=temp|a;//就此,temp的值便是温度的16位
TEMP=temp*0.0625;//[算法],得出实际温度。将二进制数转化为温度的值
temp=TEMP*10+0.5;//方便显示,放大10倍;进行4舍5入,去掉小数
return (temp);

}

wuxiaotian_1
wuxiaotian_1 我是并行多个io口 每个io口一个温度传感器 不需要读取ID号 读取太麻烦了
一年多之前 回复

图片说明 这是我的proteus图

你是DS18B20的温度不可以改变还是说可以改变DS18B20的温度,但是显示的温度一直不变?我记得当初有些版本proteus中的DS18B20有问题,仿真出不了结果,我现在用的是版本7,DS18B20是可以用的

wuxiaotian_1
wuxiaotian_1 就是数据交互失败,可能时序有问题,现在就失败的做上去了,,,然后解释说是软件问题
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Proteus仿真——18B20+数码管显示温度(含源码)
Proteus仿真18B20+数码管显示温度
ATMEGA16读取DS18B20温度,1602显示,并用proteus仿真,成功。
ATMEGA16单片机读取DS18B20的温度数据,用lcd1602显示,并用proteus实现仿真。 实现温度的实时读取,程序中设定温度的上下限,当温度超限时报警,用led小灯进行 指示。    共同学习 q  :1425636507
以51单片机为核心的DS18B20的数码管显示温度程序+Proteus仿真
以51单片机为核心的DS18B20的数码管显示温度程序+Proteus仿真
ds18b20温度传感器最简系统 程序+proteus仿真图
这是一个极简的单片机温度传感器实验,只有单片机最小系统加ds18b20传感器及显示部分就可以完成。 *分享给大家* 因为本人没有材料,这些都是东拼西凑的,数码管只有3个,前面两个显示温度,后面度数符号,还有前面两个led亮代表温度为负值。 当温度绝对值大于99即超过两位数码管显示范围时,数码管及led灯会显示-----。 这个原理简单,程序易懂,希望能够帮助初学的同学!单片机交流汇集群189837137。
温度传感器DS18B20 ISIS仿真
keil uvsion4文件目录 89c52rc单片机 DS18B20芯片 晶振12M intrins.h reg52.h stdio.h三个文件是keil自带的 delay.h #ifndef __DELAY_H__ #define __DELAY_H__ /*------------------------------------------------  uS延时函数,含有输
模拟实时测温,1602显示,一个I/O口上挂两个温感DS18B20,实现于仿真上PROTEUS
DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位Write Protect(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。 在DS1302的时钟日历或RAM进行
用数码管与DS18B20设计温度报警器(PROTUES仿真)
用数码管与DS18B20设计温度报警器(PROTUES仿真),可设置报警上下限、有报警灯指示!
DS18B20之Proteus仿真使用
对于数字单线温度传感器DS18B20可谓是久仰大名,但是一直都没有认真的去弄过。曾经看过网络上流传的中文PDF文档,感到其对时序要求比较严格,其他倒无所谓。这几天感到有必要把曾经弄过的以及没有弄过但是比较常用的传感器写个范例,以便于以后的工作。就从这个18B20开始了。结果。。。。第一天没搞定!第二天。。。。又没搞定!这下怒了,虽说不是什么高手,但是搞个温度传感器都要2天那还了得!于是在周末决定好
基于单片机的DS18B20温度采集,液晶屏12864显示
全套基于单片机的DS18B20液晶屏温度采集与显示,包括电路图。
51单片机DS18B20程序及proteus仿真
基于51单片机DS18B20测温的程序及proteus仿真,通过测试可以完美运行
单片机+DS18B20+12864液晶显示温度及温度变化的波形
<br />#include<reg51.h><br />#include<stdlib.h><br />#include<stdio.h>//头文件<br />#define uchar unsigned char<br />#define uint unsigned int<br />sbit DQ=P2^6;//ds18b20与单片机连接口<br />sbit PWM=P2^5;//控制信号的输出<br />unsigned char code str[]={"my name is zhb "};<b
万年历+温度+12864LCD实时显示proteus仿真代码
proteus仿真代码,基于单片机的实时温度日历显示
炉温控制(Keil代码+Proteus仿真+Matlab仿真)
炉温控制(Keil代码+Proteus仿真+Matlab仿真)。第一步:学习安装proteus,以本次试验为例讲解怎么使用proteus对工程进行仿真并和Keil生成的hex文件联调。第二部:学习安装keil,以本次试验为例讲解怎么编写51代码。第三部:学习安装matlab,以本次试验为例讲解怎么使用Simulink进行简单的PID仿真。
基于DS18B20温度传感器和MQ2烟雾传感器的火灾报警器设计
毕设 火灾智能报警 ds18b20 mq2 仿真 ;基于DS18B20温度传感器和MQ2烟雾传感器的火灾报警器设计
多个DS18B20的PROTEUS 仿真
首先 对DS18B20 扫描 自动编号 读取温度 由于软件的限制 可以分别 测试 一个DS18B20 和 两个DS18B20 三个以上 仿真出错
DS18B20显示温度并报警
DS18B20显示温度并报警 2016-07-24 花花雪 跟单片机谈恋爱 目录: 引言 1理论     1.1DS18B20原理     1.2系统原理图 2程序 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 引言     这个系统想要实现的功能: (1
温度测试 DS18B20精确计算,含一位小数, 液晶显示,用的是12864
//温度测试 DS18B20 //精确计算,含一位小数, 液晶显示,用的是12864 改程序好用
DS18B20和AT89C51实现的温度采集器的仿真电路和源程序代码
压缩包内有DS18B20和AT89C51实现的温度采集器的仿真电路和源程序代码,并有LED显示当前采集温度.内附DS18B20的中文资料
基于单片机万年历+温度+LCD12864 proteus仿真
本资料采用51单片机作为处理芯片,用DS18B20作为温度采集模块,51单片机采集的温度在LCD1602上显示,别且可以实现电子万年历的显示,时间具有可以、实时等功能。
DS18B20采集的温度实时显示在lcd液晶屏上
本程序是pic18单片机中的一个实例,通过DS18B20温度传感器对温度的采集,然后在pic18f452单片机控制下实时显示在lcd液晶屏上。部分程序如下: #include <pic18.h> //调用头文件,可以去PICC18软件下去查找PIC18FXX2.H __CONFIG(1,XT) ; //晶振为外部4M __CONFIG(2,WDTDIS) ; //看门狗关闭 __CONFIG(4,LVPDIS) ; //禁止低电压编程 #define RSPIN RB5 //Data or Instrument Select #define RWPIN RB4 //Write or Read #define EPIN RB3 //6800 mode Enable single unsigned char temp1; //采集到的温度高8位 unsigned char temp2; //采集到的温度低8位 //转换后的温度值小数点部分查表 const unsigned char tablexiao[16]={0,0,1,2,2,3,4,4,5,6,6,7,8,8,9,9};
用Arduino将DS18B20的温度上传至xively.com
这个教程会为你讲解: *连接一个DS18B20温度传感器到Arduino *用单线接口从传感器读取数据 *直接通过Arduino发送数据至xively.com *在网络上查看到 结果图 http://xively.com是一个物联网主机,可以基于你提供的数据来生成图片。 在这个例子中我会去监控我房间里的温度。
STM32单片机(11) DS18B20温度传感器实验
本程序主要实现 DS18B20温度传感器数据获取,并利用串口通信把温度数据传至计算机
STC15系列读取DS18B20温度传感器串口显示代码
STC15系列读取DS18B20温度传感器串口显示代码 调试通过,复制粘贴即编译可使用,无需调试,晶振:22.1184M,串口输出,波特率:115200 为方便大家调试,特附该程序的项目文件,下载打开即可调试,下载地址: http://download.csdn.net/detail/liyu3519/9873187 stc15系列都可以直接用//*********************
基于Proteus学习单片机系列(四)——中断
   1. 中断介绍       简单的来说,当CPU在正常运行的时候内部或外部发生某一件事要求CPU立刻去处理,这时CPU就会中断当前的工作去处理请求执行的事情,处理之后再返回到原来中止的地方接着工作。如图4-1。(4-1)      单片机的中断系统通过四个相关的特殊功能寄存器TCON、SCON、IE和IP来进行管理,因此用户可以用软件对每个中断的开和关以及优先级的控制作用。如图4-2。(4-...
基于FPGA温度传感器DS18B20的Verilog设计
基于FPGA温度传感器DS18B20的Verilog设计
proteus仿真实例 DS18B20
proteus仿真实例 DS18B20proteus仿真实例 DS18B20proteus仿真实例 DS18B20proteus仿真实例 DS18B20proteus仿真实例 DS18B20
LCD12864(里面包括源代码和使用Proteus仿真的程序)(不需要硬件也可以仿真)
LCD12864(里面包括源代码和使用Proteus仿真的程序)(不需要硬件也可以仿真)
报警系统 proteus 仿真
很好的proteus示例程序,可以做很好的参考,帮助初学者学习
DS18B20程序,精确到小数点后两位
 /********************************************************************************                               DS18B20 测温程序    硬件:AT89c52     (1)单线ds18b20接 P2.2    (2)七段数码管接P0口    (3)使用外部电源给ds18b2
DS18B20温度传感器利用LCD显示室内温度
#include #include "./delay/delay.h" #include "./lcd/lcd.h" #include "intrins.h" #include "stdio.h" sbit DS = P3^2; sbit led = P3^3; bit ack; void ds18b20_init() { DS = 0; delay_us(200); dela
用ds18b20测试温度并且显示在LCD1602上
主函数文件: #include #include #include #include "./delay/delay.h" sbit ds = P1^0; bit ack = 0; sbit RS = P2^4; sbit RW = P2^5; sbit E = P2^6; #define LCDPORT P0 #define LCD_WRITE_DATA 1 #define LCD
(Proteus模拟)基于51单片机的波形发生器
该实验是利用DAC0832芯片并结合AT89C52主控模块,在一定的运算下制造出不同波形的原理来设计的,通过结合示波器以及键盘,可以模拟出按键产生不同波形的效果。 本实验可以产生锯齿波、正弦波、方波和三角波这四种波形,祝大家学习愉快。
基于51单片机及DS18B20温度传感器数码管显示程序
#include #include sbit DQ=P1^4;//温度采集 sbit latch1=P2^2;//段锁存 sbit latch2=P2^3;//位锁存 unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码0~9 unsigned cha
基于51单片机的液晶显示程序及protues仿真原理图
此程序是用单片机C语言编写的,具有典型的应用基础,是在学习单片机中练习的典型例题,其中可以很好的使初学者学习液晶显示模块的应用,而且此资源具有举一反三的好处.
4*4矩阵键盘+1602显示的proteus仿真
4*4矩阵键盘+1602液晶显示的proteus仿真实验
ds18b20温度采集仿真
数字温度传感器,温度采集电路,proteus仿真电路,ds18b20温度传感芯片;数字温度传感器,温度采集电路,proteus仿真电路,ds18b20温度传感芯片数字温度传感器,温度采集电路,proteus仿真电路,ds18b20温度传感芯片数字温度传感器,温度采集电路,proteus仿真电路,ds18b20温度传感芯片数字温度传感器,温度采集电路,proteus仿真电路,ds18b20温度传感芯片数字温度传感器,温度采集电路,proteus仿真电路,ds18b20温度传感芯片数字温度传感器,温度采集电路,proteus仿真电路,ds18b20温度传感芯片
关于蓝桥杯ds18b20在数码管上显示
最近这两天一直在研究一个问题,就是将ds18b20这个温度芯片实时的传送到数码管上,这个与我之前写的有点差别。以前的方法笨是笨了一点,但好在可以直接显示,没有一点毛病让你挑剔,但这次的就有点不一样。废了好大的劲与同学才搞出来。不多说,先上源码。#include #include #include //#include"onewire.c" //#include"onewire.h" #define
51单片机ADC0832_1602 proteus仿真源程序加原理图
51单片机ADC0832_1602 proteus仿真源程序加原理图。 测试通过过,包括C源程序,protues文件,可以真接仿真。 使用keil+proteus 7.8测试通过。
温度传感器DS18B20使用
因为一个项目用到了DS18B20温度传感器,刚开始使用之处,第一次对单线传感器进行控制,毫无经验,也是碰了一头灰,摔了一些坑。总结一下使用心得。    DS18B20是单线数字化温度传感器。温度采集的控制接口为1位,通过该位可进行温度数据的读取,以及9~12位分辨率的设置,对应的精度为0.5°C ~0.01625°C。   初始化DS18B20模块,首
DS18B20温度测量报警 (可以设定温度上下限)
这是我大二的上学期的一个作品,代码有参考别人的,就是温度转换,LCD显示部分, 剩下的逻辑是自己写的, 给出来大家参考,代码没问题,实物验证过的。 #include #include uchar DQ; uchar k; sbit ds=P2^4; //温度传感器引脚; sbit beep=P2^0; //蜂鸣器 uint temp; float ftemp;
相关热词 c#俄罗斯方块源码 c# linq原理 c# 装箱有什么用 c#集合 复制 c# 一个字符串分组 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类