softdev:tempmeter2
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
softdev:tempmeter2 [2013/01/08 23:07] – [ソース] king | softdev:tempmeter2 [2013/07/15 20:25] (現在) – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 49: | 行 49: | ||
題して、バイクメータ、そのままやんけ。\\ | 題して、バイクメータ、そのままやんけ。\\ | ||
main初期化部 | main初期化部 | ||
- | <code c> | + | <code c#> |
/ | / | ||
// for PIC18F1320 | // for PIC18F1320 | ||
行 135: | 行 135: | ||
</ | </ | ||
+ | LCD関係 | ||
<code c> | <code c> | ||
+ | void shiftreg_lat() | ||
+ | { | ||
+ | SOLAT = 1; /* latch is rise edge */ | ||
+ | DelayUs(1); | ||
+ | SOLAT = 0; | ||
+ | } | ||
+ | |||
+ | |||
+ | void send_data(char data) | ||
+ | { | ||
+ | signed char c; | ||
+ | /* send MSB first */ | ||
+ | for(c=7; | ||
+ | SODAT = data>> | ||
+ | DelayUs(1); | ||
+ | SOCLK = 1; | ||
+ | DelayUs(1); | ||
+ | SOCLK = 0; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void send_to_lcd(char data,char rs) | ||
+ | { | ||
+ | char ctrl_data; | ||
+ | /* data MSB 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 LSB*/ | ||
+ | /* 0 0 0 BkON BkHi 0 RS E Data---- | ||
+ | |||
+ | ctrl_data = 0x01 | BKL_AKARUI | rs ; /* E=1, | ||
+ | send_data( ctrl_data ); | ||
+ | send_data( data ); | ||
+ | shiftreg_lat(); | ||
+ | |||
+ | ctrl_data = ctrl_data & 0b11111110 ; /* E=0 */ | ||
+ | send_data( ctrl_data ); | ||
+ | send_data( data ); | ||
+ | shiftreg_lat(); | ||
+ | } | ||
+ | |||
+ | void lcd_locate(char location) | ||
+ | { | ||
+ | /* location 00h=Row1/ | ||
+ | location |= 0x80; /* rise bit7=1 */ | ||
+ | send_to_lcd( location , RS0); /*set DDRAM addr to 40h */ | ||
+ | } | ||
+ | |||
+ | /* write a string of chars to the LCD */ | ||
+ | void lcd_puts(const char * s) | ||
+ | { | ||
+ | while(*s) | ||
+ | send_to_lcd( *s++ , RS1 ); | ||
+ | } | ||
</ | </ | ||
+ | |||
+ | ADCのところ | ||
<code c> | <code c> | ||
- | </ | + | while(1){ |
- | <code c> | + | ADCON0 = ADON_AN1; |
- | </code> | + | GO_DONE=1; |
+ | while(GO_DONE); | ||
+ | an1data = (ADRESH<<8) | ADRESL ; // Temperatrure | ||
+ | |||
+ | DelayMs(10); | ||
+ | ADCON0 = ADON_AN2; | ||
+ | GO_DONE=1; | ||
+ | while(GO_DONE); | ||
+ | an2data = (ADRESH<< | ||
+ | an2data = an2data * 5 * 10 / 256; | ||
+ | |||
+ | tmp10_long = (long)an1data * 500 - 245760; | ||
+ | tmp10_long = tmp10_long / 410; | ||
+ | tmp10 = (int)tmp10_long; | ||
+ | |||
+ | </ | ||
+ | メモリが足りてるので、温度はlongで計算。 | ||
softdev/tempmeter2.txt · 最終更新: 2013/07/15 20:25 by 127.0.0.1