单片机并行口实验报告
C51单片机实验:流水灯

实验二单片机并行I/O口应用实验
一、实验目的:
1.熟悉keil软件的使用方法;
2. 熟悉单片机应用电路的设计方法
3. 掌握用单片机并行接口控制外部设备的方法;
4.掌握单片机应用程序的设计和调试的方法
二、实验仪器:
单片机开发板、下载线、应用软件及微机
三、实验原理
单片机I/O口的基本输入输出功能。
四、实验内容
1.在p1.0至1.7口线上分别接LED0~LED7八个发光二级管。
2. 编写程序:要求LED0~LED7要求以秒速率循环右移
2.编写程序:要求LED0~LED7要求以秒速率循环左移
3.连接开发板,观察实验现象,并用Keil uVision仿真程序的执行过程;
五、实验报告要求
1、实验目的和要求
2、实验的原理
3、电路原理图
4、实验程序流程框图和实验程序清单
5、实验总结
6、实验思考题
六、思考题
1、思考如何实现LED0~LED7两个灯同时循环左移或右移?
2、如何同时实现循环左移后再循环右移?。
实验二_并行I_O口

一、实验目的1、熟悉Proteus软件和Keil软件的使用方法。
2、熟悉单片机应用电路的设计方法。
3、掌握单片机并行I/O口的直接应用方法。
4、掌握单片机应用程序的设计和调试方法。
二、设计要求1、用Proteus软件画出电路原理图。
要求在P1.0至P1.7口线上分别接LED0至LED7八个发光二极管,在P3.0口线上接一蜂鸣器。
2、编写程序:要求LED0至LED7以秒速率循环右移。
3、编写程序:要求LED0至LED7以秒速率循环左移。
4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。
三、电路原理图四、实验程序流程框图和程序清单/***********(1)LED0~LED7以秒速率循环右移**************/MAIN: MOV A, #11111110BLOOP: MOV P1, A ;LED0灯亮,其他全灭LCALL DELAY1s ;调用1s延时子程序RL A ;累加器内容循环左移LJMP LOOP ;继续循环/***********1s延时子程序*******************/DELAY1s:MOV R7, #0A7HDL1: MOV R6, #0ABHDL0: MOV R5, #10HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1NOPRETEND/***********(2)LED0~LED7以秒速率循环左移**************/ORG 0000HMAIN: MOV A, #01111111BLOOP: MOV P1, A ;LED7灯亮,其他全灭LCALL DELAY1s ;调用1s 延时子程序RR A ;累加器内容循环右移 LJMP LOOP ;继续循环 /********************1s 延时子程序**********************/ DELAY1s:MOV R7, #0A7HDL1: MOV R6, #0ABHDL0: MOV R5,#10HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1NOP RETEND/**********(3)要求在灯循环移动的同时,蜂鸣器逐位报警 **************/ORG 0000HMAIN: MOV A, #11111110BLOOP: MOV P1, A ;LED0灯亮,其他全灭CPL P3.0 ;开蜂鸣器 LCALL DELAY05s ;调用0.5秒延时子程序 SETB P3.0 ;关蜂鸣器 LCALL DELAY05s ;调用0.5秒延时子程序 RL A ;累加器内容循环左移 LJMP LOOP ;继续循环/*********0.5s 延时子程序****************/DELAY05s:MOV R7, #17H DL1: MOV R6, #98HDL0: MOV R5, #46H DJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1RETEND六、实验总结通过本次实验,我熟悉了Proteus软件和Keil软件的使用方法,熟悉了单片机应用电路的设计方法。
简单并行接口实验报告

实验一一、实验题目:简单并行接口74LS273二、实验目的掌握简单并行接口的工作原理及使用方法。
三、实验内容1、按下图连接线路。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
四、程序流程图五、源程序ioport equ 0d400h-0280hls273 equ ioport+2a8hcode segmentassume cs:codestart:mov ah,2 ;回车符mov dl,0dhint 21hmov ah,1 ;等待键盘输入int 21hcmp al,27 ;判断是否为ESC键je exit ;若是则退出mov dx,ls273 ;若不是,从2A8H输出其ASCII码out dx,aljmp start ;转startexit: mov ah,4ch ;返回DOSint 21hcode endsend start六、实验结果分析按上述的代码执行,观察LED灯的状态,可以发现实验结果和预期的相同:键盘输入数字“1”,L0、L4、L5亮,L1、L2、L3、L6、L7不亮,为00110001,31H,即为数字“1”的ASCII值。
键盘输入字符“=”,L0、L2、L3、L4、L5亮,L1、L6、L7不亮,为00111101,3DH,即为字符“=”的ASCII值。
键盘输入字符“N”,L1、L2、L3、L6亮,L0、L4、L5、L7不亮,为01001110,4EH,即为字符“N”的ASCII值。
键盘输入回车键,L0、L2、L3亮,L1、L4、L5、L6、L7不亮,为00001101,0DH,即为回车键的ASCII值。
七、实验心得1、通过本次实验,掌握了简单并行接口的工作原理及使用方法。
2、本次实验前,自己认真地做了预习,实验过程中,认真思考,积极探索,实验后,查阅资料,提炼总结。
总的来说,基本完成了实验要求和任务。
微机接口技术实验报告并行接口实验

