文档库 最新最全的文档下载
当前位置:文档库 › 杭电 短学期 单片机 实验报告 2012

杭电 短学期 单片机 实验报告 2012

杭电 短学期 单片机 实验报告 2012
杭电 短学期 单片机 实验报告 2012

自动化学院

单片机课程设计报告

专业电子信息技术及仪器班级09062912

学号09061939

学生姓名瓦达喜

指导教师

学期大四上

完成日期2012.9.9

一、目的

智能仪表课程设计是一项综合性的专业实践活动,目的是让学生将所学的基础理论和专业知识运用到具体的工程实践中,以培养学生综合运用知识能力、实际动手能力和工程实践能力,为此后的毕业设计打下良好的基础。

二、任务

本次智能仪表课程设计的任务是设计一个温度控制器,并完成相关的编程工作。

基本任务是利用AT89C51单片机、ADC0809模数转换器等芯片设计一个具有温度测量显示和开关控制输出的装置。

三、温度控制系统具体设计要求

电路设计、软件编程的功能和要求:

1)该装置要求利用Proteus仿真软件完成软件编程与实现。

2)用6只共阴极的八段数码管来分别显示工作状态、设定温度和实际温度温度。如下图所示:

实际温度

设定温度

工作状态:“1”“1”表示开机

“0”“0”表示关机3)用3只按钮来分别作为开机/关机键、温度设定上升键和下降键。

4)用1只LED发光二极管来表示加热器开关量控制输出,所有发光二极管均要求用2003达林顿管或三极管放大驱动。

5)温度设定范围0~99℃,在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5℃时,加热器控制输出“开”。

6)上电后,自动显示关机状态、设定温度50℃和实际室内温度,这时用户可以设定温度进行设定,但只有在按下启动/关闭键后,控制器正式工作;

在运行期间,若对温度状态进行设定,则控制器按新设定开始。若关机后

(非断电)重新启动控制器,则自动进入上次关机前的设定状态。

7)温度传感器采用AT502热敏电阻(Proteus软件中用滑动变阻器代替)。

8)完成电路原理图设计,请注意:只设计本课题要求相关的电路;

9)完成2)~ 5)所规定功能的软件流程图和编程工作;

10)完成软硬件调试

四、硬件设计部分

1、系统设计整体框架图如图4-1所示

图4-1 温度控制系统框架图

本系统总体框架如图4-1所示,主要是基于AT89C51单片机和其他四个模块组成,四个模块即:LED显示模块、加热器控制模块、按键扫描/处理模块和基于ADC0808芯片的数据采集模块。

AT89C51单片机将通过ADC0808数据采集模块采集到的数据经过相应的处理送往LED显示模块进行显示。

数据采集模块:系统要求对温度进行实时采样、控制、显示,利用芯片ADC0808对温度采样,用一路模拟通道采集信号,就能满足要求。由于温度的变化在短时间内不是非常明显,没必要一直都要采集温度值,因此本系统采用内部中断0产生定时中断定时的对温度值进行采集,并送显示。

按键扫描/处理模块:通过外部中断来实现,即有中断产生就去执行按键相应程序(开/关加热器、温度设置值上调、温度设置值下调)。

加热器控制模块:在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5℃时,加热器控制输出“开”。实时的控制温度的变化使得温度值在设定值附近,以满足系统的设计

要求。

1-1 ADC0809与MCS-51系列单片机的接口方法

ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本系统中选用中断接口方式。

由于ADC0809无片内时钟,时钟信号可由单片机I/0口产生。ADC0809内部设有地址锁存器,所以通道地址由P0口的低3位直接与ADC0809的A 、B 、C 相连。通道基本地址为0000H ~0007H 。其对应关系如表4-1-1所示。

表4-1-1 0809输入通道地址

控制信号:将P2.7作为片选信号,在启动A/D 转换时,由单片机的写信号和P2.7控制ADC 的地址锁存和启动转换。由于ALE 和START 连在一起,因此ADC0809在锁存通道地址的同时也启动转换。

在读取转换结果时,用单片机的读信号RD 和P2.7引脚经或非门后,产生正脉冲作为OE 信号,用以打开三态输出锁存器。 其接口电路如图4-3-1 数据采集电路所示。 2、AT89C51晶振电路和复位电路 2-1 晶振电路原理图 如图4-2-1所示

图4-2-1

内部振荡器方式

地址码

输入通道

C B A 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1

1

1

IN7

c、2c构成并联

内部方式时钟电路如图4-2-1所示。外接晶体以及电容

1谐振电路,接在放大器的反馈回路中,内部振荡器产生自激振荡,一般晶振可在2~12MHz之间任选。对外接电容值虽然没有严格的要求,但电容的大小多少会影响振荡频率的高低、振荡器的稳定性、起振的快速性和温度的稳

c和2c通常选30pF左右;外接陶瓷谐振器时,1c和2c 定性。外接晶体时,

1

的典型值为47pF。

2-2 上电外部复位电路如图4-2-2所示

图4-2-2

上电外部复位电路

单片机的复位是靠外部电路实现的。无论是HMOS还是CHMOS型,在振荡器正运行的情况下,RST引脚保持二个机器周期以上时间的高电平,系统复位。在RST端出现高电平的第二个周期,执行内部复位,以后每个周期复位一次,直至RST端变低。本文采用上电外部复位电路,如图4-2-2所示,相关参数为典型值。

3、数据采集模块

3-1 原理图如图4-3-1所示

图4-3-1 数据采集电路

3-2 数据采集模块工作原理

数据采集电路就是将滑动变阻器上的阻值通过IN0读入经过AD转换在OUT1--OUT8输出高低电平。我们的电阻电阻阻值是1千欧,从0到100%显示,我们的输出端有256种显示方式。00h--0ffh。我们在滑动变阻器前面加上一个串联电阻阻值为1.56K,这样子我们滑动阻值的1%就对应输出端的二进制数00000001B,这样子二进制转换成相应的十进制在建立表格方面也会有相应的简便。当P2.6,WR置低位时,ALE跟OE(输出使能端)置高位,start端也至高位,这时INT0从滑动变阻器读进来的阻值通过AD转换,在输出端形成高低电平输入单片机的P1端,这就形成了对电阻值的数据采样。

