资源简介
这是基于STC12C5A60S单片机的一个成功测试程序 应用于1602 和DHT11温湿度 初学者使用

代码片段和文件信息
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^2;
sbit RW=P2^1;
sbit EN=P2^0;
sbit da=P2^3;
uchar code z1[]=“shidu:“;
uchar code z2[]=“wendu:“;
uchar b0b1b2b3b4b5b6b7b8b9;
uchar M0[5]={“0““0““0““0“};
uchar M[5]={“0““0““0““0“};
uchar S[2]={“0“}RJYD1; //J计时R判断1的正确与否D1数据的暂时存储空间 D1必须全局变量
void delayms(int a)
{
int ij;
for(i=0;i {
for(j=0;j<122;j++);
} //1.001ms
}
void delay5us()
{
uchar b;
b--;
b--;
b--;
b--;
b--; //5.00um
}
void delays(uint o)
{
uint ij;
for(i=0;i for(j=0;j<800;j++);
}
void wd(uchar d) //写数据
{
delayms(1);
RS=1;
RW=0;
EN=0;
P0=d;
delayms(1);
EN=1;
delayms(1);
EN=0;
}
void wc(uchar c) //写指令
{
delayms(1);
RS=0;
RW=0;
EN=0;
P0=c;
delayms(1);
EN=1;
delayms(1);
EN=0;
}
void lcdr()
{
delayms(1);
wc(0x38);
delayms(1);
wc(0x06); //每写一字符指针移动
delayms(1);
wc(0x0c); //开显示无光标
}
void lcd1()
{
uint i;
wc(0x80); //第一行最左边
delayms(1);
for(i=0;i<6;i++)
{
wd(z1[i]);
delayms(1);
}
wc(0x80+0x40);
for(i=0;i<6;i++)
{
wd(z2[i]);
delayms(1);
}
}
void D() //单次取值 D1是数据的存储空间
{
uint i;
for(i=0;i<8;i++)
{
J=2;
while((!da)&&J++); //2.043ms P10是1的时候出来
delay5us();
delay5us();
delay5us();
delay5us();
delay5us(); //45us(28-70)
R=0;
if(da) //如果低电平(50微秒低电平数据的标志)
R=1;
D1<<=1;
D1|=R;
J=2;
while((da)&&J++);
}
}
void CD() //传递 信号的主控制
{
delays(250);
da=0; //开始信号
delayms(19); //大于18ms 18.925ms
da=1;
J=2; //开始信号结束
while((da)&&J++); //主机拉高20us结束
if(!da) //有低电平响应可读取DHT11的响应信号p10=0出
{
delay5us();
delay5us();
delay5us();
delay5us();
delay5us();
delay5us();
delay5us();
delay5us();
delay5us();
delay5us(); //90us
J=2;
while((da)&&J++); //低电平出
D();
M[0]=D1;
D();
M[1]=D1;
D();
M[2]=D1;
D();
M[3]=D1;
D();
M[4]=D1;
da=1; //注意DHT11温度 湿度的小数部分为0(来自官方PDF)
}
Y=M0[0]+M0[1]+M0[2]+M0[3];
if(Y=M0[4])
{
M[0]=M0[0];
M[1]=M0[1];
M[2]=M0[2];
M[3]=M0[3];
}
}
void danzifu(int k) //转换成单字符
{
S[0]=M[k]/10;
S[1]=M[k]%10;
}
void lcd2() //显示温度数值
{
int i;
wc(0x80+7); //第一行
delayms(1);
danzifu(0);
for(i=0;i<2;i++)
{
wd(‘0‘+S[i]);
delayms(1);
}
wd(‘%‘);
wc(0x80+0x40+7);//第二行
danzifu(2);
for(i=0;i<2;i++)
{
wd(‘0‘+S[i]);
delayms(1);
}
wd(0xdf);
wd(‘c‘);
}
void main()
{
CLK_DIV=0x02;
lcdr();
lcd1();
while(1)
{
CD();
lcd2();
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-03-18 13:10 DHT11温湿度液晶1602显示\
文件 6376 2009-05-07 14:37 DHT11温湿度液晶1602显示\STARTUP.A51
文件 14064 2012-03-18 13:04 DHT11温湿度液晶1602显示\STARTUP.LST
文件 749 2012-03-18 13:04 DHT11温湿度液晶1602显示\STARTUP.OBJ
文件 19736 2012-03-18 13:04 DHT11温湿度液晶1602显示\text
文件 2891 2012-03-18 13:04 DHT11温湿度液晶1602显示\text.c
文件 2292 2012-03-18 13:04 DHT11温湿度液晶1602显示\text.hex
文件 41 2012-03-18 13:04 DHT11温湿度液晶1602显示\text.lnp
文件 8654 2012-03-18 13:04 DHT11温湿度液晶1602显示\text.LST
文件 15685 2012-03-18 13:04 DHT11温湿度液晶1602显示\text.M51
文件 21039 2012-03-18 13:04 DHT11温湿度液晶1602显示\text.OBJ
文件 567 2012-03-18 13:10 DHT11温湿度液晶1602显示\text.plg
文件 57112 2012-03-18 13:10 DHT11温湿度液晶1602显示\text.uvopt
文件 13395 2012-03-17 09:38 DHT11温湿度液晶1602显示\text.uvproj
文件 57762 2012-03-17 09:38 DHT11温湿度液晶1602显示\text_uvopt.bak
文件 0 2012-03-17 08:37 DHT11温湿度液晶1602显示\text_uvproj.bak
文件 2885 2012-03-17 08:49 DHT11温湿度液晶1602显示\新建文本文档.txt
- 上一篇:安徽县级shp文件2013
- 下一篇:xUtils实用工具包
相关资源
- MC68HC08单片机程序设计速成
- CW2015 51单片机程序
- 英飞凌单片机XC164系列单片机程序例程
- STM32单片机程序+原理图.rar
- 很好的MFRC500智能射频卡学习资料(内
- MC9S12XEP100单片机程序
- STM32f103多串口程序 32单片机程序 亲测
- 51单片机程序大全
- Silicon 单片机程序烧写软件
- AT89C51单片机程序以及原理图
- 基于STC12C5A60S2的波形发生器
- 手把手教你单片机程序框架吴坚鸿
- 义隆单片机程序烧写软件 UWriter
- AT89s52单片机程序
- keil下51单片机程序的烧写过程
- PIC18Fxxx单片机程序设计及应用
- 单片机串口协议程序+电机驱动程序
- 18B20温湿度传感器 51单片机程序
- 51单片机程序
- MLX90615无线测温51单片机程序
- 基于单片机的交通灯控制系统设计程
- 数字温度计用51单片机程序
- 基于STC12C5A60S2两轮平衡小车程序源码
- 基于STC12C5A16S2单片机电子水平仪设计
- 51单片机程序设计编程思路
- DHT11单片机程序及串口发送
- Modbus通信协议(内附RTU+51单片机程序
- HX711完整单片机程序+图
- VL53l0x的51单片机程序
- 马达测试单片机程序
评论
共有 条评论