4位数码管实验报告Word文件下载.docx

上传人:b****1 文档编号:12971716 上传时间:2022-10-01 格式:DOCX 页数:9 大小:16.81KB
下载 相关 举报
4位数码管实验报告Word文件下载.docx_第1页
第1页 / 共9页
4位数码管实验报告Word文件下载.docx_第2页
第2页 / 共9页
4位数码管实验报告Word文件下载.docx_第3页
第3页 / 共9页
4位数码管实验报告Word文件下载.docx_第4页
第4页 / 共9页
4位数码管实验报告Word文件下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

4位数码管实验报告Word文件下载.docx

《4位数码管实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《4位数码管实验报告Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。

4位数码管实验报告Word文件下载.docx

  图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

  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---显于缓冲区基地址

//先关闭所有数码管

  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:

  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

  movdis_buf+01h,a

  mova,#3

  movdis_buf+02h,a

  mova,#4

  movdis_buf+03h,amova,#5

  movdis_buf+04h,a

  mova,#6

  movdis_buf+05h,a

  mova,#7

  movdis_buf+06h,a

  mova,#8

  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

  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//定义8051寄存器头文件#defineseg7pp1//定义扫描信号的位置#definescanpp2//定义数码管的位置

  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

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

当前位置:首页 > 工程科技 > 交通运输

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

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