微机接口技术实验报告并行接口实验系别: 计算机科学与技术完成时间:2012-5-15一、实验目的1.熟悉并行接口电路;2.掌握8255并行接口芯片及8253定时器的应用及其编程技术。
二、实验内容及要求通过对8255芯片的编程,使得实验台上的步进电机按顺时针或逆时方向转动,同时扬声器(模拟电子琴)做高8度和低8度循环发音:1. 控制步进电机转动和电子琴发音;2.使用K0控制步进电机顺逆时针转动和电子琴发高低音;3.使用K1控制步进电机和电子琴速度(分快和慢两种速度);4.使用K2启动和停止步进电机转动和电子琴发音。
三、实验原理1、可编程并行芯片8255A并行接口即同时在多根I/O线上,以数据字节或字为单位实现CPU通过I/O端口与I/O 设备或被控制对象之间的信息传递,如计算机与打印机,A/D和D/A转换器,开关量接口等。
8255及其改进型8255A是最广泛应用的并行I/O接口。
8255A的主要性能参数如下:(1)8255A内共有4个端口,分别为口A、口B、口C和控制端口。
前三个端口为8位并行I/O端口,常用于传送数据信息;控制端口是用于接收CPU送来的控制命令,即控制字。
(2)8255A芯片可以三种不同的工作方式与I/O设备进行数据传输,具体方式由控制字来设定。
(3)8255与CPU之间交互信息可以使用中断方式进行。
它内部有三个中断源,分别产生与方式1(1个)和方式2(2个)中。
(4)8255A所有信号与TTL信号兼容,可直接与CPU的三总线连接使用。
(5)8255A使用单一的+5V电源,单项时钟。
8255A的三种工作方式:方式0——基本的输入/输出方式,方式1——选通的输入/输出方式,方式2——双向的输入/输出方式。
本次实验采用方式0,将口A和口B作为输出,分别控制步进电机的旋转和电子琴的发音,口C作为控制输入端。
根据端口编址及寻址方式,设定端口A的地址为288H,端口B地址为289H,端口C地址为28AH,控制端口的地址为28BH。
51单片机并行io口工作原理

51单片机并行io口工作原理51单片机是一种常用的嵌入式系统开发平台,具有强大的并行IO 口功能。
本文将介绍并行IO口的工作原理及其在51单片机中的应用。
我们来了解一下什么是并行IO口。
并行IO口是指可以同时进行多个输入输出操作的接口。
在51单片机中,通过并行IO口可以实现与外部设备的数据交互,如控制LED灯、读取按键状态等。
在51单片机中,有两种类型的IO口:通用IO口和特殊功能IO口。
通用IO口可以进行输入输出操作,而特殊功能IO口则有特定的功能,如串口通信、定时器等。
并行IO口的工作原理是通过对寄存器的写入和读取来控制IO口的状态。
在51单片机中,有4个8位寄存器,分别是P0、P1、P2、P3。
P0口的每一位对应一个IO口,P1、P2、P3口则是通过外部扩展芯片来实现更多的IO口。
通过向寄存器中写入数据,可以控制IO口的输出状态。
例如,向P0寄存器写入0x55,即二进制01010101,可以控制P0口的1、3、5、7位输出高电平,2、4、6、8位输出低电平。
通过读取寄存器中的数据,可以获取IO口当前的输入状态。
例如,读取P1寄存器的值,可以获取P1口每一位的输入状态。
在51单片机中,可以通过对寄存器的位操作来实现对单个IO口的控制。
例如,通过设置P2口的某一位为1,可以将对应的IO口设置为输出模式;通过设置P2口的某一位为0,可以将对应的IO口设置为输入模式。
通过对寄存器的位操作,可以实现对多个IO口的同时控制。
除了通过编程对寄存器进行操作外,51单片机还提供了一些特殊功能IO口,可以直接使用这些IO口来实现一些常见的功能。
例如,P3.0和P3.1口可以作为外部中断输入口,P3.3和P3.4口可以作为定时器输入口,P3.5和P3.6口可以作为串口通信口。
在实际应用中,我们可以根据需要将不同的外部设备连接到51单片机的IO口上,通过对寄存器的编程,控制外部设备的状态。
例如,我们可以将LED灯连接到P0口的某一位上,通过对P0寄存器的位操作,控制LED灯的亮灭;我们也可以将按键连接到P1口的某一位上,通过读取P1寄存器的值,获取按键的状态。
单片机及其接口技术实验报告

