资源描述
课程名称 单片机技术基础 实验名称 74HC595串入并出实验
实验目的、要求
1、了解C51编程
2、理解串入并出的概念
3、掌握对74HC595串入并出的编程
实验原理
本实验主要是使用74HC595来实现串入并出,串行输入为一位,并行输出为八位,串入并出主要是起到扩省IO端口的作用。并行输出的数据体现在发光二极管上面。
主要设备、器材
计算机一台 KEIL集成开发环境 普中科技单片机实验板一个
实验步骤及原始数据记录
1)启动Keil C51软件。
2)新建一个工程文件74HC595.uv2,选择芯片为AT89S52。
3)新建一个C51文件74HC595.c,单击左上角的New File,在编辑框里输入程序。
4)完成代码的输入后,单击SAVE按钮,注意选择保存的路径,并输入保存的文件名74HC595.c,然后单击【保存】按钮。
5)保存好后把此文件加入到工程中(用鼠标在Source Groupl上单击右键,然后再单击Add Files to Group‘Source Groupl’)。
5)选择要加入的文件,找到74HC595后,单击【Add】按钮,然后单击【close】按钮。
6)到此便完成了工程项目的建立以及文件加入工程,现在开始编译工程,若在output window的build页看到0 Error(s)表示编译通过,可以进行程序的仿真运行。
7) 根据电路图连接LED灯和74HC595输出端,74HC595的串行输入端已经与单片机的P3^4连接在一起了。开启单片机,将程序下载到单片机,观测运行结果。
程序运行之后,LED灯根据串行输入的数据而点亮。
实验程序:
#include<reg52.h>
#include<intrins.h>
sbit MOSIO = P3^4; //定义74HC595的串行输入端
sbit R_CLK = P3^5; //定义74HC595的接收时钟信号
sbit S_CLK = P3^6; //定义74HC595的发送时钟信号
void delay(unsigned int); //延时函数
void HC595SendData(unsigned char );//74HC595的串入并出函数
void main()
{
unsigned char Led =0xfc; //要串行发送的数据
//有两位为零,因些发光二极管有两个是亮的
HC595SendData(0xff); //首先发送全1,将发光二极管全部熄灭
while(1)
{
HC595SendData(Led); //将数据串放并出发送到发光二极管
Led <<= 1; //将发送的数据左移
Led =Led|0x01;
if(Led==0x3f) Led=0x7e;
if(Led==0xfd) Led=0xfc;
delay(200);
}
}
void delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=300;j>0;j--);
}
void HC595SendData(unsigned char SendVal )
{
unsigned char i;
for(i=0;i<8;i++)
{
if((SendVal<<i)&0x80) //从最高位开始传送,判断是否为1。
MOSIO =1;
else MOSIO = 0;
S_CLK=0;
_nop_();
_nop_();
S_CLK=1; //串行数据转变为并行数据的时钟信号
}
R_CLK=0;
_nop_();
_nop_();
R_CLK=1;
}
展开阅读全文