实验
四、中断交通灯实验
林立强
1000850116
一、实验目的
1、了解MCS-51单片机的组成、中断原理,中断处理过程、外部中断的中断方式。
2、掌握中断响应及处理的编程方法。
二、实验原理
MCS-51的中断系统中有5个中断源:外部中断INTO,INT1,定时器/计数器TO、T1中断和串口UART中断,它们对应不同的中断矢量。 如表:
IE是中断允许寄存器,其中EXO,ETO,EX1,ET1,ES分别是上述5个中断的允许控制位,EA位是中断总允许位,每个中断只有在相应中断允许且总中断也允许的情况下,才能得到中断响应。80XX51的5个中断都可以设为高低2个优先级,IP是中断优先级寄存器,其中PXO,PTO,PX1,PT1,PS位分别对应5个中断的优先级设置,置“1”时设为高优先级中断,为“0”时是低优先级中断。在有中断嵌套要求时,低优先级中断可被高优先级所中断。当同一级的中断同时到来时,先响应中断矢量排在前面的中断。
三、实验电路
电路原理图如下,所需元件为:AT89C51、SW-SPDT、LED-RED、LED-GREEN、 LED-YELLOW、RES、TRAFFICLIGHTS
四、实验内容
参照实验电路,设计交通灯控制系统。模拟交通信号灯控制:一般情况下正常显示,东西-南北交替放行,各方向通行时间为30秒。有救护车或警车到达时,两个方向交通信号灯全为红色,以便让急救车或警车通过,设通行时间为10秒,之后交通恢复正常。用单次脉冲模拟急救车或警车申请外部中断。
1、在生成HEX文件后,用Proteus软件对电路图进行计算机仿真;
2、程序下载到单片机实验板上验证; (实验板数码管的驱动程序见附件)。
五、程序流程图
仿真图:
紧急情况:
源程序:
ORG 0000H
AJMP START
ORG 0023H //串口中断地址
AJMP SBR1
START:MOV TMOD,#00100000B
//定时器方式2
MOV TL10FDH //9600bps/11.0592MHz
MOV TH1,#0FDH
SETB TR1
MOV SCON01100000B//方式1
MOV R0,#20H
MOV R1,#40H
ACALL SOUT
SJMP $
SBR1: JNB RI,SEND
ACALL SIN
SJMP NEXT SEND: ACALL SOUT NEXT: RETI
SOUT: MOV A,@R0
MOV C,P
CPL C
MOV ACC.7,C
INC R0
MOV SBUF,A
CLR TI
RET
SIN: MOV A,SBUF
MOV C,P
CPL C
ANL A,#7FH
MOV @R1,A
INC R1
CLR RI
RET
PLAY: MOV A,R7
MOV B,#10
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
// 0
A B C D E F
END
51单片机控制流水灯
目录
(1)51精简开发板简介 (2)实验目的 (3)实验内容 (4)元件 (5)原理图 (6)实验步骤
(7)主要功能介绍
(8)实验错误及分析 (9)调试及程序 (10)系统测试 (11)实验心得
一、51精简开发板简介
它是一款以8051系列单片机为核心的精简开发板。8051系列单片机是一款应用非常广泛的8位微处理芯片,由于其功能齐全,产品技术成熟,资料广泛,又是学习其他很多单片机的基础,所以它是初学者学习单片机的不二之选,是大学生进行电子实习、课程设计、毕业设计的必备的单片机。
本款51单片机精简开发板较市面上所出售的一般开发板的方便之处在: 支持STC及ATMEL AT全系列51/52单片机芯片,具有两种方便的下载方式,并且能够通过串口方便地和电脑进行通信。
2.省去了一般开发板高成本的外围扩展器件,但仍可以进行单片机I/O口输入输出、定时/计数器、中断、串口通信等常用实验项目。方便的扩展功能使用户能够根据自身需要配备实用的外围器件。
3.具有市面上一般单片机所不具有的超强扩展性能。每组I/O口两侧都与单片机供电电源相连,免去了以往单片机接扩展板时还需另行供电的麻烦。
4.开发板总体布局美观、大方,所有元件均采用直插式封装,便于焊接。 学习51板单片机应由浅入深,逐步掌握,先是模仿实验,再是自己动手。51板单片机的开发环境是Keil uVision3,简单易懂,详细用法本书后面也做了说明。另外书后还附有几个有趣的实验,方便学生测试51板,也作为学生学习、修改之用。
二.实验目的
1、了解“51” 精简开发板的工作原理及结构;
2、了解复杂电子产品生产制造的全过程;
3、熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践观念。
三.实验内容
学会焊接电路,在开发板上实现八个流水现象以及通过使用汇编语言,控制流水灯过程。 四.元件
1、单片机
STC89C52 一块
2、晶振 11.0592MHz一只
3、PCB板
4、电阻 三支
5、电容 八只
6、双路自锁开关 一个
7、LED 发光二极管 八只
8、排针9、4.5V电池盒
10、串口下载线 1.5米
11、串口电平转换芯片 NAX232 12、9针排阻 10千欧姆
13、复位按键
14、
14、PCB板 五.原理图
本产品是一套完整的8位单片机开发系统,若将程序下到51板上,它将成为一个极其有趣的智能玩具。
1.主要性能指标
输入电压:DC 4.5V~5V;典型值:5V
2.功能分区与模块简介
图10.1 51板框图
[1] 单片机
单片机也称单片微控制器(Single Chip Microcontroller),它集成度高、运算快、体积小、运行可靠、价格低廉,在过程控制、数据采集、机电一体化、智能仪器仪表、家用电器以及网络技术等方面得到广泛应用。MCS-51单片机结构框图如图10.2所示。
图10.2单片机结构
[2] 电源部分
电源部分由开关、稳压集成、电源指示灯几部分组成,本款51板输入电压4.5V~5V,典型输入电压为5V,也可通过板上的稳压集成芯片78M05给单片机提供5V电压,可使单片机正常工作。图10.1中的DS0为电源指示灯。 [3] 串行下载部分
这一部分由串口、下载缓冲器MAX232组成,通过MAX232芯片把TTL电平转换成RS-232电平格式,可以用于单片机与微机通信。再通过DB9接口由一条串口线与电脑串口相连,可以利用程序下载软件(下载方法书后将做介绍)向单片机下载程序,也可通过一些串口调试软件与电脑进行串口通信。但是,只有STC89S系列单片机支持串口下载,而AT89S系列单片机不支持串口下载。 [4] ISP下载
ISP下载是AT89S系列单片机的下载方式,不能用于STC89S系列单片机,它由一条并口线与电脑并口相连,通过Easy下载软件向单片机下载程序,但下载器需另行购买。
[5] 输入/输出接口
51板将32个I/O口全部引出:其中P0口、P1口、P2口、P3口各有8个I/O口用排针引出,排针两端为与单片机共地的5V电源,方便进行外接扩展,而单片机的EA、ALE、PSEN端口也在靠近排阻下方引出,以方便日后进行一些高级扩展。P1口接有8个发光LED,以供测试之用,P0口外接10K的上拉电阻。这些I/O口即可做输出,又可做输入口,51单片机内部可自行识别,不必要设置。
[6] 外部复位
复位是对单片机硬件的初始化,51单片机具有外部复位功能,高电平有效,即在单片机9脚加上高电平单片机就被复位。此产品的复位电路由按键S2,电容C3和电阻R9组成。
六.实验步骤:
1.拿到51单片机套件后,首先应按照附录的元器件清单表逐一检查元件数目和规格,确保产品完整。
2.详细阅读硬件说明部分,并将元件对号入座,确保一次性焊接成功。
3.先对较矮小的元件进行焊接,比如电阻、稳压集成,再对高一些的元件进行焊接,比如芯片座、排阻等,依此类推,最后焊接高大的元件,比如串口、ISP下载口等。焊接时应注意一些元件的正负极和方向。
4.由于此套件标准配置不包含稳压集成VR1(78M05),所以焊接完成后要用导线将VR1的1、3焊盘短接,芯片才能正常供电,此时只能使用4.5-5V的直流稳压电源供电;如果将自购VR1(78M05)焊接在板子上,那么就可以使用7.2V-15V的宽电源供电。
5.焊接并检查无误后先不要急于插入芯片,应该先对芯片供电电压进行测量。插上电源,用万用表检查单片机的20、40脚及MAX232的15、16脚间电压,看是否为+5V(±0.5V),然后用跳线帽接通P6的中间一针和上面一针,使单片机EA端(31脚)与电源正极相接,之后再插上芯片,进行系统测试。 七.主要功能介绍: MCS-51单片机
也称单片微控制器,;它集成度高,运算快,体积小,运行可靠,价格低廉,在过程控制数据采集,机电一体化,智能仪表,家用电器, 及网络技术等方面得到广泛应用。 串口下载部分
由串口,下载缓冲器MAX232组成,通过MAX232芯片把TTL电平转换为RS232电平格式可以用单片机与电脑通信,再通过DB9接口有一条串口线与电脑串口相连,可以利用程序下载软件向单片机下载程序,也可以通过一些串口调试软件与电脑串口通信,而我们所使用的STC89C系列单片机只支持串口下载。 电源部分
电源部分有开关,稳压集成,电源指示灯几部分组成,熟人电压4.5V到6V。典型值为5V. ISP下载
ISP下载是AT89S系列单片机下载方式而我们所用的是STC89C所以在此不多详细介绍。 输入/输出接口
本开发板将4个并行I/O端口全部用排针引出来,共32个个排针,
排针两端为与单片机共地的5V电源,方便进行外拓展;单片机的ALE,PSEN端口也靠近排阻下方引出以方便日后进行高级拓展。 外部复位
对单片机硬件初始化操作,在系统加电时或出现故障时,在单片机RESET引脚加上一定时间的高电平就可以使单片机复位,这次制作的单片机复位系统是由按键,电容C1和电阻R3构成。 八.实验错误及分析:
1、接好电源盒,电源指示灯不亮。
原因:1电源插座存在虚焊现象,接触不良。 电源拔断开关存在虚焊现象,接触不良。 方法:修复虚焊点。 2.不能正常下载程序。
原因:1 电路板电源没有正常接通 下载线焊接组装有误 51板、下载线、PC机没有正常连接 4 电池电压低 方法:1 电源正常接通
2 更正正确 换新 更换或修复焊点
3.下载程序完成后,不能完成流水灯功能 原因:1 电池电压过低 发光二极管损坏或管脚虚焊 3 电阻R1开路或管脚虚焊 方法:1 更换电池 更换或修复焊点 3更换或修复焊点 九.程序:
while(--i) {; } P1=(P1<<1) | 0x01; if(P1==0xff) P3 = 0x7f;
while(P1==0xff) { while(--i){;} P3=(P3>>1) | 0x80;
if(P3==0xff)
{
P1=0xfe; P3=0xff; } } } }
十、系统测试
1.串口测试
接上单片机电源和串口线,打开电源开关,电源指示灯DS0亮,使用STC89C系列单片机,其本身自带了一个测试程序,上电之后DS1-DS7便会两个两个的闪烁。或者自己下载一个程序,如果下载成功,说明串口正常,如不成功,请仔细检查焊点及串口线。
2.I/O口测试
下载程序一,将跳线P5接ON一端,如发现上排LED逐个亮或有规律的亮,说明P1检测正常;
根据程序一的特点,仔细分析程序二各语句功能,并猜测其结果,接着将程序二下载到单片机上,仍将跳线P5接ON一端,自己观察小灯跳变规律,看与自己分析结果是否一致。 十一.心得体会:
在通过本次课程中,我遇到很多问题,但是与此同时,我也学到了很多,对于本次课题的心得体会,我觉得有以下几点:
1、不管做什么事,计划是很重要的。没有一个完好的计划,做事情就会没有一个好的顺序,做事情会比较乱,很难成功。而有一个好的计划,不管做什么事都会事半功倍,做事心中有数,明确重点和缓急,不会有疏漏。这样才能提高成功率。
2、做事要多动脑,选出最好的方法。一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法。
3、要识,也要注意细节,不要因一个关键地方的一个细节而导致满盘皆输。
4、,在本次课题中,我也注意细节。细节决定成败,这句话在这次课题中不仅一次得到了印证,特别是在软件的编程过程中,一点点的错误就会使你整个程序不能运行。因此我不仅仅要有整体意学会了不懂就问,不仅事半功倍,而且发现了一些好的有趣的构想,使我对单片机有了更浓的兴趣。
5、最后,也是最重要的一点,通过这次课题,我学到了很多有关单片机方面的知识,也对单片机有了更深入的了解,受益匪浅。
计
算 机 基 本 技 能 训 练
学校:西安科技大学
班级:电气工程及其自动化1202班
姓名:张小雨
学号:1206060202
日期:2014年1月2日
《单片机原理及应用》
实 验 报 告
2017—2018学年第一学期
班级: 152 专业: 电子科学与技术 姓名: 子路 学号: 教师:
实验一:Keil C51
一、实验目的
1、熟悉Keil C51单片机应用开发系统
2、熟悉Keil C51的调试技巧
二、实验内容
1、安装好了Keil软件以后,我们打开它。打开以后界面如下:
2、我们先新建一个工程文件,点击“Project->New Project„”菜单,如下图:
3、选择工程文件要存放的路径 ,输入工程文件名 LED, 最后单击保存。
4、在弹出的对话框中选择 CPU 厂商及型号
5、选择好 Atmel 公司的 AT89S52 后 , 单击确定
6、在接着出现的对话框中选择“是”。
7、新建一个 C51 文件 , 单击左上角的 New File 如下图所示:
8、保存新建的文件,单击SAVE如下图:
9、在出现的对话框中输入保存文件名MAIN.C(注意后缀名必须为。C),再单击“保存”,如下图:
10、保存好后把此文件加入到工程中方法如下 : 用鼠标在 Source Group1 上单击右键 , 然后再单击 Add Files to Group ‘Source Group 1' 如下图:
11、选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击 Close
12、在编辑框里输入如下代码:
13、到此我们完成了工程项目的建立以及文件加入工程 , 现在我们开始编译工程如下图所示 : 我们先单击编译, 如果在错误与警告处看到 0 Error(s) 表示编译通过:
14、生成 。hex 烧写文件,先单击Options for Target,如图:
15、在下图中,我们单击 Output, 选中 Create HEX F。再单击“确定”
16、打开文件夹‘实验1’,查看是否生成了HEX文件。如果没有生成,在执行
一遍步骤10到步骤12,直到生成。
三、实验工具(软件、硬件等)
1、Keil
2、计算机
实验二:Proteus软件学习
一、实验目的
1、了解Proteus的基本功能
2、熟悉Proteus的设计环境Preoteus ISIS及第三方编译工具Keil
3、掌握Proteus中实现单片机系统设计与仿真的步骤与方法
二、实验内容
设计与仿真的开发过程
Proteus强大的单方机系统设计与仿真功能,使之成为单片机系统应用开发和改进手段之一。
开发的整个过程都是在计算机上完成的,其过程一般分为三步: 1) Proteus 电路设计:在ISIS平台上进行单片机系统电路设计、选择元器件、接插件、连接电路和电气现则检查等。
2) Proteus 源程序设计和生成目标代码文件:在ISIS 平台上或借助第三方编译工具进行单片机系统程序设计、编辑、汇编编译、代码级调试,最后生成目标代码文件(*hex)。
3)Proteus仿真:在ISIS平台上将目标代码文件加载到单片机系统中,由此实现系统实时交互与协同伤真。
三、实验工具(软件、硬件等)
1、载有Proteus的计算机一台
实验三:LED流水灯
一、实验目的
1、用Keil软件编写程序并利用开发板仿真
2、学习LED灯工作原理
二、实验内容
延时实现LED流水灯效果P2口八个灯作跑马灯。采用了寄存器存中间数。
三、实验工具(软件、硬件等) 1.载有Keil软件的计算机一台 2.开发板一套
四、实验结果及分析
实验四:静态数码管
一、实验目的
1、用Keil软件编写程序并利用开发板仿真
2、学习静态显示管工作原理
二、实验内容
静态数码管流动显示0~9
二、实验工具(软件、硬件等) 1.载有Keil软件的计算机一台 2.开发板一套
四、实验结果及分析
实验五:按键移位动态显示
一、实验目的
1、用Keil软件编写程序并利用开发板仿真
2、学习静态显示管工作原理
二、实验内容
静态显示管,按键不同显示不同
三、实验工具(软件、硬件等) 1.载有Keil软件的计算机一台 2.开发板一套
四、实验结果及分析
实验六:中断INT0+INT1
一、实验目的
1、用Keil软件编写程序并利用开发板仿真
2、学习中断INT0和INT1的工作原理
二、实验内容
试验数码管上显示外部中断计数,用单片机脚直接控制数码管和外部中断使用
三、实验工具(软件、硬件等) 1.载有Keil软件的计算机一台 2.开发板一套
四、实验结果及分析
实 实 验 验 报 报 告
实验课程:
单片机原理及应用
班
级:
自动化 2 班
学
号:
姓
名:
教
师:
张
玲
成绩:
实 验 日 期 :
****年**月**日
实验名称:
实验 1-—计数显示器
一、实验目得:学习 Proteus 软件得使用,掌握单片机原理图得绘图方法。
二、实验内容:
ﻩ1、绘制“计数显示器”电路原理图;2、利用提供得hex 文件验证此电路得运行效果。
三、实验要求:
提交得实验报告中应包括:1、绘图方法简述,要求说明元件与电源得选取、摆放及属性编辑,总线与标签得画法等内容;2、电路原理图;3、仿真运行效果展示,要求就仿真文件加载方法及 3~4幅运行截图进行简要说明;4、实验小结,说明遇到得主要问题或实验 1 体会等。参考电路原理图如下:
元件类别 电路符号 元件名称 Microprocessor ICs “U1“ 80C51 Miscellaneous “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 Optoelectronics “LED1”~“LED2” 7SEG--CAT-GRN Switches & Relays “BUT” BUTTON 1、、及 编程思路及 C51 源程序:
2、电路原理图:
:
3、仿真运行效果展示:
4、实验小结 :
熟悉Proteus 软件,了解软件得结构组成与功能;学习 ISIS 模块得使用方法,学会设置图纸、选元件、线画总线、修改属性等基本操作;学会可执行文件 加载及程序仿法;理解Proteus在单片机开发中得作用,完成单片机电路原 理图得绘制. 实验名称:
实验 2——LED 指示灯循环控制
一、实验目得 熟悉μVision3 编译软件、掌握 C51编程与调试方法。
二、
实验内容 1、按照教材 P243 得图 A、34,绘制实验二电路原理图; 2、编写 C51 程序,实现 8 个 LED 灯依次点亮得功能: P0、0→P0、1→ P0、2→P0、3→ ┅ →P0、7→P0、6→P0、5→ ┅ →P0、0 得顺序,无限循环,间隔约50ms; 3、观察仿真结果,完成实验报告。
三、
实验要求 1、采用两种加载并运行可执行文件得方法,即proteus独立运行与prote
us + Keil 联合运行,体会其中得差异与意义;2、练习采用单步、断点以及监视窗等手段进行程序调试得方法;3、观察仿真结果,完成实验报告:绘制得电路原理图、编程思路分析及 C51源程序、调试过程简述,仿真运行效果以及实验小结。、电路原理图:
:
及 2、编程思路及 C51 源程序:、仿真运行效果:、实验小结 :
通过本次实验我熟悉 uVision3 编译软件了解软件得结构组成与功能学习 C51 语言得程序设计方法)学会在 uVision3中进行 C51 程序录入、编译、与 调试理解 Proteus 与 Keil 联合得仿真原理实现 LED 指示灯循环控制功能。
更好得将 C 语言与 C51 语言联系在了一起)学到得知识能准确得利用了出来。
实验名称:
实验3——指示灯与数码管得中断控制
一、实 验目得 掌握外部中断得工作原理,学会中断程序设计。二、实验内容 1、按照教材帕图 A、53,绘制实验四电路原理图;2、要求采用外部中断原理完成本次实验,其中按键 K1、K2 均设置为下降沿触发方式,自然优先级; 3、编写 C51 程序实现如下功能:开机后 D1灭灯,LED1黑屏,随后单击 K1→D1状态反转,单击 K2 →LED1 从 0 开始循环显示0~F 字符。
4、观察仿真结果,完成实验报告。
三、
实验要求 提交得实验报告中应包括:电路原理图,外部中断工作原理阐述(以 K1 为例说明中断响应过程),C51 源程序(含流程图与注释语句),运行效果(含运行截图
与说明),实验小结. 1、电路原理图 :
2、外部中断工作原理阐述:
持续按下 K1 则 D1 将“亮→灭→亮→灭→„→亮→灭如此循环,表明实现了 K1 对应于 D1 状态反转这个功能;持续按下持续按 K2 则数码显示管依次显 示 1-F,实现了 K2 对应于 0~F 间得数码管加一计数显示.
3、、及编程思路及 C51 源 源 程序:、仿真运行效果:
5、实验小结:
通过实验对 Protues 有了更多得了解,同时了解到中断系统在实际中得更好 应用。经过编程操作起来更加熟练能很快得完成绘图,编程时也得心应手,能熟练得运用软件找出自己所编程中得语法问题及其她问题,并以改正。
实验名称:
实验4—-电子秒表显示器
一、实实 验目得 掌握定时/计数器得中断法工作原理,熟悉 C51 编程与调试方法
二、实验要求:
1、实验电路原理图如教材P260 A、65 图所示。程序开始时显示“00”;当1s 产生时,秒计数加1;秒计数到 59 后,自动从“00”开始。
2、采用12MHz晶振频率,T0定时方式 1、50ms 定时中断法编程(1s 需要经过 20 软循环)(流程图与参考程序模版如下所示)。//定时中断方式实现得电子秒表
15()件文头ﻩ(定义无符号字符型变量 t—-中断次数计数器,并赋初值0(定义无符号字符型变量 second—-秒计数器,并赋初值 0(定义位于 ROM 区得无符号字符型数组table-—显示字模)timer0()
(中断函数关键词){ ﻩ()0T 闭关ﻩ(初值重装载 0x3cb0)
()1增器数计数次断中ﻩ {)02==t(fiﻩﻩ
ﻩ
// 秒1于当相,次 02断中若ﻩ
;0=tﻩﻩﻩﻩﻩﻩﻩﻩ //中断次数计数器清零 ﻩ
;++dnocesﻩﻩ ﻩ // 零清器数计秒ﻩ
}()零清,06 到达值器数计秒若ﻩﻩ()值示显得 dnoces 量变出输别分口 2P与0Pﻩ()0T动启ﻩﻩ} main(){
ﻩ
;]01/dnoces[elbat=0Pﻩﻩ // 值示显出输别分口 2P 与 0Pﻩ
;]01%dnoces[elbat=2Pﻩ(定义T0 定时方式 1—-TMOD)05()0LT与0HT——载加0bc3x0值初出溢 smﻩ()AE,0TE——化始初断中ﻩ(启动 T0)
(死循环)3、编程思路及C1 51 源程序: :
4、仿真运行效果:
5、实验小结 :
本次实验进行得比较顺利,根据指导材料中提供得流程图完成了源程序得编 写,成功生成了、hex文件,经过仿真运行达到了预期得实验结果。通过本次得 实验,我更加深入得了解到单片机定时/计数功能实现得机理,通过与单片机中 断功能得结合,可以完成更多得预期功能。但就是进过讨论我也发现,程序还就是存 在很大得缺陷,想要实现更加准确实现计时功能还需综合利用各种知识完善程 序。
单片机原理与应用实
学校:合肥工业大学
班级:计算机科学与技术
学号:
姓名:
验报告
第一章MC51 单片机原理及应用软件实验
实验1:系统认识实验
1. 实验目的
(1)了解ZY15MCU12BC2单片机实验开发装置的接线与安排。掌握实验箱内拨位开关KF,KC的使用方法。(2)通过实例程序的编辑、编译、链接及调试,熟悉Keil C51软件的使用方法和基本操作。(3)教育学生爱抚实验装置,养成良好的实验习惯。
2. 试验设备
(1)ZY15MCU12BC2单片机实验开发装置一台。(2)PC系列微机及相关软件。
3. 试验内容
(1)使用串行通讯电缆将实验开发装置与PC机相连。
(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境。(3)确认拨位开关KF的开关为A端,确认89C51处于仿真状态。(4)在uVision2开发平台上建立并编辑示例程序:
计算N个数求和程序。其中N个数分别放在片内RAM区50H到55H单元中,N=6,求和的结果放在片内RAM区03H(高位)和04H(低位)单元中。
题目:
1)32H+41H+01H+56H+11H+03H=? 2)895H+02H+02H+44H+48H+12H=?(5)编译连接源程序。
(6)在Keil uVision2主菜单窗口进入DEBUG调试环境,打开存储器窗口输入数据至片内RAM区50H到55H单元中,全速运行程序,并检查程序的运行结果,即观察在存储器窗口片内RAM区03H(高位)、04H(低位)单元中的数据是否正确。(7)实验结束,撤出接线,将一切整理复原。
4、实验源程序
ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV R206HMOV R303HMOV R404HMOV R050HL1: MOV A,R4 ADD A,@R0 MOV R4,A INC R0 CLR A ADDC A,R3 MOV R3,A DJNZ R2,L1 END
5、实验结果截图
6、实验总结
这次试验,熟悉了单片机开发的基本流程,对于实验的两道题目 1)32H+41H+01H+56H+11H+03H=? 2)895H+02H+02H+44H+48H+12H=? 实验结果如上图所示50H~54H存放数据,第一道题计算出来是0x00DEH,第二道题目 计算出来是0x0137H,实验结果和预期相符,成功的完成了实验。这次试验对硬件开发有了基本的认识,特别是对于单片机的存储器有了进一步的认识,在程序中把数据放入RAM中,结果存放在R3和R4中,实验时不知道R3和R4的地 址,后来了解到R3和R4可以直接用他的地址03H和04H,这样进一步深化了书本上 的知识。另外通过这次试验,对于51单片机的几种寻址方式也有了具体的认识。总之,还是要多动手虽然程序不是自己写的,但是阅读理解了还是有点收获的。
实验六。数据排序实验
1. 实验目的
(1)理解并掌握排序程序的设计方法。(2)掌握减法指令的功能,并联系其使用。
(3)逐步提高调试程序的能力及编写程序的能力。
2. 试验设备
(1)ZY15MCU12BC2单片机实验开发装置一台。(2)PC系列微机及相关软件。
3. 试验内容
(1)使用串行通讯电缆将实验开发装置与PC机相连。
(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境。
(3)编写程序,实现从平台连续输入六个数,数码管将马上从小到大的顺序显示这六个数。要求被排序的数放在70H到7FH单元中。(4)编译连接源程序。
(5)调试程序,在存储器窗口输入被排序数放在70H到7FH单元中,全速运行程序,并检查程序员的运行结果,观察是否正确。
(5)若程序中出现错误,则可以采用单步分段调试,排除程序错误,直到正确为止。
4、实验源程序
MAIN:
LOP2:
LOP1:
LOP5:
ORG 0000H LJMP MAIN ORG 0030H MOV R270HMOV R371HMOV R40FHACALL LOP1 DJNZ R4,LOP2 LJMP LOP6 MOV A,R2 MOV R0,A MOV A,R3 MOV R1,A MOV A,@R0 CLR C SUBB A,@R1 JC LOP4 MOV A,@R0 XCH A,@R1
LOP4:
LOP6:
MOV @R0,A INC R1 INC R0 MOV A,@R0 CJNE
R180H,LOP5RET END 5.实验结果截图
6、实验总结
本次试验是在冒泡排序算法实现对70H~7FH中的数据进行排序,如上第一张图所示RAM中70H~7FH存放了数据,第二张图显示的是通过冒泡排序整理过的数据。成功完成了实验,收到了预期效果。
对于习惯了使用高级语言编程的我,看这些绕来绕去的汇编还是有些头大,觉得这个例子写的不太好,跳来跳去,程序层次不分明,可读性很差,冒泡不应该有内外两层吗,看书上有一个例子就写得很好,跟用高级语言写差不多,然而实验的这个好像是要考我们对各种跳转指令的了解,所以读起来晕头转向的。从另一方面来说,通过这次试验,我也熟悉了汇编的跳转与分支指令。另外,所以ORG 0000H
LJMP MAIN
ORG 0030H,这三句ljmp这句跳到了main,那么还要后面一句干嘛。不甚理解。
总之,这次实验让我了解了各种分支与跳转,还是有所收获的。
第二章MC51 单片机原理及应用硬件实验
实验一:广告灯实验
1. 实验目的
(1)熟悉ZY15MCU12BC2单片机实验开发装置的试验箱,学会选用其功能电路,连接成实验需要的系统。掌握实验箱内拨位开关KFKC使用。(2)加深了解MCS-51单片机P1端口的应用方法。(3)学习编写接口应用程序。
2、试验设备
(1)ZY15MCU12BC2单片机实验开发装置一台。(2)PC系列微机及相关软件。
3. 试验内容
(1)使用串行通讯电缆将实验开发装置与PC机相连,确认拨位开关KF的位置。(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境,确认89C51处于仿真状态。
(3)用试验箱上的发光二极管L0到L7模拟外界各种场合的动态广告灯,将试验箱上的发光二极管L0到L7分别与单片机的P1.0到P1.7相连。
(4)编写程序,实现从P1口输出信号驱动发光二极管L0到L7模拟外界广告灯动态点亮的功能。
(5)在uVision2开发平台上输入程序,编译、连接程序,调试通过后将拨位开关KF拨至B端。
(6)单步执行程序,观察是否进入表格首地址。
(7)单步执行程序,观察发光二极管L0到L7的变化。
(8)全速运行程序,观察发光二极管L0到L7的变化,并注意程序将循环下去。(9)实验结束,撤除接线,将一切整理复原。
4、实验源程序
ORG 0000H MAIN: MOV DPTR,#TAB
MOV R5,71H LOOP: MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
ACALL DELAY
INC DPTR
DJNZ R5,LOOP
LJMP MAIN DELAY: MOV R7,#00H
MOV R600HDE:
DJNZ R7,$
DJNZ R6,DE
RET TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH
DB 0FFH,7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH
DB 80H,00H,80H,0C0H,0E0H,0F0H,0F8H,0FCH
DB 0FEH,0FFH,7FH,3FH,1FH,0FH,07H,03H
DB 01H,00H,01H,03H,07H,0FH,1FH,3FH
DB 7FH,0FFH,7EH,3CH,18H,00H,18H,3CH
DB 7EH,0FFH,0FEH,0FCH,0FCH,0F9H,0F3H,0E7H
DB 0CFH,9FH,3FH,7FH,0FFH,7FH,3FH,9FH
DB 0CFH,0E7H,0F3H,0F9H,0FCH,0FEH,0FFH
DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H
DB 80H,40H,20H,10H,08H,04H,02H,01H,00H
DB 01H,02H,04H,08H,10H,20H,40H,80H,00H
DB 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH
END
5、实验结果
6、实验总结
广告灯按照程序所给的效果循环的有序的点亮,如果应用到广告霓虹灯,的确可以到达璀璨的效果,程序的最后的TAB是最纠结的,你要按照效果一点一点的编写十六进制的数字,换算出效果,可见真正的商业广告的效果的确是很麻烦的一件事,通过这个实验,我清楚地认识到了单片机的控制的灵活性,另外对于查表指令也有所理解。实验二:P1端口应用实验
1、实验目的
(1)进一步熟悉ZY15MCU12BC2实验箱上的资源,掌握实验箱内拨位开关KF,KC使用。(2)加深了解MCS-51单片机P1端口的应用方法。(3)学习编写接口应用程序。
2、试验设备
(1)ZY15MCU12BC2单片机实验开发装置一台。(2)PC系列微机及相关软件。
3. 试验内容
(1)使用串行通讯电缆将实验开发装置与PC机相连,确认拨位开关KF的位置。(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境,确认89C51处于仿真状态。
(3)将试验箱上的L0到L3接到P1.0到P1.3,开关K0到K3接到P1.4到P1.7。(4)编写程序实现如下功能: 拨动K0到K3,使L0到L3出现以下组合变化。K3 K2 K1 K0 L3 L2 L1 L0 0 0 0 0 全亮 0 0 0 1 全暗
0 0 1 0 一灯亮其余灯暗并左环依 0 0 1 1 一灯亮其余灯暗并右环依 0 1 0 0 一灯暗其余灯亮并左环依 0 1 0 1 一灯暗其余灯亮并右环依 ? ? ? 显示开关状态Ki为0,Li灯亮 要求:
1)设40H单元为标志单元,(40H)=0时开关状态无变化,(40H)=FFH时开关状态发生变化。
2)设41H单元为开关状态缓冲器,读入开关状态和41H单元内容比较,相同时开关状态无变化,不同是开关状态有变化。3)设42H单元为当前指示灯状态。
(4)在uVision2开发平台上输入程序,编译、连接程序,调试通过后将拨位开关KF拨至B端。
(5)根据准双向口的特性,对P1口写操作使灯L0到L7的状态随写入P1.0到P1.3的内容而变化;读P1口的高四位,读出内容随开关状态的变化而变化。如不对,则检查开关K0到K3的接线,检查K0到K3的电平是否随开关状态变化而变化。
(6)从开始运至BK1处,检查A的内容是否对应开关状态,接着单步运行程序,检查是否转到相应入口使L0到L3状态产生相应的变化。(7)全速运行程序至BK2,在检查A的内容是否与开关状态一致,如不对,则检查前面对P1口的操作指令。
(8)全速运行程序实现所要求的功能。
4、实验源程序
ORG 0000H STRL: MOV A,P1
SWAP A
ANL A,#0FH
MOV 41H,A
MOV 40H0FFHMLP0: CJNE A,#6,$+3
JNC PK6
MOV DPTR,#CTAB
MOV R1,A
RL
A
ADD A,R1
JMP @A+DPTR CTAB: LJMP PK0
LJMP PK1
LJMP PK2
LJMP PK3
LJMP PK4
LJMP PK5 PK6:
MOV 42H,A
LJMP MLP1 PK5:
MOV A,40H
CJNE A,#0FFH,PK51
MOV 42H,#01
LJMP MLP1 PK51: MOV A,42H
LCALL RR7
ANL A,#0FH
JNZ PK52
MOV A1PK52: MOV 42H,A
LJMP MLP1 PK4:
MOV A,40H
CJNE A,#0FFH,PK41
MOV 42H,#1
LJMP MLP1 PK41: MOV A,42H
LCALL RL9
ANL A,#0FH
JNZ PK42
MOV A1PK42: MOV 42H,A
LJMP MLP1 PK3:
MOV A,40H
CJNE A,#0FFH,PK31
MOV 42H,#0F7H
LJMP MLP1 PK31: MOV A,42H
LCALL RR9
ANL
A,#0FH
CJNE A,#0FH,PK32
MOV
A0F7HPK32: ORL
A,#0F0H
MOV
42H,A
LJMP MLP1 PK2:
MOV
A,40H
CJNE A,#0FFH,PK21
MOV
42H,0FEH
LJMP MLP1 PK21: MOV
A,42H
RL A
ANL A,#0FH
CJNE A,#0FH,PK22
MOV A0FEHPK22: ORL A,#0F0H
MOV 42H,A
LJMP MLP1 PK1:
MOV 42H,#0FH
LJMP MLP1 PK0:
MOV 42H0MLP1: MOV A,42H
ORL A,#0F0H
MOV P1,A
MOV R7,#0
MOV R60DEL1: DJNZ R6,DEL1
DJNZ R7,DEL1
MOV
A,P1
SWAP A
ANL A,#0FH
CJNE A,41H,MLP2
MOV 40H,#0
LJMP MLP0 MLP2: MOV 41H,A
MOV 40H,#0FEH
LJMP MLP0 RR9:
RR A
RR A RR7:
RR A
RR A
RR A
RR A
RR A
RR A
RR A
RET RL9:
RL A
RL A RL7:
RL A
RL A
RL A
RL A
RL A
RL A
RL A
RET
END
5、实验结果截图
6、实验结论
试验中我们把P1口作为输入输出口来测试以下的内容 1.P1 口做输出口,接八只发光二极管循环点亮。2.P1 口低四位接四只发光二极管L1-L4, P1 口高四位接开关K1-K4,编写程序,将开关的状态在发光二极管上显示出来。
在这次试验中我认识到课本上的关于P1口的介绍的知识 P1 口为准双向口,P1 口的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来往口锁存器写入过“0”,再作为输入时,需要向口锁存器对应位写入“1”。延时程序的编写可以用两种方法,一种是用定时器来实现,一种使用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。
实验三:串转并实验
1、实验目的
(1)掌握51系列单片机串口工作方式0的应用。
(2)学习8位串行输入和并行输出的同步移位寄存器74LS164和8位并行输入和穿行 输出的同步移位寄存器74LS165两个接口芯片的应用性能。(3)研究单片机串行口如何用于扩展并行I/O口。
2、试验设备
(1)ZY15MCU12BC2单片机实验开发装置一台。(2)PC系列微机及相关软件。
3. 试验内容
(1)使用串行通讯电缆将实验开发装置与PC机相连,确认拨位开关KF的位置。(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境,确 认89C51处于仿真状态。(3)实验步骤:
1)通过单片机串口用一片8位串行输入/并行输出的同步移位寄存器74LS164扩展 8位并行输出口。
2)通过单片机串口用一片8位并行输入/串行输出的同步移位寄存器74LS165扩展 8位并行输入口。(4)将单片机的RXD端与74LS164的串行输入端SERIAL(PA)相连,将单片机的TXD 端与74LS164的脉冲CLOCK(PB)相连,74LS164的输出Q0到Q7接发光二极管 L8到 L15。(5)调试程序:
1)实验采用终端方式调试,既目标程序装入仿真器后,使操作界面进入终端方式。2)单步进入执行程序,打开Keil的寄存器窗口,观察串口数据缓冲区SBUF里的值有何变化。
3)单步执行程序,注意中断标志T1的变化以及所亮的发光二极管的位置。
4、实验源程序
ORG 0000H SJMP MAIN ORG 0023H SJMP SBV MAIN: MOV SCON00HSETB EA SETB ES MOV A80HMOV SBUF,A MOV SBUF,A MOV SBUF,A SJMP $ SBV: ACALL DELAY CLR T1 RR A MOV SBUF,A RETi DELAY: MOV R700HMOV R600HDEL: DJNZ R7,$
5、实验结果截图
6、实验结论
在实验中我明白了串行口和并行口的相关知识8位串行输入和并行输出的同步移位寄存器74LS164和8位并行输入和穿行输出的同步移位寄存器74LS165两个接口芯片的应用性能。知道了单片机串行口如何用于扩展并行I/O口