温度传感器的单片机处理显示程序.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度传感器 单片机 处理 显示 程序
- 资源描述:
-
温度传感器的单片机处理显示程序 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 13 个人收集整理 勿做商业用途 // // // // Function: Test Temperature。—30~+105 // // Used Equation // // RT/R25=e(B*((1/(T+273))-(1/298))) // // // // Change List: V0。9 —〉 V0.91 (07,02) // // Change display A error // // // // V0.91 -〉 V0。92 (07,03) // // Add Temp Tab jiaozheng 70~100C // // // //******************************************************// #include ”ADUC812.h” #include ”math.h" #include "intrins.h" #include ”string.h” #include "stdio.h" #include "dada.h" bdata unsigned char LCD_data[8]; //** Display Buffer **// int ssdata[3]; #define Temp_100 235 #define Temp_40 1352 sbit s_data = P2^0; //** LCD Serial Data Port **// sbit clk_lcd = P2^2; //** LCD Clock Port **// sbit lcd_cs = P2^1; //** LCD Chip Select Port **// sbit led =P2^7; //********** LCD Command Name Define ***********// #define cmd_off 0x00 //** LCD Control Power Down **// #define cmd_on 0x01 //** LCD Control Power Up **// #define cmd_LCD_off 0x02 //** Close LCD **// #define cmd_LCD_on 0x03 //** Open LCD **// #define cmd_LCD_B3C4 0x29 //** LCD Mode 1/3BAIS,1/4DUTY **// #define cmd_LCD_RC 0x18 //** LCD Control Internal Oscillator 256K **// // data unsigned char Comm_buff[16]; //** Serial Port Receiver Buffer **// //data unsigned char Comm_len; //** Serial Port Receiver Data Length **// //bit Comm_ready; //** Serial Port Receiver Flag **// //** LCD Code 0,1,2。..A,B,F,0。,1。,..。A.,B。,F. **// unsigned char code LCD_code[] = { 0xeb,0x60,0xc7,0xe5,0x6c,0xad,0xaf,0xe0,0xef,0xed,0xee,0x2F,0x8b,0x67,0x8F,0x8e, 0xfb,0x70,0xd7,0xf5,0x7c,0xbd,0xbf,0xf0,0xff,0xfd,0xfe,0x3f,0x9b,0x77,0x9f,0x9e, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; //****************** delay *********************// void Delay(int p) //** Delay p Clock Cycle **// { int j; for(j=0;j〈=p;j++) { _nop_(); } } //************* Delay N ms *********// void Delay_ms(int n) { int i,j; for(i=0;i<=n;i++) { for(j=0;j〈=52;j++) //** Delay 1 ms **// { _nop_(); } } } //************* LCD Data Display ****************// void LCD_Display() { unsigned char data i,j,k,tmp,tmp1,tmp2; //** Write ’Writr Mode’ Command Word ’101’ **// lcd_cs = 0; //** Chip Select Enable **// Delay(100); clk_lcd = 0; //** Clock Down Edge **// s_data = 1; //** Data '1’ **// clk_lcd = 1; //** Clock Up Edge **// clk_lcd = 0; //** Clock Down Edge **// s_data = 0; //** Data '0’ **// clk_lcd = 1; //** Clock Up Edge **// clk_lcd = 0; //** Clock Down Edge **// s_data = 1; //** Data '1’ **// clk_lcd = 1; //** Clock Up Edge **// s_data = 0; for(i=0; i〈6; i++) //** Write First Address ’00000'(A5—A0) **// { clk_lcd = 0; //** Clock Down Edge **// s_data = 0; //** Data '0’ **// clk_lcd = 1; //**Clock Up Edge **// } for(i=0; i<8; i++) //** 8 Bits Display Data **// { k=8; tmp = LCD_data[i]; tmp1 = tmp&0xf0; //** High 4 Bits **// tmp2 = tmp&0x0f; //** Low 4 Bits **// //** Data Bits Write Out From M to L **// for(j=0; j〈k; j++) { clk_lcd = 0; //** Clock Down Edge **// if(tmp & 0x80) //** Data Out **// s_data = 1; else s_data = 0; clk_lcd = 1; //** Clock up Edge **// tmp = tmp << 1; //** Data 〈< 1 Bit **// } } lcd_cs = 1; //** LCD Chip Select Disable *8// } //************** LCD Command Write *************// void LCD_CMD(unsigned char cmd) { unsigned char data i; //*** Write Command Control Word 100 ***// lcd_cs = 0; //** Chip Enable **// Delay(100); clk_lcd = 0; //** Clock Up Edge **// s_data = 1; //** Data '1’ **// clk_lcd = 1; //** Clock Down Edge **// clk_lcd = 0; //** Clock Up Edge **// s_data = 0; //** Data ’0' **// clk_lcd = 1; //** Clock Down Edge **// clk_lcd = 0; //** Clock Up Edge **// s_data = 0; //** Data ’0’ **// clk_lcd = 1; //** Clock Down Edge **// //** Write Command Word Bits From M to L,Add One Bit(hardware need) **// for(i=0; i〈9; i++) { clk_lcd = 0; //** Clock Down Edge **// if(cmd & 0x80) s_data = 1; else s_data = 0; //** Data Write **// clk_lcd = 1; //** Clock Up Edge **// cmd = cmd <〈 1; //** Command Data <〈1 Bit **// } lcd_cs = 1; //** Chip Select disable **// } //******** Display *****************// void Display(float TT) { int con1=0,con2=0,con3=0,con4=0,con5=0,con6=0,dd=0,ss=0; long tt6; dd=TT*100; if(dd〈0) { dd=abs(dd); LCD_data[7]=0x04; //** +&- **// } else { LCD_data[7]=0x00; } ss=dd; con5=ss%10; ss=dd/10; con4=ss%10; ss=dd/100; con3=ss%10; ss=dd/1000; con2=ss%10; ss=dd/10000; con1=ss%10; tt6=TT*1000; dd=tt6%10; if(dd>=5) { con5=con5+1; if(con5〉9) //** V0。9 —> V0.91 chang dispaly A error **// { con5=0; con4=con4+1; if(con4〉9) { con4=0; con3=con3+1; if(con3〉9) { con3=0; con2=con2+1; if(con2>9) { con2=0; con1=con1+1; } } } } //*** V0。91 end ******// } //LCD_data[7]=//LCD_code[]; //** LCD Data **// LCD_data[6]=LCD_code[con1]; LCD_data[5]=LCD_code[con2]; LCD_data[4]=LCD_code[con3+0x10]; LCD_data[3]=LCD_code[con4]; LCD_data[2]=LCD_code[con5]; LCD_data[1]=0xcc;//LCD_code[com2]; LCD_data[0]=0x8b;//LCD_code[com1]; LCD_Display(); } //*************** Clear LCD ********************// void Clear_LCD() { LCD_data[0] = 0x00; LCD_data[1] = 0x00; LCD_data[2] = 0x00; LCD_data[3] = 0x00; LCD_data[4] = 0x00; LCD_data[5] = 0x00; LCD_data[6] = 0x00; LCD_data[7] = 0x00; LCD_data[8] = 0x00; LCD_Display(); } //***************** LCD Inital *****************// void Inital_LCD(void) { LCD_CMD(cmd_off); //** Close LCD System Oscillator **// LCD_CMD(cmd_LCD_off); //** Close LCD Bisa Control **// LCD_CMD(cmd_LCD_RC); //** Start internal RC Oscillator **// LCD_CMD(cmd_on); //** Open LCD System Oscillator **// LCD_CMD(cmd_LCD_on); //** Open LCD Bisa Control **// LCD_CMD(cmd_LCD_B3C4); //** Set Mode 1/3BAIS,1/4DUTY **// } //****** Serial Port set *******// void Inital_Serial(void) { SCON=0x52; //** Serial Mode 1 **// TMOD=0x21; //** T1 Mode 2 **// TH1=0xFD; TL1=0xFD; //** Baud 9600 **// TR1=1; //** Start T1 **// TI=1; //** Open Int T1 **// EA=1; //** Open All Int **// } //********** LCD Check *********// LCD_Check() { int i; for(i=0;i〈5;i++) { Clear_LCD(); led=1; Delay_ms(500); LCD_data[7]=0xFF; //** LCD Data = FF **// LCD_data[6]=0xFF; LCD_data[5]=0xFF; LCD_data[4]=0xFF; LCD_data[3]=0xFF; LCD_data[2]=0xFF; LCD_data[1]=0xFF; LCD_data[0]=0xFF; LCD_Display(); led=0; Delay_ms(500); } } //************** AD Inital *************// void AD_Set(void) { ADCCON1=0x7C; //** Start ADC,Clock=CK/8,8Clock **// ADCCON2=0x21; //** serial ADC, Port 4 **// Delay(100); } //********************************** Main Program *************************************// void main(void) { int Data; int i,j,Channel; float Sum; float Temp; //****** Inital Set *****// Inital_Serial(); Inital_LCD(); LCD_Check(); AD_Set(); //******* Start *************// while(1) { Channel=ADCDATAH>〉4; if(Channel==0x01) { Sum=0; for(i=0;i<100;i++) { Data=ADCDATAL|((ADCDATAH&0x0F)〈〈8); // printf(”%d\n",Data); Sum=Sum+Data; } Sum=Sum/100。0; // Sum=1800。0; //*** V0。91 -〉 V0。92 ADD check Tab **// if(Sum<=Temp_40) { if(Sum>=Temp_100) { for(i=0;i<75;i++) { if(Sum<=ADC_Data[i]) { j=i; } } Temp=Temp_Tab[j]+((Temp_Tab[j+1]-Temp_Tab[j])*(ADC_Data[j]-Sum)/(ADC_Data[j]—ADC_Data[j+1])); } //** V0。92 change end **// } else { Temp=1。0/((log(Sum/2250.0))/3470.0+(1.0/298.0))—273.0; } Delay(50); } //Temp=101.372; printf(”temperature=%。1f\n",Temp); Delay_ms(900); Display(Temp); Delay(20); } }展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




温度传感器的单片机处理显示程序.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2668084.html