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

📄 ds18b20main.c

📁 usblab usb程序开发实验 一个实例
💻 C
字号:
/*
   //************************************************************************* //
   //                  
   //
   //           COPYRIGHT (c)   2006 BY FOSHAN LX.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	ds18b20main.C
   // Author:		guobin
   // Created:		2006/04/20
   // Modified:
   // Revision:		2.0
   //
   //*************************************************************************
*/

//CPU:	P89LPC932A1		8K Flash		256+512Byte	RAM
//Crystal:12MHz	Fosc=12M
//DIVM=0		CCLK=Fosc=12M
//Single INS=6M=166ns

#include "hardware.h"  

unsigned char LLEDData,RLEDData;
bit	bdata	CLRFlag;

extern	UCHAR		ROM64Bit[8];
extern	UCHAR		RAM9Byte[9];
extern	RealTM	RealTimeTM;

UCHAR	TXDData[14];
UCHAR	TXDCount;
UCHAR	TXDLength;

extern	UCHAR	DS18B20_Start(void);
extern	void	DS18B20_ReadTM(void);
extern	void	DS18B20_WaitDQ(void);

void (*ISP)();

//P00(O)     P01(O)     P02(O)     P03(O)     P04(O)     P05(O)     P06(O)     P07(O)
//P10(O)     P11(I)      P12(O)     P13(I/O)  P14(I)      P15(I)      P16(O)     P17(O)
//P20(I/O)  P21(I/O)  P22(I/O)  P23(I/O)  P24(I/O)  P25(I/O)  P26(I/O)  P27(I/O)  
void	GPIO_Initial(void)
{
	P0M1=0x00;
	P0M2=0x00;
	P1M1=0x20;
	P1M2=0x00;
	P2M1=0x00;
	P2M2=0x00;
}

void	ISP_Initial(void)
{
	ISP=0x1F00;
	if(!Key)
		ISP();

	SSTAT=0xFA;
	BRGCON=0x00;
	AUXR1=0x40;
	SCON=0x50;
	BRGR1=0x04;			//cystal=12M		baund=9600(0x04d2)-----baund=cclk/((brgr1,brgr0)+16)
	BRGR0=0xD2;
	BRGCON=0x03;
}

/*
位段编码对应关系:
数码管位:a  b  c  d  e  f  g  dp
74HC164:  Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
Q对应输出1点亮相应的位,比如显示1---写74HC164数据01100000(0x60)  
*/
code UCHAR	LEDCode[]=				  //数码管编码表
{
0xFC,	//'0'
0x60,	//'1'
0xDA,	//'2'
0xF2,	//'3'
0x66,	//'4'
0xB6,	//'5'
0xBE,	//'6'
0xE0,	//'7'
0xFE,	//'8'
0xF6,	//'9'
};

/*
写74HC164函数
入口参数:写1个字节数据
出口参数:无
*/
void HC164(UCHAR Dat)
{
	UCHAR i;

	HC164_CLK=0;
	for(i=0;i<8;i++)
	{
	if(Dat&0x01)				//移为顺序:LSB位先移出
		HC164_AB=1;
	else
		HC164_AB=0;
	HC164_CLK=1;
	HC164_CLK=0;
	Dat>>=1;
	}
}

void ScanLEDOutput(void)
{
	NLEDR=NLEDL=1;
	if(CLRFlag)
	{
		CLRFlag=0;
		HC164(LEDCode[RLEDData]);
		NLEDR=0;
	}
	else
	{
		CLRFlag=1;
		HC164(LEDCode[LLEDData]);
		NLEDL=0;
	}
}

void T0_Initial(void)
{
	TMOD&=0xf0;
	TMOD|=0x01;
	TH0=0x8A;		 //5MS
	TL0=0xD0;
	TR0=1;
	ET0=1;
	EA=1;
}

void T0_IRQ(void)		interrupt 1
{
	TH0=0x8A;
	TL0=0xD0;

	ScanLEDOutput();
}

char putchar (char c)  {
  if (c == '\n')  {
    while (!TI);
    TI = 0;
    SBUF = 0x0d;                         /* output CR  */	
  }
  while (!TI);
  TI = 0;
  return (SBUF = c);
}


void	main(void)
{
	UCHAR i;
	UINT j;

	GPIO_Initial();

	ISP_Initial();

	T0_Initial();

	TI=1;
	printf("P89LPC932A1 DS18B20 USB BOARD\n");

	while(1)
	{
		for(j=0;j<60000;j++);
	
		EA=0;
		i=DS18B20_Start();
		EA=1;
	
		if(i)
		{
			printf("DS18B20 Initial OK!\n");
			printf("Read DS18B20 64Bit Rom Code\n");
			for(i=0;i<8;i++)
				printf("Rom[%bu]=%bx\n",i,ROM64Bit[i]);

			DS18B20_WaitDQ();
			EA=0;
			DS18B20_ReadTM();
			EA=1;
	
			LLEDData=RealTimeTM.ZhengShu/10;
			RLEDData=RealTimeTM.ZhengShu%10;
		}
	}
}







⌨️ 快捷键说明

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