这2个头文件是自己原创的,函数都已经封装好了,可以在你的程序中直接调用,现在分享在51黑电子论坛,方便大家.分别实现了温度读取和液晶显示的功能.
DS18B20.h和LCD1602.h头文件下载:
DS18B20和lcd1602调试好的头文件.rar
(2.36 KB, 下载次数: 131)
DS18B20.h头文件内容预览:
LCD1602.h头文件:
- /*1602液晶驱动程序*/
- //作者:詹磊
- //功能:能在1602液晶上显示字符串(字母和阿拉伯数字)、自定义图形(5x7点阵图形)
- /*******************************************************************************/
- #ifndef __LCD1602_H__
- #define __LCD1602_H__
- #define uchar unsigned char
- #define uint unsigned int
- /*******************************************************************************/
- /*sbit RW_LCD=P2^1;
- sbit RS_LCD=P2^0;
- sbit E_LCD=P2^2;*/
- sbit RW_LCD=P2^5;//开发板上对印引脚
- sbit RS_LCD=P2^6;
- sbit E_LCD=P2^7;
- /**********************************字符表***************************************/
- uchar bmp_table1[8]=
- {
- 0x0E,0X1F,0X11,0X11,0X11,0X11,0X1F,0x00,//电池标号:空
- // 0 1 2 3 4 5 6 7
- };
- uchar bmp_table2[8]=
- {
- 0x0E,0X1F,0X11,0X11,0X11,0X1F,0X1F,0x00,//电池标号:一格
- // 0 1 2 3 4 5 6 7
- };
- uchar bmp_table3[8]=
- {
- 0x0E,0X1F,0X11,0X11,0X1F,0X1F,0X1F,0x00,//电池标号:两格
- // 0 1 2 3 4 5 6 7
- };
- uchar bmp_table4[8]=
- {
- 0x0E,0X1F,0X11,0X1F,0X1F,0X1F,0X1F,0x00,//电池标号:三格
- // 0 1 2 3 4 5 6 7
- };
- uchar bmp_table5[8]=
- {
- 0x0E,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0x00//电池标号:四格
- // 0 1 2 3 4 5 6 7
- };
- uchar bmp_table6[8]=
- {
- 0x04,0X08,0X10,0X1F,0X1F,0X1F,0X1F,0x00//FM标号
- // 0 1 2 3 4 5 6 7
- };
- uchar bmp_table7[8]=
- {
- 0x10,0X07,0X08,0X08,0X08,0X08,0X07,0x00//温度标号
- // 0 1 2 3 4 5 6 7
- };
- /*******************************************************************************/
- void delay_ms(uint z)//毫秒延时函数
- {
- uint i,m;
- for(i=z;i>0;i--)
- for(m=123;m>0;m--);
- }
- void delay_us(uint time)//微秒延时函数
- {
- while(time--);
- }
- /*******************************************************************************/
- uchar R_TEST_LCD()
- {
-
- bit i;
- RS_LCD=0;
- RW_LCD=1;
- E_LCD=1;
- delay_us(1);
- i=(bit)(P0&0x80);
- E_LCD=0;
- RW_LCD=0;
- RS_LCD=1;
- return i;
- }
- /*******************************************************************************/
- void W_CMD_LCD(uchar cmd)
- {
- while(R_TEST_LCD());
- RS_LCD=0;
- RW_LCD=0;
- P0=cmd;
- E_LCD=1;
- E_LCD=0;
- RW_LCD=1;
- RS_LCD=1;
- }
- /*******************************************************************************/
- void W_DAT_LCD(uchar dat)
- {
- while(R_TEST_LCD());
- RS_LCD=1;
- RW_LCD=0;
- P0=dat;
- E_LCD=1;
- E_LCD=0;
- RW_LCD=1;
- RS_LCD=0;
- }
- /*******************************************************************************/
- void position(uchar x,uchar y)//x为横坐标;y为纵坐标
- {
- if(y==1)
- {
- W_CMD_LCD(0x7F+x);
- }
- else
- {
- W_CMD_LCD(0xBF+x);
- }
- }
- /*******************************************************************************/
- void printf(uchar *dat,uchar x,uchar y)//显示函数;x为横坐标;y为纵坐标
- {
- position(x,y);//指定首字位置
- while(*dat>0)//当加到头时,指针指向NULL退出循环
- {
- W_DAT_LCD(*dat);//按指针所指的地址取内容,写入LCD寄存器
- dat++;//指针++
- }
- }
- /*******************************************************************************/
- void printf_Digital(uchar dat,uchar x,uchar y)//dat<99
- {
- position(x,y);
- W_DAT_LCD(dat/10+'0');
- W_DAT_LCD(dat%10+'0');
- }
- /*******************************************************************************/
- void W_CGRAM(uchar *dat,uchar n)
- {
- uchar i;
- W_CMD_LCD(0x40+n*8);
- for(i=0;i<8;i++)
- {
- W_DAT_LCD(*dat);//按指针所指的地址取内容,写入CGRAM
- dat++;//指针++
- }
- dat=0;
- }
- /*******************************************************************************/
- void LCD_init()
- {
- delay_ms(15);
- W_CMD_LCD(0x38);
- delay_ms(1);
- W_CMD_LCD(0x08);
- delay_ms(1);
- W_CMD_LCD(0x01);
- delay_ms(1);
- W_CMD_LCD(0x06);
- delay_ms(1);
- W_CMD_LCD(0x0C);
- W_CGRAM(bmp_table1,0);
- W_CGRAM(bmp_table2,1);
- W_CGRAM(bmp_table3,2);
- W_CGRAM(bmp_table4,3);
- W_CGRAM(bmp_table5,4);
- W_CGRAM(bmp_table6,5);
- W_CGRAM(bmp_table7,6);
- }
- /*******************************************************************************/
- // 沐雨迎风设 //
- // 2012/03/16 //
- /*******************************************************************************/
- #endif
复制代码
|