找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 22646|回复: 0
打印 上一主题 下一主题
收起左侧

单片机P2和P1口控制4位共阳极LED数码管动态(快速)显示字符“8.1:2 3”

[复制链接]
跳转到指定楼层
楼主
ID:83710 发表于 2015-6-23 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

07:P2和P1口控制4位共阳极LED数码管动态(快速)显示字符“8.1:2 3”
;AS-02 MCU StudyBoard跳线设置:JP3、JP6跳左边(LED数码管供电工作,LED不供电),
;                          JP1和JP2空,其他JP跳线缺省跳右边
;MCU的P2.0—P2.7分别接4位共阳极LED数码管的八个字段a—h
;P1.1、P1.2、P1.3、P1.4控制4位共阳极LED数码管千位、百位、十位和个位数码管的供电,低电平时供电
;0,1,2...E,F共阳显示字段码是C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
;MCS-51汇编语言程序,文件名:digisplay3.asm
;Protues7.2软件虚拟仿真和AS-02 MCU StudyBoard硬件实验调试通过,电子科技大学成都学院周密,20071015
;-----------------------------------------------------------------------------------------------
MAIN:  
MOV P1,#0FFH ;P1口为高电平,4位共阳极LED数码管不供电,关闭4位数码管显示。
      
START:
CLR P1.1     ;P1.1口为低电平,千位共阳极LED数码管供电显示,百位、十位和个位数码管不供电关闭显示。  
MOV P2,#00H  ;向P2口送8.字段码,显示8.
LCALL DELAY  ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
SETB P1.1    ;P1.1口为高电平,关闭千位共阳极LED数码管供电。

  CLR P1.2     ;P1.2口为低电平,百位共阳极LED数码管供电显示,千位、十位和个位数码管不供电关闭显示。
  MOV P2,#0F9H ;向P2口送1字段码,显示1
  LCALL DELAY  ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
  SETB P1.2    ;P1.2口为高电平,关闭百位共阳极LED数码管供电。

  CLR P1.3     ;P1.3口为低电平,十位共阳极LED数码管供电显示,千位、百位和个位数码管不供电关闭显示。
  MOV P2,#0A4H ;向P2口送2字段码,显示2
  LCALL DELAY   ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
  SETB P1.3    ;P1.3口为高电平,关闭十位共阳极LED数码管供电。

  CLR P1.4     ;P1.4口为低电平,个位共阳极LED数码管供电显示,千位、百位和十位数码管不供电关闭显示。
  MOV P2,#0B0H  ;向P2口送3字段码,显示3
  LCALL DELAY  ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
  SETB P1.4    ;P1.4口为高电平,关闭个位共阳极LED数码管供电。

  MOV P1,#0F2H ;显示冒号:11110010B
  MOV P2,#0FFH ;         11111111B
  LCALL DELAY   ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)

  MOV P1,#0FFH
  LCALL DELAY  ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
  LJMP  START   

DELAY:  MOV R5,#04H   ;延时子程序
DELAY1: MOV R6,#0F0H  ;实际延时2.10177ms,估算是(4X240)X(2X1.085)us= 2.0832 (ms)
DELAY2: DJNZ R6,DELAY2
              DJNZ R5,DELAY1
              RET
             END





/*-----------------------------------------------------------------------------------------------
实验07:P2和P1口控制1位共阳极LED数码管动态(快速)显示字符“0 1 2 3”
AS-02 MCU StudyBoard跳线设置:JP3、JP6跳左边(LED数码管供电工作,LED不供电),
                           JP1和JP2空,其他JP跳线缺省跳右边
MCU的P2.0—P2.7分别接4位共阳极LED数码管的八个字段a—h
P1.1、P1.2、P1.3、P1.4控制4位共阳极LED数码管千位、百位、十位和个位数码管的供电,低电平时供电
0,1,2...E,F共阳显示字段码分别是0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,
                                0x83,0xC6,0xA1,0x86,0x8E
Cx51语言程序,文件名:digisplay3.c
Protues7.1软件虚拟仿真和AS-02 MCU StudyBoard硬件实验调试通过,电子科技大学成都学院周密,20070924
-----------------------------------------------------------------------------------------------*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit P11=P1^1;  //KEIL Cx51提供的关键字“sbit”定义某些特殊位,格式:sbit 位变量名=位地址
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
void delay(uint x)         //延时函数。x=1时延时是1ms
{
uchar  j=0;            //根据汇编代码分析表明,用j进行的内部循环大约延时8us(12MHz)
while(x--)
{
  for(j=0;j<113;j++) //125应根据实验进行补偿调整为113(11.0592MHz)
  {;}
}
}
void main()       //主函数
{
P11=0;    //千位显示。P1.1控制4位共阳极LED数码管千位数码管的供电,低电平时供电
P2=0xC0;   //显示0。   0的共阳显示字段码是0xC0
delay(10);//调延时函数,延时10ms
P11=1;    //关闭千位显示。P1.1控制4位共阳极LED数码管千位数码管的供电,高电平时不供电

P12=0;    //百位显示。P1.2控制4位共阳极LED数码管百位数码管的供电,低电平时供电
P2=0xF9;   //显示1。 1的共阳显示字段码是0xF9
delay(10);//调延时函数,延时10ms
P12=1;    //关闭百位显示。P1.2控制4位共阳极LED数码管百位数码管的供电,高电平时不供电

P13=0;    //十位显示。P1.3控制4位共阳极LED数码管十位数码管的供电,低电平时供电
P2=0xA4;   //显示2
delay(10);
P13=1;
   
P14=0;    //千位显示。P1.4控制4位共阳极LED数码管个位数码管的供电,低电平时供电
P2=0xB0;   //显示3
delay(10);
P14=1;
}






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表