单片机实例

单片机实例
单片机实例

1.闪烁灯1.实验任务

2.电路原理图

图4.1.1

3.系统板上硬件连线

把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4.程序设计内容

(1).延时程序的设计方法

作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要

求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在

执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程

序是如何设计呢?下面具体介绍其原理:

机器周期微秒

MOVR6,#202个 2

D1:MOVR7,#2482个22+2×248=49820×DJNZR7,$2个2×248(498

DJNZR6,D12个2×20=40

10002

因此,上面的延时程序时间为10.002ms。

由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248

时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,

10ms×R5=200ms,则R5=20,延时子程序如下:

DELAY:MOVR5,#20

D1:MOVR6,#20

D2:MOVR7,#248

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

(2).输出控制

如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管

的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电

平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令

使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电

平。

5.程序框图

图4.1.2

6.汇编源程序

ORG0

START:CLRP1.0

LCALLDELAY

SETBP1.0

LCALLDELAY

LJMPSTART

DELAY:MOVR5,#20;延时子程序,延时0.2秒D1:MOVR6,#20

D2:MOVR7,#248

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

END

7.C语言源程序

#include

sbitL1=P1^0;

voiddelay02s(void)//延时0.2秒子程序

{

unsignedchari,j,k;

for(i=20;i>0;i--)

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}

voidmain(void)