单片机及接口技术实验报告实验一数据传送程序一、实验目的1、掌握汇编语言设计和调试方法。
2、掌握DVCC实验系统的操作步骤。
二、实验内容1、编程实现,把7000H~70FFH单元的内容清零。
2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址7000H开始的单元中,传送个数为0FFFH个。
三、DVCC实验系统操作说明1、接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的“P”,否则按Reset键。
2、运行DVCC软件。
(程序DVCC598H实验系统DVCC实验系统)3、单击工具栏上“新建”或“打开”按钮,编写源程序。
单击“编译”按钮,使其形成可执行文件。
4、单击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最右边第2个),实现PC机和实验箱的联接。
联机成功,屏幕上出现:.反汇编窗口、寄存器标示位窗口。
5、在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来实现。
6、单击工具栏上“运行”或“单步”按钮,运行实验程序。
7、单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。
鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单击数据,可修改数据数值。
8、运行完毕,先按实验箱上的复位按钮Reset键,再按PCDBG键,并且点击屏幕上OK,即可退出运行状态。
四、实验程序代码1、把7000H~70FFH单元的内容清零。
程序代码:ORG 0000HAJMP STARTORG 70HSTART: MOV P2, #70H ;送地址高8位到P2端口MOV R0, #00H ;R0=00H,表地址低8位CLR A ;将累加器A清0LOOP: MOVX @R0, A ;将A送入以R0内容为地址的外部RAM.INC R0 ;R0+1-->R0CJNE R0,#00H,LOOP;比较条件转移指令,若R0不等于0,则跳转到LOOPAJMP $ ;暂停END2、编程实现,将源地址为6000H开始的单元,传送到目的地址7000H开始的单元,传送个数为0FFFH个。
2.4 单片机并行IO口(实验2)

College of Communication Engineering, Jilin University
9
2.4 并行I/O模块
实验二 I/O+IRQ应用实例
任务:(1) 在PORTB口的小灯上循环显示跑马灯。 (2) 将PORTA口接8位DIP开关,在PORTB口的小灯上显示其状态。 (3) 利用IRQ作为中断源,采用中断方式,按动IRQ键后显示跑马灯。 (4) 利用IRQ作为中断源,采用中断方式, 利用8位DIP开关控制跑马 灯的循环速度。 (5) 利用XIRQ作为中断源,采用中断方式, 利用8位DIP开关控制跑马 灯的循环速度。 (6) 将PORTA口低4位接DIP开关,高4位接LED,将开关的状态显示在 LED灯上,重复(5)。
数据方向寄存器
DDRT:$0242
DDRS:$024A
DDRM:$0252
DDRP:$025A
DDRH:$0262
DDRJ:$026A
按位控制:0->输入 1->输出,复位后清0,默认为输入口
数据寄存器
PTT:$0240
PTS:$0248
PTM:$0250
PTP:$0258
PTH:$0260
3、程序 IO-IRQ.doc ① 跑马灯实现的算法(查表、移位) ② 可变时间的延时 ③ 端口状态的LED显示 ④ 中断
College of Communication Engineering, Jilin University
14
PTIS:$0249 PTIJ:$0269
PTIM:$0251
PTIP:$0259
低功耗驱动寄存器
RDRT:$0243
RDRS:$024B
单片机实验报告

