Print Page | Close Window

Помогите пожалуйста.

Printed From: 123AVR.COM
Category: Общение и обсуждения
Forum Name: Общение по электронике
Forum Description: Тут мобщайтесь, задавайте вопросы и ждите ответы. Предлагайте темы веток - создадим!
URL: http://123avr.com/forum/forum_posts.asp?TID=115
Printed Date: 25 Oct 2018 at 20:31
Software Version: Web Wiz Forums 11.03 - http://www.webwizforums.com


Topic: Помогите пожалуйста.
Posted By: Gizmor
Subject: Помогите пожалуйста.
Date Posted: 25 Feb 2010 at 21:26
Помогите пожалуйста прикрутить часы к этому проекту если вам не трудно.
Код:



#include <mega8.h>
#include <stdlib.h>
#include <delay.h>
#include <ctype.h>
#include <string.h>
#include <stdio.h>
#asm
    .equ __w1_port=0x18
    .equ __w1_bit=0
#endasm
#asm
    .equ __lcd_port=0x12
#endasm

#include <lcd.h>
#include <ds18b20.h>

char lcd_buffer[40],i,j,devices;


/* maximum number of DS18B20 connected to the 1 Wire bus */
#define MAX_DEVICES 8

/* DS18B20 devices ROM code storage area */
unsigned char rom_code[MAX_DEVICES][9];



void system_init(void)
{

lcd_init(20); //LCD 4 строки по 20
lcd_putsf("CONTROL TEMPERATURE");
delay_ms(1000);
lcd_clear();
//Заставим работать все прерывания
#asm("sei")
}


main()
{

system_init();

/* detect how many DS18B20 devices
   are connected to the 1 Wire bus */
devices=w1_search(0xf0,rom_code);
sprintf(lcd_buffer,"%u DS18B20\nDevice detected",devices);
lcd_puts(lcd_buffer);
delay_ms(2000);

/* Покажем ROM коды на каждое из обнаруженных устройств */
if (devices)
   {
   for (i=0;i<devices;i++)
       {
       sprintf(lcd_buffer,"Device #%u ROM\nCode is:",i+1);
       lcd_clear();
       lcd_puts(lcd_buffer);
       delay_ms(2000);
       lcd_clear();
       for (j=0;j<8;j++)
           {
           sprintf(lcd_buffer,"%02X ",rom_code[j]);
           lcd_puts(lcd_buffer);
           if (j==3) lcd_gotoxy(0,1);
           };
       delay_ms(500);
       };
   }
else
   {
     lcd_gotoxy(0,1);
     lcd_putsf("NO DS18b20 DEVICES!!!");
     while (1); /* Залипнем навсегда если ничего не было подключено */
   }
/* Поставим каждый датчик в режим измерения с 12ти битной точностью */
for (i=0;i<devices;)
    if (!ds18b20_init(&rom_code[i++][0],20,30,DS18B20_12BIT_RES))
       {
       sprintf(lcd_buffer,"Init error for\ndevice #%u",i);
       lcd_clear();
       lcd_puts(lcd_buffer);
       while (1); /* Залипаем при ошибках перевода в нужный режим точности*/
       };

/* measure and display the temperature(s) */       
while (1)
      {
      j=1;
      //lcd_clear(); если мы постоянно по циклу пишем одно на другое то и очищать экран не надо. миганий не будет!!!
      for (i=0;i<devices;i++)
          {
          //В данном варианте первые 4 датчика обзаываются как CPU GPU NB Case. Дополнительные датчики,
          //которые еще были налеплены на порт С обзываются как T1, T2, T3 и так далеее

           if (i>3)
            {
              sprintf(lcd_buffer,"T%u=%+.1f\xdfC   ",j++,ds18b20_temperature(&rom_code[0]));
              lcd_gotoxy(0,i-4);
            }
          else lcd_gotoxy(0,i);
          if (!i)
            sprintf(lcd_buffer,"CPU=%+.1f\xdfC    ",ds18b20_temperature(&rom_code[0]));
          if (i==1)
            sprintf(lcd_buffer,"GPU=%+.1f\xdfC   ",ds18b20_temperature(&rom_code[0]));
          if (i==2)
            sprintf(lcd_buffer,"NB=%+.1f\xdfC   ",ds18b20_temperature(&rom_code[0]));
          if (i==3)
            sprintf(lcd_buffer,"CASE=%+.1f\xdfC   ",ds18b20_temperature(&rom_code[0]));
          lcd_puts(lcd_buffer);
          delay_ms(1000);
          };
      };
}


Заранее Всем спасибо.



Print Page | Close Window

Forum Software by Web Wiz Forums® version 11.03 - http://www.webwizforums.com
Copyright ©2001-2015 Web Wiz Ltd. - http://www.webwiz.co.uk