PIC18F452 및 acclerometer

A

amitrana3348

Guest
모든 hii
가속도계 오전 mma7260을 만들어 사용을 현재 프로젝트의 작업에
난 모니터 가속도계를 사용하여 원하는 주파수를 찾을 수 진동 아웃
진동

하드웨어가 여기에 사용되는 가속도계 mma7260입니다 PIC18F452
컴파일러는 PIC가있다 mikroC 프로0 mma7260의 오프셋 아웃 전압이다 일반적으로 1.65 볼트
난 감지하고 싶어요 1.75 볼트, 어떻게 위에 여러 번갑니다
주파수를주지 않습니다 1.55 또는 아래의 나에게 볼트에서 1 초
진동의 아래 코드와 함께 제는 의견 자체가 아니에요,
어디로 잘못되어 가고, 나는 광고 전환 속도를 최대가 선택한
와 나는 결과를 계산하지만 사용하여 만들어 낸 PIC18 타이머를 위해
주파수를 보여주는 대신에 액정 연속 1에 RD5_bit LCD_RS sbit;
에 RD4_bit LCD_EN sbit;
에 RB4_bit LCD_D4 sbit;
에 RB3_bit LCD_D5 sbit;
sbit LCD_D6 RB2_bit에;
에 RB1_bit LCD_D7 sbit;

에 TRISD5_bit LCD_RS_Direction sbit;
에 TRISD4_bit LCD_EN_Direction sbit;
에 TRISB4_bit LCD_D4_Direction sbit;
에 TRISB3_bit LCD_D5_Direction sbit;
에 TRISB2_bit LCD_D6_Direction sbit;
에 TRISB1_bit LCD_D7_Direction sbit;
/ / 끝 LCD 모듈 연결
서명되지 않은 긴 getadcvalue (서명 번째 문자);) 무효 메인 (무효
(
int 값;
서명되지 않은 번째 문자 DISP 정보 [15]은, 디지털 방식 중] [15;
서명되지 않은 번째 문자 카운트, 주파수 [5];
int는 ACC;
TRISA = 0xFF가; / / 입력을 포트
ADCON1 = 0x81;
Lcd_Init은 (); / / 액정 초기화
Lcd_Cmd (_LCD_CLEAR); / / 지우기 디스플레이
Lcd_Cmd (_LCD_CURSOR_OFF); / / 커서 해제
lcd_out (1,1, "안녕하세요");
Delay_ms (2000);
Lcd_Cmd (_LCD_CLEAR);
) 동안 (1
(
다시 :
T0CON = 0x06; / / timer0, 16 비트 모드, prescalar fosc / 4 / 128
TMR0H = 0x67; / / 몇 가지 초기 카운트 카운트 2 1 개까지에게
TMR0L = 0x69; / / 몇 가지 초기 카운트
T0CON.TMR0ON = 1;
루프를하는 동안 (INTCON.TMR0IF은 == 0) 반복 / / 때까지 타이머 오버플로 (1 초)
(
2 값 = getadcvalue (2); / 입 / ADC를 얻을에서 ADC의 값을 읽고, Vref는과 3.3V이기 때문에과 3.3V 최대 mma7260 오입니다 / P는
값 = 값은 / 31; / / 1.6Volts다고, 변환 값을 얻을에서 전압을, 그것은 16이 표시됩니다
Delay_ms (10);
IntToStr은 (가치, DISP); / /이 DISP 여기 참조를 위해 우리가 그냥 볼트의 전압을 나타냅니다에 1.2로 12
Lcd_Out (2,1, DISP); / /
/ / Delay_ms (10);
값 | 값 <14) / / 체크 wheather 경우 (| 17 값> 1.4V 즉보다 14입니다> 이하 17 수단을 1.7Volt
(
카운트 ; / /면 어느 정도 증가 한 번 카운터
ByteToStr (카운트, 주파수);
Lcd_out (1,1, 주파수);
가치 동안 (값> 17 | | <14) / / 값 기다리는까지입니다 이상 17 또는 14 이하
()
)
다른 사람
Lcd_Out (1,1, "Cle"); / /면 아무것도 그러한 의미에서 일어나는 "을 누른 다음 디스플레이 Cle"을 선택 취소
)
T0CON.TMR0ON = 0; / / 후 타이머를 해제 1 초
INTCON.TMR0IF = 0; / / 타이머 인터럽트 비활성화
고토 다시; / / 다시 고토 초기 단계

)
)
서명되지 않은 긴 getadcvalue (서명 메기 채널)
(
서명되지 않은 int b;
서명되지 않은 int C;

)면 (채널 == 0
(ADCON0 = 0x81;)
)면 (채널 == 1
(ADCON0 = 0x89;)
)면 (채널 == 2
(ADCON0 = 0x91;)
Delay_ms (5);
ADCON0.GO = 1;
(동안 ADCON0.DONE == 1)
()
b = ADRESH <<8;
C = b | ADRESL;
반환 C;
)

 
여보세요
해결하는 당신에게 문제를 물어보고 싶은, 그냥 몇 가지 질문을 mikroC 새로운 때문에 난 아니 난 미안 해요
1 - pic18f452에 대한 프로그램을 할에 ADCON0를 초기화 제가 가지고
2 - 그렇다면 왜 사용 했지 당신이 ADCON0.GO 다음 ADCON0.DONE로 다른 비트는 하나의 Hitech 동안에 GODONE 비트
3 - 어떻게 코드의 맨 위에 제가 가지고 할) RB7 (정의 뭔가를 예를 들어 전에 PORTB의 비트에 대한 특정 출력을 얻을

감사합니다

 
1.에 ADC의 칩 ADCON0가 사용할 수 있도록해야합니다 제가 때문인데 초기화

2.ADCON.GO과 ADCON.DONE가 하나의 이름입니다 모든 사용 비트 수 같은, 그것은 간단히 말해서 만들 경우이 비트 1, 광고 전환 시작, 완료하면 이것이 비트가된다 전환을 광고 수단이 0

3.포트 다른하거나, 비트 PORTB 특정하려면 좀 출력에, 당신은 포트 설정이로, 포트 특정 값을 수 사용으로 입력 또는 적절한 설정 할 수 이것은 수 있으며, 아웃 내다 등록 트리스에

출력면으로 사용할 PORTB는, 당신은 당신의 프로그램의 시작 부분에 입력합니다 0x00 TRISB을 = 및 = 0xFF를위한 TRISB하게 입력이됩니다

 
좋아 회신 주셔서 감사합니다,하지만 난 단지이야 아직에 조금 혼란 ADCON1을 ADCON0 초기화 때문에 그것이 그렇게 알고 있어야 될 초기화 MikroC하지만 그들은 예를 들어 있어요.그 다음 포트입니다 제가에서 비트를 사용하는 단 하나 뜻은 어떻게
MikroC) 0 =)은 어떤 것인가 동등한 위해 그것에 대한 RB7 경우에는 ((Hitech 예를 들어.
감사합니다.

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="미소" border="0" />
 
내가 프로젝트예요 년도 제 4 회 7260 MMA의 사용을위한 가속도계에 관련된 진동 감지에있는.
내가 뭘해야 돼 하이퍼 터미널로 데이터입니다.
내게 말할 수있는 당신이, 당신의 가속도계 휴식을 보여줍니다 1.65 볼트를이다 그것은?

 

Welcome to EDABoard.com

Sponsor

Back
Top