ml90614红外温度计程序_第1页
ml90614红外温度计程序_第2页
ml90614红外温度计程序_第3页
ml90614红外温度计程序_第4页
ml90614红外温度计程序_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、#include#include/#include#defineuintunsignedint#defineucharunsignedchar#defineNack_number10/端口定义sbitP_RS=P3八5;sbitP_RW=P3A6;sbitP_E=P3A7;sbitSCK=P3A2;sbitSDA=P3A3;/时钟线/数据定义intbit_out=0,bit_in=0;uchartempH,tempL,err;#definein_mode0 x06/输入方式显示不移动)voidstart();voidstop();ucharReadByte(void);voidsend_bit

2、(void);voidSendByte(ucharnumber);voidread_bit(void);voiddelay(uintN);uintreadtemp(void);uintwreadtemp(void);voiddisplay(uintTem);voiddisplayw(uintTem);/MLX90614发起始位子程序/MLX90614发结束位子程序/MLX90614接收字节子程序/MLX90614发送位子程序/MLX90614接收字节子程序/MLX90614接收位子程序/延时程序/读温度数据/读温度数据/显示子程序/显示子程序unsignedcharltable6;#defin

3、eclear#definehome#definedis_on0 x01/清除显示0 x02/地址归位0 x0f/打开显示:显示控制00001DCB,D=1整体显示开,即打开/开关让屏显示C=1游标开,/B=1游标位置反白允许(此处不允许)进入点设置:000001I/DSI/D=1光标右移,AC自动加1,S=0,整体/函数声明voidscreen_delay1(uintx);/延时函数voidscreen_initial();/液晶初始化函数voidscreen_instruct(uintdat);/液晶发送控制指令voidscreen_bit8_serial_input(uintix);液晶输

4、入字节函数voiddis_str(ucharx,uchary,uchar*str);/液晶写入函数voidscreen_write_abyte(uintdat);/发送数据函数/voidscreen_delay_ms();/延时函数/以下是12864液晶显示函数/延时函数!/voidscreen_delay1(uintx)/51+17x(us)uinti,j;for(i=0;i1;i+)for(j=0;jx;j+);/液晶初始化函数,通过去掉OxOc,可以实时显示光标位置!/voidscreen_initial()P_RS=0;/RS为低电平,进行控制指令screen_instruct(dis

5、_on);/发送打开显示指令screen_delay1(70);screen_delay1(3000);screen_instruct(in_mode);screen_delay1(7);screen_instruct(0 x0c);screen_delay1(7);screen_instruct(home);screen_delay1(3000);screen_instruct(clear);/发送清屏指令/发送输入方式指令/显示状态的游标和游标位置不显示/发送地址归位指令/发送控制指令函数/voidscreen_instruct(uintdat)uintch;P_RS=1;ch=0 xf8

6、;screen_bit8_serial_input(ch);ch=dat&0 xf0;screen_bit8_serial_input(ch);ch=dat4;screen_bit8_serial_input(ch);P_RS=0;/输入字节函数/voidscreen_bit8_serial_input(uintix)uinti;P_E=0;for(i=0;i8;i+)if(ix&0 x80)=0)P_RW=0;elseP_RW=1;ix=1;P_E=1;P_E=0;/使能端发出一个负跳变沿脉冲,详见MPU写资料模块/写入函数/voiddis_str(ucharx,uchary,uchar*s

7、tr)/16*4dataucharloc,*p;codeucharxline5=0,1,3,2,4;p=str;x=xlinex;screen_instruct(home);loc=(16*(x-1)+y-1);if(loc&0 x01)loc/=2;screen_instruct(loc|0 x80);screen_write_abyte();elseloc/=2;screen_instruct(loc|0 x80);while(*p)screen_write_abyte(*p+);screen_instruct(0 x9e);screen_write_abyte();/发送数据/voids