温度表的建立:

温度标的建立就是通过滑动变阻器的改变电阻值来对OUT输出端端口的高低电平的改变来对应相应的温度值。比如:滑动变阻器上显示的是12%,那么OUT端口显示的二进制代码是00001100B,通过对端口的比较:if (adcv==buddle[i])adcv即为端口的二进制数。然后对变量realtep赋值。

这样再调用显示函数,在数码管上就显示12.

uchar code fm []={0

,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 ,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,

48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, 71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93, 94,95,96,97,98} ;

uchar code buddle[]={0x00,0x01,0x02 ,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0 b,0x0c,0x0d,0x0e,0x0f,

0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d ,0x1e,0x1f,

0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d ,0x2e,0x2f,

0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d ,0x3e,0x3f,

0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d ,0x4e,0x4f,

0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d ,0x5e,0x5f,

0x60,0x61,0x62} ;

通过对端口数据的比较,然后再给变量赋值建立了从0--98十进制与二进制之间的关系。

4、温度值/加热器开关设置模块

4-1电路原理图,如图4-4-1所示

图4-4-1 温度值/加热器设置原理图

4-2 工作原理

三个开关中任何一个开关按下,INT0都将置低。INT0置低时单片机将有一个外部中断0产生中断,此时说明有按键按下。单片机检测到有按键按下但是还是未知哪个按键。此时我们可以通过检测P2.7,P3.0,P3.1口的状态来判断是哪个按键按下,如果在相应位置上出现低电平则相应按键被按下。

然后执行相应的按键功能的程序以及显示程序。

5、LED显示模块

5-1LED原理图如图4-5-1所示

图4-5-1 LED显示电路图

5-2 LED显示工作原理

本系统应用8段6位共阴数码管作为显示器件,用片选信号来控制数码管的显示字符,应位选信号来控制点亮那个数码管。

所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;其他数字以此类推。

P0口对应的是控制数码管的段选,也就是说可以让数码管显示不同的数字,字符。而在不同的数码管显示则是通过P2口的位选来实现的。换句话说P2口就是控制1--6号数码管哪个被点亮,哪个来显示数字。如果程序循环

显示的时间比较少那就呈现在眼前的就是六位数码管全亮,其实是循环点亮,但是人的眼没法在这么短时间内辨别出来。

6、加热器控制模块

6-1 电路原理图如图6-1-1所示

图6-1-1 加热器控制电路

6-2 电路图简要说明

本系统用1只LED发光二极管来表示加热器开关量控制输出,电路如图6-1-1所示。当P1^0输出低电平时,LED点亮,表明加热器处于工作状态。

7、整个系统电路原理图如7-1-1所示

图7-1-1 温度控制系统原理图(工作状态)

五、软件设计部分

5-1函数程序设计流程图如图5-1

图5-1 温度控制系统主函数

主函数中包含了加热控制子程序,温度设置/加热器开关、数据采集和模数转换模块都采用中断程序,以利于节省资源提高单片机的利用率。通过比较温度设置值和外界实际温度值来确定是否开启加热器,以及什么时候开启或关闭加热器,同时将加热器的工作状态在LED上显示出来。以至于达到自动控制的目的。使得温度一直在设置值附近。

5-1-1 加热器控制子程序流程

系统要求温度设定范围0~99℃,在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5℃时,加热器控制输出“开”,所以其流程图如图5-1-1所示。

图5-1-1 加热器温度控制子程序流程图

5-2 按键扫描/处理(外部中断0程序)流程图如图5-2-1

图5-2-1 按键扫描/处理(外部中断0程序—)流程图

采用中断程序来查询按键的按下与否。按键按下后通过读取P1口的状态来确定哪个按键的按下,最终确定程序该往哪个方向执行。中断结束返回主函数,将数值送LED显示程序显示。

5-3 定时器中断0程序

由于温度的变化在短时间内几乎没什么变化,因此本系统采用内部定时器0来定时控制ADC0808的工作,这样有利于保护芯片,可以让芯片有一定的休息时间,而又不影响系统的精度。

当定时器定时时间到时,单片机内部产生一个中断使得主程序暂时停止执行而转至执行中断程序,即ADC0808转换程序。启动ADC808,当判断到转换完成时,单片机将ADC0808输出口的数据读入内部寄存器,经过相应的处理转换成温度值,调用显示程序将其显示在数码管上。中断程序执行结束返回主函数继续执行。如图5-3-1所示

图5-3-1 外部中断0程序流程图

6-1 LED显示子程序

该系统中用6只共阴极的八段数码管来分别显示工作状态、设定温度和实际温度温度,从节省单片机资源和写程序方便角度考虑,采用动态显示方式。

6-2 LED显示子程序流程图如图6-2

图6-2 LED显示子程序流程图

六、课程设计总结

程序:

#include

#define uint unsigned int

#define uchar unsigned char

sbit led1=P2^0; //开关机数码管sbit led2=P2^1; //

sbit led3=P2^2; //设定温度数码管sbit led4=P2^3; //

sbit led5=P2^4; //实际温度数码管sbit led6=P2^5; //

sbit key1=P2^7; //OFF/ON

sbit key2=P3^0; //设定温度加键

sbit key3=P3^1; //设定温度减键

sbit wr=P3^6; //

sbit rd=P3^7; //

sbit cs=P2^6; //wr,rd,cs对ADC0808选通工作

sbit hot=P3^4;

sbit l0=P1^0;

sbit l1=P1^1; //开关机数码管

sbit l2=P1^2; //

sbit l3=P1^3; //设定温度数码管

sbit l4=P1^4; //

sbit l5=P1^5; //实际温度数码管

sbit l6=P1^6; //

sbit l7=P1^7;

uchar code fm []={0

,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 ,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,

48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, 71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93, 94,95,96,97,98} ;

uchar code buddle[]={0x00,0x01,0x02 ,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0 b,0x0c,0x0d,0x0e,0x0f,

0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d ,0x1e,0x1f,

0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d ,0x2e,0x2f,

0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d ,0x3e,0x3f,

0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d ,0x4e,0x4f,

0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d ,0x5e,0x5f,

0x60,0x61,0x62} ; //加热

uchar code table[]={ //0-9数码管显示表

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f};

uchar turn=0,settep=66,realtep,adcv,num;

uint i; //全局变量turn表示开关机,settep表示设定温度,realtep表示实际温度

/***********************************************

delayms延迟函数

************************************************/

void delayms(uint ms)

{

uint i,j;

for(i=ms;i>0;i--) //delayms延时函数,for(j=110;j>0;j--);

}

/***********************************************

outside1外部中断1的初始函数

************************************************/

void outside1_init(void)

{

EA=1; //开总中断

EX1=1; //允许外部中断1中断

IT1=1; //外部中断1为脉冲触发方式

}

/***********************************************

outside1外部中断1函数,对按键中断子程序定义

************************************************/

void outside1(void) interrupt 2

{

EX1=0; //执行外部中断1程序时,屏蔽外部中断1的响应

if(key1==0) //是否有key1按键按下{

delayms(10); //有,延迟,消抖

if(key1==0) //确认是否有key1按键按下

{

if(turn==0) //ON/OFF选择

turn=1; //turn为0,按下key1,turn为1表开机

else //

turn=0; //turn为1,按下key1,turn为0表关机

}

}

if(key2==0) //是否有key2按键按下{

delayms(10); //有,延迟,消抖

if(key2==0) //确认是否有key2按键按下

{

if(turn==1) //开机时

{

if(settep<=98) //settep设定温度小于等于98时,可以继续加

{

settep++;

}

}

}

}

if(key3==0) //是否有key3按键按下{

delayms(10); //有,延时,消抖

if(key3==0) //确认是否有key3按键按下

{

if(turn==1) //开机时

{

if(settep>=1) //settep设定温度大于等于1时,可以继续减

{

settep--;

}

}

}

}

EX1=1; //允许外部中断1中断,继续等待按键

}

/***********************************************

outside0外部中断0初始化函数

************************************************/

void outside0_init(void)

{

EA=1; //总中断开

EX0=1; //允许外部中断0中断

IT0=1; //外部中断0为脉冲触发方式

}

/***********************************************

outside0外部中断0函数,对ADC值对应查温度定义

************************************************/

void outside0(void) interrupt 0

{

EX0=0; //关闭外部中断0中断

adcv=P1; //把P1口的数据传给adcv

for(i=0;i<=98;i++){

if(adcv==buddle[i])

realtep=fm[i];

}

EX0=1;

}

/***********************************************

timer0定时器0的初始化函数

************************************************/

void timer0_init(void)

{

TMOD=0x01; //定时器0工作方式选择,定时,工作方式1

TH0=(66536-45872)/256; //设定定时时间初始值,11.0592M的晶振5ms为45872

TL0=(66536-45872)%256; //低八位

EA=1; //开总中断

ET0=1; //允许定时器0中断

TR0=1; //定时器0运行控制位

}

/***********************************************

timer0定时器0功能函数,启动/停止ADC,1秒扫描一次

************************************************/

void timer0() interrupt 1

