找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 572|回复: 0
打印 上一主题 下一主题
收起左侧

单片机动态数码管程序与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, 下载次数: 27)

动态数码管_20230613081346.png

6.动态态数码管.zip

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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表