1、毕业设计附录附 录附录.1 主机程序 :/*-AT89X52.HHeader file for the low voltage Flash Atmel AT89C52 and AT89LV52.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _AT89X52_H_#define _AT89X52_H_/*-Byte Registers-*/sfr P0 = 0x80;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0
2、x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr P1 = 0x90;sfr SCON = 0x98;sfr SBUF = 0x99;sfr P2 = 0xA0;sfr IE = 0xA8;sfr P3 = 0xB0;sfr IP = 0xB8;sfr T2CON = 0xC8;sfr T2MOD = 0xC9;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;s
3、fr TH2 = 0xCD;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr WDTRST = 0xA6;/看门狗寄存器/*-P0 Bit Registers-*/sbit P0_0 = 0x80;sbit P0_1 = 0x81;sbit P0_2 = 0x82;sbit P0_3 = 0x83;sbit P0_4 = 0x84;sbit P0_5 = 0x85;sbit P0_6 = 0x86;sbit P0_7 = 0x87;/*-PCON Bit Values-*/#define IDL_ 0x01#define STOP_ 0x02#def
4、ine PD_ 0x02 /* Alternate definition */#define GF0_ 0x04#define GF1_ 0x08#define SMOD_ 0x80/*-TCON Bit Registers-*/sbit IT0 = 0x88;sbit IE0 = 0x89;sbit IT1 = 0x8A;sbit IE1 = 0x8B;sbit TR0 = 0x8C;sbit TF0 = 0x8D;sbit TR1 = 0x8E;sbit TF1 = 0x8F;/*-TMOD Bit Values-*/#define T0_M0_ 0x01#define T0_M1_ 0x
5、02#define T0_CT_ 0x04#define T0_GATE_ 0x08#define T1_M0_ 0x10#define T1_M1_ 0x20#define T1_CT_ 0x40#define T1_GATE_ 0x80#define T1_MASK_ 0xF0#define T0_MASK_ 0x0F/*-P1 Bit Registers-*/sbit P1_0 = 0x90;sbit P1_1 = 0x91;sbit P1_2 = 0x92;sbit P1_3 = 0x93;sbit P1_4 = 0x94;sbit P1_5 = 0x95;sbit P1_6 = 0x
6、96;sbit P1_7 = 0x97;sbit T2 = 0x90; /* External input to Timer/Counter 2, clock out */sbit T2EX = 0x91; /* Timer/Counter 2 capture/reload trigger & dir ctl */*-SCON Bit Registers-*/sbit RI = 0x98;sbit TI = 0x99;sbit RB8 = 0x9A;sbit TB8 = 0x9B;sbit REN = 0x9C;sbit SM2 = 0x9D;sbit SM1 = 0x9E;sbit SM0
7、= 0x9F;/*-P2 Bit Registers-*/sbit P2_0 = 0xA0;sbit P2_1 = 0xA1;sbit P2_2 = 0xA2;sbit P2_3 = 0xA3;sbit P2_4 = 0xA4;sbit P2_5 = 0xA5;sbit P2_6 = 0xA6;sbit P2_7 = 0xA7;/*-IE Bit Registers-*/sbit EX0 = 0xA8; /* 1=Enable External interrupt 0 */sbit ET0 = 0xA9; /* 1=Enable Timer 0 interrupt */sbit EX1 = 0
8、xAA; /* 1=Enable External interrupt 1 */sbit ET1 = 0xAB; /* 1=Enable Timer 1 interrupt */sbit ES = 0xAC; /* 1=Enable Serial port interrupt */sbit ET2 = 0xAD; /* 1=Enable Timer 2 interrupt */sbit EA = 0xAF; /* 0=Disable all interrupts */*-P3 Bit Registers (Mnemonics & Ports)-*/sbit P3_0 = 0xB0;sbit P
9、3_1 = 0xB1;sbit P3_2 = 0xB2;sbit P3_3 = 0xB3;sbit P3_4 = 0xB4;sbit P3_5 = 0xB5;sbit P3_6 = 0xB6;sbit P3_7 = 0xB7;sbit RXD = 0xB0; /* Serial data input */sbit TXD = 0xB1; /* Serial data output */sbit INT0 = 0xB2; /* External interrupt 0 */sbit INT1 = 0xB3; /* External interrupt 1 */sbit T0 = 0xB4; /*
10、 Timer 0 external input */sbit T1 = 0xB5; /* Timer 1 external input */sbit WR = 0xB6; /* External data memory write strobe */sbit RD = 0xB7; /* External data memory read strobe */*-IP Bit Registers-*/sbit PX0 = 0xB8;sbit PT0 = 0xB9;sbit PX1 = 0xBA;sbit PT1 = 0xBB;sbit PS = 0xBC;sbit PT2 = 0xBD;/*-T2
11、CON Bit Registers-*/sbit CP_RL2= 0xC8; /* 0=Reload, 1=Capture select */sbit C_T2 = 0xC9; /* 0=Timer, 1=Counter */sbit TR2 = 0xCA; /* 0=Stop timer, 1=Start timer */sbit EXEN2= 0xCB; /* Timer 2 external enable */sbit TCLK = 0xCC; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */sbit RCLK = 0xCD; /
12、* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */sbit EXF2 = 0xCE; /* Timer 2 external flag */sbit TF2 = 0xCF; /* Timer 2 overflow flag */*-T2MOD Bit Values-*/#define DCEN_ 0x01 /* 1=Timer 2 can be configured as up/down counter */#define T2OE_ 0x02 /* Timer 2 output enable */*-PSW Bit Registers-*
13、/sbit P = 0xD0;sbit FL = 0xD1;sbit OV = 0xD2;sbit RS0 = 0xD3;sbit RS1 = 0xD4;sbit F0 = 0xD5;sbit AC = 0xD6;sbit CY = 0xD7;/*-Interrupt Vectors:Interrupt Address = (Number * 8) + 3-*/#define IE0_VECTOR 0 /* 0x03 External Interrupt 0 */#define TF0_VECTOR 1 /* 0x0B Timer 0 */#define IE1_VECTOR 2 /* 0x1
14、3 External Interrupt 1 */#define TF1_VECTOR 3 /* 0x1B Timer 1 */#define SIO_VECTOR 4 /* 0x23 Serial port */#define TF2_VECTOR 5 /* 0x2B Timer 2 */#define EX2_VECTOR 5 /* 0x2B External Interrupt 2 */#endif附录.2从机程序1:#include /头文件#include /包含_nop_()函数定义的头文件#include sfr WDTRST=0xA6;#define uchar unsigne
15、d char /宏定义#define schar signed char#define uint unsigned int#define sint signed int#define ulong unsigned long#define slong signed long #define HIGH 1#define LOW 0#define DISABLE EA=0; /关所有中断#define ENABLE EA=1; /开所有中断 #define TXEN P3_4=HIGH; P3_5=HIGH;/发送使能#define RXEN P3_4=LOW; P3_5=LOW;/接收使能#def
16、ine REG_BANK_0 0 /寄存器组0#define REG_BANK_1 1 /寄存器组1#define REG_BANK_2 2 /寄存器组2#define REG_BANK_3 3 /寄存器组 /中断入口地址#define INTERRUPT_INT0 0 /0x0003#define INTERRUPT_T0 1 /0x000b#define INTERRUPT_INT1 2 /0x0013#define INTERRUPT_T1 3 /0x001b#define INTERRUPT_UART 4 /0x0023#define TIME_10MS_12MHZ 10000 /12
17、MHZ时,定时10mS#define TIME_25MS_12MHZ 25000#define TIME_50MS_12MHZ 50000#define TIME_10MS_11MHZ 9216 /11MHZ时,定时10mS#define TIME_25MS_11MHZ 23040#define TIME_50MS_11MHZ 46080 #define BAUD9600_12M 0xfd /波特率为9600时,定时器初始化的初值#define BAUD9600_11M 0xfdsbit BEEP=P24; /蜂鸣器报警驱动uchar flag=0; /DS18B20读取温度标志uchar T
18、empL=0; /储存暂存器的温度低位uchar TempH=0; /储存暂存器的温度高位uchar TempN=0; /储存温度的整数部分uchar TempD=0; /储存温度的小数部分uchar Temperature=0;uchar wenduH=99; /温度上限值/uchar UpTempBuffer14 =0x53,0x31,0x5f,0x55,0x54,0x3a,0x20,0x33,0x38,0x20,0x20,0xdf,0x43,0; /显示从机1温度报警上限值S1_UT: 38 0C 14个字符 /uchar CurrentTempBuffer14=0x53,0x31,0x
19、5f,0x43,0x54,0x3a,0x20,0x20,0x20,0x2e,0x20,0xdf,0x43,0; /显示从机1当前温度值 S1_CT: *.*0C 14个字符 uchar code table= 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90;/,0x88,0x83, /0xc6,0xa1,0x86,0x87 uchar code table1=0x89,0x86,0xc7,0xc0;uchar temp_zshi=0,temp_zge=0,temp_xshi=0,temp_xge=0;/定义显示温度的整数的十位、个位,小数
20、部分的第1位,第2位sbit shudian=P07 ;uchar addr=0x00; /本机地址/* 延时子程序 x*0.14MS*/void delay(uchar x) /x*0.14MS uchar i; while(x-) for (i = 0; i13; i+) WDTRST = 0x1E; /喂狗 WDTRST = 0xE1; /* 延时子程序 ms毫秒*/void delayms(uint ms) uchar t; while(ms-) for(t = 0; t 120; t+) WDTRST = 0x1E; /喂狗 WDTRST = 0xE1; /* * 蜂鸣器响一声 */void beep() uchar i; for (i=0;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); WDTRST = 0x1E; /喂狗 WDTRST = 0xE1; return(dat);/*函数功能:向DS18B20写入一个字节数据入口参数:dat*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1