
【单片机原理及应用】实验: 8位数码显示器
锁存功能:ST_CP(输出存储器锁存时钟线)的上升沿将移位寄存器中的数据锁存到存储寄存器中,从而实现数据的稳定输出。级联使用:通过将Q7'连接到下一个74HC595的DS端,可以实现多个芯片的级联,以控制更多的输出。1.74HC595是一款高性能、低功耗的CMOS技术芯片,具有8位串行输入、8位并行输出的移位寄存器,以及一个8位的数据存储寄存器。串行输入:在SH_CP(移位寄存器时钟)的上升沿,串
目录
一、实验目的
学习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
更多推荐
所有评论(0)