devinzhangs 发表于 2013-3-30 11:44:17

求救!cvavr写的18b20程序

本帖最后由 devinzhangs 于 2013-3-30 12:55 编辑

cvavr写的18b20程序,识别不出来18b20,1602在PORTC口,18b20在PORTA4口。用了仿真也是认不出来。怎么办?大侠请指教!谢谢!!
#include <mega16.h>
#include <stdio.h>

// 1 Wire Bus functions
#asm
   .equ __w1_port=0x1B ;PORTA
   .equ __w1_bit=4
#endasm
#include <1wire.h>

// DS1820 Temperature Sensor functions
#include <ds18b20.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.h>

flash char str1[]="1602 for 18b20";
flash char str2[]="testing...";
char lcd_buffer;
unsigned char devices;
unsigned char rom_code;

void main(void)
{

TCCR0=0x01;
TCNT0=0x00;
OCR0=0x00;

GICR|=0x40;
MCUCR=0x03;
MCUCSR=0x00;
GIFR=0x40;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;

w1_init();
lcd_init(16);

#asm("sei")

while (1)
      {
      lcd_init(16);
          lcd_putsf(str1);
          delay_ms(300);
      lcd_gotoxy(0,1);
      lcd_putsf(str2);
      delay_ms(300);

      lcd_clear();
      lcd_gotoxy(0,0);
      devices=w1_search(0xf0,rom_code);
      PORTA|=(1<<2);
      sprintf(lcd_buffer,"%u DS18B20\nDevice detected",devices);
      lcd_puts(lcd_buffer);
      while(1);
      };
}

richyhuang 发表于 2013-3-30 14:02:34

要看你w1_...那些代码才可以啊,识别ds1820,就是是0xf0,search rom命令,注意是ow总线时序,及二叉树算法有没有问题

devinzhangs 发表于 2013-3-30 14:21:27

richyhuang 发表于 2013-3-30 14:02 static/image/common/back.gif
要看你w1_...那些代码才可以啊,识别ds1820,就是是0xf0,search rom命令,注意是ow总线时序,及二叉树算法有没 ...

大大,我虽然学过c语言编程,但是二叉树算法不明白,avr也是最近才开始玩的,以前只用过51。
w1...是一个头文件,可以修改吗?
ow总线时序是什么东西?

richyhuang 发表于 2013-3-30 14:24:33

w1_...是指的你的w1_init,w1_search函数
ow是one wire的缩写(单总线的意思)

devinzhangs 发表于 2013-3-30 14:46:09

richyhuang 发表于 2013-3-30 14:24 static/image/common/back.gif
w1_...是指的你的w1_init,w1_search函数
ow是one wire的缩写(单总线的意思)

unsigned char w1_init(void);
unsigned char w1_read(void);
unsigned char w1_write(unsigned char data);
unsigned char w1_search(unsigned char cmd,void *p);
unsigned char w1_dow_crc8(void *p,unsigned char n);
是这些吗?

devinzhangs 发表于 2013-3-30 14:52:15

richyhuang 发表于 2013-3-30 14:24 static/image/common/back.gif
w1_...是指的你的w1_init,w1_search函数
ow是one wire的缩写(单总线的意思)


这是仿真结果,我的电路板也是这样做的,这个东西弄了我两天了还没弄好。求指教!

yklstudent 发表于 2013-3-30 15:02:42

哎人品问题 没办法

richyhuang 发表于 2013-3-30 16:10:52

devinzhangs 发表于 2013-3-30 14:46 static/image/common/back.gif
unsigned char w1_init(void);
unsigned char w1_read(void);
unsigned char w1_write(unsigned char dat ...

对啊,就是这些函数,如果你觉的search rom有问题,可以先用skip rom,然后在读一下看看,这样比较简单

devinzhangs 发表于 2013-3-30 18:24:44

richyhuang 发表于 2013-3-30 16:10 static/image/common/back.gif
对啊,就是这些函数,如果你觉的search rom有问题,可以先用skip rom,然后在读一下看看,这样比较简单 ...

skip rom是什么来的??cvavr有debug功能吗??我只用过keil自带的。debug用什么软件比较好?

yklstudent 发表于 2013-3-30 18:38:51

说过了是可以的
cvavr2.6版本下没问题

devinzhangs 发表于 2013-3-30 18:42:01

yklstudent 发表于 2013-3-30 18:38 static/image/common/back.gif
说过了是可以的
cvavr2.6版本下没问题

在2.03就不行??我的程序哪里出问题了?求指教!

yklstudent 发表于 2013-3-30 18:45:40

devinzhangs 发表于 2013-3-30 18:42 static/image/common/back.gif
在2.03就不行??我的程序哪里出问题了?求指教!

程序没人有心情回去看
但可以提醒你一点
DQ需要上拉电阻

devinzhangs 发表于 2013-3-30 18:52:59

yklstudent 发表于 2013-3-30 18:45 static/image/common/back.gif
程序没人有心情回去看
但可以提醒你一点
DQ需要上拉电阻

谢谢你!解决了!就是上拉电阻!谢谢!十分感谢!{:lol:}

yklstudent 发表于 2013-3-30 19:45:55

devinzhangs 发表于 2013-3-30 18:52 static/image/common/back.gif
谢谢你!解决了!就是上拉电阻!谢谢!十分感谢!

解决了就好。。。。

devinzhangs 发表于 2013-3-31 00:33:51

yklstudent 发表于 2013-3-30 19:45 static/image/common/back.gif
解决了就好。。。。

现在仿真好了,实际电路还是不行,估计是晶振的问题。如何修改晶振值呢?

yklstudent 发表于 2013-3-31 07:39:23

看手册熔丝位配置。。。。。

devinzhangs 发表于 2013-3-31 10:23:19

yklstudent 发表于 2013-3-31 07:39 static/image/common/back.gif
看手册熔丝位配置。。。。。

谢谢,解决了!还是上网问问人来得比较快捷,印象深刻!
页: [1]
查看完整版本: 求救!cvavr写的18b20程序