微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 时钟及温度用74hc164+74ls145数码管显示单片机程序

时钟及温度用74hc164+74ls145数码管显示单片机程序

时间:12-01 来源:互联网 点击:

{
init();//各外围元件及CPU初始化
delay10us(150);//进入大循环时的延时
while(1)

{

key();//检测功能键有无按下
if(setflag==0)//如果设定功能未进入,则显示实时时钟
{
timer();//时间运算函数
display(dateshu[0],dateshu[1],10,10,dateshu[2],dateshu[3],dateshu[4],dateshu[5]);//显示实时时钟
}
else//如果进入了功能设定函数
{
keyshu();//读取键值
display(dateshu[0],dateshu[1],10,seta+1,dateshu[2],dateshu[3],dateshu[4],dateshu[5]);//显示实时设定
}
if((dateshu[0]==3)&&(dateshu[1]%2==0))//每隔十秒温度读取显示一次
{uchar i;//显示延时用
dqrsr();//初始化
if(dqflag==1)//检测存在脉冲
{

dqwrite(0xcc);//跳过ROM操作

dqwrite(0x44);//开始温度转换
while(!DS1820DQ);//延时等待温度转换完毕
dqrsr();//初始化
if(dqflag==1)
{
uchar temper;//温度变量
dqwrite(0xcc);//跳过ROM操作
dqwrite(0xbe);//读取数据指令

temperl=dqread();//读取低字节温度值
temperh=dqread();//读取高字节温度值
temperl=temperl>>4;//移去低四位的温度值
temperh=temperh<4;//移去读回的符号号
temper=temperl+temperh;//将处理后的高字节温度和低字节温度值相加
for(i=250;i>0;i--)display(temper%10,temper/10,temper/100,10,10,10,10,10);//延时显示实时温度

}
}

}
}



}
void time0(void) interrupt 1
{

TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//定时器零重赋初值
tim++;
if(tim==20)
{
tim=0;//tim==20时,为50MS*20=1S
sec++;
}

}




Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top