logo资料库

基于单片机的红外测温程序.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
; #include #include sbit Data = P1^5; sbit clk = P1^6; sbit tn = P1^7; unsigned char TN_Data_Buff[5] ; float iTemp sbit RSPIN=P1^0; sbit RWPIN=P1^1; sbit EPIN=P1^2; ; float MJTemp float HJTemp ; void delay(unsigned int t) { unsigned int i,j; for(i=0;i
RSPIN=1; RWPIN=0; P2=databuf; EPIN=1; _nop_(); EPIN=0; //选择数据寄存器 //选择写 //把数据字送入 P2 //使能线电平变化,命令送入 1602 的 8 位数据口 //恢复使能线电平 } void lcd_write_address(unsigned char x,unsigned char y) { x&=0x0f; y&=0x01; if(y==0x00) //列地址限制在 0-15 //行地址限制在 0-1 lcd_write_com_busy(x|0x80); //第一行的列地址写入 else lcd_write_com_busy((x+0x40)|0x80); //第二行的列地址写入 } void lcdreset() { delay(150); lcd_write_com(0x38); delay(50); lcd_write_com(0x38); delay(50); lcd_write_com(0x38); lcd_write_com_busy(0x38); lcd_write_com_busy(0x08); lcd_write_com_busy(0x01); lcd_write_com_busy(0x06); lcd_write_com_busy(0x0c); //8 位数据,双列,5*7 字形 //显示功能关,无光标 //清屏指令 //写入新的数据后,光标右移,显示屏不移动 //显示功能开,无光标, } void lcd_write_line(unsigned char dat[],int byte) { char i; for(i=0;i
kc=MJTemp*100; lcd_write_com(0x80+8); lcd_write_data(0x30+kc/1000); lcd_write_data(0x30+kc/100%10); lcd_write_data('.'); lcd_write_data(0x30+kc%100/10); lcd_write_data(0x30+kc%10); lcd_write_data('C'); } void xianshih() { unsigned int kH; delay(10) ; lcd_write_com(0x80+0x40); lcd_write_line("HJTemp:",7); kH=HJTemp*100; lcd_write_com(0x80+0x40+8); lcd_write_data(0x30+kH/1000); lcd_write_data(0x30+kH/100%10); lcd_write_data('.'); lcd_write_data(0x30+kH%100/10); lcd_write_data(0x30+kH%10); lcd_write_data('C'); } void tndelay_60us(int k) { ; int i,j for(i=0;i
TN_Data_Buff[j]=TN_Data_Buff[j]<<1; TN_Data_Buff[j]=TN_Data_Buff[j]|BitState; while(!clk); } } if(TN_Data_Buff[0]==Item) k=8; } tn=1; } void tndelay_600us(int k) { ; int i,j for(i=0;i
{ int k; lcdreset(); HJTemp=10; tn=1; { TN_IR_GetData(0x66); HJTemp = iTemp; TN_IR_GetData(0x4c); MJTemp = iTemp; xianshim(); xianshih(); } }
分享到:
收藏