1、此时液晶屏温度保持不变。7. 按下除 1 键其他键,此时液晶屏又重新显示温度。实验代码如下:/说明:显示分为 2 部分:数码管显示,液晶屏显示/按 1 键数码管显示,此时液晶屏保持静止/复位时或按除 1 键外其他键时,液晶屏显示,数码管熄灭/-#include #include #define uint unsigned int#define uchar unsigned char #define Nack_number 10/*端口定义* uchar flag;/LCD 控制线接口sbit RS=P06;/RS 端 sbit RW=P07;/读写端sbit LCDE=P35;/使能端/mlx
2、90614 端口定义sbit SCK=P37;/时钟线sbit SDA=P36;/数据线sbit DPY1=P32;/温度显示第 1 个数码管段选sbit DPY2=P33;/温度显示第 2 个数码管段选sbit DPY3=P34;/温度显示第 3 个数码管段选sbit row1=P03;/矩阵键盘第 1 列sbit row2=P04;/矩阵键盘第 2 列sbit row3=P05;/矩阵键盘第 3 列sbit cow1=P00;/矩阵键盘第 1 行sbit cow2=P01;/矩阵键盘第 2 行sbit cow3=P02;/矩阵键盘第 3 行/*数据定义* bdata uchar flag1
3、;/可位寻址数据sbit bit_out=flag17;s bit bit_in=flag10;uchar temp H,temp L,err;void CALTEMP(uint TEMP); void Read Key(void);void init Int();void delay1(uint z); void show();uchar key_num; uchar mah5;/*数码管码值定义*/ uchar code LED01=/LED 显示代码,0-9 共阳不带小数点的0x C0,0x F9,0x A4,0x B0,0x99,0x92,0x82,0x F8,0x80,0x90;uc
4、har code LED02=/LED 显示代码,0-9 共阳带小数点的0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/*全局变量定义*/ bit b20ms,b100ms;/定时标志位uchar c20ms,c100ms;/定时毫秒数/*LCD1602*/向 LCD 写入命令或数据* #define LCD_COMMAND 0/命令#define LCD_DATA 1/数据#define LCD_CLEAR_SCREEN 0x01/清屏#define LCD_HOMING 0x02/光标返回原点/设置显示模式*0x08+* #define
5、 LCD_SHOW 0x04/显示开一实验目的#define LCD_HIDE 0x00/显示关#define LCD_CURSOR 0x02/显示光标#define LCD_NO_CURSOR 0x00/无光标#define LCD_FLASH 0x01/光标闪动#define LCD_NO_FLASH 0x00/光标不闪动/设置输入模式*0x04+* #define LCD_AC_UP 0x02/光标右移 AC+#define LCD_AC_DOWN 0x00/默认光标左移 AC- #define LCD_MOVE 0x01/画面可平移#define LCD_NO_MOVE 0x00/默认
6、画面不移动/*mlx90614*/command mode 命令模式#define Ram Access 0x00/对 RAM 操作#define Eepom Access 0x20/对 EEPRAM 操作#define Mode 0x60/进入命令模式#define Exit Mode 0x61/退出命令模式#define Read Flag 0xf0/读标志#define Enter Sleep 0xff/进入睡眠模式/ram address read only RAM 地址(只读)#define Abmient Temp Addr 0x03/周围温度#define IR1Addr 0x0
7、4#define IR2Addr 0x05#define Line Abmient Temp Addr 0x06/环境温度/*0x0000 0x4074 16500 0.01/单元-40125*/#define Line Obj1Temp Addr 0x07/目标温度,红外温度/*0x27ad-0x7fff0x3559 226100.02/单元-70.01-382.190.01452.2*/#define Line Obj2Temp Addr 0x08/eepom address EEPROM 地址#define TObj Max Addr 0x00/测量范围上限设定#define TObj
8、Min Addr 0x01/测量范围下限设定#define PWMCtrl Addr 0x02/PWM 设定#define Ta Range Addr 0x03/环境温度设定#define Ke Addr 0x04/频率修正系数#define Config Addr 0x05/配置寄存器#define SMbus Addr 0x0e/器件地址设定#define Reserverd1Addr 0x0f/保留#define Reserverd2Addr 0x19/保留#define ID1Addr 0x1c/ID 地址 1#define ID2Addr 0x1d/ID 地址 2 #define I
9、D3Addr 0x1e/ID 地址 3 #define ID4Addr 0x1f/ID 地址 4/*函数声明* void start();/MLX90614 发起始位子程序void stop();/MLX90614 发结束位子程序uchar Read Byte(void);/MLX90614 接收字节子程序void send_bit(void);/MLX90614 发送位子程序void Send Byte(uchar number);void read_bit(void);/MLX90614 接收位子程序void delay(uint N);/延时程序uint readtemp(void);/
10、读温度数据void init1602(void);/LCD 初始化子程序void busy(void);/LCD 判断忙子程序void cmd_wrt(uchar cmd);/LCD 写命令子程序void dat_wrt(uchar dat);/LCD 写数据子程序void display(uint Tem);/显示子程序void Print(uchar*str);/字符串显示程序/*主函数*void main()uint Tem;/温度变量init Int();SCK=1;SDA=1;delay(4);SCK=0;delay(1000);init1602();/初始化 LCD while(1)while(b100ms)/每 100ms 扫描一次键盘b100ms=0;Read Key();if(key_num=1)/按下 1 键时,进行数码管显示Tem=readtemp();CALTEMP(Tem);show();if(key_num!=1)/液晶屏显示/读取温度cmd_wrt(0x01);/清屏Print(Temperature:);/显示字符串 Temperature:且换行display(Tem);/显示温度C/显示摄氏度delay(100000);/延时再读取温度显示
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1