2021电气自动化(单片机方面)毕业论文
时间:2021-03-07 11:14:58 来源:写作资料库 本文已影响 人
{
ucharj;
for(j=0;j<8;j++)
{
PORTB=1<<j;
if(Flag)PORTD=fuhao1[j];
elsePORTD=fuhao0[j];
DelayMS(1);
PORTB=0x00;
PORTD=0xff;
}
TCNT0=0x00;// 重新开始
}
voidDis_Init(void)
{
uchari;
DDRC=0xff;
DDRA=0xff;
DDRD=0xff;
PORTC=0xf0;
for(i=0;i<10;i++)
{
PORTA=DISCODE[9-i];
DelayMS(100);
}
TIMSK=0x01;
TCNT0=0x00;
SREG=0x80;
TCCR0=0x04;//512 分频
}
voidDis_Data(uchardisdata)
{
chardisbuf[4],i,j;
SREG=0x00;
disbuf[0]=disdata/100;
disbuf[1]=(disdata/10)%10;
disbuf[2]=disdata%10;
disbuf[3]=Point;
for(i=0;i<4;i++)
{
PORTC=order[i];
PORTA=DISCODE[disbuf[i]];
if(i==2)PORTA|=0x80;// 显示小数点
DelayMS(2);
PORTA=0x00;
DelayMS(1);
}
SREG=0x80;
}
voidgettemp(void)
{
chartemph=0,templ=0,TempL=0;
while(Check18B20());// 验证初始化成功
Write18B20(0xcc);
Write18B20(0x44); // 启动转换
//DelayMS(500); //750MS
while(Check18B20());// 成功
Write18B20(0xcc);
Write18B20(0xbe); //
读取温度值
templ=Read18B20();
temph=Read18B20();
while(Check18B20());
Temp=(templ>>4)|(temph<<4);
TempL=templ&0x0c;// 小数位
Point=(TempL>>3)*5+((TempL>>2)&0x01)*2;
Flag=!(Temp&0x80);
}
voidmain(void)
{
Dis_Init();
while(1)
{
gettemp();
Dis_Data(Temp);
}