三、实验结果分析(含程序、数据记录及分析和实验总结等,可附页):
1、51系列单片机直流电机闭环调速实验程序
/*-------------------------------------------------------------------------- REG52.H
Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __REG52_H__ #define __REG52_H__
/* BYTE Registers */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99;
/* 8052 Extensions */ sfr T2CON = 0xC8; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
/* BIT Registers */ /* PSW */
sbit CY = PSW^7; sbit AC = PSW^6; sbit F0 = PSW^5; sbit RS1 = PSW^4; sbit RS0 = PSW^3; sbit OV = PSW^2;
sbit P = PSW^0; //8052 only
/* TCON */
sbit TF1 = TCON^7; sbit TR1 = TCON^6; sbit TF0 = TCON^5; sbit TR0 = TCON^4; sbit IE1 = TCON^3; sbit IT1 = TCON^2; sbit IE0 = TCON^1; sbit IT0 = TCON^0;
/* IE */
sbit EA = IE^7;
sbit ET2 = IE^5; //8052 only sbit ES = IE^4; sbit ET1 = IE^3; sbit EX1 = IE^2; sbit ET0 = IE^1; sbit EX0 = IE^0;
/* IP */
sbit PT2 = IP^5; sbit PS = IP^4; sbit PT1 = IP^3; sbit PX1 = IP^2; sbit PT0 = IP^1; sbit PX0 = IP^0;
/* P3 */
sbit RD = P3^7; sbit WR = P3^6;
sbit T1 = P3^5; sbit T0 = P3^4; sbit INT1 = P3^3; sbit INT0 = P3^2; sbit TXD = P3^1; sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7; sbit SM1 = SCON^6; sbit SM2 = SCON^5; sbit REN = SCON^4; sbit TB8 = SCON^3; sbit RB8 = SCON^2; sbit TI = SCON^1; sbit RI = SCON^0;
/* P1 */
sbit T2EX = P1^1; // 8052 only sbit T2 = P1^0; // 8052 only /* T2CON */
sbit TF2 = T2CON^7; sbit EXF2 = T2CON^6; sbit RCLK = T2CON^5; sbit TCLK = T2CON^4; sbit EXEN2 = T2CON^3; sbit TR2 = T2CON^2; sbit C_T2 = T2CON^1; sbit CP_RL2 = T2CON^0;
#endif
#ifndef WENDU_H_ #define WENDU_H_
#define u8 unsigned char #define u16 unsigned int
#define PULSE 200
//////LCD/////// sbit RS = P2^5; sbit RW = P2^6; sbit EN = P2^7;
sbit LED = P3^0; sbit ENA = P3^7; sbit IN2 = P3^6; sbit IN1 = P3^5;
void delay_ms(u16 z);
void LCD_WriteData(u8 Dat); void LCD_WriteCOM(u8 com);
void Show_Num(u8 x,u8 y,u8 n,u16 num); void Show_fNum(u8 x,u8 y,u16 num); void LCD_Init(void); void key_scan(void);
//void key_scan(void);
extern u16 read_tlc2543(u8 port);
#endif
#ifndef TLC2543_H_ #define TLC2543_H_
//////TLC2543//// sbit SDO = P2^0; sbit SDI = P2^1; sbit CS = P2^2; sbit CLK = P2^3; sbit EOC = P2^4;
//u16 read_tlc2543(u8 port); #define u8 unsigned char #define u16 unsigned int
u16 read_tlc2543(u8 port); u8 AD_deal(void);
#endif
#include
//n为数字长度num小于等于65535 //#include\
void delay_us(u16 z) {
u16 i;
for(i=z;i>0;i--);; }
u16 read_tlc2543(u8 port) {
static u8 PORT = 0; u8 Temp,i,k=0; u16 AD_value=0; Temp = port; CS = 1; CLK = 0; delay_us(1);
Temp<<=4; CS = 0; while(1) { for(i=0;i<8;i++) { CLK = 0; if(Temp&0x80) SDI = 1; else SDI = 0; AD_value<<=1; if(SDO) AD_value |= 0x01; CLK = 1; delay_us(2); Temp<<=1; } for(i=8;i<12;i++) { CLK = 0;