C8051F应用笔记 C8051F单片机笑傲江湖 使用74LS165将C8051F的串口输入扩为并口输入

使用74LS165将C8051F的串口输入扩为并口输入

以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!

系统功能

   使用74LS165将C8051F的串口输入扩为并口输入。


硬件设计

串行输入扩展为并行输入芯片74LS165控制电路原理图


软件设计

下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!

//目标系统: 基于C8051F单片机
//应用软件: Silicon IDE / Keil

/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
实验内容:
使用P2口作为信号源输入到74LS165,74LS165将会将该信号转为串行信号,
MCU再自己接收串行信号,使用P2口的LED指示灯查看数据是否正确。
----------------------------------------------------------------------
硬件连接:
将PB口的LED指示灯开关切换到"ON"状态。
    DVK501(165PrlPort)    F320 EX
                        D0    ---------    P2.0
                        D1    ---------    P2.1
                        D2    ---------    P2.2
                        D3    ---------    P2.3
                        D4    ---------    P2.4
                        D5    ---------    P2.5
                        D6    ---------    P2.6
                        D7    ---------    P2.7    
  
                      VCC   ---------   VCC
                      GND   ---------  GND
                      PL       ---------  P1.0  
                      QH      ---------  P0.5
                      CLK    ---------  P0.4
----------------------------------------------------------------------
注意事项:
(1)若有加载库程序,请将光盘根目录下的“library”下的“C8051F”文件夹拷到D盘
(2)请详细阅读:光盘根目录下的“说明书首页.htm”里的相应产品说明
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/

#define _DVK501_F320_EX_

#include <c8051f320.h>
#include <../../../../library/C8051F/ws_clock.h>
#include <../../../../library/C8051F/ws_74hc165_port.h>

void main(void)
{
uchar a = 0;
PCA0MD &= ~0x40;
XBR1 = 0x40;
clock_external();
P2MDOUT = 0xFF;
hc165Init();

while(1)
{
P2 = 0x55;
a = hc165GetDat();
P2 = a;
}
}

sbit HC165_RXD = P0^5;
sbit HC165_TXD = P0^4;
sbit HC165_PL = P1^0;

uchar hc165GetDat(void)
{
uchar i,dat=0;
HC165_PL = 0;
HC165_PL = 1;
for(i=0;i<8;i++)
{
HC165_TXD = 0;
dat = dat<<1;
if(HC165_RXD)
dat |= 0x01;
HC165_TXD = 1;
}
return dat;
}

void hc165Init(void)
{
P0MDOUT |= 0x08;
P1MDOUT |= 0x01;
}


系统调试

将74LS165的输入端口D0--D7接入单片机的P2口,那么P2口输出的数据经过74LS165的转换变为串行数据,将串行数据接入串口,那样若正常工作接收到的数据将与从P2口发出的数据一致,用LED指示串口接收到的数据,进行观察。


使用74LS165将C8051F的串口输入扩为并口输入

——