51测试网 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 论坛

点击察看说明书(64页彩色PDF文档)

1.1 系统简介

4.3 ISP引脚连接

端口按键判断

红外线遥控555硬件振荡器

1.2 模块接口定义

5.1 仿真概述

矩阵按键识别技术

汉字显示屏PS2键盘实验
2.1 软件安装  5.2 KEIL软件指南

74LS14反向器

1602液晶显示屏SD卡实验
2.2 软件界面介绍 

51引脚说明

74LS138译码器

8155试验

485通信实验 
2.3 软件操作

八路跑马灯

74LS164串入并出

24C02储存

DS1302实时时钟
3.1 USB驱动安装

继电器控制

74LS165并入串出步进电机产生hex文件
3.2 特别usb安装 

8路拨动开关

dac0832应用

93c46演示

常见问题解答
4.1 ISP介绍 

数码管静态扫描 

模拟/数字转换器

串行双向通信系统配置指南
4.2 下载头之插头定义

数码管动态扫描

小喇叭警报器18B20温度显示购买方式

                           
                           
实验10: 74LS164 串入并出实验


      在单片机系统中, 如果并行口的IO资源不够,而串行口又没有其他的作用, 那么我们可以用74LS164来扩展并行IO口,节约单片机资源。

      74LS164是一个串行输入并行输出的移位寄存器。并带有清除端。
      其中: Q0—Q7 并行输出端 。 A,B串行输入端。 MR 清除端, 为0时,输出清零。 CP 时钟输入端。

74LS164引脚定义:

74LS164逻辑表:

 

相关原理:

程序运行照片:

接线方法:
1、用一个2PIN数据排线一端插入CPU部份JP53(P3口)的P3.0,P3.1。另外一端插入74LS164部份的输入端JP20。
2、用一根8PIN的数据排线, 一端插入74LS164部份的输出端JP26, 另一端插入8路指示灯的JP32。

程序流程序图:

汇编语言参考程序:

org 0080h
mov scon,#00000000b ;设定UART方式MODE0
start: mov dptr,#table ;数据指针指到TABLE
loop: clr a ;清除ACC
movc a,@a+dptr ;到TABLE取数据
cjne a,#03,a1 ;到结束码03了么?不是到A1
jmp start ;是则重新开始
a1: cpl a ;取到的数据反向
mov 30h,a ;A存入30H
mov sbuf,30h ;30H的值存入SBUF
loop1: jbc ti,loop2 ;监测TI=1?是则跳到LOOP2
jmp loop1 ;否则继续监测
loop2: call delay ;延时
inc dptr ;数据指针加1
jmp loop
DELAY: ;延时程序
MOV R5,#255
D3:MOV R2,#255
D4: DJNZ R2,D4
DJNZ R5,D3
RET
table : db 01h,02h,04h,08h ;左移
db 10h, 20h,40h,80h
db 01h,02h,04h,08h
db 10h, 20h,40h,80h
db 80h,40h,20h,10h ;右移
db 08h, 04h,02h,01h
db 80h,40h,20h,10h
db 08h, 04h,02h,01h
db 00h,0ffh,00h,0ffh ;闪烁
db 03h
END
c语言参考程序:

#include <reg52.h> //51芯片管脚定义头文件
#include <intrins.h> //内部包含延时函数 _nop_();
sbit data_164 = P3 ^ 0;
sbit clk_164 = P3 ^ 1;
char code SST516[3] _at_ 0x003b; //仿真器保留
/**********************************************************
延时10毫秒
**********************************************************/
void delayms(unsigned int t)
{
unsigned char k;
while (t--)
{
for (k = 0; k < 114; k++)
;
}
}
/**********************************************************
发送数据子函数
**********************************************************/
void wr_byte(unsigned char num)
{
SBUF = num; //发送数据
while (!TI)
;
//等待数据输出完毕
TI = 0; //发送完毕,清中断标志
}
/**********************************************************
主函数
**********************************************************/
void main(void)
{
unsigned char n, temp;
SCON = 0x00; //设置串行口工作方式0,发送
delayms(1);
while (1)
{
temp = 0xff; //赋显示初值
for (n = 0; n < 8; n++)
{
wr_byte(temp); //写数据,送显示
delayms(300);
temp >>= 1; //准备下一个显示数据
}
wr_byte(0x00); //关闭显示
delayms(300);
}
}

 

精致外观

精致外观

精致外观

精致外观

精致外观

精致包装

精致包装

精致包装

配套附件

配套附件

使用手册

使用手册

使用手册

配套附件

配套附件

配套附件

配套附件

配套附件

配套附件

配套附件

精致细节

精致细节

精致细节

精致细节

配套光盘