Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #define F_CPU 8000000UL
- #include <util/delay.h>
- #include <avr/interrupt.h>
- uint32_t t,pr=0,cnt=0,time1cnt=0;
- uint32_t time,time1,time2,time3;
- void lcdinit()
- {
- cmd(0×38);
- cmd(0x0C);
- cmd(0×01);
- _delay_ms(1000);
- }
- void cmd(unsigned char c)
- {
- PORTC=c;//??
- PORTA=0×20; //rw high?
- _delay_ms(1);
- PORTA=0×00;
- _delay_ms(1);
- }
- void data(unsigned char c)
- {
- PORTC=c;//??
- PORTA=0XA0; //rs high coz we hav accept data nt comand
- _delay_ms(1);
- PORTA=0×40;
- _delay_ms(1);
- cmd(0×06);
- }
- void string(char p)
- {
- while(p) data(*p++);
- }
- uint16_t get_adc(unsigned char ch)
- {
- ADMUX=0×40|ch;
- ADCSRA=0xC5;
- while(!ADIF);
- _delay_ms(50);
- return(ADC);
- }
- unsigned char keypad()
- {
- while((PINB & 0b00001111)!=0b00001111);
- PORTB=0X7f; _delay_ms(10);
- if (PINB==0B01110111) {/*data('1');*/ return '1';}
- else if (PINB==0B01111011) {data('2'); return '2';}
- else if (PINB==0B01111101) {data('3'); return '3';}
- else if (PINB==0B01111110) {data('A'); return 'A';}
- PORTB=0XBf; _delay_ms(10);
- if (PINB==0B10110111) {data('4'); return '4';}
- else if (PINB==0B10111011) {data('5'); return '5';}
- else if (PINB==0B10111101) {data('6'); return '6';}
- else if (PINB==0B10111110) {data('B'); return 'B';}
- PORTB=0XDf; _delay_ms(10);
- if (PINB==0B11010111) {data('7'); return '7';}
- else if (PINB==0B11011011) {data('8'); return '8';}
- else if (PINB==0B11011101) {data('9'); return '9';}
- else if (PINB==0B11011110) { return 'C';}
- PORTB=0XEf; _delay_ms(10);
- if (PINB==0B11100111) { return '*'; }
- else if (PINB==0B11101011) {data('0'); return '0';}
- else if (PINB==0B11101101) { return '#';}
- else if (PINB==0B11101110) { return 'D';}
- return 0;
- }
- ISR(TIMER1_CAPT_vect)
- {
- t=ICR1;
- if(cnt==9)
- {
- cli();
- cmd(0X01);_delay_ms(10);
- uint32_t temp1;
- unsigned char temp;
- /*pr=t;*/
- pr=(uint32_t)(pr/9);
- pr=(uint32_t)(60000000/pr);
- pr=(uint32_t)(pr/128); //rpm
- temp1=pr%1000;
- temp=(unsigned char)temp1;
- data((temp/100)+48);
- temp=(unsigned char)temp%100;
- data((temp/10)+48);
- temp=(unsigned char)temp%10;
- data(temp+48);
- string(" rpm");
- cmd(0xc0);
- pr=(uint32_t)(pr*60);
- pr=(uint32_t)(pr*22);
- pr=(uint32_t)(pr/1000); //kms per hour
- temp1=pr%1000;
- temp=(unsigned char)temp1;
- data((temp/100)+48);
- temp=(unsigned char)temp%100;
- data((temp/10)+48);
- temp=(unsigned char)temp%10;
- data(temp+48);
- string(" kmph");
- cnt=0;
- pr=0;
- if(temp1<50)
- {
- time=0;
- }
- else if(temp1<170)
- {
- time1=time+pr;
- if (time1>4294967296)
- {
- time1cnt++;
- time1=0;
- }
- }
- else if (temp1>=170)
- {
- cmd(0x88);
- temp=(unsigned char)time1cnt%1000;
- data((temp/100)+48);
- temp=(unsigned char)temp%100;
- data((temp/10)+48);
- temp=(unsigned char)temp%10;
- data(temp+48);
- cmd(0xc9);
- string("a:");
- time1=time1/1000000;
- time1=time1*128;
- time1=time1%1000;
- temp=(unsigned char)time1;
- data((temp/100)+48);
- temp=(unsigned char)temp%100;
- data((temp/10)+48);
- temp=(unsigned char)temp%10;
- data(temp+48);
- data('s');
- }
- sei();
- }
- else
- {
- pr=pr+t;
- cnt++;
- }
- TCNT1=0;
- }
- void delay_ms(uint32_t delay)
- {
- while(delay)
- {
- _delay_ms(1);
- delay–;
- }
- }
- int main(void)
- {
- DDRB=0XF0;
- PORTB=0X0F;
- DDRA=0XF0;
- DDRC=0XFF;
- DDRD=0B10111111;
- PORTD|=0B01000000;
- lcdinit();
- // string(” VEHICLE TESTER”);
- TCNT1H=0×00;
- TCNT1L=0×00;
- TCCR1B=0X45;
- TIMSK|=(1<<5);
- unsigned char key,x,y,z;
- uint16_t adcval,temp;
- int acc,decc;
- uint32_t del;
- sei();
- PORTD&=~0b00010000;
- while(1)
- {
- key=keypad();
- if(key=='1')
- {
- sei();
- key=0;
- del=100;
- while(del)
- {
- PORTD&=0b11101111;
- PORTD|=0b00100000;
- delay_ms(del);
- PORTD&=0b11011111;
- delay_ms(del);
- del--;
- }
- cli();
- //cmd(0x01);_delay_ms(100);
- //data(acc)
- }
- if (key=='2')
- {
- cmd(0x01);
- adcval=get_adc(0);
- adcval=1023;
- temp=((adcval/1023)*100);
- temp=temp%1000;
- x=(temp/100)+48;
- data(x);
- temp=temp%100;
- y=(temp/10)+48;
- data(y);
- temp=temp%10;
- z=temp+48;
- data(z);
- string(" %");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement