📄 main.c
字号:
#include"DS18B20.h"
const uchar table[]={0x3F,0X06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6f,0x00,0x40,0x39};//数码管译码表
///* 共阴LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" "c"*/
const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};//数码管译码表带小数点
__CONFIG(0x3B31);
///*******************DS18B20外部变量****************************/
extern uchar temp_data[2]; // 读出温度暂放
extern uchar display[5];//显示单元数据,共4个数据,一个运算暂存用
extern uchar flag;//标志
extern uchar doth,dotl;//显示小数部分
///*******温度小数部分用查表法**********//
extern const uchar ditab[16];
uchar intnum;
void show(uchar j,uchar k)//数码管动态位显示,j为显示的数值,k为显示的位
{
PORTD=table[j]; //PD口做数据口段选
PORTA=~(1<<(k)); //PA口低位做位选
DelayMs(1); //延时1毫秒
PORTA=0XFF;
}
void init()
{
TRISA=0;//输出
PORTA=0XFF;
TRISD=0;//输出
PORTD=0;
OPTION=0x04;//定时器零32分频
INTCON=0xa0;
}
void dig_tube(uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5)
{
show(num0,0);
show(num1,1);
show(num2,2);
show(num3,3);
show(num4,4);
show(num5,5);
}
void main()
{
uint h;
init();
for(h=0;h<100;h++)
{
dig_tube(8,8,8,8,8,8);
NOP();
}
DS18B20_RESET(); //开机先转换一次
DS18B20_WRITE_BYTE(0xCC); // Skip ROM
DS18B20_WRITE_BYTE(0x44); // 发转换命令
for(h=0;h<500;h++) //开机显示“888888”2秒
{
dig_tube(8,8,8,8,8,8);
NOP();
}
while(1)
{
DS18B20_READ_TEMP();
work_temp();
dig_tube(display[3],display[2],display[1],doth,dotl,12);
}
}
void interrupt time0()
{
T0IF=0;
intnum++;
if(intnum==5)
{
intnum=0;
//dig_tube(display[3],display[2],display[1],doth,dotl,12);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -