当前位置:编程学习 > 汇编语言 >>

51单片机怎么让数码管显示学号?用汇编语言

最好有电路图
其他:不知道汇编语言,只知道C 这是数码管动态动态现实方式0—7,一共8个数字,你自己可以改成学好,对应显示就可以了。 ORG 00H MOV 20H,#3FH MOV 找本单片机的书,有很多汇编语言点亮数码管的子程序的!自己研究一段,做成一个子程序就OK了! 没线路图,说了也是白说。 #include <REG52.H>
#include <intrins.h>
#include "absacc.h"
void time(unsigned int ucMs);             /*延时单位: ms*/
void display(void);                       /*显示0, 1,..,7*/
/*********************************************************/
void main (void)
{	
      while(1)
      {
            display();
      }
}
void  display(void)                       /*显示0, 1,  ,7*/
{
unsigned char code LEDValue[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
unsigned char i;
unsigned char position=0x01; 
      for (i=0; i<8; i++)
            {
            XBYTE[0x0FFF8] = LEDValue[i];  /*显示内容*/
            XBYTE[0x0FFF9] = position;     /*位译码输入*/
            position = position<<1;
            time(1);                     /*状态维持*/
            }
}
/*********************************************************
*  函数说明:延时5us,晶振改变时只用改变这一个函数!
	1、对于11.0592M晶振而言,需要2个_nop_();
	2、对于22.1184M晶振而言,需要4个_nop_();
*********************************************************/
void delay_5us(void)    //延时5us,晶振改变时只用改变这一个函数!
{
	_nop_();
	_nop_();
}
/************ delay_50us ***************/
void delay_50us(void)   //延时50us
{
	unsigned char i;
	for(i=0;i<4;i++)
	{
		delay_5us();
	}
}
/******** 延时100us ******************/
void delay_100us(void)  //延时100us
{
	delay_50us();
	delay_50us();
}
/*********** 延时单位:ms *******************/
void time(unsigned int ucMs)//延时单位:ms
{
	unsigned char j;	
	while(ucMs>0){
		for(j=0;j<10;j++) delay_100us();
		ucMs--;
	}
} ORG 00H
 AJMP MAIN
 ORG 30H

MAIN: MOV 20H,#2   ;把你的学号的10位送到相应单元
 MOV 21H,#8
 MOV 22H,#3
 MOV 23H,#0
 MOV 24H,#8
 MOV 25H,#5
 MOV 26H,#0
 MOV 27H,#4
 MOV 28H,#0
 MOV 29H,#7
 LCALL DISP     ;显示子程序 
 AJMP MAIN

DISP: MOV A,20H  ;送最高位到A
 ACALL SEG7  ;取码指针子程序
 MOV P0,A  ;段码送P0口
 CLR P2.0  ;位选 
 ACALL DLY  ;延时1MS,即显示1MS
 SETB P2.0     ;关显示。 动态显示的方法就是 :取优码,送段码,位选,延时1MS,关显示.
 MOV A,21H  ;下一位
 ACALL SEG7
 MOV P0,A
 CLR P2.1
 ACALL DLY
 SETB P2.1
 MOV A,22H 
 ACALL SEG7
 MOV P0,A
 CLR P2.2
 ACALL DLY
 SETB P2.2
 MOV A,23H 
 ACALL SEG7
 MOV P0,A
 CLR P2.3
 ACALL DLY
 SETB P2.3
 MOV A,24H 
 ACALL SEG7
 MOV P0,A
 CLR P2.4
 ACALL DLY
 SETB P2.4
 MOV A,25H 
 ACALL SEG7
 MOV P0,A
 CLR P2.5
 ACALL DLY
 SETB P2.5
 MOV A,26H 
 ACALL SEG7
 MOV P0,A
 CLR P2.6
 ACALL DLY
 SETB P2.6
 MOV A,27H 
 ACALL SEG7
 MOV P0,A
 CLR P2.7
 ACALL DLY
 SETB P2.7
 MOV A,28H 
 ACALL SEG7
 MOV P0,A
 CLR P3.0
 ACALL DLY
 SETB P3.0
 MOV A,29H 
 ACALL SEG7
 MOV P0,A
 CLR P3.1
 ACALL DLY
 SETB P3.1
 RET 

DLY: MOV R7,#10   ;延时1MS子程序。12M晶振,粗略算法:2X R7 X R6
D1: MOV R6,#50
 DJNZ R6,$
 DJNZ R7,D1
 RET

SEG7: INC A
 MOVC A,@A+PC
 RET

     DB        03FH;0  共阴管段码
        DB        006H;1
        DB        05BH;2
        DB        04FH;3
        DB        066H;4
        DB        06DH;5
        DB        07DH;6
        DB        007H;7
        DB        07FH;8
        DB        06FH;9

上一个:求高手帮我翻译一下这汇编语言每一句是什么意思!!!万分感谢!!!
下一个:有关汇编语言的那个版本的最好?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,