单片机原理与应用实验报告学校:合肥工业大学班级:计算机科学与技术学号:姓名:第一章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 0000HLJMP MAINORG 1000HMAIN: MOV R2,#06HMOV R3,#03HMOV R4,#04HMOV R0,#50HL1: MOV A,R4ADD A,@R0MOV R4,AINC R0CLR AADDC A,R3MOV R3,ADJNZ R2,L1END5. 实验结果截图6. 实验总结这次试验,熟悉了单片机开发的基本流程,对于实验的两道题目1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?实验结果如上图所示50H~54H存放数据,第一道题计算出来是0x00DEH,第二道题目计算出来是0x0137H,实验结果和预期相符,成功的完成了实验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机并行口实验报告
实验二并行口实验报告
班级:
学号:
姓名:
教师:
一、实验目的
通过实验了解8051并行口输入方式和输出方式的工作原理及编程方法。
二、实验内容
1、输出实验
如图4-1所示。
以8031的P2口为输出口。
通过程序控制发光二极管的亮灭。
2、输入实验
如图4-1所示。
以8031的P1口为输入口。
用开关向P1.0~P1.3输入不同的状态,控制P2口P2.4~P2.7发光二极管的亮灭。
3、查询输入输出实验
如图1-1所示。
以8051的P1.6或P1.0为输入位,以P2口为输出,二进制计数记录按键的次数。
图1-1
三、编程提示
1、输出实验程序
(1)设计一组显示花样,编程使得P2口按照设计的花样重复显示。
(2)为了便于观察,每一状态加入延时程序。
2、输入实验程序
开关打开,则输入为1;开关闭合,则输入为0。
读取P1.0~ P1.3的状态,并将它们输出到P2.4~ P2.7,驱动发光二极管。
所以发光二极管L1~L4的亮灭应与开关P1.0~ P1.3的设置相吻合。
3、查询输入输出程序
(1)编程计数P1.0按键次数,按键不去抖动。
(2)编程计数P1.6按键次数,按键不去抖动。
(3)编程计数P1.0按键次数,按键软件延时去抖动。
观察(1)、(2)、(3)、的结果。
四、实验器材
计算机,目标系统实验板
五、实验步骤
1、在KEILC中按要求编好程序,编译,软件调试,生成.HEX文件。
2、断开电源,按图1-1所示,连好开关及发光二极管电路。
3、下载程序。
4、调试运行程序,观察发光二极管状态。
六、C源程序清单
1、#include <STC12C5A60S2.h>
#define uchar unsigned char
#define ON 0
#define OFF 1
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
sbit led7=P2^6;
sbit led8=P2^7;
void delay1(void);
void main(void)
{
led1=led2=led3=led4=led5=led6=led7=led8=O FF;
while(1)
{
led1=led8=ON;
delay1();
led2=led7=ON;
delay1();
led3=led6=ON;
delay1();
led4=led5=ON;
delay1();
led1=led8=OFF;
delay1();
led2=led7=OFF;
delay1();
led3=led6=OFF;
delay1();
led4=led5=OFF;
delay1();
}
}
void delay1(void)
{
uchar i,j,k;
for(i=0;i<10;i++)
for(j=0;j<100;j++)
for(k=0;k<255;k++);
}
2、#include<STC12C5A60S2.H>
#define uchar unsigned char
sbit k8=P1^0; sbit k7=P1^1; sbit k6=P1^2; sbit k5=P1^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7; void main(void) {
while(1)
{
if(!k8)
led5=0;
if(!k7)
led6=0;
if(!k6)
led7=0;
if(!k5)
led8=0;
if(k8)
led5=1;
if(k7)
led6=1;
if(k6)
led7=1;
if(k5)
led8=1;
}
}
3、(1)和(2)
#include<STC12C5A60S2.H>
#define uchar unsigned char sbit k8=P1^0;
sbit k2=P1^6;
void main(void)
{
uchar num1,num2;
n um1=0;
num2=0;
while(1)
{
if(!k8)
{
num1++;
P2=~num1;
}
if(!k2)
{
num2++;
P2=~num2;
}
}
}
3、(3)
#include<STC12C5A60S2.H>
#define uchar unsigned char
void delay(uchar);
sbit k8=P1^0;
sbit k7=P1^1;
sbit k6=P1^2;
sbit k5=P1^3;
sbit k4=P1^4;
sbit k3=P1^5;
sbit k2=P1^6;
sbit k1=P1^7;
void main(void)
{
uchar num;
n um=0;
while(1)
{
if(!k3||!k4||!k5||!k6||!k7)
{
num++;
P2=~num;
delay(100);
}
if(!k8)
{
num=0;
P2=~num;
delay(100);
}
}
}
void delay(uchar k )
{
uchar x,y,z;
for(x=k;x>0;x--)
for(y=20;y>0;y--)
for(z=250;z>0;z--);
}
七、总结
对于这次的实验来说,还是不难的,因为看懂了图1-1后,在加上原来学过的C语言,所以这三个程序还是很容易搞定的,在按键去抖动的程序中,由于k1和k2和其他的键并不一样,这两个键在硬件上已经去抖动了,。