复制粘贴然后运行,不用创建别的文件。
第五届比较难。
#include <STC15F2K60S2.H>
#include <intrins.h>
unsigned char tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char yi,er,san,si,wu,liu,qi,ba;
unsigned char wendu;
bit a=0;
unsigned char panding;
unsigned char shangxian=30,xiaxian=20;
unsigned char shijian,b,c=0,d=0;
void Delay500us();
void Delay80us();
void Timer0Init(void);
void chushihua1(void)
{
P14=0;
Delay500us();
P14=1;
Delay500us();
}
void Delay500us() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 6;
j = 93;
do
{
while (--j);
} while (--i);
}
void xiechengxu(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
P14=0;
P14=dat&0X01;
Delay80us();
P14=1;
dat=dat>>1;
}
}
void Delay80us() //@11.0592MHz
{
unsigned char i, j;
_nop_();
i = 1;
j = 217;
do
{
while (--j);
} while (--i);
}
unsigned char duchengxu(void)
{
unsigned char i,dat;
for(i=0;i<8;i++)
{
P14=0;
dat=dat>>1;
P14=1;
if(P14==1)
{
dat=dat|0x80;
}
Delay80us();
}
return dat;
}
unsigned char zhuchengxu(void)
{
unsigned char di,gao,shuju;
chushihua1();
xiechengxu(0XCC);
xiechengxu(0X44);
Delay500us();
chushihua1();
xiechengxu(0XCC);
xiechengxu(0XBE);
Delay500us();
di=duchengxu(); //先读取低位
gao=duchengxu(); //在读取高位
shuju=((gao*256+di)>>4);
return shuju;
}
void Delayms(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
void chushihua()
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X00;P2=0XFF;P0=0XFF;
}
void shumaguan1(unsigned char yi,unsigned char er)
{
P2=0XC0;
P0=0X01;
P2=0XFF;
P0=tab[yi];
Delayms(1);
P2=0XC0;
P0=0X02;
P2=0XFF;
P0=tab[er];
Delayms(1);
}
void shumaguan2(unsigned char san,unsigned char si)
{
P2=0XC0;
P0=0X04;
P2=0XFF;
P0=tab[san];
Delayms(1);
P2=0XC0;
P0=0X08;
P2=0XFF;
P0=tab[si];
Delayms(1);
}
void shumaguan3(unsigned char wu,unsigned char liu)
{
P2=0XC0;
P0=0X10;
P2=0XFF;
P0=tab[wu];
Delayms(1);
P2=0XC0;
P0=0X20;
P2=0XFF;
P0=tab[liu];
Delayms(1);
}
void shumaguan4(unsigned char qi,unsigned char ba)
{
P2=0XC0;
P0=0X40;
P2=0XFF;
P0=tab[qi];
Delayms(1);
P2=0XC0;
P0=0X80;
P2=0XFF;
P0=tab[ba];
Delayms(1);
}
void juzhenjianpan()
{
P44=0;P42=1;P34=1;P35=1;
if((P42==1)&&(P34==1)&&(P35==1))
{
if(P30==0)
{
Delayms(5);
if(P30==0)
{
while(!P30);
}
if(panding==0)
{
shangxian=shangxian+0;
panding++;
}
else if(panding==1)
{
shangxian=shangxian;
panding++;
}
else if(panding==2)
{
panding++;
xiaxian=xiaxian+0;
}
else if(panding==3)
{
xiaxian=xiaxian;
}
}
if(P31==0)
{
Delayms(5);
if(P31==0)
{
while(!P31);
}
if(panding==0)
{
shangxian=shangxian+30;
panding++;
}
else if(panding==1)

本文介绍了第五届蓝桥杯单片机省赛的程序实现,包括温度读取、显示及按键控制的细节,涉及P14口的控制、延时函数和温度传感器的读写操作。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



