这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 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

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 跳转至

回复

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