softdev:tempmeter2
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| softdev:tempmeter2 [2013/01/08 23:10] – [ソース] king | softdev:tempmeter2 [2013/07/15 20:25] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 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.1357654221.txt.gz · 最終更新: (外部編集)
