单片机原理实验教案参考程序doc资料.docx

上传人:b****8 文档编号:30595547 上传时间:2023-08-18 格式:DOCX 页数:41 大小:602.80KB
下载 相关 举报
单片机原理实验教案参考程序doc资料.docx_第1页
第1页 / 共41页
单片机原理实验教案参考程序doc资料.docx_第2页
第2页 / 共41页
单片机原理实验教案参考程序doc资料.docx_第3页
第3页 / 共41页
单片机原理实验教案参考程序doc资料.docx_第4页
第4页 / 共41页
单片机原理实验教案参考程序doc资料.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

单片机原理实验教案参考程序doc资料.docx

《单片机原理实验教案参考程序doc资料.docx》由会员分享,可在线阅读,更多相关《单片机原理实验教案参考程序doc资料.docx(41页珍藏版)》请在冰豆网上搜索。

单片机原理实验教案参考程序doc资料.docx

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

广东松山职业技术学院

《MCS-51单片机原理》实验指导书

宁玉珊黄晓林

使用Proteus辅助设计与仿真

实训项目1Proteus辅助设计与仿真的使用

一、实训目的

学习并熟练掌握PROTEUS辅助设计与仿真软件的使用。

通过使用Proteus的ISIS组件绘制AT89C51功能接口原理图,并对原理图编写程序和调试程序,观察在仿真条件下的实现功能的效果。

二、实训内容

在PROTEUS仿真环境下实现一个发光二极管(LED)闪烁。

要求LED亮0.5s灭1s,并绘制原理图和编写实现程序,同时用虚拟的示波器观察硬件和软件实现的效果。

三、实训器材

安装有Proteus7软件的计算机1台。

四、实训步骤

1)在硬盘建立文件夹用来保存新建项目的所有文件。

如在D盘建立PROJECT文件夹。

2)选择‘开始→程序→Proteus7professional→ISISprofessional(或者双击桌面图标ISIS)’,进入Proteus仿真环境,如图P1_1和P1_2所示。

图P1-1

图P1-2

3)选择菜单【File/NewDesign】创建一个新的设计项目,如图P1_3所示。

图P1-3

4)此时系统会弹出模板选择窗口,选择‘DEFAULT’点击【OK】即可,如图P1_4所示。

图P1_4

5)点击界面左侧工具栏中的

图标,接着点击元件池上方的按钮

,将要用到的元器件从系统库调到当前设计文件库中。

在弹出的PickDevices对话框左上角的‘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

发光二极管

LED-YELLOW

D1

表PS1_1元件列表

6)点击界面左侧工具栏中的

图标,选择元件列表中的元件,在原理图编辑框中放置元件、布局及连线,构成原理图主体,如图P1_6所示。

放置元件、布局及连线的方法与Protel大致相同。

图P1_6

7)点击ISIS界面左侧工具栏TerminalsMode图标,选择元件列表中的元件为整幅原理图添加地端和电源端。

电源为Power,幅值可以默认为VCC,地为Ground,如图P1_7所示。

图P1_7图P1_8

8)点击ISIS界面左侧工具栏VirtualInstrumentsMode图标,选择元件列表中的元件为整幅原理图添加虚拟示波器,观察系统运行时P1.0口的波形。

虚拟示波器为Oscilloscopeund,如图P1_8所示。

9)选择菜单【File/SaveDesign】保存刚才的设计项目,如图P1_9所示。

图P1_9图P1_10

10)此时系统会弹出保存文件的窗口,选择好指定保存文件的位置,并在文件名文本框中输文件名,点击【保存】即可,如图P1_10所示。

11)选择菜单【Soure/Add/RemoveSoureFiles】为CPU添加源程序。

如图P1_11所示。

图P1_11

12)此时系统会弹出‘Add/RemovesourecodeFiles’对话框窗口。

在对话框窗口的‘CodeGenerationTool’列表框中选择汇编工具ASEM51。

然后点击‘New’按钮,在弹出的对话框中的‘文件名’文本框中输入源程序的文件名,点击‘打开’按钮,如文件不存在时弹出确认对话框,选择“是”即可,如图P1_12所示。

图P1_12

13)选择菜单【Soure】下刚才添加的源程序,如图P1_13所示。

图P1_13图P1_14

14)此时系统会自动弹出Proteus自带汇编语言源程序编辑器‘SourceEditor’窗口,在编辑器窗口中键入源程序并以后缀为ASM的文件存盘,如图P1_14所示。

参考的源程序清单如下:

LED_FlagEQUp1.0;LED灯

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

SETBLED_Flag;LED灯

MOVA,#05H

ACALLDELAY;延时子程序

CLRLED_Flag;LED灯

MOVA,#0AH

ACALLDELAY;延时子程序

SJMPMAIN

;===============================================;