{

TH0=(66536-45872)/256; //装初始值,高八位

TL0=(66536-45872)%256; //低八位

if(turn==1) //当开机时,才启动ADC0808

{

num++; //num计数

if(num==1) //启动ADC

{

wr=0; //

cs=0; //

rd=0; //wr,cs,rd控制启动ADC }

if(num==20) //num=20是为1秒

{

num=0; //num清零

wr=1; //

cs=1; //

rd=1; //wr,cs,rd关闭ADC等下次再启动

}

}

}

/***********************************************

display数码管显示函数定义

************************************************/

void display(uchar turn,uchar settep,uchar realtep) //显示子函数turn表示开关,settep表示设定温度,realtep表示实际温度

{

uchar setshi,setge,realshi,realge; //setshi,setge对设定温度的settep的十位和个位拆分,realshi,realge对实际温度的十位和个位拆分

setshi=settep/10; //settep的十位放在setshi

setge=settep%10; //settep的个位放在setge realshi=realtep/10; //realtep的十位放在realshi

realge=realtep%10; //realtep的个位放在realge

杭电《过程控制系统》实验报告

实验时间:5月25号 序号: 杭州电子科技大学 自动化学院实验报告 课程名称:自动化仪表与过程控制 实验名称:一阶单容上水箱对象特性测试实验 实验名称:上水箱液位PID整定实验 实验名称:上水箱下水箱液位串级控制实验 指导教师:尚群立 学生姓名:俞超栋 学生学号:09061821

实验一、一阶单容上水箱对象特性测试实验一.实验目的 (1)熟悉单容水箱的数学模型及其阶跃响应曲线。 (2)根据由实际测得的单容水箱液位的阶跃响应曲线,用相关的方法分别确定它们的参数。二.实验设备 AE2000型过程控制实验装置,PC机,DCS控制系统与监控软件。 三、系统结构框图 单容水箱如图1-1所示: Q2 图1-1、单容水箱系统结构图 四、实验原理 阶跃响应测试法是系统在开环运行条件下,待系统稳定后,通过调节器或其他操作器,手动改变对象的输入信号(阶跃信号),同时记录对象的输出数据或阶跃响应曲线。然后根据已给定对象模型的结构形式,对实验数据进行处理,确定模型中各参数。 图解法是确定模型参数的一种实用方法。不同的模型结构,有不同的图解方法。单容水箱对象模型用一阶加时滞环节来近似描述时,常可用两点法直接求取对象参数。 如图1-1所示,设水箱的进水量为Q1,出水量为Q2,水箱的液面高度为h,出水阀

h1( t ) h1(∞ ) 0.63h1(∞) 0 T V 2固定于某一开度值。根据物料动态平衡的关系,求得: 在零初始条件下,对上式求拉氏变换,得: 式中,T 为水箱的时间常数(注意:阀V 2的开度大小会影响到水箱的时间常数),T=R 2*C ,K=R 2为单容对象的放大倍数,R 1、R 2分别为V 1、V 2阀的液阻,C 为水箱的容量系数。令输入流量Q 1 的阶跃变化量为R 0,其拉氏变换式为Q 1(S )=R O /S ,R O 为常量,则输出液位高度的拉氏变换式为: 当t=T 时,则有: h(T)=KR 0(1-e -1)=0.632KR 0=0.632h(∞) 即 h(t)=KR 0(1-e -t/T ) 当t —>∞时,h (∞)=KR 0,因而有 K=h (∞)/R0=输出稳态值/阶跃输入 式(1-2)表示一阶惯性环节的响应曲线是一单调上升的指数函数,如图1-2所示。当由实验求得图1-2所示的 阶跃响应曲线后,该曲线上升到稳态值的63%所对应时间,就是水箱的时间常数T ,该时间常数T 也可以通过坐标原点对响应曲线 图 1-2、 阶跃响应曲线

单片机实验报告

PIC单片机原理与应用实验报告 学校: 学院: 班级: 姓名: 学号: 指导教师:

实验一I/O端口实验 一、实验目的 (1)掌握MPLAP IDE集成开发环境的基本操作。 (2)掌握单片机的I/O端口的设计方法。 (3)掌握在线调试器的使用方法。 (4)学会查阅相关数据手册。 二、实验仪器设备 (1)PC机一台; (2)MPLAP IDE开发软件一套; (3)PICkit3在线调试器一套; (4)APP009实验板一块; 三、实验要求 (1)设计发光LED灯闪烁程序,下载调试,验证功能。 (2)设计流水灯程序,或其他花样彩灯程序,下载调试,验证功能。 (3)设计按按键加1计数程序,下载调试,验证功能。 四、实验步骤 (1)连接在线调试器PICkit3、APP009实验板和计算机; (2)打开MPLAP IDE集成开发环境软件,点击Debugger>Select Tools>PICkit 3 选择调试工具; (3)点击Debugger>Settings,在Settings窗口中点击Power栏,选择由PICkit3向实验板供电; (4)完成实现发光LED灯闪烁实验; 程序代码: #include void delay(void); int main() { while(1) { TRISEbits.TRISE0 = 0; //RE0设置为输出(1输入,0输出); https://www.wendangku.net/doc/2b2046203.html,TE0 =1; //RE0=1输出高电平+5V,亮灯 delay(); //延时 https://www.wendangku.net/doc/2b2046203.html,TE0 =0; //RE0=0输出低电平0V,灭灯 delay(); //延时 } } void delay(void) { long int i; for (i=0;i<65000;i++); } 实验现象:将程序下载到实验板上,运行程序,LED闪烁,通过改变延时函数改变延时时间,进而可以改变LED闪烁的频率。

单片机实验报告

仲恺农业工程学院实验报告纸 自动化学院(院、系)工业自动化专业144班组单片机与嵌入式系统实验课学号201421714406姓名黄国盛实验日期2016年11月05日教师评定 实验一Keil C51集成开发环境的使用练习 一、实验目的 熟悉Keil C51集成开发环境的使用方法。 二、实验设备及器件 IBM PC机一台 三、实验内容 按照Keil C51软件的使用说明进行Keil C51集成开发环境的安装和使用练习,然后按照以下内容建立并编译产生HEX文件。 ORG0000H LJMP Main ORG00F0H Main: MOV R7,#0 Loop: MOV R6,#0 DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R7,Loop;延时 CPL P1.0;P1.0取反 CPL P1.1;P1.1取反 CPL P1.2;P1.2取反 CPL P1.3;P1.3取反 CPL P1.4;P1.4取反

CPL P1.5;P1.5取反 CPL P1.6;P1.6取反 CPL P1.7;P1.7取反 SJMP Main END 四、实验要求 熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。 五、实验预习要求 认真阅读Keil C51软件的使用说明。 六、实验思考题 试写一条把片内RAM50H~59H单元清零的程序。 实现程序如下: ORG0000h LJMP Main ORG0100H Main:MOV R0,#50H;立即数50H(内部RAM地址)传送到R0中 MOV R1,#10;立即数10(循环次数为10次)传送到R1中 MOV A,#0;立即数0传送到A,中将累加器A的值清0 LOOP:MOV@R0,A;将R0内容所指向的单元清0 INC R0;R0内容加1,修改地址指针 DJNZ R1,LOOP;减1不为0判断,若为真跳回循环,否,则运行下一语句 END;结束 七、实验总结 通过实验,熟悉80C51指令系统,熟悉Keil C51集成开发环境的使用方法,熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。加深对内部存储器读写的认识。

浙工大过程控制实验报告

实验一:系统认识及对象特性测试 一 实验目的 1了解实验装置结构和组成及组态软件的组成使用。 2 熟悉智能仪表的使用及实验装置和软件的操作。 3熟悉单容液位过程的数学模型及阶跃响应曲线的实验方法。 4学会有实际测的得单容液位过程的阶跃响应曲线,用相关的方法分别确定它们的参数,辨识过程的数学模型。 二 实验内容 1 熟悉用MCGS 组态的智能仪表过程控制系统。 2 用阶跃响应曲线测定单容液位过程的数学模型。 三 实验设备 1 AE2000B 型过程控制实验装置。 2 计算机,万用表各一台。 3 RS232-485转换器1只,串口线1根,实验连接线若干。 四 实验原理 如图1-1所示,设水箱的进水量为Q1,出水量为Q2,水箱的液面高度为h ,出水阀V2固定于某一开度值。根据物料动态平衡的关系,求得: 在零初始条件下,对上式求拉氏变换,得: 式中,T 为水箱的时间常数(注意:阀V2的开度大小会影响到水箱的时间常数),T=R2*C ,K=R2为单容对象的放大倍数,R1、R2分别为V1、V2阀的液阻,C 为水箱的容量系数。 阶跃响应曲线法是指通过调节过程的调节阀,使过程的控制输入产生一个阶跃变化,将被控量随时间变化的阶跃响应曲线记录下来,再根据测试记录的响应曲线求取输入输出之间的数学模型。本实验中输入为电动调节阀的开度给定值OP ,通过改变电动调节阀的开度给定单容过程以阶跃变化的信号,输出为上水箱的液位高度h 。电动调节阀的开度op 通过组态软件界面有计算机传给智能仪表,有智能仪表输出范围为:0~100%。水箱液位高度有由传感变送器检测转换为4~20mA 的标准信号,在经过智能仪表将该信号上传到计算机的组态中,由组态直接换算成高度值,在计算机窗口中显示。因此,单容液位被控对象的传递函数,是包含了由执行结构到检测装置的所有液位单回路物理关系模型 有上述机理建模可知,单容液位过程是带有时滞性的一阶惯性环节,电动调节阀的开度op ,近似看成与流量Q1成正比,当电动调节阀的开度op 为一常量作为阶跃信号时,该单容液位过程的阶跃响应为 需要说明的是表达式(2-3)是初始量为零的情况,如果是在一个稳定的过程下进行的阶跃响应,即输入量是在原来的基础上叠加上op 的变化,则输出表达式是对应原来输出值得基础上的增量表达的是,用输出测量值数据做阶跃响应曲线,应减去原来的正常输出值。 五、实验步骤 A 、熟悉用MCGS 组态的智能仪表过程控制系统 1、设备的连接和检查

单片机实验报告

单片机实验报告 班级:信科09-3 姓名:王艳辉 学号:08093581 指导老师:陈岱 完成时间:2012年1月8日

实验一 I/O接口P1、P3口实验 一,实验题目 1,用P1口做输出,接八只发光二极管,编写程序,使发光二极管循环点亮。 2,用P3口做输入口,接八个扭子开关,通过P1口在实验箱上LED 灯上输出,编写程序读取开关状态,将此状态,在发光二极管上显示出来。 二,实验目的 1.熟悉使用CPLD实验箱进行单片机实验的方法。 2.设计出符合实验要求的CPLD硬件电路。 3.学习单片机仿真开发软件Keil 51的使用方法。 4.学习MCS-51汇编语言编程方法。 5.学习Pl口的使用方法。 6.学习延时子程序的编写和使用。 三,实验准备 P1和P3口为准双向口,Pl、P3的每一位都能独立地定义为输出线或输入线,作为输入时,必须向锁存器相应位写入“l”,该位才能作为输入。803l中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“l”使它再成为一个输入。再来看一下延时程序的实现。现常用的有两种方法:一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。根据实验系统的工作主频,计算出延时0.1s的

时间常量,编制延时程序: MOV R7, #200 (1) DEl:MOy R6,#X (2) DE2:DJNZ R6,DE2 (3) DJNZ R7,DEl (4) 上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需1÷0.256us现求出X值: (X*1/0.256+1/0.256+l/0.256)*200+l/0.256=0.1*10^6。解出X=l26。代入上式可知实际延时约0.100O04s,近似符合要求。 四,实验步骤 (1)打开MAX+PLUSⅡ CPLD实验开发系统。 (2)点击File菜单Project子菜单之Name项,出现Project Name 对话框。为当前的实验选择恰当的路径并创建项目名称”E:\AT8031”。(3)点击File菜单之New项,出现对话框,为选择输入方式,选择Graphic Editor File。出现图形编辑窗口。 (4)双击空白编辑区,出现Enter Symbol 对话框。 (5)从Symbol Libraries项中选择mf子目录(双击),在prim子目录中选择输入脚input 和输出引脚output。 (6)在图形编辑窗口中的左侧点击连线按钮,并完成对电路的连线。(7)在引脚的PIN_NAME处左键双击使之变黑,键入引脚名称。

操作系统实验心得(精选多篇)

操作系统实验心得 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。

大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域 3)其他 例如: <1>定义了指针后记得初始化,在使用的时候记得判断是否为 null <2>在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等 <3>在变量处理的时候变量的格式控制是否合理等

过程控制系统实验报告

实验一过程控制系统的组成认识实验 过程控制及检测装置硬件结构组成认识,控制方案的组成及控制系统连接 一、过程控制实验装置简介 过程控制是指自动控制系统中被控量为温度、压力、流量、液位等变量在工业生产过程中的自动化控制。本系统设计本着培养工程化、参数化、现代化、开放性、综合性人才为出发点。实验对象采用当今工业现场常用的对象,如水箱、锅炉等。仪表采用具有人工智能算法及通讯接口的智能调节仪,上位机监控软件采用MCGS工控组态软件。对象系统还留有扩展连接口,扩展信号接口便于控制系统二次开发,如PLC控制、DCS控制开发等。学生通过对该系统的了解和使用,进入企业后能很快地适应环境并进入角色。同时该系统也为教师和研究生提供一个高水平的学习和研究开发的平台。 二、过程控制实验装置组成 本实验装置由过程控制实验对象、智能仪表控制台及上位机PC三部分组成。 1、被控对象 由上、下二个有机玻璃水箱和不锈钢储水箱串接,4.5千瓦电加热锅炉(由不锈钢锅炉内胆加温筒和封闭外循环不锈钢锅炉夹套构成),压力容器组成。 水箱:包括上、下水箱和储水箱。上、下水箱采用透明长方体有机玻璃,坚实耐用,透明度高,有利于学生直接观察液位的变化和记录结果。水箱结构新颖,内有三个槽,分别是缓冲槽、工作槽、出水槽,还设有溢流口。二个水箱可以组成一阶、二阶单回路液位控制实验和双闭环液位定值控制等实验。 模拟锅炉:锅炉采用不锈钢精致而成,由两层组成:加热层(内胆)和冷却层(夹套)。做温度定值实验时,可用冷却循环水帮助散热。加热层和冷却层都有温度传感器检测其温度,可做温度串级控制、前馈-反馈控制、比值控制、解耦控制等实验。 压力容器:采用不锈钢做成,一大一小两个连通的容器,可以组成一阶、二阶单回路压力控制实验和双闭环串级定值控制等实验。 管道:整个系统管道采用不锈钢管连接而成,彻底避免了管道生锈的可能性。为了提高实验装置的使用年限,储水箱换水可用箱底的出水阀进行。 2、检测装置 (液位)差压变送器:检测上、下二个水箱的液位。其型号:FB0803BAEIR,测量范围:0~1.6KPa,精度:0.5。输出信号:4~20mA DC。 涡轮流量传感器:测量电动调节阀支路的水流量。其型号:LWGY-6A,公称压力:6.3MPa,精度:1.0%,输出信号:4~20mA DC 温度传感器:本装置采用了两个铜电阻温度传感器,分别测量锅炉内胆、锅炉夹套的温度。经过温度传感器,可将温度信号转换为4~20mA DC电流信号。 (气体)扩散硅压力变送器:用来检测压力容器内气体的压力大小。其型号:DBYG-4000A/ST2X1,测量范围:0.6~3.5Mpa连续可调,精度:0.2,输出信号为4~20mA DC。 3、执行机构 电气转换器:型号为QZD-1000,输入信号为4~20mA DC,输出信号:20~100Ka气压信号,输出用来驱动气动调节阀。 气动薄膜小流量调节阀:用来控制压力回路流量的调节。型号为ZMAP-100,输入信号为4~20mA DC或0~5V DC,反馈信号为4~20mA DC。气源信号 压力:20~100Kpa,流通能力:0.0032。阀门控制精度:0.1%~0.3%,环境温度:-4~+200℃。 SCR移相调压模块:采用可控硅移相触发装置,输入控制信号0~5V DC或4~20mA DC 或10K电位器,输出电压变化范围:0~220V AC,用来控制电加热管加热。 水泵:型号为UPA90,流量为30升/分,扬程为8米,功率为180W。

杭电自动化单片机实验报告

单片机原理与应用及 C51程序设计 实验报告 实验名称:单片机技术实验 实验一继电器控制输出实验 一、实验目的 1.掌握STC12C5A16S2单片机的最基本电路的设计; 2.了解单片机I/O端口的使用方法; 3.了解继电器和蜂鸣器控制电路以及小电压控制大电压的方法。

二、实验要求 1.利用STC12C5A16S2单片机的P1.2、P1.3口作按钮S9和S10输入,P1.0 和P1.1口作开关量输出,并分别控制一个5V的继电器和蜂鸣器。 2.当S9闭合时,P1.0控制继电器闭合并控制灯泡闪亮;当S9断开时,继 电器触电断开,灯泡不亮; 3.当S10闭合时,P1.1控制蜂鸣器闭合并发出声音;当S10断开时,蜂鸣 器不响。 三、电路 四、原理说明 Q1、Q2为9012三极管即PNP型,低电平导通,当S9或S10按下时,相应的IO口拉低,当P1.0或P1.1赋0时即可控制继电器的吸合活着蜂鸣器的发声。 五、程序代码 #include sbit L1=P1^1; sbit L2=P1^2; sbit L3=P1^3; sbit L0=P1^0;//定义位变量 void delay() { int i,j; for(i=0;i<250;i++) for(j=0;j<250;j++);//利用系统时钟,定义延时函数 }

void main () { int n=20; while(1) //不断循环检测 { if(L2==0) //判断S9输入 { while(n--) { L0=0; delay(); L0=1; delay(); //灯泡以2*delay为周期闪亮 } n=20; } if(L3==0) //判断S10闭合 { while(n--) { L1=0; delay(); L1=1; delay(); //蜂鸣器以2*delay为周期发声 } n=20; } } } 实验二 LED轮换点亮实验 一、实验目的 1.掌握STC12C5A16S2单片机的I/O电路设计; 2.学习SN74HC573数据锁存输出方法。 二、实验要求 1.利用SN74HC573对STC12C5A16S2单片机的P0进行扩展,驱动LED 控制输出; 2.编写程序,使P0.0~P0.7上的发光二极管循环点亮;P2.7控制 SN74HC573芯片的使能; 三、电路

杭电操作系统实验报告模板

操作系统课程设计报告 基于DOS的多任务系统的实现 专业:信息工程学院(软件工程) 班级: 姓名: 学号: 指导老师: 20101223

一、课程设计的目的 1. 加深多线程和进程概念的理解,明确进程和程序的区别。 2. 加深对CPU调度过程(现场保护、CPU的分派和现场恢复)的理解。 3. 进一步认识并发执行的概念,明确顺序执行和并发执行的区别。 4. 加深对临界资源,临界区,信号量以及同步机制的理解。 5. 加深对消息缓冲通信的理解。 二、课程设计要求 1. 用C语言完成线程的创建和撤消,并按优先权加时间片轮转算法对多个线程进行调度; 2. 改变时间片的大小,观察结果的变化。思考:为什么时间片不能太小或太大; 3. 假设两个线程共用同一软件资源(如某一变量,或某一数据结构),请用记录型信号量来实现对它的互 斥访问; 4. 假设有两个线程共享一个可存放5个整数的缓冲,一线程不停的计算1到50的平方,并将结果放入缓冲 中,另一个线程不断的从缓冲中取出结果,并将他们打印出来,请用记录型信号量实现这一生产者和消费者的同步问题; 5. 实现消息缓冲通信,并于3,4中的简单通信进行比较; 6. 思考:在线程间进行消息缓冲通信时,若对消息队列的访问没有满足互斥要求,情况会怎么样? 三、程序的设计细想和框图[根据自己的代码写] 1.调度算法:用TCB数组下标音隐含把所有线程排成一个循环队列,当时间片到时,有线程正在执行,则停止它,将其变为就绪,把现场信息压入私有栈堆。 2.调度原因:时间片到时,线程执行完毕,正在执行的线程等待某种事件而不能继续执行。 3.时钟中断的截取

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级:14级 学号:05 2016年12 月1 日

实验项目列表 序号实验项目名称成绩指导教师 1 单片机仿真软件的使用 2 单片机I/O接口应用实验——流水灯 3 外部中断实验——工业顺序控制模拟 4 定时/计数器实验——矩形波 5 定时/计数器实验——计数器 6 综合实验 7 8 9 10 注: 1、实验箱端口为com6。 2、芯片选择切换到51 3、停止运行使用实验箱上的复位按钮

实验室号:___ 实验时间:成绩: 实验一仿真软件的使用 1.实验目的和要求 1)熟悉Keil C51软件界面,以及编辑、编译、运行程序的步骤; 2)掌握单片机仿真软件使用和调试的方法。 2.实验原理 Keil C51软件使用 在Keil C51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。 3.主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件的PC机1台 4.操作方法与实验步骤 Keil C51软件使用 (1)建立用户文件夹 (2)建立工程 (3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中 (4)把文件加入工程中 (5)编译工程。编译时观察在界面下方的“Build”页中的到编译错误信息和使用的系统资源情况等。 (6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。 (7)目标代码文件的生成。运行生成相应的.HEX文件。 5.实验内容及程序 1)从DATA区地址起始地址为40H的连续10个内存单元的内容传送到XDATA区起始地址为2000H的10个内存单元中。 注意:DATA区地址起始地址为40H的连续10个内存单元必须先赋初值。 P83-5源程序 #include #define uchar unsigned char xdata unsigned char buffer1[10]_at_ 0x2000; //在xdata区定义数组变量BUF1,首地址为2000H data unsigned char buffer2[10]_at_ 0x40; //在data区定义数组变量BUF2,首地址为40H void main(void)

《过程控制系统》实验报告

《过程控制系统》实验报告 学院:电气学院 专业:自动化 班级:1505 姓名及学号:任杰311508070822 日期:2018.6.3

实验一、单容水箱特性测试 一、 实验目的 1. 掌握单容水箱阶跃响应测试方法,并记录相应液位的响应曲线。 2. 根据实验得到的液位阶跃响应曲线,用相关的方法确定被测对象的特征参数T 和传递函数。 二、 实验设备 1. THJ-FCS 型高级过程控制系统实验装置。 2. 计算机及相关软件。 3. 万用电表一只。 三、 实验原理 图1 单容水箱特性测试结构图 由图 2-1 可知,对象的被控制量为水箱的液位 h ,控制量(输入量)是流入水箱中的流量 Q 1,手动阀 V 1 和 V 2 的开度都为定值,Q 2 为水箱中流出的流量。根据物料平衡关系,在平衡状态时02010=-Q Q (式2-1),动态时,则有dt dV Q Q = -21,(式2-2)式中 V 为水箱的贮水容积,dt dV 为水贮存量的变化率,它与 h 的关

系为Adh dV =,即dt dh A dt dV =(式2-3),A 为水箱的底面积。把式(2-3)代入式(2-2)得dt dh A Q Q =-21(式2-4)基于S R h Q =2,S R 为阀2V 的液阻,(式2-4)可改写为dt dh A R h Q S =-1,1KQ h dt dh AR S =+或()()1s 1+=Ts K s Q H (式2-5)式中s AR T =它与水箱的底面积A 和2V 的S R 有关,(式2-5)为单容水箱的传递函数。若令()S R S Q 01=,常数=0R ,则式2-5可表示为()T S KR S R K S R T S T K S H 11/000+-=?+= 对上式取拉氏反变换得()()T t e KR t h /01--=(式2-6),当∞→t 时()0KR h =∞,因而有()0/R h K ∞==输出稳态值/阶跃输入,当T t =时,()() ()∞==-=-h KR e KR T h 632.0632.01010,式2-6表示一阶惯性响应曲线是一单调上升的指数函数如下图2-2所示 当由实验求得图 2-2 所示的阶跃响应曲线后,该曲线上升到稳态值的 63%所对应的时间,就是水箱的时间常数 T 。该时间常数 T 也可以通过 坐标原点对响应曲线作切线,切线与稳态值交点所对应的时间就是 时间常数 T ,由响应曲线求得 K 和 T 后,就能求得单容水箱的传递函 数如式(2-5)所示。 如果对象的阶跃响应曲线为图 2-3,则在此曲线的拐点 D 处作一切线,它与时间轴交于 B 点,与响应稳态值的渐近线交于 A 点。图中OB 即为对象的滞后时间

单片机实验报告

汇编语言程序设计 1)编译后,系统提示:目标越界,改为AJMP后编译通过,将ORG 07FFH 改为0800H, 系统提示:目标越界,这说明AJMP可以在2KB 范围内无条件转移。 2.改为LJMP编译通过,这说明LJMP可以在64KB 范围内无条件转移。 3.将LJMP LP1改为SJMP LP0,机器码为80FC,其中FC为偏移量,它是一个补码,01H~7FH说明向PC(增大√、减小)方向跳,80H~FFH说明向PC(增大、减小√)方向跳,这说明SJMP可以在当前PC值-128B~+127B 范围内无条件转移。 1、X、Y以补码的形式存放在20H、21H中,编写程序实现如下函数: 实验程序: MOV A,20H JZ ZREO JB ACC.7,NEG MOV 21H,#01H SJMP PEND ZREO:MOV 21H,A SJMP PEND NEG:MOV 21H,#0FFH PEND:SJMP$ END 结果记录: 1.将数89H存放于20H中,运行程序,观察到21H单元中的内容为FF; 2.将数05H存放于20H中,运行程序,观察到21H单元中的内容为01; 3.将数00H存放于20H中,运行程序,观察到21H单元中的内容为00; 2、将20H~27H中的压缩BCD码拆为两个单字节BCD码,存放在以2000H为首地址的外部RAM 中。 实验程序: MOV R0,#20H MOV R7,#08H MOV DPTR,#2000H LOOP:ACALL CZ INC R0

