单片机串并口转换实验
- 格式:docx
- 大小:178.12 KB
- 文档页数:6
我也是刚入手单片机,今天编了一段小程序,就是关于单片机串口转并口和并口转串口的一个小实验,本程序在PTOTUES中完美运行。在单片机开发试板上也是完美运行。今天贴出来供大家分享,看完本历程,有助于提高您对单片机IO口的基本操作,锁存器的用法以及串并转换的使用技能
#include
本例程的电路连接图如上,在电路中使用了AT89C51单片机一块,74HC595八路串/并转换器,74HC165八路并串转换器和一片74HC573 锁存器。实验者请按上图连接好实验电路。
#include
#include< intrins.h >
#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++) //开始八次循环移位
{
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
m<<=1;
SHCP=1;
delay(300);
}
STCP=0;
STCP=1;
delay(30000);
}
}