目录

一、实验目的

二、实验内容

三、实验步骤

四、记录与处理

五、思考

六、成果文件提取链接


一、实验目的

 学习8位数码管串行扩展原理,掌握74HC595与动态显示编程方法。


二、实验内容

参照图表

    

(1)创建一个包含80C51固件,且采用Keil for 8051编译器的新项目。

(2)按照图3.54和表2.18完成实验的电路图绘制。

(3)编写C51源程序,要求实现如下功能:

  • 8个数码管的所有笔段整体全亮1秒(以便检查有无缺画);
  • 按照从左至右的顺序以0.5秒间隔逐位显示数字7,6,5,4,3,2,1,0;
  • 8个数码管整体显示自己学号前4位+后4位

(4)完成源程序编译和动态调试,实现实验7的控制功能要求。

(5)完成实验7报告的撰写。提交实验报告并包括如下内容:实验步骤,含电路原理图及其分析,74HC595原理阐述,C51源程序(含注释语句);记录与处理(仿真运行截图),实验小结。

(6)C51源程序源代码压缩后以附件形式提交。


三、实验步骤

    

  

(1)创建一个包含80C51固件,且采用Keil for 8051编译器的新项目。

(2)按照图示完成实验的电路图绘制。

(3)编写C51源程序,要求实现如下功能:

  • 8个数码管的所有笔段整体全亮1秒(以便检查有无缺画);
  • 按照从左至右的顺序以0.5秒间隔逐位显示数字7,6,5,4,3,2,1,0;
  • 8个数码管整体显示自己学号前4位+后4位。即2250+0184

根据实验要求我们可以编写出以下代码:

sbit SH_CP=P2^0;	// 模拟SH_CP信号输出端
sbit DS=P2^1; 		//模拟DS数据输入端
sbit ST_CP=P2^2; 	//模拟SH_CP信号输出端

void Delayms(unsigned int t){	//延时约1毫秒函数:
         unsigned int x,y;
         for(x=t;x>0;x--)
                for(y=120;y>0;y--);	
}

void DisplayChar(unsigned char segmd,unsigned char bitd ){ //数码管段码和数码管位码
        unsigned char i,j;
        unsigned int dat;
        dat=bitd;
        dat=dat<<8|segmd; 	
        for(i=0;i<16;i++){	
		SH_CP = 0;		
		DS=(dat & 0x8000)?1:0; 	
		SH_CP=1;   		
		for(j=0; j<2; j++);	
		dat<<=1;   		
        }
        ST_CP=0; 		
        ST_CP=1;  		

}


(4)完成源程序编译和动态调试,实现实验7的控制功能要求。

  • 8个数码管的所有笔段整体全亮1秒(以便检查有无缺画);

  • 按照从左至右的顺序以0.5秒间隔逐位显示数字7,6,5,4,3,2,1,0;

  • 8个数码管整体显示自己学号前4位+后4位。即2250+0184


四、记录与处理

  • 8个数码管的所有笔段整体全亮1秒(以便检查有无缺画);

  • 按照从左至右的顺序以0.5秒间隔逐位显示数字7,6,5,4,3,2,1,0;

  • 8个数码管整体显示自己学号前4位+后4位。即2250+0184


五、思考

1.74HC595是一款高性能、低功耗的CMOS技术芯片,具有8位串行输入、8位并行输出的移位寄存器,以及一个8位的数据存储寄存器。

串行输入:在SH_CP(移位寄存器时钟)的上升沿,串行数据从DS(串行数据输入端)输入到内部的8位移位寄存器,并在Q7'(级联输出端)输出。

2.在本次实验中,我深入学习并实践了如何使用51单片机控制多个LED数码管的显示。通过编写程序,我掌握了对数码管动态显示的控制技巧,以及如何利用74HC595移位寄存器芯片来减少对单片机I/O端口的使用。


六、成果文件提取链接

链接:https://pan.baidu.com/s/1vih-osSS5LE-I0vk-Imugg?pwd=ugmx 
提取码:ugmx  

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