Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: C12832 LM75B mbed
Fork of app-board-LM75B by
Diff: main.cpp
- Revision:
- 2:9e757151de9b
- Parent:
- 1:6484448034e3
- Child:
- 3:4d612f16ad84
--- a/main.cpp Thu Oct 18 13:09:21 2012 +0000
+++ b/main.cpp Fri Oct 26 21:25:35 2012 +0000
@@ -1,137 +1,36 @@
-/*
- * NXP LM75B temperature sensor test
- * www.nxp.com/pip/LM75B_2.html
- *
- * Expecting to use the pins 9 and 10 for I2C bus
- * these pins should be pulled-up properly.
+/* Copyright (c) 2012 cstyles, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
*
- * The temperature read out will be shown on terminal on the PC screen.
- *
- * In this demo code, two LM75B devices can be driven.
- * These two devices should have different I2C address setting
- * using its address pins (LM75B's A0 to A2 (pins 5 to 7)).
- * One LM75B should have all those pins tied to GND.
- * And another should have the pin A0(pin7) pulled-up.
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
*
- * From the software, those devices can be accessed by I2C addresses
- * "0x90" and "0x92".
- * It will not be as "0x90" and "0x91" because the address has
- * 7 bit only and stuffed to left. So the "A0" setting become 0xX2.
- * The LSB does not care because it will be set by I2C libraly when
- * it transfer the data for read and write.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "mbed.h"
-
-// LM75B IIC address
-#define LM75B_ADDR 0x90
-
-// LM75B registers
-#define Conf 0x01
-#define Temp 0x00
-#define Tos 0x03
-#define Thyst 0x02
-
-
-DigitalOut led[] = { LED4, LED3, LED2, LED1 };
-Serial pc(USBTX, USBRX); // tx, rx
-
-I2C i2c( p28, p27 ); // sda, scl
-
-
-void iic_write( char addr, char reg, char data );
-char iic_read( char addr, char reg );
-short iic_read_short( char addr, char reg );
-void iic_error( void );
-
-void init_temp_sensor( char dev_num );
-float get_temp( char dev_num );
+#include "LM75B.h"
+#include "C12832_lcd.h"
-int main() {
- int i;
-
- init_temp_sensor( 0 );
-
- while(1) {
- pc.printf( " (%d) temp[0]=%6.3f, \n", i++, get_temp( 0 ) );
- wait( 1 );
- }
-}
+C12832_LCD lcd;
+LM75B tmp(p28,p27);
-void init_temp_sensor( char dev_num )
-{
- dev_num <<= 1;
- iic_write( LM75B_ADDR | dev_num, Conf, 0x00 ); // configuration
- pc.printf( "sensor[%d] : Conf register read out = 0x%02X\n", dev_num, iic_read( LM75B_ADDR | dev_num, Conf ) );
- pc.printf( "sensor[%d] : Tos register read out = 0x%04X\n", dev_num, iic_read_short( LM75B_ADDR | dev_num, Tos ) );
- pc.printf( "sensor[%d] : Thyst register read out = 0x%04X\n", dev_num, iic_read_short( LM75B_ADDR | dev_num, Thyst ) );
-}
-
-
-float get_temp( char dev_num )
-{
- dev_num <<= 1;
-
- return ( (float)(iic_read_short( LM75B_ADDR | dev_num, Temp )) / 256.0 );
-}
-
-void iic_write( char addr, char reg, char data )
+int main ()
{
- char cmd[2];
-
- cmd[ 0 ] = reg;
- cmd[ 1 ] = data;
-
- if ( i2c.write( addr, cmd, 2) )
- iic_error();
-}
-
-char iic_read( char addr, char reg )
-{
- char cmd;
- int nack;
-
- cmd = reg;
-
- nack = i2c.write( addr, &cmd, 1); // Send command string
- nack |= i2c.read( addr, &cmd, 1); // Send command string
-
- if ( nack )
- iic_error();
-
- return ( cmd );
-}
-
-short iic_read_short( char addr, char reg )
-{
- char cmd[ 2 ];
- int nack;
-
- cmd[ 0 ] = reg;
-
- nack = i2c.write( addr, cmd, 1); // Send command string
- nack |= i2c.read( addr, cmd, 2); // Send command string
-
- if ( nack )
- iic_error();
-
- return ( ((short)cmd[ 0 ]) << 8 | cmd[ 1 ] );
-}
+ while (1) {
+ lcd.cls();
+ lcd.locate(0,3);
+ lcd.printf("%.2f\n",tmp.read());
+ wait(1.0);
+ }
-
-void iic_error( void )
-{
- pc.printf( "I2C error\n" );
-
- for ( int i = 0; i < 4; i++ )
- led[ i ] = i & 0x01;
-
- wait ( 0.2 );
-
- for ( int i = 0; i < 4; i++ )
- led[ i ] = !(i & 0x01);
-
- wait ( 0.2 );
}
-
