电子体温计设计
RS = 0; RW = 0; EN = 0; P0 = cmd; EN = 1;
delayms(1); EN = 0; }
/********************************************************** 函数名称: write_LCD_data 功 能: LCD写数据 参 数: dat 返回值 : 无
***********************************************************/ void write_LCD_data(unsigned char dat) {
while((read_status()&0x80)==0x80); RS = 1; RW = 0; EN = 0; P0 = dat; EN = 1; EN = 0; }
/********************************************************** 函数名称: LCDDispChar 功 能: LCD显示字符 参 数: x,y,dat 返回值 : 无
***********************************************************/ void LCDDispChar(unsigned char x,unsigned char y,unsigned char dat) { unsigned char address; if(y==1) address=0x80+x; /*显示在第一排的时候的x的地址*/ else address=0xc0+x; /*显示在第二排的时候的x的地址*/
-36-
电子体温计设计
write_LCD_Command(address); /*输入地址*/ write_LCD_data(dat); /*输入数据*/ }
/********************************************************** 函数名称: LCDDispString 功 能: LCD显示字符串 参 数: x,y,*string 返回值 : 无
***********************************************************/ void LCDDispString(unsigned char x,unsigned char y,unsigned char *string) { while(*string != 0) /*没有检测到字符串结尾时*/ { LCDDispChar(x,y,*string++);/*逐个显示字符串*/ x++; /*行地址加1*/ } }
/********************************************************** 函数名称: LCDDispNum 功 能: LCD显示数字 参 数: x,y,dat 返回值 : 无
***********************************************************/ void LCDDispNum(unsigned char x,unsigned char y,unsigned char dat) { unsigned char address; if(y==1) address=0x80+x; /*显示在第一排的时候的x的地址*/ else address=0xc0+x; /*显示在第二排的时候的x的地址*/ write_LCD_Command(address); /*输入地址*/ write_LCD_data(dat+48); /*输入数据*/ 0x30 0 }
**************************************************************************************************************************
-37-
电子体温计设计
#include \#include \
//变量定义
unsigned char time_buf2[7]; uchar
a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,a10=0,a11=0,a12=0,a13=0,a14=0,a15=0,a16=0;
ulong Temperature=0,Temperature2=0;
/********************************************************** 函数名称: UART_Init 功 能: 串口初始化 参 数: 无参数 返回值 : 无
***********************************************************/ void UART_Init(void) {
TMOD|=0x20; //TMOD: timer 1, mode 2, 8-bit reload TH1=0xfd; //Baud:9600 fosc=\ TL1=0xfd;
SCON|=0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr TI = 0; RI = 0;
-38-
电子体温计设计
TR1=1;// timer 1 run //启动定时器1
ES=1; //Enable Serial Interrupt 打开中断 EA=1; //打开所有中断 }
/********************************************************** 函数名称: UART_SER 功 能: 串口中断函数 参 数: 无参数 返回值 : 无
***********************************************************/ void UART_SER (void) interrupt 4 {
unsigned char Temp; //定义临时变量 unsigned int a,b,c,d,e,f,g,h; unsigned char i;
if(RI) //判断是接收中断产生 { RI=0; //标志位清零 Temp=SBUF; //读入缓冲区的值 time_buf2[i]=Temp; i++; if(i==8) //连续接收4个字符信息 { i=0; a1=(unsigned int)(time_buf2[0]/16); a2=(unsigned int)(time_buf2[0]);//串口接收第1个16字节,并且把个位和十位分离,只取有效数据个位。 a3=(unsigned int)(time_buf2[1]/16); a4=(unsigned int)(time_buf2[1]);//串口接收第2个16字节,并且把个位和十位分离,只取有效数据个位。 a5=(unsigned int)(time_buf2[2]/16); a6=(unsigned int)(time_buf2[2]);//串口接收第3个16字节,并且把个位和十位分离,只取有效数据个位。 a7=(unsigned int)(time_buf2[3]/16); a8=(unsigned int)(time_buf2[3]);//串口接收第4个16字节,并且把个位和十位分离,只取有效数据个位。
-39-
进制温度
进制温度
进制温度
进制温度
相关推荐: