ユーザ用ツール

サイト用ツール


softdev:tempmeter2

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
softdev:tempmeter2 [2012/03/07 23:56] – [増幅率] kingsoftdev:tempmeter2 [2013/01/08 23:10] – [ソース] king
行 35: 行 35:
 ===== 回路図 ===== ===== 回路図 =====
 Eagleで部品登録がうまく行かなかったので。。。 Eagleで部品登録がうまく行かなかったので。。。
 +
 {{:softdev:bikemeter2.png?direct&200|}} {{:softdev:bikemeter2.png?direct&200|}}
  
 +  * RTC初期化時に設定する必要があるので、SWは二つ。
 +  * RTCは3Wire
 +  * CN1はPICkit3接続ポート
 +  * バイクバッテリ(12V)から5Vをドロッパで作り動作させる。
 +
 +PICkit3では、PGC,PGD,MCLR端子を使うが、PGC,PGDにはPUを付けられない等の制限がある。
 +
 +ででで、ソース
 +===== ソース =====
 +題して、バイクメータ、そのままやんけ。\\
 +main初期化部
 +<code c#>
 +/*****************************************************
 +// for PIC18F1320
 +// Bike-Meter
 +// 開発 キング工房
 +******************************************************/
 +#include <htc.h>
 +#include <delays.h>
 +#include "delays_usms.h"
 +#include "lcd_operation.h"
 +#include "rtc_operation.h"
 +
 +// VCFG1,VCFG0,-,CHS2,CHS1,CHS0,GODONE,ADON
 +// CHS2,1,0 AN0=000,AN1=001,AN2=010
 +#define ADON_AN1 0b00000101
 +#define ADON_AN2 0b00001001
 +#define LED_pwr PORTAbits.RA0
 +#define LED_paper PORTAbits.RA4
 +#define SW_feed PORTAbits.RA7
 +#define SW_menu PORTAbits.RA6
 +
 +void send_dec3(char,int,char,char);
 +void rtc_init(void);
 +void rtc_init_mode_in(void);
 +void get_minmax(int,int);
 +
 +// 配列を引きわたして戻す方法がわからないので、
 +char rtc_today[7]; // グローバルで
 +int temp_max,temp_min,volt_max,volt_min; //最大最小算出為
 +char start_time[7]; // 経過時間算出為
 +// 外部ソースで引用するときは、外部ソース側でextern をつけて再宣言する
 +
 +main()
 +{
 +/*
 +// 書き込み時に使う。最初にないと動作しないみたい。RTCで月を文字で表示する為、EEPROMに書く。
 +__EEPROM_DATA("J","a","n","F","e","b","M","a");
 +__EEPROM_DATA("r","A","p","r","M","a","y","J");
 +__EEPROM_DATA("u","n","J","u","l","A","u","g");
 +__EEPROM_DATA("S","e","p","O","c","t","N","o");
 +__EEPROM_DATA("v","D","e","c",0xFF,0xFF,0xFF,0xFF);
 +*/
 + char a; // ループ等で使う
 + char led1,keta,rtc_data,cc1u,cc1d;
 + int an1data,tmp10;
 +// int tt;// tt1,tt2は計算用
 + unsigned int past_time,tt,tt1,tt2,an2data,start_time_int;
 + long tmp10_long;
 +// char tmp10c; // 判定のため仮変数
 + char mm,month[3];
 + char mode; // 表示モード選択
 +
 + OSCCON = 0b01111111; // クロック8MHz
 +
 + EECON1 = 0b00010001; // EECON設定ないとEEPROMアクセス不可
 +
 + ADCON0 = ADON_AN1; // AN1 on
 + ADCON1 = 0xFD; // AN1 only use
 + ADCON2 = 0b10100101; // Right ,8TAD , Fosc/16
 +
 + PORTA = 0;// IO 初期化
 + PORTB = 0;
 + TRISA = 0xEE; // 0=Out RA0,RA4
 + TRISB = 0b10100000; // RB5 = IN
 +
 + temp_max = -1000;
 + temp_min =  1000;
 + volt_max =     0;
 + volt_min =   300;
 +
 + mode=0;
 +
 + led1 = 1;
 + LED_pwr = led1;
 + LED_paper = led1;
  
 +
 + rtc_portinit();
 + lcd_init();
 +
 + if(rtc_get_stat() > 0 ){
 + rtc_init_mode_in();
 + rtc_init(); // 異常フラグありで初期化
 + }
 +</code>
  
 +<code c>
 +</code>
 +<code c>
 +</code>
 +<code c>
 +</code>
  
  
  
  
softdev/tempmeter2.txt · 最終更新: 2013/07/15 20:25 by 127.0.0.1