;延时子程序,基本延时100MS;

;入口数据A为100MS的倍数,出口数据无;

;===============================================;

DELAY:

MOVR5,A

DELAY1:

MOVR6,#7Ch

DELAY2:

MOVR7,#0C8H

DJNZR7,$

DJNZR6,DELAY2

DJNZR5,DELAY1

RET

END

15)选择菜单【Soure/Buildall】对源程序进行编译,修正语法错误直至完全正确为止,如图P1_15所示。

图P1_15图P1_16

16)双击原理图编辑窗口中的AT89C51,系统会弹出‘EditComponent’对话框。

在弹出‘EditComponent’对话框中向CPU加载源运行程序。

点击‘ProgramFile’文本框右侧打开文件夹图标

,双击刚才编译生成的HEX文件,点击‘OK’即可,如图P1_16所示。

17)CPU运行程序加载完毕之后,点击仿真控制按钮的“▶”按钮或选择菜单命令【Debug/Execute】全速运行仿真。

观察仿真功能实现的效果。

点击仿真控制按钮的“‖”按钮暂停仿真,此时可以观测程序运行中间结果,再次按下此按钮则继续全速运行仿真。

停止运行仿真则点击仿真控制按钮的“■”按钮。

18)在全速运行仿真的过程中,通过点击仿真控制按钮的“‖”按钮暂停仿真,选择菜单命令【Debug/8051CPU/Registers或SFRMemory或Internal(IDATA)Memory】观测CPU内部的工作寄存器、特使功能寄存器和数据存储器的值,如图P1_17所示。

图P1_17

实训项目2基本输入/输出(I/O)接口的使用

一、实训目的

掌握MSC51单片机P口简单使用。

二、实训内容

利用拨动开关的开关信息输入P3口控制点亮发光二极管由P0口作为信息的输出。

三、实训器材

安装有Proteus7软件的计算机1台。

四、实训步骤

1)在Proteus仿真环境下,绘制实现功能的原理图,原理图如图P2_1所示。

本实训中所要用到的元件如表PS2_1所示。

图P2_1

元件名称

搜索关键词

元件序号

数值

备注

电阻排

Respack-8

RP1

电阻器

Resistor

R1~R8

0.5k

电阻器

Resistor

R9~R12

10k

电解电容器

MINELECT1U63V

C1

4.7μ

陶瓷电容器

CERAMIC22P

C2、C3

22p

晶振

CRYSTAL

X1

12MHz

单片机

AT89C51

U1

发光二极管

LED-YELLOW

D1~D4

发光二极管

LED-RED

D5~D8

拨动开关

SW-SPDT

SW1~SW3

表PS2_1

2)编写程序。

程序实现的功能为:

由P3.0~P3.2来表示二进制数(通过拨动开关),指示相应的由P1.0~P1.7连接的发光二极管亮。

3)编写程序。

程序在实现上述功能的基础上,实现原亮的发光二极管变为闪烁。

4)在编写程序。

程序实现的功能为:

利用查表让走马灯(用接在P1口的8个发光二极管模拟)从两边到中间循环点亮。

七、参考程序清单:

1)程序1:

CY_FlagEQUPSW.7;进位标志

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

CLRA

MOVP0,A

MAIN1:

MOVA,P3

ANLA,#07H

INCA

MOVR3,A

SETBCY_Flag;进位标志

CLRA

LOOP:

RLCA

DJNZR3,LOOP

MOVP0,A

SJMPMAIN1

END

2)程序2:

CY_FlagEQUPSW.7;进位标志

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

CLRA

MOVP0,A

MAIN1:

MOVA,P3

ANLA,#07H

INCA

MOVR2,A

CLRA

SETBCY_Flag;进位标志

LOOP:

RLCA

DJNZR2,LOOP

MOVP0,A

MOVA,#05H

ACALLDELAY;延时子程序

MOVP0,#00H

MOVA,#05H

ACALLDELAY;延时子程序

SJMPMAIN1

;===============================================;

;延时子程序,基本延时100MS;

;入口数据A为100MS的倍数,出口数据无;

;===============================================;

DELAY:

MOVR5,A

DELAY1:

MOVR6,#100

DELAY2:

MOVR7,#63H

DJNZR7,$

DJNZR6,DELAY2

DJNZR5,DELAY1

RET

END

3)程序3:

LP_VALUEEQU04H;取表值次数

DL_VALUEEQU0AH;延时长度

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

CLRA

MOVDPTR,#TAB

LOOP:

MOVR3,A

MOVCA,@A+DPTR

MOVP0,A

MOVA,#DL_VALUE;延时长度

ACALLDELAY;延时子程序

MOVA,R3

INCA

CJNEA,#LP_VALUE,LOOP

SJMPMAIN

;===============================================;

;延时子程序,基本延时100MS;

