单片机原理实验教案参考程序.docx
《单片机原理实验教案参考程序.docx》由会员分享,可在线阅读,更多相关《单片机原理实验教案参考程序.docx(35页珍藏版)》请在冰豆网上搜索。
单片机原理实验教案参考程序
广东松山职业技术学院
《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中断系统(定时/计数器)的使用
一、实训目的