这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » wdy3585MCU DIY进程帖--数码管动态显示(含照片+代码)

共3条 1/1 1 跳转至

wdy3585MCU DIY进程帖--数码管动态显示(含照片+代码)

助工
2011-12-22 11:32:30     打赏
  在数码管上显示:0~9中任意的数Type 程序段:

-------------------------------------------display.h---------------------------------------
#ifndef __display_H__
#define __display_H__

#include <reg52.h>

sbit A_138=P2^0;
sbit B_138=P2^1;
sbit C_138=P2^2;//最高位

sbit LE=P3^7;

#define DATAIPUT  P0

//左边一组数码管位选
#define LED1_1_CS() C_138=0;B_138=0;A_138=0;LE=1;
#define LED1_2_CS() C_138=0;B_138=0;A_138=1;LE=1;
#define LED1_3_CS() C_138=0;B_138=1;A_138=0;LE=1;
#define LED1_4_CS() C_138=0;B_138=1;A_138=1;LE=1;
//右边一组数码管位选
#define LED2_1_CS() C_138=1;B_138=0;A_138=0;LE=1;
#define LED2_2_CS() C_138=1;B_138=0;A_138=1;LE=1;
#define LED2_3_CS() C_138=1;B_138=1;A_138=0;LE=1;
#define LED2_4_CS() C_138=1;B_138=1;A_138=1;LE=1;
#define LED_OFF()   LE=0;

  
#define FONT_0       0xC0
#define FONT_1       0xF9
#define FONT_2       0xA4
#define FONT_3       0xB0
#define FONT_4       0x99
#define FONT_5       0x92
#define FONT_6       0x82
#define FONT_7       0xF8
#define FONT_8       0x80
#define FONT_9       0x90
#define FONT_Dot   0x7F
#define FONT_no    0xFF

/*—--函数声明---*/

void timer_init(void);/*定时器初始化*/
void timer0_ISR(void);/*定时器中断服务程序入口函数*/
void
 display(int x,int y);
#endif
---------------------------------display.c--------------------------------------------------

   
#include"display.h"
#include "intrins.h"


unsigned char code segtab[12]={
 FONT_0,//       0xC0
 FONT_1,//       0xF9
 FONT_2,//       0xA4
 FONT_3,//       0xB0   
 FONT_4,//       0x99
 FONT_5,//       0x92
 FONT_6,//       0x82
 FONT_7,//       0xF8
 FONT_8,//       0x80
 FONT_9,//       0x90
 FONT_Dot,//   0x7F
 FONT_no//    0xFF
 };  


unsigned char Dis=0;//显示计数器 

/**************************************
定时器初始化
***************************************/
void timer_init(void)
{
 //T0初始化
 TMOD|=0x01; //定时器0工作方式1
 TH0 =  0xfc;
 TL0 =  0x18;
 TR0  = 1;  
 ET0  = 1;
 EA=1;      
}


void display(int num0,int num1)

   int i=0;
   switch(Dis)
   {
      case 0:Dis++;
    i=num0/1000;
    LED1_1_CS();    
      DATAIPUT=~segtab[i];
     
    break;
      case 1:Dis++;
        i=num0%1000/100;
    LED1_2_CS();
     DATAIPUT=~segtab[i];  
    break;  
      case 2:Dis++;
        i=num0%100/10;
     LED1_3_CS();
   
      DATAIPUT=~segtab[i];
    break;
      case 3:Dis++;
        i=num0%10;  
         
    LED1_4_CS();
   
      DATAIPUT=~segtab[i];     
    break; 
      case 4:Dis++; 
         i=num1/1000;
    LED2_1_CS();
   DATAIPUT=~segtab[i];
    break;
      case 5:Dis++;
          i=num1%1000/100;
    LED2_2_CS();       
   DATAIPUT=~segtab[i];
    break;  
      case 6:Dis++; 
      i=num1%100/10;
    LED2_3_CS();      
   DATAIPUT=~segtab[i];
    break;
      case 7:Dis++;
          i=num1%10;
    LED2_4_CS();
   DATAIPUT=~segtab[i];
    break; 
   default:Dis=0;
     LED_OFF();
      break;   
 }
}

 


/**************************************
T0定时器  1ms
***************************************/
void timer0_ISR(void) interrupt 1
{   
    display(1234,5678);
     
 TH0 = 0xfc;
 TL0 = 0x18;
}  

---------------------------------main.c-----------------------------------
#include "reg52.h"
#include "display.h"


int main(void)
{
   timer_init();
   while(1);
}




关键词: wdy3585MCU     进程     数码     动态     显示     照片    

院士
2011-12-22 13:12:16     打赏
2楼
代码也贴出来了啊

助工
2011-12-22 14:57:48     打赏
3楼
反正没什么保密的!呵呵

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]