;入口数据A为100MS的倍数,出口数据无;

;===============================================;

DELAY:

MOVR5,A

DELAY1:

MOVR6,#200

DELAY2:

MOVR7,#0F8H

DJNZR7,$

DJNZR6,DELAY2

DJNZR5,DELAY1

RET

TAB:

DB81H,42H,24H,18H

END

实训项目3中断系统(定时/计数器)的使用

一、实训目的

熟悉8051定时/计数器的功能,掌握定时/计数器的使用方法,初步掌握中断服务程序的调试方法和广告彩灯的控制原理

二、实训内容

利用8051定时/计数器的功能实现如下功能:

对外部脉冲记数和控制广告彩灯显示。

三、实训器材

安装有Proteus7软件的计算机1台。

四、实训步骤

1)在Proteus仿真环境下,绘制实现功能的原理图,原理图如图P3_1所示。

本实训中所要用到的元件如表PS1_1所示。

图P3_1

元件名称

搜索关键词

元件序号

数值

备注

电阻排

Respack-8

RP1

电阻器

Resistor

R1~R8

0.5k

电阻器

Resistor

R9~R12

10k

电解电容器

MINELECT1U63V

C1

4.7μ

陶瓷电容器

CERAMIC22P

C2、C3

22p

晶振

CRYSTAL

X1

12MHz

单片机

AT89C51

U1

发光二极管

LED-YELLOW

D1~D4

发光二极管

LED-RED

D5~D8

拨动开关

SW-SPDT

SW1~SW2

表PS3_1

2)点击ISIS界面左侧工具栏GeneratorMode图标

,选择元件列表中的元件中的DCLOCK为CPUAT89C51的P3.5添加脉冲时钟,如图P3_2所示。

3)双击原理图编辑窗口中的脉冲时钟DCLOCK,系统会弹出‘DigitalClockGeneratorProperties’对话框。

在弹出对话框中修改‘Frequency(Hz)’值为0.5KHz,点击‘OK’即可,如图P3_3所示。

图P3_2图P3_3

4)编写程序。

程序实现的功能为:

定时器T1对外部脉冲计数,并把计数值利用发光二极管在P0口显示出来。

5)编写程序。

程序在实现功能为广告灯显示,利用两个拨动开关分别控制广告灯的四种不同显示方式,每种方式有八种不同的显示状态,当开关值全为零时广告灯全灭。

七、参考程序清单:

1)程序1

PH_FlagEQU20H.7;脉冲标志

ORG0000H

LJMPMAIN

ORG001BH

LJMPSEV_TIM1

ORG0100H

MAIN:

CLREA

ACALLSYS_INIT

CLRPH_Flag;脉冲标志

CLRA

SETBEA

LOOP:

MOVP0,A

JNBPH_Flag,LOOP1;脉冲标志

CLRPH_Flag;脉冲标志

INCA

LOOP1:

SJMPLOOP

;===============================================;

;系统初始化子程序,无入口参数和出口参数;

;===============================================;

SYS_INIT:

MOVTMOD,#60H

MOVTH0,#0FFH

MOVTL0,#0FFH

SETBET1

SETBTR1

RET

;===============================================;

;定时/记数中断服务子程序;

;===============================================;

SEV_TIM1:

SETBPH_Flag;脉冲标志

RETI

END

2)程序2

SP_FlagEQU20H.7;方案步伐标志

SP_LENEQU30H;方案步伐长度

TM_LENEQU31H;定时长度

ORG0000H

LJMPMAIN

ORG000BH

LJMPSEV_TIM0

ORG0100H

MAIN:

CLREA

ACALLSYS_INIT;系统初始化

CLRSP_Flag;方案步伐标志

CLRA

MOVP0,A

MOVTM_LEN,A;定时长度

SETBEA

PROJECT1:

MOVA,P3

ANLA,#03H

CJNEA,#01H,PROJECT2

MOVDPTR,#TAB1

SJMPPRO_STEP

PROJECT2:

CJNEA,#02H,PROJECT3

MOVDPTR,#TAB2

SJMPPRO_STEP

PROJECT3:

CJNEA,#03H,CLOSE

MOVDPTR,#TAB3

SJMPPRO_STEP

CLOSE:

CLRA

MOVP0,A

SJMPPROJECT1

PRO_STEP:

MOVTM_LEN,#00H;定时长度

MOVSP_LEN,#08H;方案步伐长度

CLRSP_Flag;方案步伐标志

LOOP:

CLRA

MOVCA,@A+DPTR

MOVP0,A

JNBSP_Flag,LOOP;方案步伐标志

INCDPTR

CLRSP_Flag;方案步伐标志

DJNZSP_LEN,LOOP

SJMPPROJECT1

;===============================================;

;系统初始化子程序,无入口参数和出口参数;

;===============================================;

SYS_INIT:

MOVTMOD,#01H

MOVTL0,#0B0H

MOVTH0,#3CH

SETBET0

SETBTR0

RET

;===============================================;

;定时器中断服务子程序,基本定时50MS;

;===============================================;

SEV_TIM0:

PUSHACC

MOVTH0,#3cH

MOVTL0,#0B0H

INCTM_LEN;定时长度

MOVA,TM_LEN

CJNEA,#0AH,TIM0_END

SETBSP_Flag;方案步伐标志

MOVTM_LEN,#00H

TIM0_END:

POPACC

RETI

TAB1:

DB80H,40H,20H,10H,08H,04H,02H,01H

TAB2:

DB81H,42H,24H,18H,0FFH,18H,24H,42H

TAB3:

DB80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH

END

 

实训项目4中断系统(外部中断)的使用

一、实训目的

掌握MCS-51单片机外部中断原理及使用方法,掌握外部中断服务程序的调试方法。

理解下降沿中断和低电平中断的区别及其中断优先权。

二、实训内容

使用外部中断编写程序实现如下功能:

利用两个发光二极管亮表示系统是否正常运行,一个二极管亮表示系统正常运行,另一个二极管亮表示系统有故障时(外部中断);利用三个发光二极管表示系统是否正常运行,一个二极管亮表示系统正常运行,另外二个表示不同的故障信号,其中大故障为特急故障不可自动恢复,具有最高的优先权,能中断小故障,小故障可在线自动恢复。

三、实训器材

安装有Proteus7软件的计算机1台。

四、实训步骤:

1)在Proteus仿真环境下,绘制实现功能的原理图,原理图如图P6_1所示。

本实训中所要用到的元件如表PS6_1所示。

图P6_1

元件名称

搜索关键词

元件序号

数值

备注

电阻

Resistor

R1~R3

0.5k

电阻

Resistor

R4~R6

10K

电解电容器

MINELECT1U63V

C1

4.7μ

陶瓷电容器

CERAMIC22P

C2、C3

22p

晶振

CRYSTAL

X1

12MHz

单片机

AT89C51

U1

七段数码管

7seg-digital

VFD1

发光二极管

LED-GREEN

D3

发光二极管

LED-RED

D1~D2

拨动开关

SW-SPDT

SW1~SW2

表PS6_1

2)编写程序,程序实现的功能为:

利用两个发光二极管亮表示系统是否正常运行,一个二极管亮表示系统正常运行,另一个二极管亮表示系统有故障时(外部中断)。

3)编写程序,程序实现的功能为:

利用三个发光二极管表示系统是否正常运行,一个二极管亮表示系统正常运行,另外二个表示不同的故障信号,其中大故障为特急故障不可自动恢复,具有最高的优先权,能中断小故障,小故障可在线自动恢复。

六、参考程序清单:

1)程序1:

IN_FlagEQU20H.6;有外部中标志

ER_FlagEQUP3.6;系统故障指示灯

RUN_FlagEQUP3.7;系统正常运行指示灯

ORG0000H

LJMPMAIN

ORG0013H

LJMPSEV_INIT1

ORG0100H

MAIN:

CLREA

ACALLSYS_INIT;系统初始化

CLRER_Flag;系统故障指示灯

SETBRUN_Flag;系统正常运行指示灯

CLRIN_Flag;有外部中标志

SETBEA

MAIN1:

JNBIN_Flag,MAIN2;有外部中标志

CLRIN_Flag;有外部中标志

SETBER_Flag;系统故障指示灯

CLRRUN_Flag;系统正常运行指示灯

SJMPMAIN3

MAIN2:

CLRER_Flag;系统故障指示灯

SETBRUN_Flag;系统正常运行指示灯

MAIN3:

SJMPMAIN1

;===============================================;

;系统初始化子程序,无入口参数和出口参数;

;===============================================;

SYS_INIT:

SETBEX1;开外部中断1中断

CLRIT1;设置INT1低电平触发

RET

;===============================================;

;外部中断1服务子程序;

;===============================================;

SEV_INIT1:

SETBIN_Flag;有外部中标志

RETI

END

2)程序2:

IN1_FlagEQU20H.6;有外部1中标志

IN0_FlagEQU20H.7;有外部0中标志

ERH_FlagEQUP3.5;系统大故障指示灯

ERL_FlagEQUP3.6;系统小故障指示灯

RUN_FlagEQUP3.7;系统正常运行指示灯

ORG0000H

LJMPMAIN

ORG0003H

LJMPSEV_INIT0

ORG0013H

LJMPSEV_INIT1

ORG0100H

MAIN:

CLREA

ACALLSYS_INIT;系统初始化

CLRIN1_Flag;有外部1中标志

CLRIN0_

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

当前位置:首页 > 高等教育 > 文学

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

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