资源简介
本程序是对温湿度采集系统,显示器件为12864,传感器为dht11。单片机为at89c51。
代码片段和文件信息
#include
#define OK 1
#define ERROR 0
#define NUMBER 20 //防止在与硬件通信时发生死循环设置的计数范围
#define SIZE 5
#define uint unsigned int
#define uchar unsigned char
static uchar status;
uchar value_array[SIZE];
uint temp_value humi_value;
/*------------用户自定义-----------------------------------------------*/
sbit rs=P2^4; //RS=“H“表示DB7--DB0为显示数据
//RS=“L“表示DB7--DB0为显示指令数据
sbit rw=P2^5; //R/W=“H“E=“H“数据被读到DB7--DB0
//R/W=“L“E=“H→L“ DB7--DB0的数据被写到IR或DR
sbit e=P2^6; //使能信号
sbit dht11 = P2^0;//温湿度传感器接口
sbit psb=P2^3; //H:8位或4位并口方式,L:串口方式
void Delay_1ms(unsigned int ms) //延时1ms
{
unsigned int x y;
for(x = ms; x > 0; x--)
{
for(y = 114; y > 0; y--);
}
}
extern void Delay_10us(void) //延时10us
{
unsigned char i;
i--;
i--;
i--;
i--;
i--;
i--;
}
//****************************************************
//延时函数,在12MZ的晶振频率下
//大约50us的延时
//****************************************************
void delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
//****************************************************
//延时函数,在12MZ的晶振频率下
//大约50ms的延时
//****************************************************
void delay_50ms(uint t)
{
uint j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}
void chk_busy() //判忙函数
{
rs=0 ;
rw=1 ;
e=1 ;
P0=0xff ;
while((P0&0x80)==0x80);
e=0 ;
}
void lcd_write_cmd(uchar com) //LCD12864写命令
{
chk_busy();
rs=0 ;
rw=0 ;
e=1 ;
P0=com;
delay_50us(1);
//------------------在数据写入的时候加入适当的延时
e=0 ;
}
void lcd_write_data(uchar dat) //LCD12864写数据
{
chk_busy();
rs=1 ;
rw=0 ;
e=1 ;
P0=dat;
delay_50us(1);
//------------------在数据写入的时候加入适当的延时
e=0 ;
}
/**********************************************************************
* 名称: Addr_Set()
* 函数功能:字符位置确定
* 入口参数: x(0~7) 指定点所在列的位置
* y(0~3) 指定点所在行的位置
* 出口参数:无
* 说明:汉字必须是存在在液晶字库中的
**********************************************************************/
void Addr_Set(uchar xuchar y)
{
uchar address;
switch(x)
{
case 0: x = 0x80 ; break;
case 1: x = 0x90 ; break;
case 2: x = 0x88 ; break;
case 3: x = 0x98 ; break;
default: return;
}
address = x+y;
lcd_write_cmd(address);
}
void LCD_12864_initinal(void)
{
delay_50ms(2);
lcd_write_cmd(0x30); //Function set 基本指令操作
lcd_write_cmd(0x0c); //显示状态开/关00001DCB
//D=1: 整体显示 ON C=1: 游标ON B=1:游标位置反白允许
lcd_write_cmd(0x01);
//清除显示 将DDRAM填满“20H“并且设定DDRAM的地址计数器(AC)到“00H“
lcd_write_cmd(0x06);
//进入点设定0001I/DS
//指定在数据的读取与写入时设定游标的移动方向及指定显示的移位
}
/*------------------显示字符串--------------------------*/
void string_dis(uchar code *s)
{
while(*s>0) //“\0“结束
{
lcd_write_data(*s);
s++;
//delay_1ms(500); //慢速显
//delay_1ms(200); /
- 上一篇:IDL分类代码
- 下一篇:pyOpenSSL+zope.interface
评论
共有 条评论