您的位置:首页 > 其它

2.数码管动态扫描 随意显示9999以内的数

2014-11-02 07:56 330 查看
/*

***********************************************************************************************

* Cool51

* 51开发板例程

*

*

* 文件名称:“main.c”

* 摘 要:数码管扫描显示程序,随意显示一个9999以内数据大小

* 作 者:Rays_ele

*

* 当前版本:1.0

* 完成日期:2011/04/27

* 版权所有:Rays - Copyright (C) 2011

*

***********************************************************************************************

*/

/*包含必要的头文件*/

#include<reg52.h>//开发51单片机必须包含51单片机的头文件,该文件定义了51单片机内部寄存器的地址

/*常用宏定义*/

#define uchar unsigned char

#define uint unsigned int

/*程序接口定义*/

//数码管的段码在原理图上已经和P0口相接,即P0.0对应数码管的a段,P0.1对于b段,依此类推,简单表示如下

#define LED P1

//LED_a-------P0.0

//LED_b-------P0.1

//LED_c-------P0.2

//LED_d-------P0.3

//LED_e-------P0.4

//LED_f-------P0.5

//LED_g-------P0.6

//LED_s-------P0.7

//下面是数码管的位定义,也就是数码管的公共端,具体电路讲解见Cool51原理图,该引脚为低电平即选通该位数码管

sbit LED_1=P2^0;//LED_1-------P2.0

sbit LED_2=P2^1;//LED_2-------P2.1

sbit LED_3=P2^2;//LED_3-------P2.2

sbit LED_4=P2^3;//LED_4-------P2.3

/*全局变量定义部分*/

unsigned char code LED_Code[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};//共阳码

// 0 1 2 3 4 5 6 7 8 9 灭

/*

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

|函数名称: Delay_ms |

|---------------------------------------------------------------------------------------|

|函数原型: void Delay_ms(uint ms) |

|函数功能: 普通延时函数 |

|入口参数: 延时时间,单位毫秒 |

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

*/

void Delay_ms(uint ms)

{

uchar t;

while(ms--)

{

for(t = 0; t < 120; t++);

}

}

/*

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

|函数名称: ShuMaGuan |

|---------------------------------------------------------------------------------------|

|函数原型: void ShuMaGuan(uint dat) |

|函数功能: 数码管扫描显示程序,随意显示一个9999以内数据大小 |

|入口参数: 要显示的0000-9999之间的数据,数据是多少,就显示多少 |

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

*/

void ShuMaGuan(uint dat)

{

LED=LED_Code[dat/1000];//将dat的千位取出来,用千位数来索引LED_Code的对应段码,再将段码送到对应段码口上

LED_1=0; //段码送出去后,再选通千位数码管的公共端,此时对应千位数码管会显示

Delay_ms(5); //将显示延时一段时间,视觉暂留

LED_1=1;

LED=LED_Code[dat%1000/100];

LED_2=0;

Delay_ms(5);

LED_2=1;

LED=LED_Code[dat%100/10];

LED_3=0;

Delay_ms(5);

LED_3=1;

LED=LED_Code[dat%10];

LED_4=0;

Delay_ms(5);

LED_4=1;

}

/*

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

|函数名称: main |

|---------------------------------------------------------------------------------------|

|函数原型: void main(void) |

|函数功能: 数码管扫描显示程序,随意显示一个9999以内数据大小 |

|入口参数: 无 |

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

*/

void main(void)

{

while(1)

{

ShuMaGuan(5674);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: