智能测温仪芯片源程序.doc_第1页
智能测温仪芯片源程序.doc_第2页
智能测温仪芯片源程序.doc_第3页
智能测温仪芯片源程序.doc_第4页
智能测温仪芯片源程序.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

芯片源程序#include p18f452.h#include delays.h#include stdlib.h#include adc.h#define LCD_RSPORTDbits.RD4#define LCD_RWPORTDbits.RD5#define LCD_EPORTAbits.RA2#define LCD_DATALATD#define DIR_LCD_DATATRISD#define IIC_SDA PORTCbits.RC4#define IIC_SCL PORTCbits.RC3#define BZ1 PORTCbits.RC2unsigned char i,AA=0;unsigned char j,FLAG_1=0,k1;unsigned char a;unsigned char b;unsigned char Temp_CMD ;unsigned int result,v,y,y1,y2,k,k2;unsigned char H,H1,L1,M,L,H2,L2,H3,L3,T;unsigned char x;unsigned char DATA_RE=0,i1=0,j1=0,i2=0;union struct unsigned Timeout:1; /flag to indicate a TMR0 timeout unsigned None:7; Bit; unsigned char Byte; Flags;void ad_init(void);void LCD_init(void);void LCD_CMD_W_Timing( void );void LCD_DAT_W_Timing( void );void LCD_L_Delay(void);void LCD_S_Delay(void);void WriteCmdLCD( unsigned char LCD_CMD);void WriteDataLCD( unsigned char LCD_CMD);void IIC_START(void);void IIC_STOP(void);void IIC_WR(char WDATA);void wen(void);/void wen1(void);char IIC_ACK(void);char IIC_RE(void);char SENSOR=0;unsigned int tem41=0x0000,0x0028,0x004f,0x0077,0x009f,0x00c7,0x00ef,0x0117,0x013f,0x0167,0x018d,0x01b5,0x01dd,0x0205,0x022d,0x0255,0x027d,0x02a5,0x02cd,0x02f5,0x031e,0x0346,0x036f,0x0397,0x03bf,0x03e7,0x040f,0x0438,0x0460,0x0489,0x04b3,0x04db,0x0504,0x052c,0x0554,0x057d,0x05a5,0x05ce,0x05f6,0x061e,0x064b;/040duchar IIC_ADD8=0X80,0X40,0X20,0X10,0X08,0X04,0X02,0X01;unsigned int vol31=0x0000,0x018d,0x031e,0x04b3,0x064b,0x07e6,0x0984,0x0b22,0x0cc2,0x0e61,0x0fff,0x119c,0x1337,0x14cf,0x1665,0x17f9,0x198b,0x1b1b,0x1caa,0x1e39,0x1fc9,0x2159,0x22ea,0x247d,0x2611,0x27a7,0x2940,0x2ad9,0x2c75,0x2e11,0x2faf;unsigned char NUM9=0x45,0x30,0x36,0x36,0x31,0x30,0x31,0x33,0x31;unsigned char NAME3=0x42,0x43,0x51;void main(void) LCD_init(); WriteCmdLCD(0x80); for(a=0;a3;a+)WriteDataLCD(NAMEa); WriteCmdLCD(0x87); for(b=0;b=volk) k=k+1; k-; k1=(y2-volk)/(volk+1-volk)/10); k2=k*10+k1; LCD_L_Delay();LCD_L_Delay();LCD_L_Delay(); /LCD_init(); TRISA=0x00; H1=k2/100+0x30; WriteCmdLCD(0xc0); WriteDataLCD(H1); M=k2%100/10+0x30; WriteCmdLCD(0xc1); WriteDataLCD(M); L1=k2%100%10+0x30; WriteCmdLCD(0xc2); WriteDataLCD(L1); void ad_init(void)/ configure A/D convertorTRISA=0XFF;OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_8ANA_0REF,ADC_CH0 & ADC_INT_OFF );Delay10TCYx( 10 ); / Delay for 50TCYConvertADC(); / Start conversionwhile( BusyADC() ); / Wait for completionresult = ReadADC(); / Read resultCloseADC(); / Disable A/D converterNop()void wen(void) IIC_START(); IIC_WR(0X9E); IIC_ACK(); IIC_WR(0X00); IIC_ACK(); IIC_START(); IIC_WR(0X9F); IIC_ACK(); SENSOR=IIC_RE(); IIC_STOP(); H=SENSOR/10+0x30; WriteCmdLCD(0xc5); WriteDataLCD(H); L=SENSOR%10+0x30; WriteCmdLCD(0xc6); WriteDataLCD(L); H1=k2/100+0x30;void IIC_START(void) /*IIC START FUNCTION*/ TRISC=0Xc0; IIC_SCL=0; IIC_SDA=1; IIC_SCL=1; IIC_SDA=0; /*A HIGH TO LOW TRANSITION OF THE SDA LINE WHEN THE SCL LINE IS AT HIGH LEVEL*/ IIC_SCL=0;void IIC_STOP(void) /*IIC STOP FUNCTION*/ TRISC=0Xc0; IIC_SCL=0; IIC_SDA=0; IIC_SCL=1; IIC_SDA=1; /*A LOW TO HIGH TRANSITION OF THE SDA LINE WHEN THE SCL LINE IS AT HIGH LEVEL*/ IIC_SCL=0;void IIC_WR(char WDATA) /*WRITE A BYTE TO 24C01 FUNCTION */ char i; TRISC=0Xc0; for(i=0;i8;i+) if(WDATA&0X80)=0) /*IF THE BIT7=0*/ IIC_SCL=0; IIC_SDA=0; else /*ELSE THE BIT7=1*/ IIC_SCL=0; IIC_SDA=1; IIC_SCL=1; IIC_SCL=0; WDATA=1; /*SHIFT LEFT (BIT6 TO BIT7) FOR SEND*/ char IIC_ACK(void) /*JUDGE THE ACK SIGNAL FROM 24C01*/ char m; TRISC=0Xd0; IIC_SCL=1; m=IIC_SDA; /*READ THE SDA LINE WHEN SCL LINE IS AT HIGE LEVEL*/ IIC_SCL=0; return m;char IIC_RE(void) /*READ A BYTE FROM 24C01*/ char i,j=0; TRISC=0Xd0; IIC_SCL=0; for(i=0;i4 ;LCD_DATA= (LCD_DATA & 0xF0)|Temp_CMD ;LCD_CMD_W_Timing () ;Temp_CMD = LCD_CMD & 0x0F ;LCD_DATA= (LCD_DATA & 0xF0)|Temp_CMD ;LCD_CMD_W_Timing () ;LCD_S_Delay() ;void WriteDataLCD( unsigned char LCD_CMD)Temp_CMD = (LCD_CMD & 0xF0)4 ;LCD_DATA= (LCD_DATA & 0xF0)|Temp_CMD ;LCD_DAT_W_Timing () ;Temp_CMD = LCD_CMD & 0x0F ;LCD_DATA= (LCD_DATA & 0xF0)|Temp_CMD ;LCD_DAT_W_Timing () ;LCD_S_Delay() ;void LCD_CMD_W_Timing( void )LCD_RS = 0 ;Nop();Nop();Nop();LCD_RW = 0 ;Nop();Nop();Nop();LCD_E = 1 ;Nop();Nop();Nop();LCD_E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论