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

📄 heat.c

📁 用pic18fxx8单片机和热敏电阻实现温度的测量
💻 C
字号:
//;*************************************************
//;* heat.c                                     **
//;*************************************************
//;* 本程序为热敏电阻输入处理模块程序
//;* 将温度值在LCD特定位置显示
//;* 占用I/O     RA1,RB5,RB4,RB3
//;* 使用RAM
//;* 程序包括:
//;*   - tempdeal    热敏电阻输入处理子程序
//;*   - heattab     温度值校准表
//;*
//;* 入口参数    无
//;* 出口参数    TempH,TempL  (温度值)
//;*************************************************
#include  <pic18.h>       // ;定义所用单片机的头文件
#define  TSRCLK  TRISD5
#define  TRCLK   TRISD4
#define  TSER    TRISD3
#define  SRCLK   RD5
#define  RCLK    RD4
#define  SER     RD3


void preled(void)
{
	TSRCLK=0;
	TRCLK=0;
	TSER=0;
	SRCLK=0;
	RCLK=0;
	SER=0;
}
void moniled (unsigned char led_data)
{
	//MONILED;     入口参数LED_DATA,需要为
  //;芯片全部在时钟上升沿完成动作,故需在低电平期间完成数据的变化。先发送高位
     unsigned char i;
     for(i=8;i!=0;i--)
	{
		if(led_data&0x80)
			SER=1;
		else
			SER=0;
		led_data<<=1;
		asm("nop");
		SRCLK=1;
		asm("nop");
		SRCLK=0;
  }
    RCLK=0;
    asm("nop");
    RCLK=1;
    RCLK=0;
}

void delay(unsigned int i)
{
	while(i)
    {   
		NOP();
        --i;
    }
 }

void iniheat458()
{
	TRISA1=1;//RA1输入
	ADCON1=0;
	ADCON0=0;
	ADCS0=1;//设置转换时钟
	CHS0=1;//设置通道为RA1
	PCFG2=1;//0100,设置各通道属性及参考电压为VDD,VSS
	ADON=1;//使能AD
}

unsigned char tempdeal()
{  
	const char  heattab[255]={
								0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,
								6,6,6,7,7,7,8,8,8,9,9,0xa,0xa,0xb,0xb,0xc,0xc,
								0xd,0xd,0xe,0xe,0xf,0xf,0xf,0x10,0x10,0x10,
								0x11,0x11,0x12,0x12,0x12,0x13,0x13,0x14,0x14,0x14,
								0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x18,0x18,
								0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,
								0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x20,0x20,
								0x21,0x21,0x22,0x22,0x23,0x23,0x24,0x24,0x25,0x25,
								0x26,0x26,0x27,0x28,0x29,0x29,0x2a,0x2a,0x2b,0x2b,
								0x2c,0x2d,0x2e,0x2f,0x30,0x32
							};
  unsigned char temp;
  GODONE=1;
  while(GODONE);
  ADRESH-=0x3A;
  temp=heattab[(ADRESH)];
  return temp;
}

void main()
{
	const char ledtab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };		//定义依次显示"0"~"9"的数组元素
	unsigned char temp,temph,templ;

	preled();
	iniheat458();
	while(1)
	{
		temp=tempdeal();
		temph=temp/10;
		templ=temp%10;
		moniled(ledtab[templ]);
		moniled(ledtab[temph]);
		delay(65535);//延时1S
		delay(65535);
	}
}












⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -