数码管实验报告范文word版 11页.docx
- 文档编号:13927917
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:11
- 大小:18.90KB
数码管实验报告范文word版 11页.docx
《数码管实验报告范文word版 11页.docx》由会员分享,可在线阅读,更多相关《数码管实验报告范文word版 11页.docx(11页珍藏版)》请在冰点文库上搜索。
数码管实验报告范文word版11页
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
==本文为word格式,下载后可方便编辑和修改!
==
数码管实验报告
篇一:
实验八数码管LED实验报告
苏州大学实验报告
院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期
实验名称:
数码管LED实验
一.实验目的
理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管LG5641AH与MCU的接线图。
二.实验内容
理解8段数码管原理,运行与理解各子程序,编制一个4连排8段数码管程序,MCU的排8段数码管显示MCU复位后的开始到现在的运行时间。
由于只有四个数码管,所以只显示MCU运行到目前为止的分钟和秒,当计时达到一个小时,就重新从00:
00开始计时。
另外,也可以通过PC方的串口通信程序,指定计时的开始值。
三.实验过程
(一)原理图
图8-2数码管外形
dp
abc
efgdp
图8-1数码管
(二)接线图
图8-3MCU与4连排8段数码管的连接
第1页
(三)基本原理
8段数码管一般由8个发光二极管(Llight-emittingdiode,LED)组成,每一个位段就是一个发光二极管。
一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。
根据公共端所接电平的高低,可分为共阳极和共阴极两种。
有时数码管不需要小数点,只有7个位段,称7段数码管。
共阴极8段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,比如:
要使a段发光,则在发光。
四.编程
(一)流程图
图8-4数码管LED显示流程图(及其中断子程序)
(二)所用寄存器名称及其各个位
程序中没有使用与LED显示相关的控制和状态寄存器,仅仅使用了通用I/O口A口和B口。
(三)主要代码段
1
第2页
第3页
2.C
第4页
第5页
篇二:
数码管实验报告
单片机实验报告
一、实验名称
数码管动态扫描显示01234567(实验五)
二、实验目的
(1)掌握数码管显示数字的原理。
(2)通过不同的编程实现灵活运用数码管。
三、实验原理
数码管由7个发光二极管组成8字形构成的,加上小数点就是8个,分别把它命名为A,B,C,D,E,F,G,H。
在共阳接法中,0(低电平)亮,1(高电平)灭。
原理图中把所有数码管的8个笔划段A-H同名端连在一起,而每一个显示器的公共机COM是各自独立受I\O线控制。
CPU向字段输出口送出字型码时,所有显示器接收到的字型码相同。
由8个PNP的三极管来控制这8位哪一位工作。
在单片机里,首先显示一个数,然后关掉,然后在显示第二个数,又关掉,那么将看到连续的而数字显示,轮流点亮撒哦i案过程中,每位显示器的点亮时间是极为短暂的,由于人的视觉暂留和发光二级管的余光效应,是的给人的印象是一组稳定的显示数据,不会有闪烁感。
四、相关原理图
五、实验内容
数码管显示12345678
c程序:
#include
#include
unsignedchardatadis_digit;
unsignedcharcodedis_code[11]={0x28,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0xff};//0,1,2,3,4,5,6,7,8,9,关显示,数码管码表
unsignedchardatadis_buf[8];//显示缓冲区
unsignedchardatadis_index;
charcodeSST516[3]_at_0x003b;
voidmain()
{
P0=0xff;
P2=0xff;
TMOD=0x01;
TH0=0xFC;
TL0=0x17;
IE=0x82;
dis_buf[0]=dis_code[0x1];
dis_buf[1]=dis_code[0x2];
dis_buf[2]=dis_code[0x3];
dis_buf[3]=dis_code[0x4];
dis_buf[4]=dis_code[0x5];
dis_buf[5]=dis_code[0x6];
dis_buf[6]=dis_code[0x7];
dis_buf[7]=dis_code[0x8];
dis_digit=0xfe;
dis_index=0;
TR0=1;
while
(1);}
voidtimer0()interrupt1
//定时器0中断服务程序,用于数码管的动态扫描
//dis_index---显示索引,用于标识当前显示的数码管和缓冲区的偏移量
//dis_digit---位选通值,传送到P2口用于选通当前数码管的数值,如等于0xfe时,//选通P2.0口数码管
//dis_buf---显于缓冲区基地址
{
TH0=0xFC;
TL0=0x17;
P2=0xff;//先关闭所有数码管
P0=dis_buf[dis_index];//显示代码传送到P0口
P2=dis_digit;//
dis_digit=_crol_(dis_digit,1);//位选通值左移,下次中断时选通下一位数码管
dis_index++;//
dis_index&=0x07;//8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描}
汇编程序:
CODE_SEGSEGMENTCODE
DATA_SEGSEGMENTDATA
RSEGDATA_SEG
dis_digit:
DS1
dis_index:
DS1
dis_buf:
DS8
stack:
DS20
;============================
===============================
CSEGAT00000H;Reset向量
LJMPMAIN
CSEGAT0000BH;定时器0中断向量
LJMPTIMER0
;===========================================================
RSEGCODE_SEG
ORG0080h
MAIN:
MOVSP,#(stack-1);初始化堆栈指针
MOVP0,#0FFH;初始化I/O口
MOVP2,#0FFH
MOVTMOD,#01H;初始化timer0
MOVTH0,#0FCH
MOVTL0,#017H
MOVIE,#082H
MOVDPTR,#DIS_CODE;设定显示初值
MOVA,#1
MOVCA,@A+DPTR
MOVdis_buf,A
MOVA,#2
MOVCA,@A+DPTR
MOVdis_buf+01H,A
MOVA,#3
MOVCA,@A+DPTR
MOVdis_buf+02H,A
MOVA,#4
MOVCA,@A+DPTR
MOVdis_buf+03H,A
MOVA,#5
MOVCA,@A+DPTR
MOVdis_buf+04H,A
MOVA,#6
MOVCA,@A+DPTR
MOVdis_buf+05H,A
MOVA,#7
MOVCA,@A+DPTR
MOVdis_buf+06H,A
MOVA,#8
MOVCA,@A+DPTR
MOVdis_buf+07H,A
MOVdis_digit,#0FEH;初始从第一个数码管开始扫描
MOVdis_index,A
SETBTR0;启动定时器0,开始动态扫描显示
MAIN_LP:
;主程序循环,增加其它代码
SJMPMAIN_LP
;===========================================================
USING0
TIMER0:
;定时器0中断服程序,用于数码管的动态扫描
;DIS_INDEX---显示索引,用于标识当前显示的数码管和缓冲区的偏移量
;DIS_DIGIT---位选通值,传送到P2口用于选通当前数码管的数值,如等于0xfe时,;选通P2.0口数码管
;DIS_BUF---显于缓冲区基地址
PUSHACC
PUSHPSW
PUSHAR0
MOVTH0,#0FCH
MOVTL0,#017H
MOVP2,#0FFH;先关闭所有数码管
MOVA,#DIS_BUF;获得显示缓冲区基地址
ADDA,DIS_INDEX;获得偏移量
MOVR0,A;R0=基地址+偏移量
MOVA,@R0;获得显示代码
MOVP0,A;显示代码传送到P0口
MOVP2,DIS_DIGIT;
MOVA,DIS_DIGIT;位选通值左移,下次中断时选通下一位数码管
RLA
篇三:
数码管动态显示实验报告
实验四数码管动态显示实验一
一、实验要求
1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路
2.在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码管数据引脚相连,P2.0~P2.3引脚输出选控制信号
3.在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1,2,3,4
二、实验目的
1.
2.
3.
4.巩固Proteus软件和Keil软件的使用方法学习端口输入输出的高级应用掌握7段数码管的连接方式和动态显示法掌握查表程序和延时等子程序的设计
三.实验说明
本实验是将单片机的P1口做为输出口,将四个数码管的七段引脚分别接到P1.0至P1.7。
由于电路中采用共阳极的数码管,所以当P1端口相应的引脚为0时,对应的数码管段点亮。
程序中预设了数字0-9的段码。
由于是让四个数码管显示不同的数值,所以要用扫描的方式来实现。
因此定义了scan函数,接到单片机的p2.0至p2.3
在实验中,预设的数字段码表存放在数组TAB中,由于段码表是固定的,因此存储类型可设为code。
在Proteus软件中按照要求画出电路,再利用Keil软件按需要实现的功能编写c程序,生成Hex文件,把Hex文件导到Proteus软件中进行仿真。
为了能够更好的验证实验要求,在编写程序时需要延时0.5s,能让人眼更好的分辨;89C51的一个机器周期包含12个时钟脉冲,而我们采用的是12MHz晶振,每一个时钟脉冲的时间是1/12us,所以一个机器周期为1us。
在keil程序中,子函数的实现是用voiddelay_ms(intx),其中x为1时是代表1ms。
四、硬件原理图及程序设计
(一)硬件原理图设计
电路中P1.0到P1.7为数码管七段端口的控制口,排阻RP1阻值为220Ω,p2.0到p2.3为数码管的扫描信号。
AT89c51单片机的9脚(RST)为复位引脚,当RST为高电平的时间达到2个机器周期时系统就会被复位;31引脚(EA)为存取外部存储器使能引脚,当EA为高电平是使用单片机内部存储器,当EA为低电平时单片机则使用外部存储器。
18、19引脚是接晶振脚。
而接地和电源端在软件中已经接好,所以不用在引线。
如下图所示:
(二)流程图与程序设计
(三)程序设源代码
#include
charcodeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,//数字0~4的码值
0x92,0x83,0xf8,0x80,0x98};//数字5~9的码值
chardisp[4]={1,2,3,4};//定义要显示的数值
voiddelay_ms(intx);//声明延时函数
charscan[4]={0xfe,0xfd,0xfb,0xf7};//定义扫描
chari,j;//定义变量i,j
main()//主函数的开始
{
while
(1)//无限循环
{for(i=0;i<4;i++)//从
{j=disp[3-i];//取出显示的数值
SCANP=scan[i];//扫描的顺序
SEG7P=TAB[j];//将TAB的数值赋给数码管delay_ms(4);//延时4ms
}
}
}
voiddelay_ms(intx)
{inti,j;
for(i=0;i for(j=0;j<120;j++); } 五.实验总结 问题一: 运行电路时,数码管乱码 解决的方法: 检查电路,发现程序中扫描信号端口错误,将扫描信号的端口顺序调换,重新运行。 问题二: 重新运行后,数码管只显示其中的一部分。 解决的方法: 检查程序,发现是延时时间的问题,在改动延时时间后,重新编译后在次运行电路,电路正常显示,符合要求。 通过本次的实验,在前两个实验的基础上让我复习了知识点,也让我在次掌握了新的知识。 在完成这次实验后,让我想到可以用多个按键控制多个数码管实现加减和暂停和开始。 我觉得这次的课程实验让我知道,一次次的失败,并不会让我放弃去追求,相反它会引领着我去发现问题,从而解决问题,完成更深入的探索。 也让我明白理论知识的重要性,并且与实际相结合,多动手,在实践中成长。 所以我会很重视每一次的实验。 我坚信: 每次实验都会给我自身很大帮助。 慢慢的积累点滴的知识,到最后就会多的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管实验报告范文word版 11页 数码管 实验 报告 范文 word 11