- 14
- 0
- 约1.86千字
- 约 8页
- 2022-10-18 发布于江苏
- 举报
数码管动态显示实验报告
实验四 数码管动态显示实验一
一、实验要求
在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路
在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码管数据引脚相连 ,P2.0~P2.3引脚输出选控制信号
在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1,2,3,4
二、实验目的
巩固Proteus软件和Keil软件的使用方法
学习端口输入输出的高级应用
掌握7段数码管的连接方式和动态显示法
掌握查表程序和延时等子程序的设计
三.实验说明
本实验是将单片机的P1口做为输出口,将四个数码管的七段引脚分别接到P1.0至P1.7。由于电路中采用共阳极的数码管,所以当P1端口相应的引脚为0时,对应的数码管段点亮。程序中预设了数字0-9的段码。由于是让四个数码
器周期时系统就会被复位;31引脚(EA)为存取外部存储器使能引脚,当EA为高电平是使用单片机内部存储器,当EA为低电平时单片机则使用外部存储器。18、19引脚是接晶振脚。而接地和电源端在软件中已经接好,所以不用在引线。
如下图所示:
(二)流程图与程序设计
开
开始
声明驱动
信号数组
声明延时函数
扫描数组的值
显示数值
读取数组数据及数据处理
(三)程序设源代码
#include reg51.h //定义8051寄存器头文件
#define SEG7P P1 //定义扫描信号的位置
#define SCANP P2 //定义数码管的位置
char code TAB[10]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, //数字0~4的码值
0x92, 0x83, 0xf8, 0x80, 0x98 }; //数字5~9的码值
char disp[4]={1,2,3,4}; //定义要显示的数值
void delay_ms(int x); //声明延时函数
char scan[4]={0xfe,0xfd,0xfb,0xf7}; //定义扫描
char i,j; //定义变量i,j
main() //主函数的开始
{
while(1) //无限循环
{ for(i=0;i4;i++) //从
{j=disp[3-i]; //取出显示的数值
SCANP =scan[i]; //扫描的顺序
SEG7P =TAB[j]; //将TAB的数值赋给数码管
delay_ms(4); //延时4ms
}
}
}
void delay_ms(int x)
{ int i,j;
for (i=0;ix;i++)
for (j=0;j120;j++);
}
五.实验总结
问题一:运行电路时,数码管乱码
解决的方法:检查电路,发现程序中扫描信号端口错误,将扫描信号的端口顺序调换,重新运行。
问题二:重新运行后,数码管只显示其中的一部分。
解决的方法:检查程序,发现是延时时间的问题,在改动延时时间后,重新编译后在次运行电路,电路正常显示,符合要求。
通过本次的实验,在前两个实验的基础上让我复习了知识点,也让我在次掌握了新的知识。在完成这次实验后,让我想到可以用多个按键控制多个数码管实现加减和暂停和开始。我觉得这次的课程实验让我知道,一次次的失败,并不会让我放弃去追求,相反它会引领着我去发现问题,从而解决问题,完成更深入的探索。也让我明白理论知识的重要性,并且与实际相结合,多动手,在实践中成长。所以我会很重视每一次的实验。我坚信:每次实验都会给我自身很大帮助。慢慢的积累点滴的知识,到最后就会多的。
您可能关注的文档
最近下载
- 芯片的EOS失效分析及焊接工艺优化.pdf VIP
- 老旧小区改造工程施工设计方案与技术措施方案.doc VIP
- 2026年贵州省贵阳市高职单招职业技能考试题库有答案解析.docx VIP
- 2026年南昌健康职业技术学院单招职业倾向性考试题库新版.docx VIP
- 北京现代途胜汽车的维修保养手册.doc VIP
- 小学生必背古诗75首---方便打印版.pdf VIP
- 2026年南昌健康职业技术学院单招职业倾向性测试题库最新.docx VIP
- 2026年江西信息应用职业技术学院单招职业倾向性考试必刷测试卷及答案1套.docx VIP
- 征信报告模板详细版带水印可编辑2025年9月新版.pdf VIP
- 五年级下册第三单元习作满分作文:学写简单的研究报告(精选五篇).pdf VIP
原创力文档

文档评论(0)