8、creen_write_abyte(uintdat)uintch;P_RS=1;ch=0 xfa;screen_bit8_serial_input(ch);ch=dat&0 xf0;screen_bit8_serial_input(ch);ch=dat4;screen_bit8_serial_input(ch);P_RS=0;/voidscreen_delay_ms()unsignedinti,j;for(i=0;i500;i+)for(j=0;j=27315)/温度为正T=T-27315;a=T/100;b=T-a*100;ltable0=a/100+0;ltable1=a%100/10+0

9、;ltable2=a%10+0;ltable3=.;ltable4=b/10+0;ltable5=b%10+0;dis_str(2,7,ltable);else/温度整数/温度小数/温度为负T=27315-T;a=T/100;b=T-a*100;ltable0=-;ltable1=a/10+0;ltable2=a%10+0;ltable3=.;ltable4=b/10+0;ltable5=b%10+0;dis_str(2,7,ltable);voiddisplayw(uintTem)uintT,a,b;T=Tem*2;if(T=27315)/温度为正T=T-27315;a=T/100;b=T-

10、a*100;ltable0=a/100+0;ltable1=a%100/10+0;ltable2=a%10+0;ltable3=.;ltable4=b/10+0;ltable5=b%10+0;dis_str(3,7,ltable);else/温度整数/温度小数/温度为负T=27315-T;a=T/100;b=T-a*100;ltable0=-;ltable1=a/10+0;ltable2=a%10+0;ltable3=.;ltable4=b/10+0;ltable5=b%10+0;dis_str(3,7,ltable);voidstart(void)停止条件是SCK=1时,SDA由1到0SDA

11、=1;delay(4);SCK=1;停止条件是SCK=1时,SDA由0/可以重发次数/8位依次发送/取最高位/发1/发0/发送一个位/左移一位/接收1位应答信号/无应答时重发delay(4);SDA=0;delay(4);SCK=0;delay(4);/voidstop(void)到1SCK=0;delay(4);SDA=0;delay(4);SCK=1;delay(4);SDA=1;/发送一个字节voidSendByte(ucharnumber)uchari,n,dat;n=Nack_number;Send_again:dat=number;for(i=0;i8;i+)if(dat&0 x8

12、0)bit_out=1;elsebit_out=0;send_bit();dat=dat1;read_bit();if(bit_in=1)stop();if(n!=0)n-;gotoRepeat;elsegotoexit;elsegotoexit;Repeat:start();gotoSend_again;exit:;/发送一个位voidsend_bit(void)if(bit_out=1)SDA=1;elseSDA=0;_nop_();SCK=1;delay(4);delay(4);SCK=0;delay(4);delay(4);/接收一个字节ucharReadByte(void)uchar

13、i,dat;dat=0;for(i=0;i8;i+)dat=dat1;read_bit();if(bit_in=1)/可以重发Nack_number=10次/重发/退出/重新开始/重发/退出/发1/发0/上升沿/初值为0/左移/接收一位dat=dat+1;/为1时对应位加1/发送应答信号0/带回接收数据/数据端先置1/上升沿/读数据SDA=0;send_bit();returndat;/接收一个位voidread_bit(void)SDA=1;bit_in=1;SCK=1;delay(4);delay(4);bit_in=SDA;_nop_();SCK=0;delay(4);delay(4);

14、/uintreadtemp(void)/开始条件/发送从地址00/发送命令/开始条件/读从地址00/读数据低字节/读数据高字节/读错误信息码/停止条件SCK=0;start();SendByte(0 x00);SendByte(0 x07);start();SendByte(0 x01);bit_out=0;tempL=ReadByte();bit_out=0;tempH=ReadByte();bit_out=1;err=ReadByte();stop();return(tempH*256+tempL);uintwreadtemp(void)SCK=0;/开始条件/发送从地址00/发送命令/开始条件/读从地址00/读数据低字节/读数据高字节/读错误信息码/停止条

温馨提示

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

评论

0/150

提交评论