当前位置:
文档之家› 单片机原理数码管动态显示实验-单片机原理-实验报告
单片机原理数码管动态显示实验-单片机原理-实验报告
2 实验程序 <流程图>
开始
开始
定义数组 Ledcode[]
While (1) Y
For (i=0;i<8
) Y P3=1<<i
P2=~Ledco de[i]
i++
调用延时 函数
定义数组 Ledcode[]
定义数组
Dispbug[] 存放指定
数
While (1)
Y
N
For
(i=0;i<8Fra bibliotek)Y
P3=1<<i
1)先准备好要显示的数据,放入相应的显示存储单元中。
2)根据要使用的数码管的具体位置来确定扫描初值和扫描方向。
3)根据使用数码管的个数来确定扫描的位数。
4)查表将要显示的数据转换为能使数码管正确显示相对应的段码。
5)分时送段码和位码,数码管开始循环显示。
指导教师评语: 1、完成所有规定的实验内容,实验步骤正确,结果正确; 2、完成绝大部分规定的实验内容,实验步骤正确,结果正确; 3、完成大部分规定的实验内容,实验步骤正确,结果正确;
扩展要求: 结合 LED 显示,实现带数码显示的交通灯;
实验步骤、实验结果及分析: 1 实验步骤:
1、使用 Proteus ISIS 7 Professional 应用程序,建立一个.DSN 文件 2、在“库”下拉菜单中,选中“拾取元件”(快捷键 P),分别选择以下元件:AT89C51、CAP、CAP-ELEC、 CRYSTAL、RESPACK-8。 3、构建仿真电路:
sec1=60-comsec; Sec2=60-comsec; R1=0;y1=1;g1=0; r2=1;y2=0;g2=0;
Y
If(Comsec>60)
sec1=30-comsec; Sec2=30-comsec; R1=1;y1=0;g1=0; r2=0;y2=1;g2=0;
If(comsec>=30 && comsec<50)
i++
调用延时 函数
If(ms>=60)
Y comsec=(com
sec+1) % 60;,ms=0
If(comsec <20)
Y Sec1=20-comsec; Sec2=30-comsec; R1=1;y1=0;g1=0; r2=0;y2=0;g2=1; Y If(comsec>=20 && comsec<30)
评定等级:A(优秀) B(良好) C(中等) D(及格) E(不及格)
成绩评定
教师签字
备注:
注:1、报告内的项目或设置,可根据实际情况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告 10 日内
年月日
实验设备(环境):
1.计算机 2.Proteus ISIS 7 Professional 应用程序 3.Keil 应用程序
实验内容:
数码管动态显示技术 要求实现: 1.动态显示法,实现数码管分别显示数字 1-8; 2.实现指定数值的显示 (可使用 缓存数值) (); 3.实现类似时钟的效果,如“ 13-23-25” 13 时 23 分 25 秒; 4.实现时钟的自动计时;
宁德师范学院计算机系
实验报告
(2014—2015 学年 第 2 学期)
课程名称
单片机原理
实验名称 数码管动态显示实验
专 业计算机科学与技术(非师范)
年级
2012 级
学号 B47 姓名 王 秋
指导教师
杨烈君
实验日期
实验目的:
1. 巩固 Proteus 软件和 Keil 软件的使用方法 2. 学习端口输入输出的高级应用 3. 掌握 7 段数码管的连接方式和动态显示法 4. 掌握查表程序和延时等子程序的设计
实验要求:
1. 在 Proteus 软件中画好 51 单片机最小核心电路,包括复位电路和晶振电路 2. 在电路中增加八位 7 段数码管(共阳/共阴自选),将 P2 口作数据输出口与 7 段数码管数据 引脚相连 ,P3 引脚输出位选控制信号 3. 在 Keil 软件中编写程序,采用动态显示法,实现数码管分别显示数字 1-8 4. 实现指定数值的显示 (可使用 缓存数值) 5. 实现类似时钟的效果,如“ 13-23-25” 13 时 23 分 25 秒 6. 实现时钟的自动计时 7. 扩展要求: 结合 LED 显示,实现带数码显示的交通灯
P2=~Ledco de[DispBu
f[i]]
i++
调用延时 函数
开始
定义数组 Ledcode[]
定义Dispbug[] 存放指定数
定义子函数 PutTime() {...}
While (1)
调用延 时函数
i++
PutTime()
P2=~Ledcode[D ispBuf[i]]
N
For (i=0;i<
在实验中,预设的数字段码表存放在数组 LedCode 中,由于段码表是固定的,因此存储类型可 设为 code.在 Proteus 软件中按照要求画出电路,再利用 Keil 软件按需要实现的功能编写 c 程序, 生成 Hex 文件,把 Hex 文件导到 Proteus 软件中进行仿真。
心得体会:
实验数码管显示程序的编程方法
P3=1<<i
8) Y
开始
Sbit r1=P2^0; ...
sbit g2=P2^5;
定义数组 Ledcode[]
定义Dispbug[] 存放指定数
定义子函数 PutTime() {...}
While(1) Y
PutTime()
For (i=0;i<8)
P3=1<<i
P2=~Ledcode[D ispBuf[i]]
连接图
显示 1-8
显示
显示时间时钟自动计时 连接图
红绿灯效果图 1 红绿灯效果图 2
4、创建一个 Keil 应用程序:新建一个工程项目文件;为工程选择目标器件(AT89C52);为工程 项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。 5、把用户程序经过编译后生成的 HEX 文件添加到仿真电路中的处理器中(编辑元件→文件路径)
sec1=60-comsec;
Sec2=50-comsec;
Y
R1=0;y1=0;g1=1;
r2=1;y2=0;g2=0;
程序源代码:
1.动态显示法,实现数码管分别显示数字 1-8;
#include<> #define uchar unsigned char #define uint unsigned int uchar code Ledcode[]={
0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
于电路中采用共阳极的数码管,所以当 P2 端口相应的引脚为 0 时,对应的数码管段点亮。程 序中预设了数字 0-9 的段码。由于是让八个数码管显示不同的数值,所以要用扫描的方式来实现。 因此可定义扫描函数,接到单片机的 P3 口。