标题:
将模拟量用发光二极管的亮与灭显示
[打印本页]
作者:
wjx虾饺
时间:
2018-6-24 23:58
标题:
将模拟量用发光二极管的亮与灭显示
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define out P0
uchar seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit smg1=P2^0;
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit DQ=P3^7;
void delay5(uchar);
void init_ds18b20(void);
uchar readbyte(void);
void writebyte(uchar);
uchar retemp(void);
void main(void)
{
uchar i,temp;
delay5(1000);
while(1)
{
temp=retemp();
temp=temp&0xff;
if(temp/128==1)
{
for(i=0;i<10;i++)
{
temp=!temp+1;
temp=temp|0x80;
out=0xbf;
smg1=0;
smg2=1;
smg3=0;
delay5(1000);
out=seg[temp/10];
smg1=0;
smg2=0;
smg3=1;
delay5(1000);
out=seg[temp%10];
smg1=1;
smg2=0;
smg3=0;
}
}
else
{
for(i=0;i<10;i++)
{
out=seg[temp/100];
smg1=0;
smg2=1;
smg3=0;
delay5(1000);
out=seg[(temp/10)%10];
smg1=0;
smg2=0;
smg3=1;
delay5(1000);
out=seg[temp%10];
smg1=1;
smg2=0;
smg3=0;
delay5(1000);
}
}
}
}
void delay5(uchar n)
{
do
{
_nop_();
_nop_();
_nop_();
n--;
}
while(n);
}
void init_ds18b20(void)
{
uchar x=0;
DQ=0;
delay5(120);
DQ=1;
delay5(16);
delay5(80);
}
uchar readbyte(void)
{
uchar i=0;
uchar date=0;
for(i=8;i>0;i--)
{
DQ=0;
delay5(1);
DQ=1;
date>>=1;
if(DQ)
date|=0x80;
delay5(11);
}
return(date);
}
void writebyte(uchar dat)
{
uchar i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay5(12);
DQ=1;
dat>>=1;
delay5(5);
}
}
uchar retemp(void)
{
uchar a,b,tt;
uint t;
init_ds18b20();
writebyte(0xcc);
writebyte(0x44);
init_ds18b20();
writebyte(0xcc);
writebyte(0xbe);
a=readbyte();
b=readbyte();
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
return(tt);
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1