INC DPTR DJNZ R7,LOOP SJMP $ CZ:MOV A,@R0 SWAP A ANL A,#0FH MOVX @DPTR,A INC DPTR MOV A,@R0 ANL A,#0FH MOVX @DPTR,A RET END 结果记录: 20H 21H 22H 23H 24H 25H 26H 27H 87H 54H 36H 23 19H 43H 77H 69H 2000H 2002H2004H2006H2008H200AH200CH200EH 07H 04H 06H 03H 09H 03H 07H 09H 2001H 2003H2005H2007H2009H200BH200DH200FH 08H 05H 03H 02H 01H 04H 07H 06H 1、数在计算机中是以补码形式存放的,因此,判断数据的正负,往往采用判断第7 位,是0 则为正数,是1 则为正数 2、实验内容2中JZ ZREO 的机器码为600DH ,其中0DH 为偏移量,当前PC值0004 加上这个偏移量等于0011H ,这正是即将执行的程序的首地址,即标号为ZREO 语句。程序计算器PC的功能是指向下一条指令,因此,跳转语句是依靠偏移量来改变程序计数器PC的值,从而改变程序的流向。 3、分支程序一定要注意分支的语句标号的正确性,每一分支之间必须用跳转(如SJMP)指令分隔,并跳转到相应标号。 4、子程序往往用间址寄存器传递数据,内部RAM用@Ri ,外部RAM用@DPTR ,绝对不能用直接地址。最后以RET 结尾。 5、循环程序往往用寄存器传递数据,用R7控制循环次数,用调用作为循环体,用指令INC 修改地址指针,用指令DJNZ 判断循环结束。 6、执行ACALL前(SP)= 07H ,执行ACALL时,(SP)= 09H ,(08H)= 09H ,(09H)= 00H ,(PC)= 000FH ,PC的值正是子程序的入口地址,而堆栈中这两个单元存放的是断点处PC的值;执行到RET后,(SP)= 07H , 原08H的值弹给(PC)7~0 ,原09H的值弹给(PC)15~8 ,因此,返回断点继续执行主程序。

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.wendangku.net/doc/2b2046203.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY RL A

DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件

个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.wendangku.net/doc/2b2046203.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJNZ R2,LOOP

过程控制实验报告

东南大学自动化学院 实验报告 课程名称:过程控制实验 实验名称:水箱液位控制系统 院(系):自动化专业:自动化姓名:学号: 实验室:实验组别: 同组人员: 实验时间: 评定成绩:审阅教师:

目录 一、系统概论 (3) 二、对象的认识..................................... 错误!未定义书签。 三、执行机构 ....................................... 错误!未定义书签。 四、单回路调节系统................................ 错误!未定义书签。 五、串级调节系统Ⅰ................................ 错误!未定义书签。 六、串级调节系统Ⅱ................................ 错误!未定义书签。 七、前馈控制 ....................................... 错误!未定义书签。 八、软件平台的开发................................ 错误!未定义书签。

一、系统概论 实验设备 组成器件 图实验设备正面图图实验设备背面图 本实验设备包含水箱、加热器、变频器、泵、电动阀、电磁阀、进水阀、出水阀、增压器、流量计、压力传感器、温度传感器、操作面板等。 铭牌 ·加热控制器: 功率1500w,电源220V(单相输入) ·泵: Q40-150L/min,,,380V,VL450V, IP44,50Hz,2550rpm,,,,ICL B ·全自动微型家用增压器: 型号15WZ-10,单相电容运转马达 最高扬程10m,最大流量20L/min,级数2,转速2800rmp,电压220V, 电流,频率50Hz,电容μF,功率80w,绝缘等级 E ·LWY-C型涡轮流量计: 口径4-200mm,介质温度-20—+100℃,环境温度-20—+45℃,供电电源+24V, 标准信号输出4-20mA,负载0-750Ω,精确度±%Fs ±%Fs,外壳防护等级 IP65 ·压力传感器 YMC303P-1-A-3 RANGE 0-6kPa,OUT 4-20mADC,SUPPLY 24VDC,IP67,RED SUP+,BLUE OUT+/V-·SBWZ温度传感器 PT100 量程0-100℃,精度%Fs,输出4-20mADC,电源24VDC

