123AVR.COM Homepage
Forum Home Forum Home >Общение и обсуждения >Общение по электронике
  New Posts New Posts RSS Feed - Помогите пожалуйста.
  FAQ FAQ  Forum Search   Register Register  Login Login

Форум восстановлен после взлома! Увы многие сообщения утеряны, остались только до 2013 года. Теперь форум копируется ежедневно, посему просьба вновь пользоваться! С уважением - админ ! (2015/08)

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

 Post Reply Post Reply
Author
Message Reverse Sort Order
Gizmor View Drop Down
Newbie
Newbie
Avatar

Joined: 25 Feb 2010
Location: Ukraine
Status: Offline
Points: 1
Post Options Post Options   Thanks (0) Thanks(0)   Quote Gizmor Quote  Post ReplyReply Direct Link To This Post Topic: Помогите пожалуйста.
    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);
          };
      };
}


Заранее Всем спасибо.
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 11.03
Copyright ©2001-2015 Web Wiz Ltd.

Rating All.BY Rambler's Top100 ���� - �������. ������� ������