LPC1114で温度,S-5851Aをソフトウェアシリアル出力 (ハードはichigojam)
目的
温度をシリアルに出力したい
工夫点は、書き込み用シリアルとデータ出力用シリアルを
分ける事によつて開発の効率を上げた。
データ出力用ソフトウェアシリアルの出力先は、dp9(9PIN)
標準シリアルに出力を出したい場合は、pc.printfに変えればよい
速度は9600bps
#include "mbed.h"
//10の割り算 0から1028までは、正しい。主に0から999
#define DVI10(n) ((n*205)>>11)
//#define S5851A 0x48
#define ADDR ((0x48)<<1) // address
//Serial pc(USBTX, USBRX); // tx, rx
//Serial pc(SERIAL_TX, SERIAL_RX); //767
//Serial pc(PA_2, PA_3); //010
//Serial pc(PA_9, PA_10); //010
//Serial pc(dp16, dp15); // tx, rx 1114
//I2C i2c(I2C_SDA, I2C_SCL); //767
I2C i2c(dp5, dp27); //1114
//I2C i2c(PA_10, PA_9); //010
#define UART_DELAY (96) // 1/9600
//仮想シリアルの出力ポート
//DigitalOut TX(PA_9); //010
//DigitalOut TX(PA_2); //010
//DigitalOut TX(dp16); //1114 標準シリアルポートTX
DigitalOut TX(dp9); //1114 9PIN
//DigitalOut myled(D13); //767
//DigitalOut myled(PA_4); //010
//DigitalOut myled(dp14); //1114
//アナログ入力の設定
//AnalogIn adc_vbat(A3); //PA_4
//AnalogIn adc_vbat(A0); //767
//AnalogIn adc_vbat(dp4); //1114
//仮想シリアルへの一文字出力 9600bps
int pc_putc(char ch) {
TX=1;
TX=0;//START
wait_us(UART_DELAY);
for(int ii=0;ii<8;ii++){
TX=(ch>>ii)&1;
wait_us(UART_DELAY);
}; //for
TX=1;//Stop
wait_us(UART_DELAY);
return(0);
} //pc_putc
//文字列の表示
int pc_printf(char *str1) {
//文字の中身がゼロか
while(*str1){
//一文字出力
pc_putc(*str1 ++);
} //while
//戻り値
return(0);
}//pc_printf
int tempval; //温度
char data_read[6]; //i2cバッファー
int n10; //10の桁
int main() {
//初期化
TX=1;wait_ms(2); //文字分のウエート
pc_printf("\r\n"); //ゴミの吐き出し
//無限ループ
while(1) {
//初期化
//set address 0
i2c.write(ADDR, "\000", 1); //addres 0
//温度の読み込み
// Read temperature register
i2c.read(ADDR, data_read,1,false);
//温度の保存
// Calculate temperature value in Celcius
tempval = data_read[0];
//tempval = 12; //debug
//計算
// Calculation temp
n10 = DVI10(tempval); //10の桁
tempval = tempval - ( n10 * 10 ); //1の桁
//液晶に出力
// Display result
data_read[0] = '0' + n10;
data_read[1] = '0' + tempval;
data_read[2] = '\r';
data_read[3] = '\n';
data_read[4] = 0;
//温度の出力
//pc.printf(data_read); //1114
pc_printf(data_read); //1114
//1秒を待つ
wait_ms(1000);
} //while
} //main
Author And Source
この問題について(LPC1114で温度,S-5851Aをソフトウェアシリアル出力 (ハードはichigojam)), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/8794427bee40e7abe500著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .