51单片机控制数码管动态显示程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机控制数码管动态显示程序

说明:驱动四位一体数码管动态显示数字,可方便的移植到其它程序中。

例如:1、硬件改为三位一体或二位一体数码管,只需修改Display_Scan()函数COM个数。

2、本例中,采用了共阴数码管,如果用在共阳数码管,只需修改相应段码表。

本程序使用P0口作为段码数据发送端,P2.0-P2.3作为数码管扫描选通,

使用P0口时,因单片机内部没有上拉电阻,所以要外接上拉电阻(参考阻值470欧姆).

//

STC89C52RC

//

+---------------+

//

|

|

//

|

|

Digital Number

//

|

|

_______________________ //

|

|

|

__

__

__

__

|

//

|

P0.0--P0.7|===>;| | | | | | | | | | //

|

(a,b...g,h)|

| |--| |--| |--| |--| | 4位共阴数码管//

|

|

|

|__|.|__|.|__|.|__|.|

//

|

|

-----------------------

//

|

|

|

|

|

|

//

|

|

|

|

|

|

//

|

P2.7(COM3)|--------+ |

|

|

//

|

|

|

|

//

|

P2.6(COM2)|-------------+

|

|

//

|

|

|

|

//

|

P2.5(COM1)|------------------+

//

|

|

|

//

|

P2.4(COM0)|-----------------------+

//

+---------------+

#include

//

函数声明

//=============================================== ========================

void DisplayNumber(unsigned int Num);

void delayms( int ms);

//=============================================== ========================

unsigned char code LED_table[]={

//使用附带“51单片机工具箱”可以很容易编码

0x3f,

//"0"

0x06,

//"1"

0x5b,

//"2"

AAAA

0x4f,

//"3"

F

B

0x66,

//"4"

F

B

0x6d,

//"5"

GGGG

0x7d,

//"6"

E

C

0x07,

//"7"

E

C

0x7f,

//"8" DDDD

H

0x6f,

//"9"

0x00,

//black

0x80

//dot

};

#define black 10 // 空白

#define dot

11

// 小数点

unsigned char DisBuff[4];

//定义显示缓冲数组

unsigned char COM;

//

定义通信端口

//=============================================== ============================

sbit COM0=P2^4;

sbit COM1=P2^5;

//对应口线由硬件确定

sbit COM2=P2^6;

sbit COM3=P2^7;

//=============================================== ============================

void Sys_Init()

{

TMOD=0x01;

//定时器/计数器0为定时器方式16位工作模式 TH0=(65536-1000)/256;

//初始时间常数

TL0=(65536-1000)%6;

相关文档
最新文档