51单片机控制数码管动态显示程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;