嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx

上传人:b****5 文档编号:18765709 上传时间:2023-01-01 格式:DOCX 页数:23 大小:199.83KB
下载 相关 举报
嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx_第1页
第1页 / 共23页
嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx_第2页
第2页 / 共23页
嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx_第3页
第3页 / 共23页
嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx_第4页
第4页 / 共23页
嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx

《嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。

嵌入式微控制器技术实验任务书附程序和仿真图Word文件下载.docx

LED灯控制(使用8255接口芯片)

使用汇编语言、C语言编程。

通过KK1实现LED

灯工作方式即时控制,完成LED开关控制显示和LED灯左循环、

右循环、间隔闪烁功能。

ORG0000H

LJMPMAIN

ORG0003H

LJMPINT00

ORG0030H

MAIN:

MOVSP,#70H

SETBIT0

SETBEA

SETBEX0

CLRPX0

MOVDPTR,#0FF7FH

MOVA,#80H

MOVX@DPTR,A

MOVR0,#0

MOVDPTR,#0FF7CH

LOOP:

CJNER0,#0,L1

MOVA,#0FFH

W0:

CJNER0,#0,LOOP

AJMPW0

L1:

CJNER0,#1,L2

MOVA,#00H

W1:

CJNER0,#1,LOOP

AJMPW1

L2:

CJNER0,#2,L3

MOVA,#0FEH

;

MOVR1,#8

W2:

MOVX@DPTR,A

LCALLDELAY

RLA

CJNER0,#2,LOOP

SJMPW2

DJNZR1,W2

LJMPLOOP

L3:

CJNER0,#3,L4

MOVA,#7FH

W3:

RRA

CJNER0,#3,LOOP

SJMPW3

L4:

W4:

CJNER0,#4,LOOP

SJMPW4

DELAY:

MOVR7,#255

D1:

MOVR6,#255

DJNZR6,$

DJNZR7,D1

RET

ORG0FFH

INT00:

PUSHACC

PUSHPSW

INCR0

CJNER0,#5,LL

LL:

POPPSW

POPACC

RETI

END

实验四 中断系统实验(基于SST89E554RC)

按照实验指导书之“3.2中断系统实验”中相关实验项目要求,完成汇编语言和C语言基本程序功能调试与验证。

(要求:

Proteus环境下,任选一题完成)

在完成交通灯基本功能基础上,当有急救车到达时,两向交通信号为全红,以便让急救车通过。

假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。

本实验题以按键为中断申请,表示有急救车通过。

ORG0000H

LJMPMAIN

ORG0003H

LJMPINT00

ORG0030H

SETBIT0

SETBEA

SETBEX0

CLRPX0

MOVDPTR,#0FF7FH

MOVA,#80H

MOVDPTR,#0FF7CH

MOVA,#1EH

LCALLDELAY2

MOVR1,#3

LH2:

MOVA,#1DH

LCALLDELAY

MOVA,#1FH

DJNZR1,LH2

MOVA,#33H

LH3:

MOVA,#2BH

MOVA,#3BH

DJNZR1,LH3

LJMPLOOP

DELAY2:

MOVR0,#8

LH1:

DJNZR0,LH1

RET

MOVR4,#25

MOVR5,#100

MOVR6,#100

D2:

DJNZR6,D2

DJNZR5,D2

DJNZR4,D2

PUSHACC

PUSHPSW

MOVA,#1BH

MOVR0,#5

LH:

DJNZR0,LH

POPACC

RETI

END

实验五定时器/计数器实验(基于SST89E554RC)

按照实验指导书之“3.3定时/计数器实验”基本实验项目要求、完成汇编语言和C语言程序功能调试与验证。

题目一:

定时器控制LED灯

由单片机内部定时器1,按方式1工作,即作为16位

定时器使用每0.05秒钟T1溢出中断一次。

P1口的P1.0-P1.7

分别接八个发光二极管。

编写程序模拟时序控制装置。

开机

后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,

L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,

第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第

八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……

一直循环下去。

计数器实验

单片机内部定时计数器,按计数器模式和方式1工作,

