单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx

上传人:b****7 文档编号:21865317 上传时间:2023-02-01 格式:DOCX 页数:17 大小:185.22KB
下载 相关 举报
单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx_第1页
第1页 / 共17页
单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx_第2页
第2页 / 共17页
单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx_第3页
第3页 / 共17页
单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx_第4页
第4页 / 共17页
单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx

《单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

单片机原理数码管动态显示实验单片机原理实验报告Word格式文档下载.docx

结合LED显示,实现带数码显示的交通灯

实验设备(环境):

1.计算机

2.ProteusISIS7Professional应用程序

3.Keil应用程序

实验内容:

数码管动态显示技术要求实现:

1.动态显示法,实现数码管分别显示数字1-8;

2.实现指定数值的显示(可使用缓存数值)(33355223);

3.实现类似时钟的效果,如“13-23-25”13时23分25秒;

4.实现时钟的自动计时;

扩展要求:

结合LED显示,实现带数码显示的交通灯;

实验步骤、实验结果及分析:

1实验步骤:

1、使用ProteusISIS7Professional应用程序,建立一个.DSN文件

2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:

AT89C51、CAP、CAP-ELEC、CRYSTAL、RESPACK-8。

3、构建仿真电路:

连接图

显示1-8

显示33355223

显示时间13.23.25

时钟自动计时

连接图

红绿灯效果图1

红绿灯效果图2

4、创建一个Keil应用程序:

新建一个工程项目文件;

为工程选择目标器件(AT89C52);

为工程项目创建源程序文件并输入程序代码;

保存创建的源程序项目文件;

把源程序文件添加到项目中。

5、把用户程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件→文件路径)

2实验程序<

流程图>

程序源代码:

#include<

reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeLedcode[]={

0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//定义一个数组里面放入1-8

voiddelay(uintx)

{

while(x--);

}

voidmain()

uchari;

while

(1)

{

for(i=0;

i<

8;

i++)

{

P3=1<

<

i;

//P3口表示从第一个位开始显示数值

P2=~Ledcode[i];

//P2口用来显示所需要显示的数值

delay(500);

}

}

2.实现指定数值的显示(可使用缓存数值)(33355223);

unsignedcharcodeLedCode[]={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40

};

unsignedcharDispBuf[8]={3,3,3,5,5,2,2,3};

//指定要显示的数的位置

voiddelay(unsignedintx){

while(x--);

unsignedinti;

for(i=0;

i++){

P3=1<

P2=~LedCode[DispBuf[i]];

//显示指定数的位置

delay(500);

}

3.实现类似时钟的效果,如“13-23-25”13时23分25秒;

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

unsignedcharHour=13,Min=23,Sec=25;

unsignedcharDispBuf[8];

voiddelay(unsignedintx)

voidPutTime()

DispBuf[7]=Sec%10;

//取对应秒数的个位放在最右边显示

DispBuf[6]=Sec/10;

//取对应秒数的十位放在右起第二位显示

DispBuf[5]=10;

//此处表示秒跟分之间用横杆隔开

DispBuf[4]=Min%10;

DispBuf[3]=Min/10;

DispBuf[2]=10;

DispBuf[1]=Hour%10;

DispBuf[0]=Hour/10;

longn=0;

while

(1)

{

unsignedchari;

PutTime();

for(i=0;

P3=1<

P2=~LedCode[DispBuf[i]];

delay(500);

4.实现时钟的自动计时;

unsignedchari,ms;

//定义一个ms用于控制秒数加一的延时

ms++;

//控制加一的时延

if(ms>

=20)

Sec++;

ms=0;

if(Sec>

=60)//表示进位,当秒满六十则向分钟进一,同时秒数清零

Min++;

Sec=0;

if(Min>

=60)

Hour++;

Min=0;

if(Hour>

=24)//当小时数满24小时时,则小时数清零,完成计时

Hour=0;

5.扩展要求:

#include"

reg52.h"

#defineDisp_Null10

ucharcodeLedCode[]={

0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x40};

ucharDispBuf[8];

sbitr1=P2^0;

sbity1=P2^1;

sbitg1=P2^2;

sbitr2=P2^3;

sbity2=P2^4;

sbitg2=P2^5;

ucharsec1;

sec2;

comsec;

voidPntTime()

{

DispBuf[3]=sec2%10;

DispBuf[2]=sec2/10;

DispBuf[1]=sec1%10;

DispBuf[0]=sec1/10;

voiddisplay()

uchari;

for(i=0;

i<

8;

i++)

P3=0;

P1=~LedCode[DispBuf[i]];

P3=1<

delay(100);

voidmain()

ucharms;

PntTime();

display();

if(ms>

=60){

ms=0;

comsec=(comsec+1)%60;

//定义一个计数变量,使其一直保持在60内

if(comsec<

20){//comsec在20以内时g2、r1亮

sec1=20-comsec;

sec2=30-comsec;

r1=1;

y1=0;

g1=0;

r2=0;

y2=0;

g2=1;

if(comsec>

=20&

&

comsec<

30){//comsec在20与30之间时y2、r1亮

sec1=30-comsec;

y2=1;

g2=0;

=30&

50){//g1、r2在comsec增加20内亮

sec1=60-comsec;

sec2=50-comsec;

r1=0;

g1=1;

r2=1;

=50){

sec2=60-comsec;

y1=1;

}

过程总结:

本实验是将单片机的P2口做为输出口,将四个数码管的七段引脚分别接到P2.0至P2.7.由于电路中采用共阳极的数码管,所以当P2端口相应的引脚为0时,对应的数码管段点亮。

程序中预设了数字0-9的段码。

由于是让八个数码管显示不同的数值,所以要用扫描的方式来实现。

因此可定义扫描函数,接到单片机的P3口。

在实验中,预设的数字段码表存放在数组LedCode中,由于段码表是固定的,因此存储类型可设为code.在Proteus软件中按照要求画出电路,再利用Keil软件按需要实现的功能编写c程序,生成Hex文件,把Hex文件导到Proteus软件中进行仿真。

心得体会:

实验数码管显示程序的编程方法

1)先准备好要显示的数据,放入相应的显示存储单元中。

2)根据要使用的数码管的具体位置来确定扫描初值和扫描方向。

3)根据使用数码管的个数来确定扫描的位数。

4)查表将要显示的数据转换为能使数码管正确显示相对应的段码。

5)分时送段码和位码,数码管开始循环显示。

指导教师评语:

1、完成所有规定的实验内容,实验步骤正确,结果正确;

2、完成绝大部分规定的实验内容,实验步骤正确,结果正确;

3、完成大部分规定的实验内容,实验步骤正确,结果正确;

评定等级:

A(优秀)B(良好)C(中等)D(及格)E(不及格)

成绩评定

教师签字

年月日

备注:

注:

1、报告内的项目或设置,可根据实际情况加以补充和调整

2、教师批改学生实验报告应在学生提交实验报告10日内

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1