📄 2272js.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit js=P1^5;
extern inttilcs();
extern void displayOneChar(unsigned char, unsigned char, unsigned char);
/*---------------------------------变量列表------------------------------------*/
uchar m,n,x,y,bc[6];
uint wendu;
/***************** 整数型转字符型方便打印*************************************/
void IntToStr( uint t, unsigned char *sc, unsigned char n)
{
unsigned char a[5]; char i, j;
a[0]=(t/10000)%10; //取得整数值到数组
a[1]=(t/1000)%10;
a[2]=(t/100)%10;
a[3]=(t/10)%10;
a[4]=(t/1)%10;
for(i=0; i<5; i++) //转成ASCII码
a[i]=a[i]+'0';
for(i=0; a[i]=='0' && i<=3; i++);
for(j=5-n; j<i; j++) //填充空格
{ *sc=' '; sc++; }
for(; i<5; i++)
{ *sc=a[i]; sc++; } //加入有效的数字
*sc='\0';
}
/*---------------------------------初始化子程序--------------------------------*/
void init(void)
{
EA=1; //打开CPU总中断请求
TMOD=0x01; //定时0工作方式1
TH0=0;
TL0=0;
TF0=0;
TR0=0;
}
/*-------------------------------250us精确延时---------------------------------*/
void delay_500(void)
{
uchar i,j;
for(i=0x0A;i>0;i--)
for(j=0x07;j>0;j--);
}
/*-------------------------外部中断0子程序(解码程序)---------------------------*/
void jieshou(void)
{
uchar i,buf[17];
uint k;
kk: while(js==1); //排除高电平的错读
while(js==0); //等待低电平
TL0=0;
TR0=1;
while(js==1); //等待高电平
TR0=0;
if(TL0>27||TL0<20)
goto kk;
// displayOneChar(0,0,'1');
for(i=0;i<16;i++)
{
TL0=0;
TF0=0;
while(js==0);
TR0=1;
while(js==1); //等待高电平
TR0=0;
buf[i]=TL0;
}
// displayOneChar(1,0,'2');
for(i=0;i<16;i++)
{
if(buf[i]<10&&buf[i]>4)
k=0;
else
if(buf[i]<16&&buf[i]>10)
k=1;
else
goto kk;
wendu=wendu<<1;
wendu=wendu|k;
/*
qq=buf[i]/10;
pp=buf[i]%10;
if(m>14)
{
m=0;
n=~n;
}
displayOneChar(m,n,'0'+qq);
displayOneChar(m+1,n,'0'+pp);
m=m+3;
*/
}
// if(wendu==0x1000) displayOneChar(2,0,'3');
// displayOneChar(2,0,'4');
}
/******************显示当前温度********************************************/
void diswendu()
{
IntToStr(wendu,&bc[0],5);
displayOneChar(0,1,bc[0]);
displayOneChar(1,1,bc[1]);
displayOneChar(2,1,bc[2]);
displayOneChar(3,1,bc[3]);
displayOneChar(4,1,'.');
displayOneChar(5,1,bc[4]);
displayOneChar(6,1,0xdf);
displayOneChar(7,1,'c');
}
/*-----------------------------主程序入口--------------------------------------*/
main()
{
uchar i,j;
// uchar x_3,x_4,x_5;
delay_500();
inttilcs();
init();
while(1)
{
jieshou();
diswendu();
//displayOneChar(0,0,'0');
for(i=0;i<160;i++)
for(j=0;j<160;j++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -