Google
      
 24 123
发新话题
打印

[原创] 单个数码管显示程序——开发板程序之一

本主题由 adqin 于 2008-4-21 14:03 移动

单个数码管显示程序——开发板程序之一

/*
***************************************************************************
*
*     (C) Copyright 2007,单片机初学者园地
*                          All Rights reserved.
*
*项目名称:    51单片机学习开发系统
*               
*本文件名称:sigle-led.c
*      
* 完成作者 : 单片机初学者——mcu_51  
* 当前版本 : V1.0        
* 完成日期 : 2007年6月1日
* 描    述 :      此程序专门为刚刚开始接触单片机的学习者设计的,
*             主要是帮助其学会单片机是怎么调试的,如何自己编写的程
*             序,从课本的迷团中走出来。
*                本程序结构简单、合理,有帮助于初学者养成良好的编
*             程风格。
****************************************************************************
*/


#include <reg52.h>   //调用头文件(单片机内部的寄存器定义)
/******本段为硬件I/O口定义********/
sbit  LED0   = P0 ^ 0;
sbit  LED1   = P0 ^ 1;
sbit  LED2   = P0 ^ 2;
sbit  LED3   = P0 ^ 3;
sbit  DIG0   = P0 ^ 4;  //数码管位0
sbit  DIG1   = P0 ^ 5;  //数码管位1
sbit  BUZZ   = P3 ^ 4;  //蜂鸣器
//数码管显示0~9 ,共阴极
code unsigned  char DispBuf[10]= {0x3f,0x06,0x5b,0x4f,0x66,
          0x6d,0x7d,0x07,0x7f,0x6f};
/**************************************************
** 函数名称: dellay
** 入口参数:h(双字节型)
** 出口参数:无
** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS
****************************************************/

void dellay(unsigned int  h)
{
  while(h--);    //0.01MS
}

/************主程序**************/
main()
{
unsigned  char  i=0;
     
DIG0=0;            //选择数码管0
while(1)     //单片机在此反复执行
  {
  dellay(60000);   //延时约600MS
P1=DispBuf[i++];  //显示
if(i>9)
   i=0;   
  }   
}

[ 本帖最后由 mcu_51 于 2008-2-22 12:50 编辑 ]
我爱单片机
http://shop35284066.taobao.com/   淘宝店

TOP

汇编版本

;*
;**************************************************************************
;
;      (C) Copyright 2007,单片机初学者园地
;                          All Rights reserved.
;
;项目名称:    51单片机学习开发系统
;
;本文件名称:first_mcu.asm
;
; 完成作者 : 单片机初学者——mcu_51
; 当前版本 : V1.0
; 完成作者 :
; 完成日期 :
; 描    述 :      这个程序专门为刚刚开始接触单片机的学习者设计的,
;             主要是帮助其学会单片机是怎么调试的,如何自己编写的程
;             序,从课本的迷团中走出来。
;                本程序结构简单、合理,有帮助于初学者养成良好的编
;             程风格。
;***************************************************************************
;*
;***********本段为硬件I/O口定义************

LED0             EQU                   P0.0
LED1             EQU                   P0.1
LED2             EQU                   P0.2
LED3             EQU                   P0.3
DIG0             EQU                   P0.4    ;数码管位0
DIG1             EQU                   P0.5    ;数码管位1
BUZZ             EQU                   P3.3
               ORG 0000H            ;上电后程序从这里运行
               AJMP MAIN
               ORG 0100H
MAIN:                        
LED_DISP:    MOV  R0,#10
             CLR  A
             MOV  R2,A
             MOV  DPTR,#tab
LED_DISP1:   LCALL DELAY600MS
             MOV  A,R2
             MOVC A,@A+DPTR
             MOV  P1,A
             CLR  DIG0   ;选择数码管0
             INC  R2
             DJNZ R0, LED_DISP1
             LJMP  LED_DISP
DELAY600MS: MOV R5,#60      ;延时子程序,延时约0.6秒
D11:  MOV R6,#20
D21:  MOV R7,#248
  DJNZ R7,$
  DJNZ R6,D21
  DJNZ R5,D11
  RET
;实验板上的7段数码管0~9数字的共阴显示代码
tab: DB 3FH,06H,5bH,4fH,66H,6dH,7dH,07H,07FH,06fH
                END

[ 本帖最后由 mcu_51 于 2008-2-22 12:49 编辑 ]
我爱单片机
http://shop35284066.taobao.com/   淘宝店

TOP

稍微复杂一点的程序就会发现C语言比汇编语言简单,希望大家多用C语言——mcu_51
我爱单片机
http://shop35284066.taobao.com/   淘宝店

TOP

收益非浅 谢谢!~

受教

TOP

回复

版主你那程序编的看不太懂```我们一般都是用单片机书上那上面的程序进行编程的```但是您那上面的好多是C语言的```有点看不懂

TOP

斑竹这程序就是汇编的啊
如果你还可以付出,就不该轻言放弃,只到你停止努力的那一刻,什么也没有真正结束。

TOP

管理员说汇编程序有问题,还是C语言有问题,没听明白啊
我爱单片机
http://shop35284066.taobao.com/   淘宝店

TOP

引用:
原帖由 mcu_51 于 2008-2-26 10:00 发表
管理员说汇编程序有问题,还是C语言有问题,没听明白啊
楼上有人说你程序好多是C语言,我说这个是汇编的啊,呵呵
如果你还可以付出,就不该轻言放弃,只到你停止努力的那一刻,什么也没有真正结束。

TOP

C还是很强大的``不过我最怕的就是强大``我根本就用不完``

TOP

C语言功能确实太强大了,我们不必学那么高深,只要在我们编程时够用,就可以了
把函数,数组,指针,学会了,搞单片机编程问题就不大了。至于有想学好的,就把结构体,联合体,文件系统搞明白,并且用于单片机、ARM等就厉害了
我爱单片机
http://shop35284066.taobao.com/   淘宝店

TOP

 24 123
发新话题