对P3.4(T0)引脚进行计数。

使用T1作定时器,50ms中断一

次,看T0内每0.50来了多少脉冲,将其数值按二进制在LED

灯上显示出来,5秒后再次测试。

ORG0000H

ORG000BH

LJMPINTT0

MOVSP,#60H

MOVTH0,#3CH

MOVTL0,#0B0H

MOVTMOD,#1

MOVIE,#82H

MOVR0,#20

MOVR1,#1

MOVA,#0FAH

SETBTR0

HERE:

MOVP1,A

AJMPHERE

INTT0:

DJNZR0,GH

CJNER1,#1,L1

SJMPED

CJNER1,#2,L2

RLA

CJNER1,#3,L3

MOVA,#0AFH

CJNER1,#4,L4

CJNER1,#5,L5

MOVA,#0AAH

L5:

CJNER1,#6,L6

L6:

CJNER1,#7,L7

MOVA,#00H

L7:

MOVA,#0FFH

MOVR1,#0

ED:

INCR1

GH:

实验六 A/D、D/A转换实验(基于SST89E554RC)

基本部分:

按照实验指导书之“4.3A/D转换实验”项目要求和“4.4D/A

转换实验”项目要求,完成汇编语言和C语言程序功能调试与验证。

Proteus环境下完成)

小键盘(或开关量)给定(并显示工作状态),选择信号源输出波形类型(D/A转换方式),经过A/D采样后,将采样数据用LED灯显示当前模拟信号值大小及变化状态。

#include<

reg51.h>

math.h>

intrins.h>

#defineucharunsignedchar

sbitS1=P2^0;

sbitS2=P2^1;

sbitS3=P2^2;

sbitS4=P2^3;

sbitDA_DIN=P2^4;

sbitDA_CLK=P2^5;

sbitDA_CS=P2^6;

sbitcs=P3^0;

sbitclk=P3^1;

sbitdat=P3^2;

sbitP3_3=P3^3;

bdataucharaddata;

sbitadin0=addata^0;

unsignedcharcishu;

voidquyan(void);

voiddelay_s(unsignedcharn)

{

unsignedchari;

for(i=0;

i<

n;

i++);

}

uchartlc549ad(void)

{

uchari;

clk=0;

cs=0;

_nop_();

8;

i++)

{//dat=1;

clk=1;

delay_s(20);

adin0=dat;

addata=addata<

<

1;

clk=0;

}

cs=1;

returnaddata;

voidTLC5615_DA_conver(unsignedintDA_data)//TLC5615DA转换程序

DA_data=DA_data<

2;

DA_CS=1;

DA_CLK=0;

DA_DIN=0;

DA_CS=0;

16;

{

DA_DIN=CY;

DA_CLK=1;

delay_s(0x02);

13;

delay_s(0xff);

//P1=tlc549ad();

voidsin_fun(unsignedcharAPx)

floatx,y;

unsignedintDA;

quyan();

while

(1)

for(x=0;

x<

(2*3.1415);

x+=0.1)

y=sin(x);

DA=APx+y*APx;

TLC5615_DA_conver(DA);

if(((S1==0)||(S2==0)||(S3==0))||((S1==1)&

&

(S2==1)&

(S3==1)&

(S4==1)))

TR0=0;

break;

voidsanjiao(unsignedintAPx,unsignedcharstep)

unsignedintx;

quyan();

2*APx;

x+=step)

TLC5615_DA_conver(x);

for(x=2*APx;

x>

x-=step)