实验报告(单片机实验报告)

1 双字节无符号数加法 例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h) 假设其和不超过16位。请编程。 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1, #79h mov R2,#25h mov R3, #0a4h mov A,R1 ADD A,R3 mov R5,A mov A,R0 ADDC A,R2 mov R4,A ss: jmp ss end 2双字节无符号数减法

例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。同学自己可以设置被减数与减数数值 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1,#79h mov R2,#25h mov R3,#0a4h mov A,R1 CLR C SUBB A,R3 mov R5,A mov A,R0 SUBB A,R2 mov R4,A ss: jmp ss end 3双字节数乘以单字节数

例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。 30H,31H,32H内容 12H,34H,56H ; org 0000h Ljmp start org 0050h start: mov 30h,#12h mov 31h,#34h mov 32h,#56h mov a,(30h) mov b,(32h) mul ab mov R3,b mov R4,a mov a,(31h) mov b,(32h) mul ab add A,R3 mov R3,A

杭电通信系统课程设计报告实验报告

通信系统课程设计实验报告 XX:田昕煜 学号:13081405 班级:通信四班 班级号:13083414 基于FSK调制的PC机通信电路设计

一、目的、容与要求 目的: 掌握用FSK调制和解调实现数据通信的方法,掌握FSK调制和解调电路中相关模块的设计方法。初步体验从事通信产品研发的过程. 课程设计任务:设计并制作能实现全双工FSK调制解调器电路,掌握用Orcad Pspice、Protel99se进行系统设计及电路仿真。 要求:合理设计各个电路,尽量使仿真时的频率响应和其他参数达到设计要求。尽量选择符合标称值的元器件构成电路,正确完成电路调试。 二、总体方案设计 信号调制过程如下: 调制数据由信号发生器产生(电平为TTL,波特率不超过9600Baud),送入电平/幅度调整电路完成电平的变换,再经过锁相环(CD4046),产生两个频率信号分别为30kHz和40kHz(发“1”时产生30kHz方波,发“0”时产生40kHz方波),再经过低通滤波器2,变成平滑的正弦波,最后通过线圈实现单端到差分信号的转换。

