当前位置:文档之家› 4位数码管实验报告

4位数码管实验报告

竭诚为您提供优质文档/双击可除
4位数码管实验报告
篇一:数码管实验报告
篇一:实验八数码管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)通过不同的编程实现灵活运用数码管。

三、实验原理
四、相关原理图
五、实验内容
数码管显示12345678
c程序:
#include
#include
unsignedchardatadis_digit;
unsignedcharcodedis_code[11]={0x28,0x7e,0xa2,0x62,0 x74,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//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,amova,#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引脚输出选控制信号。

相关主题