⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 自己学习PIC单片机时改写的DS18b20程序
💻 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 + -