#include <mega16.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#include <1wire.h>
#include <ds18b20.h>
#include <math.h>
#include <stdlib.h>
#define MAX_DS18b20 8
unsigned char ds18b20_devices;
unsigned char ds18b20_rom_codes[MAX_DS18b20][9];
void main(void)
{
//unsigned char temper;
int temper;
lcd_init(16);
w1_init() ;
ds18b20_init(&ds18b20_rom_codes[0][0],25,35,DS18B20_10BIT_RES);
{
#asm("cli")
ds18b20_devices=w1_search(0xf0,&ds18b20_rom_codes[0][0]);
#asm("sei")
};
lcd_init(16);
// Global enable interrupts
#asm("sei")
lcd_clear();
while (1)
{
// Place your code here
#asm("cli")
temper=ds18b20_temperature (&ds18b20_rom_codes [0] [0]);
PORTA.6=0;
#asm("sei")
lcd_gotoxy(5,0);
sprintf(string_lcd, "%01d\n", ds18b20_temperature (&ds18b20_rom_codes [0] [0]));
lcd_puts(string_lcd);
lcd_gotoxy(3,1);
sprintf(string_lcd2,"%-03d" , temper);
lcd_puts(string_lcd2);
delay_ms (800);
PORTA.6=1;
void In_pr(void)
{
LCDGotoXY(0,3);
uint8_t ii;
for (ii=0; ii<18; ii++)
{
LCDsendChar(0x2a);
_delay_ms(500);
}
LCDsendChar(0x4f);
LCDsendChar(0x4b);
}
int main(void)
{
LCDinit();
LCDclr();
CopyStringtoLCD(menu01,0,0);
CopyStringtoLCD(menu02,0,1);
CopyStringtoLCD(menu03,0,2);
In_pr; // вызываемая функция
_delay_ms(3000);
CopyStringtoLCD(menu04,0,0);
while(1)//loop
{
}
return 0;
}
Винни писал(а):простите, если вопрос дурацкий, но сам за неделю ковыряний ответа так и не нашел (
датчик 18b20 выдает показания температуры в двухзначном виде, хотя вроде должен выдавать температуру *10, то есть три знака. ну, или больше, если температура выше ста...
вот, значимые части когда, на мой взгляд:
- Код: Выделить всё
int temper;
...
temper=ds18b20_temperature (&ds18b20_rom_codes [0] [0]);
спасибо! и не пинайте сильно, я в этом совсем новичок )
з.ы. инет изучал, поиск по форуму юзал...
Да, используется. Если его нет то код надо поментять - убрать его опрос ( в задаче 4 говорится как раз о том что прога висла без ответа этого пина из-за ошибки в схеме ) и либо добавить в прогу паузы по времени гарантирующие завершение операций внутри памяти (это наверно не надежно) либо добавить код для чтения сосотояния "готов" из соотвтетвующего регистра управления внутри памяти.Webspider писал(а):Купил AT45DB161D в SOIC-8, 28выводного не было(( Скажите, пин RDY/BISY(которого у меня нет) вообще как-нибудь используется в исходниках в avr123/Z7 ?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4