24 февраля 2022 года в 5 утра, без объявления войны, россия напала на Украину.

Они пришли "освобождать народ от нацистов и националистов".
С этого момента наша жизнь изменилась на "до" и "после".
Нас освобождают от наших домов, от наших любимых, от наших родителей и от наших детей....
Тут я не буду никого агитировать или переубеждать, разумный человек найдёт всю информацию
в интернете, а для зомби никакие доводы и факты не послужат аргументом.

Я не умею много писать, да и без мата тут сложно что-то написать.
Поэтому выражу все мои чувства одним фото.

«Спасибо дедушка путин за счастливое детство и мое освобождение». ©

Дополню словами уважаемого человека, широко известного в узких кругах:
тут путин не виноват, не он нажал на кнопку сброса,
- виноват пилот, который нажал на кнопку сброса, мог промахнуться. виноваты жена/мать/брат/друг пилота, которые не позвонили ему, и не сказали "нет войне",
- виноват тот, кто отдал приказ, и виноваты его жена/мать/брат/друг,
- виноват тот, кто цеплял бомбу, потому что он мог её обезвредить, "ну бывает, не сработала",
- виноват кладовщик, виноват водитель, который перевозил эту бомбу. виноваты жена...и т.д., потому что не позвонили и не сказали "нет войне, не вези бомбы",
- виноваты все журналисты оркостана, потому что они врут,
- виноваты недограждане, потому что не сказали журналистам "не врите",
- виноваты все... все 160 миллионов,
- а те 2, 3, 5 тысяч, которые вышли, и которых запаковали, это даже не десятая процента, это погрешность... случайно оказавшиеся в мордоре люди. ©

PS: За несколько часов до вторжения был атакован и взломан крупный интернет хостинг в Киеве, где и размещался мой сайт. Только 16 марта отважным админам удалось частично восстановить работу хостинга. Далеко не все сайты выжили, т.к. были повреждены даже бэкапы.
Нет, нет, я не жалуюсь, нет. В цифровом мире нет ничего ценного, материального...


Due to periodic DDoS attacks, the forum may not be available.

Цифровой одометр

Здесь только проекты на ATtiny
Post Reply
Anzor
Пробегал мимо
Posts: 6
Joined: 08 Sep 2011 10:19
Location: Симферополь, Крым

Цифровой одометр

Post by Anzor »

Привет. Подскажите, возможна ли переделка вашего спидометра в одометр, спасибо.
User avatar
hardlock
Администратор
Posts: 4013
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

Re: Цифровой одометр

Post by hardlock »

Anzor, а что такое одометр? это просто счётчик импульсов. В простейшем случае 1 имп/метр, тогда это вообще элементарно. Бывают 4, 6, 7, 8 так тоже просто - просто делим на нужное число и всё.
Anzor
Пробегал мимо
Posts: 6
Joined: 08 Sep 2011 10:19
Location: Симферополь, Крым

Re: Цифровой одометр

Post by Anzor »

Недавно нашел проект одометра с суточным и общим пробегом но при попытке откомпелировать выдает ошибку в строке инициализации таймера. Подскажите пожалуйста в чем тут проблема. Может версия Codevision нужна другая. У меня была похожая проблема когда я експериментировал с LCD дисплеем и моя версия не хотела распознавать директиву #pragma. Может и сдесь подобная проблема?

