• 大小: 18.92 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-10-29
  • 语言: 其他
  • 标签:

资源简介

数码管显示0-99, CESASSCS


/***************************************************************************
标题: 数码管的显示
效果: 显示00-99,动态显示+变化显示

作者: 启程电子

******************************************************************************/
;脚功能定义
SMG_q EQU P3.4 ;定义数码管阳级控制脚,千位
SMG_b EQU P3.5 ;定义数码管阳级控制脚,百位
SMG_s EQU P3.7 ;定义数码管阳级控制脚,十位
SMG_g EQU P3.6 ;定义数码管阳级控制脚,个位
;定义数据RAM空间
LDB EQU 36H ;定义一个变量存放显示值
;数据存放
ORG 0100
TABLE: DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H ;表:共阳数码管 0-9

ORG 0000H
LJMP MAIN

ORG 0200H
MAIN: MOV DPTR,#TABLE
M0

: MOV LDB,#0 ;变量复值0
M1: MOV R7,#50 ;两级R7与R6组成12800次刷新,约1秒,如果要精确时间,可以用到定时器,请看例13
M2: MOV R6,#255
M3: CLR SMG_s ;选择十位数码管
MOV A,LDB ;将变量值除以10,商为十位值,余为个位
MOV B,#10 ;
DIV AB ;相除后获得十位和个位的值存放A和B中
MOVC A,@A+DPTR ;查表输出定义好的数码管段值到P0口,显示相应的内容
MOV P0,A
LCALL DELAY ;延时,停留一会,让人眼感触到它的亮度
MOV P0,#0FFH ;清除数码管显示,因是共阳型,所以不是0
SETB SMG_s ;关闭十位数码管

CLR SMG_g ;选择个位数码管
MOV A,B ;个位显示
MOVC A,@A+DPTR ;查表输出定义好的数码管段值到P0口,显示相应的内容
MOV P0,A
LCALL DELAY ;延时,停留一会
MOV P0,#0FFH ;清除数码管显示
SETB SMG_g ;关闭个位数码管

M4: DJNZ R6,M3
DJNZ R7,M2 ;12800次刷新,约1秒
MOV A,LDB
CJNE A,#99,M5 ;如果LDB变量值等于99就回到0开始,因为只有两位数码管,不能显示更多位
LJMP M0
M5: INC LDB
LJMP M1 ;

DELAY: MOV R5,#10 ;此次延时子程序不用很长时间
DJNZ R5,$
RET
END

资源截图

代码片段和文件信息

/******************************************************************
/*                                                                *
/* 单片机开发系统演示程序                               *
/*                                                                *
/*                                                                *
/******************************************************************/

#include  //51芯片管脚定义头文件
#include  //内部包含延时函数 _nop_();

#define uchar unsigned char
#define uint  unsigned int


sbit  SDATA_595=P1^5; //串行数据输入  ----接板卡上的SPI
sbit  SCLK_595 =P1^6;    //移位时钟脉冲  ---接板卡上的SPO
sbit  RCK_595  =P1^7;    //输出锁存器控制脉冲 ----接板卡上SPK
sbit  CS_LED8   =P1^1; //数码管片选 --------接板卡上的CS
sbit  CS_1302   =P1^4; //ds1302片选

uchar code table[]={0x3f0x060x5b0x4f0x66
0x6d0x7d0x070x7f0x6f
0x770x7c0x390x5e0x790x71}; //数码管编码(0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F)
uchar  dis[8]; //显示缓冲区

void  delay(uint );
void  display();

/*******************************************************
*                                                      *
* 延时函数                                             *
*                                                      *
*******************************************************/
void  delay(uint dt)
{
   uint i;
   uchar bt;
   for(i=0;i   for(bt=0;bt<200;bt++);
 }

/*******************************************************
*                                                      *
* 定时中断函数                                       *
*                                                      *
*******************************************************/

void timer0(void) interrupt 1
{
TH0=0XFC;
TL0=0X66;
display();
}

/*******************************************************
*                                                      *
* 显示函数                                        *
*                                                      *
*******************************************************/

void display()
{
uchar numci;
for(i=0;i<8;i++)
{
num=dis[i];
CS_LED8=0;
for(c=0;c<8;c++) //写入显示数据
{
SCLK_595=0;
num=num<<1;
SDATA_595=CY;
SCLK_595=1;
SCLK_595=0;
}
num=~(1< for(c=0;c<8;c++) //写入数码管序号
{
SCLK_595=0;
num=num<<1;
SDATA_595=CY;
SCLK_595=1;
SCLK_595=0;
}
RCK_595=0;
_nop_(); //短延时
_nop_();
RCK_595=1; 
_nop_();
_nop_();
RCK_595=0; //显示数据输出
delay(1);
CS_LED8=1;
}
}

/*******************************************************
*                                                      *
* 主函数                                               *
*                                                      *
*******************************************************/
main(void)
{
uchar k;
TMOD|=0x01;
TH0=0XFC;
TL0=0X66; //定时器初始化
TR0=1;
EA=1;
ET0=1;
//

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4869  2008-07-10 14:08  4.数码管\smg

     文件       3314  2013-03-13 21:05  4.数码管\smg.c

     文件        785  2008-07-10 14:08  4.数码管\smg.hex

     文件         54  2008-07-10 14:08  4.数码管\smg.lnp

     文件       7795  2008-07-10 14:08  4.数码管\smg.LST

     文件       7680  2008-07-10 14:08  4.数码管\smg.M51

     文件       4651  2008-07-10 14:08  4.数码管\smg.OBJ

     文件       1064  2008-07-10 14:58  4.数码管\smg.Opt

     文件        173  2012-05-20 05:47  4.数码管\smg.plg

     文件       2026  2008-05-20 17:44  4.数码管\smg.Uv2

     文件       1072  2008-07-10 14:15  4.数码管\smg_Opt.Bak

     文件          0  2008-05-20 16:38  4.数码管\smg_Uv2.Bak

     文件       5115  2002-04-16 14:32  4.数码管\STARTUP.A51

     文件      11665  2008-07-10 14:08  4.数码管\STARTUP.LST

     文件        749  2008-07-10 14:08  4.数码管\STARTUP.OBJ

     文件      24576  2008-07-10 14:06  4.数码管\数码管实验说明.doc

     目录          0  2013-03-13 21:05  4.数码管

----------- ---------  ---------- -----  ----

                75588                    17


评论

共有 条评论