单片机串并口转换实验
我也是刚入手单片机,今天编了一段小程序,就是关于单片机串口转并口和并口转串口的一个小实验,本程序在PTOTUES中完美运行。在单片机开发试板上也是完美运行。今天贴出来供大家分享,看完本历程,有助于提高您对单片机IO口的基本操作,锁存器的用法以及串并转换的使用技能
#include
本例程的电路连接图如上,在电路中使用了AT89C51单片机一块,74HC595八路串/并转换器,74HC165八路并串转换器和一片74HC573 锁存器。实验者请按上图连接好实验电路。
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
code uint a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
sbit SO=P1^0; //定义165的输出
sbit STCP=P1^1;
sbit DS=P1^2;
sbit SHCP=P1^3;
sbit SHLD=P1^4;
sbit CLK=P1^5;
sbit cs573=P1^6;
/**************************************************/
void delay(ulong X) //延时函数,采用了形参传递函数 {
while(X--);
}
/**************************************************/
void LED(); //函数声明
/**************************************************/
void main() //主函数
{
while(1)
{
LED ();
}
}
/****************************************************/ void LED()
{
uint i,j,k;
uchar n,m;
for(i=0;i<8;i++)
{
cs573=1;
P2=a[i]; //往P2口送流水灯字符,因为有8个流水灯,所以i=8循环八次,LED小灯依次被点亮
cs573=0; //把P2口送过来的数据锁存
SHLD=0; //74HC165开始装载数据
delay(10);
SHLD=1;
for(j=0;j<8;j++) //开始八次循环移位
{ n<<=1;
delay(10);
CLK=0;
n|=SO;
delay(10);
CLK=1;
}
P3=n;
m=n;
for(k=0;k<8;k++) //74HC595开始转换数据
{
SHCP=0;
if((m&0x80)==0x80)
DS=1;
else DS=0;
m<<=1;
SHCP=1;
delay(300);
}
STCP=0;
STCP=1;
delay(30000);
}
}
单片机串行通信实验
实验四 单片机串行通信实验
一、实验目的
1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。
2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。
3、学习串口通讯的中断方式的程序编写方法
二、实验说明
利用单片机串行口,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。
三、实验仪器
计算机
伟福实验箱( lab2000P )
四、实验内容与软件流程图
1、8051的RXD、TXD接线柱在POD51/96仿真板上。
2、通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD上,这样按下的键,就会在本机LED上显示出来。
3、若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入时要将RS232电平换成TTL电平。可以将仿真板上的RXD、TXD信号接到实验板上的“用户串口接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的RS232设备。可以用实验仪上的逻辑分析仪采样串口通信的波形
4、软件流程图
5、实验电路连接方式
①双机串行通信方式。TXD脚和RXD脚分别用于发送和接收数据。
②单机通信的情况下,只需将自己的TXD脚与RXD脚连接就可以,不用公地操作。
五、思考题
1、接收到的数据加1显示出来;
2、保存前一个接收到的数据,数据向前推动显示。
六、源程序修改原理及其仿真结果
实验结果图
源程序:
加1显示:
接收到的数据先前推送:
七、心得体会
通过这次实验,我掌握了单片机串行口工作方式的程序设计,及简易三线式通讯的方法。了解了实现串行通讯的硬环境、数据格式的协议、数据交换的协议。学习了串口通讯的中断方式的程序编写方法。
单片机-串并转换
功能实现
/***************************************************
本例主要演示串行转换成并行的功能实现:通过LED灯的闪亮显示(附带电路图)。
***************************************************/
//C语言格式
#include
#define uchar unsigned char
#define uint unsigned int
uint i,j;
uint date[] = {1,2,4,8,16,32,64,128};
//延时
void Delay(uint n){
for(i = 0; i
for(j = 0; j<100; j++);
}
}
void main(){
SCON = 0x0;
while(1){
for(j = 0; j<8; j++){
SBUF = date[j]; if(TI == 1){
TI = 0;
Delay(5);
}
}
}
}
//asm格式
ORG 0000H
AJMP START
ORG 0030H
START:
MOV SCON,#0H
MOV 30H,#01H
MOV 31H,#02H
MOV 32H,#04H
MOV 33H,#08H
MOV 34H,#16
MOV 35H,#32
MOV 36H,#64
MOV 37H,#128
MOV R0,#30H
MOV R2,#8
LOOP:
MOV A,@R0
MOV SBUF,A
L0:
JNB TI,L0
穿行口实验报告
一、实验目的
1. 理解穿行口的工作原理和功能。
2. 掌握穿行口在单片机系统中的应用。
3. 学习如何通过编程控制穿行口实现数据传输。
4. 提高对单片机硬件资源和编程技术的应用能力。
二、实验原理
穿行口(Serial Port)是单片机中用于串行通信的接口,它可以将单片机的并行数据转换为串行数据,或将串行数据转换为并行数据。本实验主要涉及MCS-51单片机的串行口,其工作原理如下:
1. 串行通信的基本概念:串行通信是指数据以一位一位的顺序传送,按照一定的顺序进行。与并行通信相比,串行通信的传输速度较慢,但具有传输距离远、抗干扰能力强等优点。
2. MCS-51单片机的串行口:MCS-51单片机的串行口采用全双工通信方式,即同时可以进行发送和接收操作。串行口的主要功能包括:
- 数据发送:将并行数据转换为串行数据,通过串行口发送出去。
- 数据接收:接收串行数据,并将其转换为并行数据。
3. 串行口的工作模式:MCS-51单片机的串行口支持四种工作模式,分别是:
- 模式0:同步移位寄存器方式。
- 模式1:8位UART(通用异步收发传输器)方式。
- 模式2:9位UART方式。
- 模式3:波特率可变UART方式。
三、实验器材
1. 单片机实验板
2. 连接线
3. 示波器(可选) 4. 编程器
四、实验步骤
1. 搭建实验电路:根据实验要求,将单片机实验板上的相关引脚与连接线连接好。
2. 编写程序:使用C语言编写程序,实现串行口的数据发送和接收功能。
3. 编译程序:使用编程器将程序烧录到单片机中。
4. 调试程序:通过示波器或其他测试工具观察串行口的数据传输情况,验证程序的正确性。
5. 实验结果分析:根据实验结果,分析程序的正确性和串行口的工作状态。
五、实验程序
以下是一个简单的串行口发送和接收程序示例:
```c
#include
void main() {
串并转换电路
作业二——串-并转换电路
一.实验内容:
实现一个串-并转换电路,当输入信号A为1时,串行输入D的值,输入4 bit之后,并行输出Z,同时DONT输出为1。运用状态分析,共三个状态:state0,state1,state2。
设计testbench,检验输出波形。
二.实验代码:
1.修改的core代码如下:
2.设计的testbench代码如下:
其中,输入信号A和D是通过定义寄存器AM和DM,然后寻址获取数值。
a.给复位信号R,时钟信号CLK赋值代码:
b.给输入信号A和D赋值代码:
三.仿真波形
1.总的波形 分析:从这幅图中可以看出,当R=1时,所有的信号复位成0,状态为0,之后当A=1给出ready信号之后,开始串行读数,四个时钟周期后,将数值并行输出到Z,同时DONT变为1,回归状态0。之后再次等待ready信号A=1,如此循环,实现串-并转换。波形正确。
2.第一个并行输出放大波形:
分析:从这幅图中可以看出,当时钟上升沿读取到A=1,说明准备好读入D的数值了,D分别为:1,0,1,1,四个时钟之后,Z并行输出1011,同时DONT输出为1,之后回归到状态0,重新开始准备读数。
3.第二个并行输出波形:
分析:这幅图中,当Z输出1011之后,下一个时钟上升沿,虽然D为1,A也为1,但是由于此时刚读入状态为0,因此还没有开始读数,而是在下一个时钟沿时开始串行读入D,一次读入D为:0,0,1,1,所以最后输出不是1001,而是0011。
单片机串口应用实验报告
单片机串口应用实验报告
实验名称:单片机串口应用实验报告
实验目的:
1. 了解单片机串口通信的原理和应用;
2. 掌握单片机串口通信的编程方法;
3. 实现单片机与计算机之间的数据传输。
实验器材:
1. 单片机开发板(如STC89C52);
2. 串口数据线;
3. 计算机。
实验原理:
单片机的串口通信是通过串行通信接口实现的,其中包括发送数据和接收数据两个部分。串口通信的原理是将数据按照一定的格式进行传输,其中包括起始位、数据位、校验位和停止位。计算机与单片机之间通过串口数据线连接,通过发送和接收数据来实现双向通信。
实验步骤:
1. 连接单片机开发板和计算机,将串口数据线的一端连接到单片机的串口接口,另一端连接到计算机的串口接口或USB转串口适配器。
2. 打开单片机开发环境,创建一个新的工程。
3. 在工程中编写程序,实现单片机与计算机之间的数据传输。可以使用C语言编程,通过串口发送和接收函数来实现数据的发送和接收。
4. 在程序中设置单片机的串口通信参数,包括波特率、数据位、校验位和停止位等。
5. 编译并下载程序到单片机开发板中。
6. 打开计算机上的串口调试助手软件,设置串口参数与单片机一致。
7. 在串口调试助手软件中发送数据,观察单片机是否能够接收到数据,并通过串口发送数据给计算机。
8. 在单片机程序中添加相应的处理逻辑,实现对接收到的数据的处理和回复。
实验结果:
通过串口调试助手软件发送数据,单片机能够正确接收并处理数据,并通过串口发送数据给计算机。实验结果符合预期。
实验总结:
通过本次实验,我了解了单片机串口通信的原理和应用,掌握了单片机串口通信的编程方法。通过实验,我成功实现了单片机与计算机之间的数据传输,并能够对接收到的数据进行处理和回复。这对于实际应用中的数据传输和通信具有重要意义。
单片机并行接口实验
实验报告
课程名称: 单片机原理
实验项目: 并行接口实验
专业班级:
姓 名: 学 号:
实验室号: 实验组号:
实验时间: 2014.5.4 批阅时间:
指导教师: 成 绩: 1 沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级: 学号: 姓名:
实验名称:并行接口实验
1.实验目的:
1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
2.实验内容:
1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2.P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。
3.实验方案(程序设计说明)
4.实验步骤或程序(经调试后正确的源程序)
见附件
5.程序运行效果
循环点亮发光二极管
开关状态,在发光二极管上显示出来
2 附件A 沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级: 学号: 姓名:
实验步骤或程序:
步骤:
1.执行程序1(T1_1.ASM)时:P1.0~P1.7接发光二极管L1~L8。
2.执行程序2(T1_1.ASM)时:P1.0~P1.7接平推开关K1~K8;74LS273的O0~O7接发光二极管L1~L8;74LS273的片选端CS273接CS0(由程序所选择的入口地址而定,与CSO~CS7相应的片选地址请查看第一部分系统资源,以后不赘述)。
单片机串口应用实验报告 2
单片机串口应用实验报告
实验名称:单片机串口应用实验
实验目的:
1. 学习串口通信的基本原理和工作机制;
2. 掌握单片机串口通信的配置方法和编程技巧;
3. 实现单片机与电脑的数据传输和通信。
实验器材和软件:
1. 单片机:STC89C52RC(或其他型号的单片机);
2. 串口模块:MAX232(或其他型号的转换电路);
3. USB转串口模块;
4. 电脑;
5. Keil C51开发环境;
6. 串口调试助手。
实验原理和步骤:
1. 硬件连接:将单片机的RX和TX引脚分别连接到串口模块的TX和RX引脚,并连接串口模块的VCC和GND引脚到单片机的VCC和GND引脚。将串口模块的TX和RX引脚分别连接到USB转串口模块的RX和TX引脚,并将USB转串口模块插入电脑的USB接口。
2. 软件配置:
a. 打开Keil C51开发环境,选择对应的单片机型号;
b. 配置串口通信参数,如波特率、数据位、停止位等;
c. 编写程序,实现串口通信的功能;
d. 编译、烧录程序到单片机中。
实验结果:
在串口调试助手中输入数据,单片机接收到数据后进行处理,并将结果反馈给电脑进行显示。
实验总结和体会:
通过本实验,我了解了串口通信的原理和工作机制,掌握了单片机串口通信的配置方法和编程技巧。实现了单片机与电脑的数据传输和通信,对单片机串口应用有了更深的理解和实践经验。
单片机串行口实验报告实验总结
单片机串行口实验报告实验总结
一、实验目的
本实验旨在让学生了解单片机串行口的基本原理和应用,掌握单片机串行口的编程方法,培养学生动手实践和解决问题的能力。
二、实验器材
1. STC89C52单片机开发板
2. 电脑串口线
3. 电脑终端仿真软件Tera Term
三、实验原理
串行口是单片机与外部设备进行通信的重要接口之一。串行口通信是指将数据一个位一个地传输,每个数据位之间有一个时钟脉冲来同步传输。常见的串行通信协议有RS232、RS485、SPI等。本实验主要涉及到RS232协议。
四、实验内容
1. 实现单片机向电脑发送数据并显示。
2. 实现电脑向单片机发送数据并控制LED灯闪烁。
五、实验步骤 1. 连接STC89C52单片机开发板和电脑,使用Tera Term打开串口终端。
2. 编写程序,设置单片机的串行口通信参数(波特率、数据位数、停止位数等),并利用SendData函数向电脑发送数据。
3. 在Tera Term中设置相应的串口参数,并打开“local echo”选项,以便观察单片机发送的数据。
4. 编写程序,接收电脑发送的数据,并根据接收到的数据控制LED灯闪烁。
5. 在Tera Term中输入相应的命令,向单片机发送数据,观察LED灯的闪烁情况。
六、实验结果
1. 实现了单片机向电脑发送数据并显示。
2. 实现了电脑向单片机发送数据并控制LED灯闪烁。
七、实验总结
本实验使我对串行口通信有了更深入的理解,掌握了单片机串行口编程方法。同时也锻炼了我的动手能力和解决问题的能力。在实验过程中还需要注意串口参数设置和通信协议选择等问题,加深了我对这些知识点的理解。
单片机并行口实验报告
单片机并行口实验报告
实验二 并行口
实验报告
班级:
学号:
姓名:
教师:
一、实验目的
通过实验了解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
#define uchar unsigned char
#define ON 0
#define OFF 1
51单片机并行端口实验报告
实验 一 MCS-51单片机并行端口实验
一、实验目的和要求
目的:进一步熟悉和掌握KEIL集成调试软件和DP-51PROC综合实验系
统的使用,掌握单片机并行端口的编程及使用方法。统的使用,掌握单片机并行端口的编程及使用方法。
要求:将P1口地8位端口使用排线与LED1—LED8按照顺序连接,使用一条单独连接线将P3.2与SW1连接。编制一个P1口地输出程序:将累加器A
中的数据通过P1输出,SW1=1时,对累加器A的内容右移并输出;SW1=0时,
对累加器A左移并输出。左移并输出。
二、实验算法
编制循环结构的程序,在循环结构内,通过判断P3.2是0还是1,实现对
累加器A的左移和右移,并输出到P1口,P3.2=1时,对累加器A的内容右移
并输出;P3.2=0时,对累加器A左移并输出,为方便肉眼观察还需编制延时子程序,通过调用延子程序实现延时的目的。程序,通过调用延子程序实现延时的目的。
三、实验电路图
四、实验流程图
五、程序清单 开始
SETB P3.2
P3.2=1?
RLA RRA
A—>P1
DELAY SETB P3.2 MCS—51 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 1 +5V
+5V SW1
ORG 8000H ;定义程序的初始地址;定义程序的初始地址 LJMP START
ORG 8100H
START: MOV SP,#60H ;将栈顶指针赋初值;将栈顶指针赋初值
SETB P3.2 ;初始化3.2口准备做数据输入端
MOV A,#0FEH ;累加器A赋初值赋初值
LOOP: JNB P3.2,LR ;如果3.2口!口!=1=1则跳转到LR
RR A ;累加器A里的值循环右移里的值循环右移 SJMP SHOW ;跳转到SHOW
LR: RL A ;累加器A里的值循环左移里的值循环左移
SHOW: MOV P1,A ;显示程序,将A的值作为输出到P1口