if(((S1==0)||(S2==0)||(S4==0))||((S1==1)&

voidfangb(unsignedcharAPx,unsignedintnum)

unsignedintx;

num;

x++)

TLC5615_DA_conver(2*APx);

TLC5615_DA_conver(0);

if(((S4==0)||(S2==0)||(S3==0))||((S1==1)&

voidjvcb(unsignedcharAPx,unsignedintwide)

unsignedintx,Y;

wide;

x+=1)

Y=APx-10*x;

TLC5615_DA_conver(Y);

if(((S1==0)||(S3==0)||(S4==0))||((S1==1)&

voidquyan(void)

{cishu=10;

TH0=0x3c;

TL0=0xb0;

TMOD=0x01;

IE=0x82;

TR0=1;

time0()interrupt1using1

cishu--;

if(cishu==0)

{

P1=tlc549ad();

cishu=10;

voidmain(void)

while

(1)

P0=0xc0;

P1=0x00;

TLC5615_DA_conver(0);

if((S1==0)&

(S4==1))

{

P0=0xf9;

fangb(255,50);

}

elseif((S1==1)&

(S2==0)&

{

P0=0xa4;

jvcb(250,25);

(S3==0)&

P0=0xb0;

sanjiao(250,25);

(S4==0))

P0=0x99;

sin_fun(250);

}

实验七 步进电机控制实验

1、按照实验指导书之“5.1步进电机实验”项目要求,完成基于SST89E554RC微控制器的C语言程序功能调试与验证;

2、按照DSP2812开发板使用说明书之“实验二十二步进电机实验(四相单四拍)”项目要求,完成基于DSP2812微控制器的C语言程序功能调试与验证;

(任选一题完成)

1、在分析掌握基于SST89E554RC微控制器实现步进电机控制原理基础上,实现步进电机速度可调和方向可调;

2、在分析掌握基于DSP2812微控制器实现步进电机控制原理基础上,实现步进电机速度可调和方向可调

#include<

sbitp30=P3^0;

sbitp32=P3^2;

sbitp31=P3^1;

unsignedcharL_value[2][8]={0x0E0,0x0C0,0x0D0,0x090,0x0B0,0x030,0x070,0x060,0x060,0x070,0x030,0x0B0,0x090,0x0D0,0x0C0,0x0E0};

//步进电机正反转表

unsignedchara[4]={0xff,0x08,0xfc,0xfe};

unsignedcharspeed=3;

voiddelay(unsignedinttime)

unsignedinti;

i<

time;

i++);

voidmain()

{unsignedcharm;

IT0=1;

EA=1;

EX0=1;

PX0=0;

p30=1;

p31=1;

while(~p30)

P2=a[speed];

for(m=0;

m<

m++)

{

P1=L_value[~p31][m];

delay(4000*speed);

}

if(p30)

for(;

p30==1;

)P2=a[0];

voidextern0()interrupt0

speed--;

if(speed==0)

speed=3;

P2=a[speed];

实验八直流电机开环控制实验

1、按照实验指导书之“5.2直流电机PWM调速实验”项目要求,完成基于SST89E554RC微控制器的C语言程序功能调试与验证;

2、按照DSP2812开发板使用说明书之“实验二十一直流电机实验”项目要求,完成基于DSP2812微控制器的C语言程序功能调试与验证;

3、在分析掌握基于SST89E554RC微控制器实现直流电机控制电路原理基础上,实现电机速度可调;

4、在分析掌握基于DSP2812微控制器实现直流电机控制原理基础上,实现电机速度波段式可调

#defineT_value(unsignedchar)0xf0//T周期值

#defineTH0_value(unsignedchar)0xFE//定时器T0计数值(高)

#defineTL0_value(unsignedchar)0x00//定时器T0计数值(低)

unsignedchara[4]={~0xfe,~0xfc,~0x08,~0xff};

unsignedcharspeed[3]={0xb0,0x80,0x40};

sbitDRV=P1^7;

sbitKG=P1^0;

unsignedcharT_Count;

//延时次数

unsignedcharT1_value=0xb0;

//T周期中高电平周期T1值

unsignedcharTx;

unsignedcharj=0;

voidint_tim0()interrupt1

TH0=TH0_value;

TL0=TL0_value;

T_Count--;

voidintern0()interrupt0

j++;

if(j==3)

j=0;

T1_value=speed[j];

Tx=T1_value;

T_Count=0;

DRV=1;

P2=a[j];

TMOD=0x01;

//定时器0初始化,定时基数

TR0=1;

ET0=1;

//外中断0

PX0=1;

DRV=1;

//P17电平

T_Count=T1_value;

Tx=speed[0];

if(KG)

for(;

KG==

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1