标题: 单片机动态数码管程序与Proteus仿真实验 [打印本页]

作者: qiushuliang    时间: 2023-6-13 14:14
标题: 单片机动态数码管程序与Proteus仿真实验
/**************************************************************************************
*                            动态数码管的实验                                                                                                  *
实现现象:下载程序后数码管显示76543210
程序实现思想:
注意事项:无                                                                                                                                                                  
***************************************************************************************/


#include "reg52.h"    //此文件中定义了单片机的一些特殊功能寄存器




typedef unsigned int u16;
typedef unsigned char u8;
void DigDisplay(void); //动态数码管显示函数
void delay(u16 i);     //延时函数
sbit LSA=P2^2;        //38译码器管脚定义
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code segment[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值,共阴数码管

/***********************************************************************
* 函 数 名       : delay()
* 函数功能                 : 延时函数,i=1,约等于10uS
* 输    入       : 无

* 输    出             : 无
*******************************************************************************/                                       
void delay(u16 i){
        while(i--);
}


/***********************************************************************
* 函 数 名       : DigDisplay()
* 函数功能                 : 动态数码管显示函数,循环扫描8个数码管
* 输    入       : 无

* 输    出             : 无
*******************************************************************************/
void DigDisplay(void)
{
        u8 i;
        for(i=0;i<8;i++)
        {
                switch (i)
                {
                        case (0):
                                LSA=0;LSB=0;LSC=0;break;//显示第0位
                        case (1):
                                LSA=1;LSB=0;LSC=0;break;
                        case (2):
                                LSA=0;LSB=1;LSC=0;break;
                        case (3):
                                LSA=1;LSB=1;LSC=0;break;
                        case (4):
                                LSA=0;LSB=0;LSC=1;break;
                        case (5):
                                LSA=1;LSB=0;LSC=1;break;
                        case (6):
                                LSA=0;LSB=1;LSC=1;break;        
                        case (7):
                                LSA=1;LSB=1;LSC=1;break;
                }
                P0=segment[ i];
                delay(100); //间隔扫描时间
                P0=0x00;    //消隐显示
        }


}
/***********************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无

* 输    出             : 无
*******************************************************************************/
void main(void)                        //程序从main函数开始执行                                       
{
        
        
        while(1){
               
                        DigDisplay();
        }
}

动态数码管_20230613081346.png (68.87 KB, 下载次数: 51)

动态数码管_20230613081346.png

6.动态态数码管.zip

132.52 KB, 下载次数: 10, 下载积分: 黑币 -5






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1