这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » chenhaixin “51 DIY” 进程贴

共16条 1/2 1 2 跳转至

chenhaixin “51 DIY” 进程贴

菜鸟
2014-05-06 00:44:11     打赏

先说问题,论坛老问题,程序下不进去,有可能是D10的问题,感觉还是电路设计的不好,用USB转232一点问题没有,照片都准备好了,一点一点贴。


1.stc自动下载(3L)

2.自动下载视频

3.DS18B20

4.18B20结合数码管



专家
2014-05-06 00:46:14     打赏
2楼
楼主幸苦了

菜鸟
2014-05-06 00:53:53     打赏
3楼

板载USB转串口下载及其不好用,经常出现串口号丢失的问题。于是利用STC15F104E 8脚芯片制作了一个自动下载配件。

对目标单片机进行冷启动,实现断电、再上电,可以用三极管作为电子开关实现。必须注意到的是,三极管的最大可通过电流不要小于单片机电路的所需电流。如果三极管仅作为单片机供电的开关,由于STC89系列单片机的正常丁作模式功耗为2~7 mA,90系列三极管通常情况下可以满足需求。但在某些情况下,单片机的串口上电后会给单片机供电,使单片机各引脚电平处于不确定的状态,因而必须对目标电路板整体进行冷启动,三极管必须满足目标电路板的总电流需求。由于三极管8550的最大可通过电流为1.5 A,可以满足绝大多数电路的供电需求。所以选择三极管8550连接到目标单片机STC89C52RC的VCC脚,作为对其冷启动的开关。

/********************************************************************************/

视频可能需要上传,可能要审核得等几天,先传一张照片

——回复可见内容——



菜鸟
2014-05-06 00:53:59     打赏
4楼
上一张今天电路板火光四溅浓烟滚滚的照片

菜鸟
2014-05-06 00:54:04     打赏
5楼

DS18B20:
正确的接线方法:左负右正,一旦接反就会立刻发热,有可能烧毁!接反是导致该传感器总是显示85℃的原因。面对着扁平的那一面,左负右正。

    DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢

    型号多种多样,有LTM8877,LTM8874等等。主要应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。


经过单线接口访问 DS1820 的协议 如下~~
   1. 初始化
   2. ROM 操作命令
   3. 存贮器操作命令
   4. 处理/数据

首先,我们对18B20进行操作,我们要对其初始化,

初始化:单线总线上的所有处理均从初始化序列开始 初始化序列包括总线主机发出一复位脉冲 接着
由从属器件送出存在脉冲

 

初始化子程序:
Init_DS18B20(void) 
{
unsigned char x=0;定义一个变量判断是否初始化程序
DQ=1; //DQ先置高 
delay(8); //稍延时
DQ=0; //发送复位脉冲 
delay(80); //延时(>480us)                                                             
DQ=1; //拉高数据线 
delay(5); //等待(15~60us) 
x=DQ; //用X的值来判断初始化有没有成功,18B20存在的话X=0,否则X=1 
delay(20); 
}

ROM操作命令:

写操作:
当主机总线 t o 时刻从高拉至低电平时 就产生写时间隙 见图


从 to 时刻开始 15us 之内应将所需写的位送到总线上 DSl820 在 t 后15-60us间对总线
采样 若低电平 写入的位是 0 见图 2 25 3 若高电平 写入的位是 1 见图 2 25 4
连续写 2 位间的间隙应大于 1us 即必须有1us以上的高电平恢复期。

写数据子程序

WriteOneChar(unsigned char dat)    //unsigned char dat 定义存控制命令;以下对命令操作
{

unsigned char i=0;

for(i=8;i>0;i--) //因为写一个字节 ,所以要循环八次

{

    DQ=1;            //置高电平
   _nop_();       //在开始另一个写周期前必须有1us以上的高电平恢复期。
   DQ=0;            //进入写开始
   _nop_();   

DQ=dat&0x01; //在15~60us之间对数据线进行采样,如果是高电平就写1,低写0。 
   delay(5);        //向1-Wire总线写1bit至少需要60μs 
    dat>>=1;        //因为写数据是从低位到高位,高位逐位的往右移

}


读操作
     见图2 25 5 主机总线 to 时刻从高拉至低电平时 总线只须保持低电平 l 7ts 之后
在 t1 时刻将总线拉高 产生读时间隙 读时间隙在 t1 时刻后 t 2 时刻前有效 t z 距 to 为15
捍 s 也就是说 t z 时刻前主机必须完成读位 并在 t o 后的60尸 s 一 120 fzs 内释放总线 
读位子程序(读得的位到 C 中)  

 

void ReadOneChar() //主机数据线先从高拉至低电平1us以上,再使数据线升为高电平,从而产生读信号
{
unsigned char i=0; //每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期
unsigned char dat=0; //首先初始化dat
for (i=8;i>0;i--) //一个字节有8位 ,所以循环八次
{
DQ=1; 
delay(1); 
DQ=0;      //从高拉至低电平时 总线只须保持低电平 l 7ts 
dat>>=1;   // 读出来的数据要一位一位的移进去

DQ=1;      //将总线拉高 产生读时间隙
_nop_();
if(DQ)       //判断DQ是1还是0
dat|=0x80; //是1的话dat就高位1或,因为读数据是从低位读取 delay(4);

return(dat); //返回读出来的一个字节数据
}




菜鸟
2014-05-06 00:54:19     打赏
6楼
这一层是数码管,这个板子使用的芯片是595,是一款将串行信号变换成并行信号的芯片,非常节省I/O.直接上图。是关于上一层18B20的.

工程师
2014-05-06 09:15:53     打赏
7楼
好像是的

高工
2014-05-06 09:16:49     打赏
8楼
你说得对

高工
2014-05-06 10:37:39     打赏
9楼
楼主中午有时间,把有疑问的电路部分贴一下吧,让大家看看

菜鸟
2014-05-09 12:38:41     打赏
10楼

共16条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]