信号的解调过程如下: 首先经过带通滤波器1,滤除带外噪声,实现信号的提取。在本设计中FSK 信号的解调方式是过零检测法。所以还要经过比较器使正弦信号变成方波,再经过微分、整流电路和低通滤波器1实现信号的解调,最后经过比较器使解调信号成为TTL电平。在示波器上会看到接收数据和发送数据是一致的。 各主要电路模块作用: 电平/幅度调整电路:完成TTL电平到VCO控制电压的调整; VCO电路:在控制电压作用下,产生30KHz和40KHz方波; 低通2:把30KHz、40KHz方波滤成正弦波; 线圈:完成单端信号和差分信号的相互转换; 带通1:对带外信号抑制,完成带信号的提取; 限放电路:正弦波整形成方波,同时保留了过零点的信息; 微分、整流、脉冲形成电路:完成信号过零点的提取; 低通1:提取基带信号,实现初步解调; 比较器:把初步解调后的信号转换成TTL电平 三、单元电路设计原理与仿真分析 (1)带通1(4阶带通)-- 接收滤波器(对带外信号抑制,完成带信号的提取) 要求通带:26KHz—46KHz,通带波动3dB; 阻带截止频率:fc=75KHz时,要求衰减大于10dB。经分析,二级四阶巴特沃斯带通滤波器来提取信号。 具体数值和电路见图1仿真结果见图2。

单片机中断实验报告

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想 ------- 屠呦呦 实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1;

void timer1_init() { TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int sbit D1=P2^0; //将D1位定义为P2.0引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;//time=0;

相关文档
相关文档 最新文档