{

while(1)

{

L1=0;

delay02s();

L1=1;

delay02s();

}

2.模拟开关灯1.实验任务

2.电路原理图

图4.2.1 3.系统板上硬件连线

(1).把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”

区域中的L1端口上;

(2).把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的K1端口上;

4.程序设计内容

(1).开关状态的检测过程

单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信

号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。

单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。

(2).输出控制

如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向

导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0

时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电

平,使用CLR P1.0指令使P1.0端口输出低电平。

5.程序框图

图4.2.2

6.汇编源程序ORG00H

START:JBP3.0,LIG

CLRP1.0

SJMPSTART

LIG:SETBP1.0

SJMPSTART

END

7.C语言源程序

#include

sbitK1=P3^0;

sbitL1=P1^0;

voidmain(void)

{

while(1)

{

if(K1==0)

{

L1=0;//灯亮

}

else

{

L1=1;//灯灭

}

}

}

3.多路开关状态指示

1.实验任务

2.电路原理图

图4.3.1

3.系统板上硬件连线

(1.把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上;

(2.把“单片机系统”区域中的P1.4-P1.7用导线连接到“四路拨动开关”区域中的K1-K4端口上;

4.程序设计内容

(1.开关状态检测

对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。

(2.输出控制

根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1.X和CLR P1.X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。

5.程序框图

读P1口数据到A

CC

内容右移4次

A

CC

内容与F0H相或

A

CC

内容送入P1口

A

CC

图4.3.2 6.方法一(汇编源程序)

ORG00H

START:MOVA,P1

ANLA,#0F0H

RRA

RRA

RRA

RRA

XORA,#0F0H

MOVP1,A

SJMPSTART

END

7.方法一(C语言源程序)

#include

unsignedchartemp;

voidmain(void)

{

while(1)

{

temp=P1>>4;

temp=temp|0xf0;

P1=temp;

}

}

8.方法二(汇编源程序)ORG00H

START:JBP1.4,NEXT1 CLRP1.0

SJMPNEX1

NEXT1:SETBP1.0

NEX1:JBP1.5,NEXT2 CLRP1.1

SJMPNEX2

NEXT2:SETBP1.1

NEX2:JBP1.6,NEXT3 CLRP1.2

SJMPNEX3

NEXT3:SETBP1.2

NEX3:JBP1.7,NEXT4

CLRP1.3

SJMPNEX4

NEXT4:SETBP1.3

NEX4:SJMPSTART

END

9.方法二(C语言源程序)#include

voidmain(void)

{

while(1)

{

if(P1_4==0)

{

P1_0=0;

}

else

{

P1_0=1;

}

if(P1_5==0)

{

P1_1=0;

}

else

{

P1_1=1;

}

if(P1_6==0) {

P1_2=0;

}

else

{

P1_2=1;

}

if(P1_7==0) {

P1_3=0;

}

else

{

P1_3=1;

}

}

}

4.广告灯的左移右移

1.实验任务

2.电路原理图

图4.4.1

3.系统板上硬件连线

把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着

L2,……,P1.7对应着L8。

4.程序设计内容

我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。

每次送出的数据是不同,具体的数据如下表1所示

表1

5.程序框图

图4.4.2

6.汇编源程序

ORG0

START:MOVR2,#8

MOVA,#0FEH

SETBC

LOOP:MOVP1,A LCALLDELAY

RLCA

DJNZR2,LOOP

MOVR2,#8

LOOP1:MOVP1,A LCALLDELAY

RRCA

DJNZR2,LOOP1 LJMPSTART

DELAY:MOVR5,#20;

D1:MOVR6,#20

D2:MOVR7,#248 DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

END

7.C语言源程序

#include unsignedchari; unsignedchartemp; unsignedchara,b;

voiddelay(void) {

unsignedcharm,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); }

voidmain(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++) {

a=temp<

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++) {

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

5.广告灯(利用取表方式)

1.实验任务

利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。

2.电路原理图

图4.5.1

3.系统板上硬件连线

把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着

L2,……,P1.7对应着L8。

4.程序设计内容

在用表格进行程序设计的时候,要用以下的指令来完成

(1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。

(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。因此,只要把控制码建成一个表,而利用MOVC工,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:

5.程序框图

图4.5.2

6.汇编源程序

ORG0

START:MOVDPTR,#TABLE

LOOP:CLRA

MOVCA,@A+DPTR

CJNEA,#01H,LOOP1

JMPSTART

LOOP1:MOVP1,A

MOVR3,#20

LCALLDELAY

INCDPTR

JMPLOOP

DELAY:MOVR4,#20

D1:MOVR5,#248

DJNZR5,$

DJNZR4,D1

DJNZR3,DELAY

RET

TABLE:DB0FEH,0FDH,0FBH,0F7H

DB0EFH,0DFH,0BFH,07FH

DB0FEH,0FDH,0FBH,0F7H

DB0EFH,0DFH,0BFH,07FH

DB07FH,0BFH,0DFH,0EFH

DB0F7H,0FBH,0FDH,0FEH

DB07FH,0BFH,0DFH,0EFH

DB0F7H,0FBH,0FDH,0FEH

DB00H,0FFH,00H,0FFH

DB01H

END

7.C语言源程序

#include unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f,

0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0x00,0xff,0x00,0xff,

0x01};

unsignedchari;

voiddelay(void)

{

unsignedcharm,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

voidmain(void)

{

while(1)

{

if(table[i]!=0x01)

{

P1=table[i];

i++;

delay();

}

else

{

i=0;

}

}

}

6.报警产生器

1.实验任务

用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。

2.电路原理图

图4.6.1

3.系统板上硬件连线

(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPKIN端口上;

(2.在“音频放大模块”区域中的SPKOUT端口上接上一个8欧的或者是16欧的喇叭;

(3.把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开关”区域中的K1端口上;

4.程序设计内容

(1.信号产生的方法

500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号

周期为1ms,信号电平每500us变反1次;

5.程序框图

图4.6.2

6.汇编源程序

FLAGBIT00H

ORG00H

START:JBP1.7,START

JNBFLAG,NEXT

MOVR2,#200

DV:CPLP1.0

LCALLDELY500

LCALLDELY500

DJNZR2,DV

CPLFLAG

NEXT:MOVR2,#200

DV1:CPLP1.0

LCALLDELY500

DJNZR2,DV1

CPLFLAG

SJMPSTART

DELY500:MOVR7,#250 LOOP:NOP

DJNZR7,LOOP

RET

END

7.C语言源程序

#include

#include bitflag; unsignedcharcount;

voiddely500(void)

{

unsignedchari;

for(i=250;i>0;i--)

{

_nop_();

}

}

voidmain(void)

{

while(1)

{

if(P1_7==0)

{

for(count=200;count>0;count--) {

P1_0=~P1_0;

dely500();

}

for(count=200;count>0;count--) {

P1_0=~P1_0;

dely500();

dely500();

}

}

}

}

7.I/O并行口直接驱动LED显示

1.实验任务

如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。

2.电路原理图

图4.7.1

3.系统板上硬件连线

把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,……,P0.7/AD7与h相连。

4.程序设计内容

(1.LED数码显示原理

七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。

LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表2

(2.由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字0-9的顺序,把

每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLE

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

5.程序框图

图4.7.2

6.汇编源程序

ORG0

START:MOVR1,#00H

NEXT:MOVA,R1

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY

INCR1

CJNER1,#10,NEXT

LJMPSTART

DELAY:MOVR5,#20

D2:MOVR6,#20

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

DJNZR5,D2

RET

TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END

7.C语言源程序

#include

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsignedchardispcount;

voiddelay02s(void)

{

unsignedchari,j,k;

for(i=20;i>0;i--)

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}

voidmain(void)

{

while(1)

{

for(dispcount=0;dispcount<10;dispcount++)

{

P0=table[dispcount];

delay02s();

}

}

}

8.按键识别方法之一

1.实验任务

每按下一次开关SP1,计数值加1,通过AT89S51单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。

2.电路原理图

图4.8.1

3.系统板上硬件连线

(1.把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上;

(2.把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1连

接到L2,P1.2连接到L3,P1.3连接到L4上。

4.程序设计方法

(1.其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命令只执行一次,

而在按键按下的过程中,不要有干扰进来,因为,在按下的过程

中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要

的。因此在按键按下的时候,

图4.8.2

要把我们手上的干扰信号

以及按键的机械接触等干扰信号

给滤除掉,一般情况下,我们可

以采用电容来滤除掉这些干扰信

号,但实际上,会增加硬件成本

及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的

方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是

在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳

定的状态。具体的一个按键从按下到释放的全过程的信号图如上图

所示:

从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。

由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。

(1.对于按键识别的指令,我们依然选择如下指令JB BIT,REL指令是用来检测BIT是否为高电平,若BIT=1,则程序转向REL处执行程

序,否则就继续向下执行程序。或者是JNB BIT,REL指令是用

来检测BIT是否为低电平,若BIT=0,则程序转向REL处执行程

序,否则就继续向下执行程序。

(2.但对程序设计过程中按键识别过程的框图如右图所示:

图4.8.3

5.程序框图

图4.8.4

6.汇编源程序

ORG0

START:MOVR1,#00H;初始化R7为0,表示从0开始计数MOVA,R1;

CPLA;取反指令

MOVP1,A;送出P1端口由发光二极管显示

REL:JNBP3.7,REL;判断SP1是否按下

LCALLDELAY10MS;若按下,则延时10ms左右

JNBP3.7,REL;再判断SP1是否真得按下

INCR7;若真得按下,则进行按键处理,使

MOVA,R7;计数内容加1,并送出P1端口由

CPLA;发光二极管显示

MOVP1,A;

JNBP3.7,$;等待SP1释放

SJMPREL;继续对K1按键扫描

DELAY10MS:MOVR6,#20;延时10ms子程序

L1:MOVR7,#248

DJNZR7,$

DJNZR6,L1

RET

END

7.C语言源程序

#include

unsignedcharcount;

voiddelay10ms(void)

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机原理与应用课程实验教案

《单片机原理与应用》实验教案 第一章实验安排 共8个实验,要求8次上机完成。这8个实验分别为: 实验一利用软件仿真器调试算术运算程序 实验二 INT0中断实验 实验三定时器/计数器定时实验 实验四定时器/计数器计数实验 实验五定时器/计数器T0扩展外部中断源实验 实验六串行口扩展实验 实验七 DAC0832数模转换实验 实验八 8155接口芯片使用实验 其中前六个实验为验证性实验,第七个实验为设计性实验。最后一个为综合性实验。每个实验3学时。 第二章实验须知 一、预习要求 1、实验前认真阅读实验要求,明确实验目的和实验任务。 2、拟订实验步骤,编好上机程序。 二、报告要求 共八个实验,每个实验完成后交实验报告,写在实验报

告纸上,报告中应包含以下内容: 1、实验名称、实验人姓名、学号、班级 2、实验目的、任务(内容); 3、实验步骤 记录主要实验过程。 4、实验结果 (1)记录实验现象; (2)要求写出已调试通过的实验程序清单(加适量注释) 第三章实验项目及内容 实验一利用软件仿真器调试算术运算程序1.目的要求 (1)熟悉WA VE调试软件的使用。 (2)熟悉算术运算程序编程和调试的方法。 2.实验内容 (1)有6个数据分别放在片内RAM区50H~55H单元中,试求和,并将结果放在片内RAM区03H(高位),04H(低位)单元中。 (2)编程将内部RAM70H~7FH中的16个数据按从小到大的顺序重新排序。 3.主要仪器设备 PC机一台。

4.程序清单 (1)数据和.ASM ORG 0000H LJMP MAIN ORG 1000H MAIN:MOV R2,#06H MOV R3,#00H MOV R4,#00H MOV R0,#50H L1:MOV A,R4 ADD A,@R0 MOV R4,A INC R0 CLR A ADDC A,R3 MOV R3,A DJNZ R2,L1 END (2)数据排序.ASM ORG 0000H LJMP MAIN

单片机35个实例1(汇编)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此, 我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太 大,所以我们在执行某一指令时,插入延时程序,来达到我们 的要求,但这样的延时程序是如何设计呢?下面具体介绍其原 理: 如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒 机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248 =498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002

因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7 =248时,延时10ms,以此为基本的计时单位。如本实验要求 0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如 下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据 发光二极管的单向导电性可知,这时发光二极管L1熄灭;当 P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我 们可以使用SETB P1.0指令使P1.0端口输出高电平,使用 CLR P1.0指令使P1.0端口输出低电平。 5.程序框图

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

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

AD教案实验6单片机最小系统原理图设计

实验六单片机最小系统原理图设计 1 实验目的及要求 ?熟悉Altium designer的操作 ?能够画库原件中没有的库以及封装,并能加载到库,在原理图中熟练调用 ?能够设计较为复杂的电路原理图,并输出元件清单表 2 实验设备 装有Altium designer的电脑一台 3 实验步骤 新建设计工作区:文件-新建-设计工作区 新建PCB工程:文件-新建-工程-PCB工程 新建原理图,PCB图,原理图库以及PCB图库:文件-新建-原理图/PCB/库-原理图库/PCB图库 保存PCB工程文件到以自己名字新建的文件夹里面,保存文件名为51DPJ,文件类型为默认。(实验五已经新建完的可以直接打开,不用再新建一遍了。) 然后在新建完的原理图的里面把本次实验的原理图设计出来。本次实验注重在原理图的编辑以及PCB的制作,以51单片机最小系统为例,大家做的时候可以不完全按照所给原理图画,然后很多元器件可以在网上找到PDF的文档资料,资料中会比较详细介绍元器件的信息,封装,电路图,实物图,以及检测的效果图,电路中的封装基本按照上面来做。

图3 实验原理图 输出元件清单表BOM BOM表对一个项目来说非常重要,因为这张表不仅包含了原理图上的所有元件,同事也是生成部分和采购部门的重要参考文件,因为生成部要利用BOM知道元件的位置及型号,二采购部要知道元件完整型号以及精度等级等参数从而去进行选购,因此,工程师一定要保证BOM单不能出错,否则造成的麻烦可能影响你的产品设计周期。 完整BOM单输出: ?进入BOM单输出对话框:单机菜单Reports---bill of Materials进入BOM单输出对 话框 ?设置BOM单格式并输出:All columns 表格内用于选择 BOM单要添加的栏;从 all columns 栏选中某关键字拖拽到 Grouped Columns 栏用于设置以前关键字进行整行合并;Export 区域内用于设置 BOM 单输出格式;最后单击 EXPORT 按钮导出BOM 单。 ?变量BOM单输出:按照第二部设置好BOM格式后,如果要以变量形式输出 BOM单,课单机Menu按钮,从中选择Change Variant 变量,再到处BOM单既可以变量形式输出。

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

单片机综合实验教学大纲

《单片机综合实验》教学大纲 学时:18学时学分:1学分课程性质:必修 实验个数:8个使用专业:农机、农机(师)、交通 大纲执笔人:魏新华大纲审定人:吕钊钦 一、实验课的性质与任务 本实验课是与《微机原理与应用》(单片机基础)课程相配套的实验课程。《单片机基础》主要研究单片机微控制器的硬件结构、工作原理、编程方法和简单的接口技术,是一门实践性很强的课程,必须通过实验来加深学生对单片机的工作原理、程序设计、常用接口电路的应用和编程方法等知识的理解和掌握。通过实验课教学使学生进一步掌握MCS-51系列单片机的指令系统,基本掌握汇编语言程序的设计调试方法,熟悉简单接口电路的设计和应用,学会常用单片机仿真系统的使用方法。 二、实验目的与要求 通过实验来加深学生对单片机的工作原理、程序设计、常用接口电路的应用和编程方法等知识的理解和掌握。各个实验的具体目的和要求如下: 实验1:指令系统实验(2学时) 实验目的: (1)、了解单片机仿真系统的组成和原理,熟悉单片机汇编语言程序的调试过程。 (2)、熟悉MCS-51各类指令的功能。 实验要求:编几个简单程序,分别实现数据传送、算术运算、逻辑运算,并根据运算结果实现简单的程序转移。 实验2:汇编语言程序设计实验(2学时) 实验目的: (1)、使学生进一步熟悉指令系统和初步掌握汇编语言程序设计的基本方法。 (2)、熟悉分支结构和循环结构程序设计的基本技巧。 (3)、逐步进行程序调试和运行实践。 实验要求:编写一个散转程序、一个查表程序。 实验3:P1口及外部简单I/O口的应用实验(2学时) 实验目的: (1)、学习P1口的使用方法。 (2)、学习延时子程序的编写和使用。 (3)、学习外部简单I/O口的扩展和使用方法。 实验要求: (1)、P1口做输出口,控制8个LED循环点亮。 (2)、P1口做输入口,接8个扭子开关,74LS273做输出口,控制8个LED,将开关状态反映到LED上。 实验4:有急救车优先的交通灯控制实验(2学时) 实验目的: (1)、学习外部中断技术的基本使用方法。 (2)、进一步学习在单片机系统中扩展简单I/O口的方法。 (3)、掌握中断处理程序的编程方法。 实验要求:以两个74LS273作为输出口,控制12个LED,模拟交通灯管理,并允许急救车优先通过。用外部中断模拟急救车到来。 实验5 定时器实验(2学时)

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级: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)

《单片机》课程实验教案

《单片机》课程实验教案 实验一流水灯实验 实验目的: 1、熟悉仿真软件PROTEUS的使用方法。 2、掌握利用PROTEUS软件进行单片机系统设计与仿真的过程。 3、掌握发光二极管的控制方法。 实验原理: 利用P1口的通用I/O口功能,P1口做输出口,通过程序向P1口传送数据,用8只发光二极管分别显示P1.7~P1.0各管脚的电平状态,编写程序实现暗点以1HZ频率由低位到高位循环。 P1口接发光二极管的阴极,P1口的管脚输出低电平时对应的发光二极管点亮,实验电路如图所示。 1、从 (1)AT89S51:单片机; (2)RES、RX8:电阻、8排阻; (3)LED-GREEN:绿色发光二极管; (4)CAP、CAP-ELEC:电容、电解电容; (5)CRYSTAL:晶振。 2、放置元器件。 3、放置电源和地。 4、连线。 5、元器件属性设置。 6、电气检测。 实验设备及软件系统: 1、电脑;

2、MA TLAB软件。 实验步骤: 1、画流程图。 2、编写汇编程序。 3、通过菜单“source→Add/Remove Source Files…”新建源程序文件:DSJ1.ASM。 4、通过菜单“source→DPJ1.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。 5、程序编辑好后,单击按钮存入文件DSJ1.ASM。 6、源程序编译汇编、生成目标代码文件。 7、通过菜单“source→Build All”编译汇编源程序,生成目标代码文件。若编译失败,可对程序进行修改调试直至汇编成功。 8、加载目标代码文件。 9、全速仿真。 单击按钮,启动仿真。暗点以1HZ频率由低位到高位循环移动。 10、仿真调试。 (1)带断电仿真。

单片机实验报告一

单片机实验报告 1 姓名 陈奋裕 时间 2014/10/30 地点 机电实验大楼B526 实验题目 软件开发环境和简单程序设计 一、实验目的 1. 熟悉WAVE 软件使用 2. 学习简单程序的调试方法 二、实验主要仪器及环境 PC 机、WA VE 软件、仿真器+仿真头、实验板、电源等。 三、实验内容及步骤 1.启动PC 机,打开WAVE 软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序。 2.打开CPU 窗口,选择单步或跟踪执行方式运行程序,观察CPU 窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 四、流程图及参考程序 实验1 1)参考程序 2)流程图 ORG 0000H START EQU 30H MOV R0, #START MOV R2, #10 mov a,#01h Loop: MOV @R0,A NOP LJMP $ END

五、实验及程序的分析和讨论 (1)第一个程序是将地址为30H到39H的寄存器的内容全部置1。先在R0中存放内部存储器的起始地址30H,R2中存放内部存储器的长度10个,累加器置1,然后利用循环控制指令DJNZ R2,Loop控制10次循环给上述10个单元赋值1.最后,使单片机自身跳转。 (2)实验得到全速执行后相应的测试结果: (3)实验得到30H到39H寄存器执行后的内容: 从该表中也可以看出该程序的功能,即将30H到39H的寄存器内容置1,说明自己的分析是对的。 六、实验小结 1、汇编语言的结果在软件里面全部都是黑色字体,无法编译,在老师的 提醒下,知道了WAVE软件只能执行ASM文件,所以实验前要先将文件 的类型改为.ASM。 2、程序中的逗号要在英文的状态下面编写;若提示有空余符号,则是分 号后面直接写注释,不要添加空格 七、思考题 1、软件开发环境提供了哪些调试手段?各有何特点? 答: 1.伟福仿真器为我们的调试提供了多种方法,它可以编译,以便查 找语法错误; 2.单步执行,来检查每句程序的功能; 3.全速执行程序,来检查整段程序要完成的功能; 4.还可以设置断点进行调试,以便分段执行程序。 2、如何将存储器块的内容移动到另一位置? 答:借助指针和寄存器,利用转移类指令即可将存储器块的内容移动到 另一位置。

最新单片机原理实验教案参考程序

单片机原理实验教案 参考程序

广东松山职业技术学院《MCS-51单片机原理》实验指导书 宁玉珊黄晓林 使用Proteus辅助设计与仿真

实训项目1 Proteus辅助设计与仿真的使用 一、实训目的 学习并熟练掌握PROTEUS辅助设计与仿真软件的使用。通过使用Proteus的ISIS组件绘制AT89C51功能接口原理图,并对原理图编写程序和调试程序,观察在仿真条件下的实现功能的效果。 二、实训内容 在PROTEUS仿真环境下实现一个发光二极管(LED)闪烁。要求LED亮0.5s灭1s,并绘制原理图和编写实现程序,同时用虚拟的示波器观察硬件和软件实现的效果。 三、实训器材 安装有Proteus7软件的计算机 1 台。 四、实训步骤 1)在硬盘建立文件夹用来保存新建项目的所有文件。如在D盘建立PROJECT文件夹。 2)选择‘开始→程序→Proteus7 professional→ISIS professional(或者双击桌面图标ISIS)’,进入Proteus仿真环境,如图P1_1和P1_2所示。 图P1-1

图P1-2 3)选择菜单【File/New Design】创建一个新的设计项目,如图P1_3所示。 图P1-3 4)此时系统会弹出模板选择窗口,选择‘DEFAULT’点击【OK】即可,如图P1_4所示。

图P1_4 5)点击界面左侧工具栏中的图标,接着点击元件池上方的按钮,将要用到的元器件从系统库调到当前设计文件库中。在弹出的Pick Devices对话框左上角的‘Keywords’文本框中键盘输入元件名(或元件的其它关键词)搜索到需要的元器件。双击‘Results’栏下的目标元件,该元件即调出到当前设计文件库的元件列表中,如图P1_5所示。本实训中所要用到的元件如表PS1_1所示。 图P1_5 元件名称搜索关键词元件序 数值备注 号 电阻器Resistor R1 10k 电阻器Resistor R2 1k 电解电容器MINELECT1U63V C1 4.7μ 陶瓷电容器CERAMIC22P C2、C3 22p 晶振CRYSTAL X1 12MHz 单片机AT89C51 U1

单片机实验教学大纲

《单片机》实训教学大纲 一、课程概况 开课单位:信息技术系 适用专业:应用电子技术、电子信息工程、电子工艺 开课时间:一学期(第四学期) 总学时:52H 修课方式:必修 考核方式:考查 二、课程的性质、任务和基本要求 课程的性质和任务 《单片机原理》是移动通讯,电子技术应用专业的一门专业必修课程。单片机是应工业测控的需要而诞生的,被广泛应用于家用电器、智能仪器仪表、移动通讯、工业过程控制、航空、汽车等领域。 本课程主要介绍单片机内部结构原理、指令系统、存储器 的配置、输入输出接口、中断、定时与计数、串行通讯、 汇编语言程序设计、A/D、D/A接口技术。 课程教学的基本要求 了解单片机的基础知识及其发展 掌握单片机内部结构、工作原理、存储器配置、指令系统、输入输出接口、中断、定时与计数。能比较熟练地用汇编 语言进行程序设计。

掌握串行通讯技术,初步掌握A/D、D/A接口技术教学方法和教学形式建议 该课程实践性较强,需要学生多作上机练习。 主讲教师需要有丰富的实践经验,熟悉开发环境。 针对所留习题,可以组织两到三次讨论,以便学生掌握单 片机原理。 课程教学要求的层次 掌握:要求学生能够较好地理解,并且能够进行简单分析 和判断。 了解:要求学生能够一般地知道所学内容。 三、学时分配 学时分配:课程教学总学时数为102学时,其中课内52学时,实验50学时。

四、实验内容和实验安排 [实验要求] 注意自始至终贯彻课程中所介绍的内容。深刻理解单片机的工作原理,各指令的运用,接口特性。 学生应独立完成所布置习题。为保证在统一安排的上机时间内完成实验内容,学生应事先画出硬件连接图,设计好程序。 [实验安排] 共安排二十五次实验 第一次:传送指令练习(一) 熟悉开发机的工作过程,熟悉传送指令、单片机内部工 作寄存器、累加器A和RAM单元的操作。 第二次:传送指令练习(二) 熟悉堆栈指针的设置,压栈,出栈指令以及堆栈指针的 变化。弄清数据交换指令的功能。 第三次:算术逻辑指令练习 熟悉算术逻辑指令功能,弄清算术逻辑指令对标志位的影响。 第四次:控制转移类指令指令练习 熟悉控制转移类指令的功能,弄清PC值的改变过程。 第五次:位操作指令练习

单片机实验报告

实 验 报 告 实验课程:单片机原理及应用 班级: 12自动化2班 学号: 姓名: 教师:张玲 成绩: 实验日期:年月日 实验名称:实验1——计数显示器 一、实验目的: 学习Proteus 软件的使用,掌握单片机原理图的绘图方法。 二、实验内容: 1、绘制“计数显示器”电路原理图; 2、利用提供的hex文件验证此电路的运行效果。 三、实验要求: 提交的实验报告中应包括:1、绘图方法简述,要求说明元件与电源的选取、摆放及属性编辑,总线与标签的画法等内容;2、电路原理图; 3、仿真运行效果展示,要求就仿真文件加载方法及3~4幅运行截图进行简要说明;4、实验小结,说明遇到的主要问题或实验

1体会等。 参考电路原理图如下: 元件类别电路符号元件名称 Microproces sor ICs “U1”80C51 Miscellaneo us “X1”/12MHz CRYSTAL Capacitors“C1”~“C2” /1nF CAP Capacitors“C3”/22μF CAP-ELEC Resistors Packs “RP1”/7-100ΩRESPACK-7 Resistors“R1”/100ΩRES Optoelectro nics “LED1”~ “LED2” 7SEG-COM-CAT-G RN Switches & Relays “BUT”BUTTON 1、编程思路及C51源程序:

2、电路原理图: 3、仿真运行效果展示:

4、实验小结: 熟悉Proteus软件,了解软件的结构组成与功能;学习ISIS模块的使用方法, 学会设置图纸、选元件、线画总线、修改属性等基本操作;学会可执行文件 加载及程序仿法;理解Proteus在单片机开发中的作用,完成单片机电路原 理图的绘制。

项目单片机应用技能实训C语言教案

单片机应用技能实训(C语言)教案—项目2 项目2 广告灯电路制作 任务1 MCS-51单片机I/O端口及C语言相关指令

二、教学实施过程 实 施 环 节 教学内容导 学 方 法组 织 教 学 1、检查学生出勤情况并做好记录。 2、调整学生的注意力,为上课作准备。 互 动 交 流复 习 提 问 1、MCS-51单片机由哪几部分组成 2、MCS-51单片机有多少个I/O口引脚 提 问 导 思导 入 夜晚的商业街上,各种各样的广告彩灯光彩夺目,变幻无穷,非常好看。那么功能强大的单片机是否能完成广告彩灯的控制任务呢本项目的任务就是制作一个用单片机控制的广告灯电路。为完成项目制作,先进行相关基本知识的学习。 启 发 学 习 积 极 性讲 授 新 课 一、MCS-51单片机并行接口 1、P0口的结构和工作原理 P0口每一位的结构如图2-2所示,它由一个输出锁存器,上下两个三态缓冲器,一个输出驱动电路和一个输出控制电路组成。 图2-2 P0口的结构 从P0口输出数据的方法有两种,一种是执行以P0口为目的操作数的数据传送指令来实现,另一种是执行以P0口位为目的操作数的位操作指令来实现。分别举例如下: P0=0x66; 12 fsoc 1 ?12 10 6 1 6 ? ? sμ

1、

89C1’ex),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。 4、编译、连接 在设置好工程后,即可进行编译、连接。点击Build target 按钮,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码。 编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现。 三、布置作业学生练习,老师指导。 1、单片机控制广告灯电路的仿真验证。 2、观察现实中广告灯的变化情况,通过改写程序,完成不同的灯光效果。比一比,看谁制作的变化效果又多又好。 3、本项目中采用低电平驱动,是否能采用高电平驱动,试一试,想想为什么利用多媒体或机房相关软件进行操作演示。讲解各步骤的含义。 讲解各步骤的含义。完成程序编译后,展示仿真效果。 课堂小结1、proteus的基本操作步骤。 2、keil的操作步骤。

基于protuse的单片机模拟的实例

本人对单片机的一些了解,在这里和大家分享。 (1)基于AT89C52的同步串口通信 ①单片机1程序 (程序在Kile C51上运行通过。) /******************************************************************** * 文件名:液晶1602显示.c * 描述: 该程序实现了对液晶1602的控制。 * 创建人:东流,2009年4月10日 * 版本号:2.0 ***********************************************************************/ #include #define uchar unsigned char #define uint unsigned int //这三个引脚参考资料 sbit E=P3^5; //1602使能引脚 sbit RW=P3^6; //1602读写引脚 sbit RS=P3^7; //1602数据/命令选择引脚 sbit aaa=P1^0; sbit bbb=P1^1; sbit aa=P3^0; sbit bb=P3^1; /******************************************************************** * 名称: delay() * 功能: 延时,延时时间大概为140US。 * 输入: 无 * 输出: 无

***********************************************************************/ void delay() { int i,j; for(i=0; i<=100; i++) for(j=0; j<=20; j++) ; } /******************************************************************** * 名称: enable(uchar del) * 功能: 1602命令函数 * 输入: 输入的命令值 * 输出: 无 ***********************************************************************/ void enable(uchar del) { P2 = del; RS = 0; RW = 0; E = 0; delay(); E = 1; delay(); } /******************************************************************** * 名称: write(uchar del) * 功能: 1602写数据函数 * 输入: 需要写入1602的数据 * 输出: 无 ***********************************************************************/ void write(uchar del) { P2 = del; RS = 1; RW = 0; E = 0; delay(); E = 1; delay();

个单片机C语言实例()

11.00-59 秒计时器<利用软件延时) 1.实验任务 如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0 口驱动显示秒时间的十位,而P2 口驱动显示秒时间的个位。2.电路原理图 图 4.11.1 3.系统板上硬件连线 <1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7 端口用8 芯排线连接到“四路静态数码显示模块”区域中的任一个a-h 端口上;要求:P0.0/AD0 对应着a, P0.1/AD1对应着b,……,P0.7/AD7对应着h。 <2.把“单片机系统”区域中的P2.0/A8-P2.7/A15 端口用8 芯排线连接到“四路静态数码显示模块”区域中的任一个a-h 端口上;要求:P2.0/A8 对应着a, P2.1/A9对应着b,……,P2.7/A15对应着h。 4.程序设计内容 tyw 藏书<1.在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加 1 ,当秒计数达到60 时,就自动返回到0,重新秒计数。<2.对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10 整除和对10 求余。 <3.在数码上显示,仍通过查表的方式完成。<4.一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到1 秒时间为1 .002 秒。 DELY1S: MOV R5,#100 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET 5.程序框图 tyw 藏书 图 4.11.2 6.汇编源程序 Second EQU 30H ORG 0 START: MOV Second,#00H NEXT: MOV A,Second MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOVC A,@A+DPTR MOV P2,A

51单片机实验报告

51单片机实验报告

实验一 点亮流水灯 实验现象 Led灯交替亮,间隔大约10ms。 实验代码 #include void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; Delay10ms(50); P0 = 0xff; Delay10ms(50); } }

void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } 实验原理 While(1)表示一直循环。 循环体首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。 实验2 流水灯(不运用库函数) 实验现象 起初led只有最右面的那一个不亮,半秒之后从右数第二个led

也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程 #include #include void Delay10ms(unsigned int c); main() { unsigned char LED; LED = 0xfe; while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) { LED = 0xfe; } } } void Delay10ms(unsigned int c)

单片机实验 教学方案

《单片机实验》教学大纲 一、课程名称:单片机实验 Single-Chip Microcomputer Lab 二、课程编号: 三、学分学时:1学分/16学时 四、使用教材:自编教材《单片机实验》 五、课程属性:实践/ 必修 六、教学对象:应用物理学专业本科生 七、开课单位:理学院 八、先修课程:模拟电子技术、数字电子技术、微机原理及接口技术、单片机技术 九、教学目标: 单片机在物理量的采集、处理、控制等各方面有着十分广泛的应用,单片机技术涉及硬件、软件,是一门实践性很强的应用技术。 ?指导学生通过单片机实验进一步了解单片机的硬件结构,熟悉单片机指令系统和编 程语言、加深对单片机工作原理的理解。 ?培养与提高学生单片机应用系统的设计能力,其中包括:通过阅读实验教材或资料 着手进行单片机实验的能力;简单应用系统的硬件设计能力;简单应用系统的软件 编程能力;正确使用计算机开发平台的能力;完成简单设计性实验的能力等。 ?培养与提高学生的科学实验素养,要求学生具有理论联系实际和实事求是的科学作 风,严肃认真的工作态度,主动探索的进取精神,遵守纪律、团结协作和爱护公共 财物的优良品质。 十、课程要求: 通过HHXX2.0实验板的焊接,安装调试和一系列和综合应用实验,了解单片机的硬件结构,指令系统、编程语言,学习掌握单片机应用系统配置、接口技术、程序设计和软、硬件的调试,培养和提高独立开展科学实验研究工作的素质和能力,具体要求为: ?指导学生通过本课程完成16学时共4个设计性单片机实验, ?通过实验使学生加深对单片机软、硬件系统的理解与掌握; ?通过实验熟悉单片机应用系统的设计方法和调试过程; ?通过实验掌握单片机应用系统的硬件设计和软件设计。 十一、教学内容:

单片机

单片机实验 学号:0905074134 姓名:贾亚云 学号:0905074156 姓名:刘昊江 学号:0905074141 姓名:徐海湾 学号:0905074119 姓名:赵皓

实验一:4×4矩阵键盘应用实例 一、实验目的: 学会用单片机做4×4矩阵键盘实验; 学习软件的使用方法及了解其步骤。 二、实验结果图:

三、实验程序: #include #define uint unsigned int #define uchar unsigned char uchar code KEY_TABLE[]={ 0xee,0xde,0xbe,0x7e, 0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b, 0xe7,0xd7,0xb7,0x77};//键盘表 uchar code TABLE[]={0x3F,0x06,0x5B,0x4F, 0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7c, 0x39,0x5e,0x79,0x71};//共阴极数码管编码表void delayl()//长延时,作点亮数码管用 {uint n=50000;while(n--);} void delays()//短延时,作消振用 {uint n=10000;while(n--);} main() { uchar temp,key,num,i; P2=0; while(1) { P3=0xf0;//置行为0,列为1,读列值。 if(P3!=0xf0)//判断有,无键盘按下 {delays();//消振

单片机原理实验报告(详细)

湖南城市学院 实验报告 2018-2019 学年上学期 姓名:*** 班级学号:****** 实验课程:单片机原理及应用 实验室名称:电子工程实验室 湖南城市学院信息与电子工程学院实验中心印制

实验项目名称:实验一指示灯和开关控制器实验 一、实验目的及要求 1、学习51单片机I/O基本输入/输出功能,掌握汇编语言的编程与调试方法; 2、熟悉proteus软件,了解软件的结构组成与功能; 3、学会在ISIS模块中进行汇编程序录入、编译和调试; 4、理解单片机程序控制原理,实现指示灯/开关控制器的预期功能。 二、实验原理 实验电路原理图如图1所示,图中输入电路由外接在P3口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。此外,还包括时钟电路、复位电路和片选电路。 图1 实验原理图

在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的灯亮状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。软件编程原理为:(1)8只发光二极管整体闪烁3次 亮灯:向P2口送入数值0; 灭灯:向P2口送入数值0FFH; 闪烁3次:循环3次; 闪烁快慢:由软件延时时间决定。 (2)根据开关状态控制灯亮或灯灭 开关控制灯:将P3口(即开关状态)内容送入P2口; 无限持续:无条件循环。 程序流程图如图2所示。 图2 实验程序流程图

三、实验仪器设备及装置 (1)硬件:电脑一台; (2)仿真软件:Proteus; (3)编程软件Keil uVision4。 其中,仿真软件ISIS元件清单如表1所示。 表1 仿真软件ISIS元件清单 四、实验内容和步骤 (一)实验内容: (1)熟悉ISIS模块的汇编程序编辑、编译与调试过程; (2)完成实验的汇编语言的设计与编译; (3)练习ISIS汇编程序调试方法,并最终实现实验的预期功能。 (二)实验步骤: (1)提前阅读与实验相关的阅读材料; (2)参考指示灯/开关控制器的原理图和实验的元件清单,在ISIS中完成电路原理的绘制; (3)参考程序流程图在Keil uVision4中编写和编译汇编语言程序; (4)利用ISIS的汇编调试功能检查程序的语法和逻辑错误; (5)观察仿真结果,检验与电路的正确性。

相关文档
最新文档