HS1101湿度计在数码管显示 程序问题

xixi_x 2017-11-24 09:19:21
用AT89C52单片机和NE555和HS1101设计的一个湿度计,现在的问题是NE555接的T0口读不到频率所以数码管不显示
对于定时器部分不太懂,所以写的也比较懵 感觉应该是内块错了但是不知道怎么改。另数码管似乎也有些问题....求帮看看
代码如下:
#include"at89x52.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

uchar code acLEDCS[]={0xef,0xdf,0xbf,0x7f}; //位码
uchar code acLedSegCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};//段码
uchar acLED[4]; //显示缓冲区
char cScanIndex; //位选指针0-3

uchar Humi; //要显示的湿度值
uchar cKey;
uchar cKeyCode;
uchar nOK;
bit bStill;


uint nTimer; //定时计数变量
uint nDelayKey; //键盘延时变量

union UniT
{
uint wetdata; //处理后的频率
uchar nFrequ[2]; //读取频率存放高低位
} uF;


void display()
{
Humi=34;
acLED[0] = 0x76;
acLED[1] = 0x40;
acLED[2] = acLedSegCode[Humi / 10 ];
acLED[3] = acLedSegCode[Humi % 10];
}
void tran() //频率转化为湿度值处理部分
{
//wetdata=wet0|(wet1<<8);//(wet0+wet1*256)
Humi=0;
if(wetdata<=6852)
{
if(6734<wetdata)
{
Humi=(6852-wetdata)*10/118;
}
else if(6618<wetdata)
{
Humi=(6734-wetdata)*10/116;
}
else if(6503<wetdata)
{
Humi=(6618-wetdata)*10/115;
}
else if(6388<wetdata)
{
Humi=(6503-wetdata)*10/115;
}
else if(6271<wetdata)
{
Humi=(6388-wetdata)*10/117;
}
else if(6152<wetdata)
{
Humi=(6271-wetdata)*10/119;
}
else if(6029<wetdata)
{
Humi=(6152-wetdata)*10/123;
}
else if(5901<wetdata)
{
Humi=(6029-wetdata)*10/128;
}
else if(5766<wetdata)
{
Humi=(5901-wetdata)*10/135;
}
else if(5623<wetdata)
{
Humi=(5766-wetdata)*10/143;
}
}
}



void main(void)
{
TMOD=0X15; //1位定时器工作在方式1,0为计数器工作在方式1
TL1=-18;//定时2.5ms
TR1=1;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(nOK==1)
{
tran();
display();
nOK=0;
}
}
}
void IntT0() interrupt 1
{
TH1=-18;
if(nTimer++ == 4000) //1s记一次
{
uF.nFrequ[0]=TH0;
uF.nFrequ[1]=TL0;
TL0=0;
TH0=0;
nOK=1;
TR0=1;
TR1=1;
EA=1;

}
P2 = acLEDCS[cScanIndex];
P0 = acLED[cScanIndex++];
cScanIndex &= 3;
display();
if(nDelayKey == 0)
{
cKey = P2 & 0x07;
if(cKey != 0x07)
nDelayKey = 100;
else
{
bStill = 0;
}
}
else
{
nDelayKey--;
if(nDelayKey == 0)
{
cKeyCode = P2 & 0x07;
if(cKey != cKeyCode)
{
cKeyCode = 0;
}
}
}


}
...全文
310 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2017-11-25
  • 打赏
  • 举报
回复
51单片机 本身就有定时器,还要什么555 51单片机定时器的使用和详细讲解
xixi_x 2017-11-24
  • 打赏
  • 举报
回复

27,372

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