Добавлено спустя 1 минуту 3 секунды:
да забыл исходник прикрепить (ошибка в строках инициализации таймера 0

Code: Select all

#include <mega8.h>
//#include <delay.h>

unsigned char number[] = 
{
0b11000000,
0b11111001,
0b10100100,
0b10110000,
0b10011001,
0b10010010,
0b10000010,
0b11111000,
0b10000000,
0b10010000
};
//числа для вывода на индикатор
eeprom volatile unsigned char data1 = 0 ;
eeprom volatile unsigned char data2 = 0;
eeprom volatile unsigned char data3 = 0;
eeprom volatile unsigned char data4 = 0;
eeprom volatile unsigned char dataa1= 0;
eeprom volatile unsigned char dataa2= 0;
eeprom volatile unsigned char dataa3= 0;
eeprom volatile unsigned char dataa4= 0;
eeprom volatile unsigned char dataa5= 0;
eeprom volatile unsigned char dataa6= 0;
eeprom volatile unsigned char dataa7= 0;
volatile unsigned char dat1 = 0 ;
volatile unsigned char dat2 = 0;
volatile unsigned char dat3 = 0;
volatile unsigned char dat4 = 0;
volatile unsigned char dataaa1= 0;
volatile unsigned char dataaa2= 0;
volatile unsigned char dataaa3= 0;
volatile unsigned char dataaa4= 0;
volatile unsigned char dataaa5= 0;
volatile unsigned char dataaa6= 0;
volatile unsigned char dataaa7= 0;
//число импульсов с датчика
volatile unsigned char imp= 0 ;
volatile unsigned char i= 0 ;
volatile unsigned char im= 0 ;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
im++;
}
void main(void){
//порт, к которому подкл. сегменты
  PORTB = 0xff;
  DDRB = 0xff;

//порт, к которому подкл. катод
  PORTC = 0;
  DDRC |= (1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0); 

PORTD = 0;
DDRD |= (1<<5)|(1<<4)|(1<<1)|(1<<0); 

//  //инициализация таймера Т0 
  TIMSK = (1<<TOIE0);
  TCCR0 = (0<<CS02)|(1<<CS01)|(0<<CS00);
  TCNT0 =  0xb2;
GICR|=0xC0;
//MCUCR=0x0A;
//GIFR=0xC0;
if(i<=1){
dat1=data1;
dat2=data2;
dat3=data3;
dat4=data4;
dataaa6=dataa6;
dataaa1=dataa1;
dataaa2=dataa2;
dataaa3=dataa3;
dataaa4=dataa4;
dataaa5=dataa5;
dataaa6=dataa6;
dataaa7=dataa7;
}else{i++;}
//разрешаем прерывания
#asm("sei");
while(1){
if (im==2){
im=0;
if (imp==0){
imp=0;
dat4++; 
    if (dat4 == 10){ dat4 = 0;  
     dat3++;                        
    if (dat3 == 10){ dat3 = 0;
     dat1++; 
    if (dat1 == 10) {dat1 = 0;  
     dat2++;
    if (dat2 == 10){ dat2 = 0; 
    }}}}
dataaa7++; 
    if (dataaa7 == 10){ dataaa7 = 0; 
     dataaa6++; 
    if (dataaa6 == 10){ dataaa6 = 0;  
     dataaa5++;
    if (dataaa5 == 10){ dataaa5 = 0;
     dataaa4++; 
    if (dataaa4 == 10) {dataaa4 = 0;  
     dataaa3++;
    if (dataaa3 == 10){ dataaa3 = 0; 
     dataaa2++; 
    if (dataaa2 == 10){ dataaa2 = 0;  
     dataaa1++;
    if (dataaa1 == 10){ dataaa1 = 0;  
  }}}}}}}  
}else imp++; }
}
}
//interrupt [EXT_INT1] void ext_int1_isr(void)
//{
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
static unsigned char count1 = 0;
TCNT1 = 0xb2;
PORTD &= ~((1<<5)|(1<<4)|(1<<1)|(1<<0)); 
PORTC &= ~((1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0));  
//зажигаем следующий разряд

    if (count1 == 9) {
      PORTB = number[dat4];
      PORTD |= (1<<5);
   }  
   if (count1 == 8) {
      PORTB = number[dat3];
      PORTB.7=0;
      PORTD |= (1<<4);
   } 
   if (count1 == 7) {
      PORTB = number[dat2];
      PORTD |= (1<<1);
   }  
   if (count1 == 6) {
      PORTB = number[dat1];
      PORTD |= (1<<0); 
   }
   if (count1 == 5) {
      PORTB = number[dataaa6];
      PORTC |= (1<<5);
   }
   if (count1 == 4) {
      PORTB = number[dataaa5];
      PORTC |= (1<<4);
   }  
    if (count1 == 3) {
      PORTB = number[dataaa4];
      PORTC |= (1<<3);
   } 
   if (count1 == 2) {
      PORTB = number[dataaa3];
      PORTC |= (1<<2);
   }     
   if (count1 == 1) {
      PORTB = number[dataaa2];
      PORTC |= (1<<1);
   } 
   if (count1 == 0) {
      PORTB = number[dataaa1];
      PORTC |= (1<<0);
   } 
  count1++;   
    if (count1 == 10) count1 = 0;      
if (PIND.6==0)
{
dat1 = 0;
dat2 = 0;
dat3 = 0;
dat4 = 0;
}   
if (PIND.3==0)
{
dataaa1 = 0;
dataaa2 = 0;
dataaa3 = 0;
dataaa4 = 0;
dataaa5 = 0;
dataaa6 = 0;
dataaa7 = 0;
}   
if (PIND.7==0)
{
data1=dat1;
data2=dat2;
data3=dat3;
data4=dat4;
dataa1=dataaa1;
dataa2=dataaa2;
dataa3=dataaa3;
dataa4=dataaa4;
dataa5=dataaa5;
dataa6=dataaa6;
dataa7=dataaa7;
}
}
rezhik
Пробегал мимо
Posts: 7
Joined: 19 Oct 2014 00:50

Re: Цифровой одометр

Post by rezhik »

а какой LCD дисплей использовался?
IYra
Живу тут
Posts: 712
Joined: 01 Feb 2012 18:36
Location: Санкт-Петербург

Re: Цифровой одометр

Post by IYra »

Anzor wrote:да забыл исходник прикрепить
прикрепить надо запакованный проект

Собрал из того что было. Ошибок не выдавал. Проект в CodeVision 2.05
Attachments
odom.rar
(4.22 KiB) Downloaded 294 times
Post Reply