历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2020年01月29日 | STC单片机74HC595驱动8个数码管

2020-01-29 来源:51hei

74HC595驱动8个数码管源程序:

/*---------------------------------------------------------------------*/

/* --- STC MCU International Limited ----------------------------------*/

/* --- STC 1T Series MCU Demo Programme -------------------------------*/

/* --- Mobile: (86)13922805190 ----------------------------------------*/

/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/

/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/

/* --- QQ:  800003751 -------------------------------------------------*/

/* 如果要在程序中使用此代码,请在程序中注明使用了宏晶科技的资料及程序   */

/*---------------------------------------------------------------------*/



/*************        本程序功能说明        **************


用STC的MCU的IO方式控制74HC595驱动8位数码管。


显示效果为: 数码时钟.


使用Timer0的16位自动重装来产生1ms节拍,程序运行于这个节拍下, 用户修改MCU主时钟频率时,自动定时于1ms.


******************************************/


#define         MAIN_Fosc                22118400L        //定义主时钟


#include        "STC15Fxxxx.H"


/****************************** 用户定义宏 ***********************************/


#define        Timer0_Reload        (65536UL -(MAIN_Fosc / 1000))                //Timer 0 中断频率, 1000次/秒


/*****************************************************************************/



#define DIS_DOT                0x20

#define DIS_BLACK        0x10

#define DIS_                0x11





/*************        本地常量声明        **************/

u8 code t_display[]={                                                //标准字库

//         0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F

        0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,

//black         -     H    J         K          L           N        o   P         U     t    G    Q    r   M    y

        0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,

        0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};        //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1


u8 code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                //位码



/*************        IO口定义        **************/

sbit        P_HC595_SER   = P4^0;        //pin 14        SER                data input

sbit        P_HC595_RCLK  = P5^4;        //pin 12        RCLk        store (latch) clock

sbit        P_HC595_SRCLK = P4^3;        //pin 11        SRCLK        Shift data clock


/*************        本地变量声明        **************/


u8         LED8[8];                //显示缓冲

u8        display_index;        //显示位索引

bit        B_1ms;                        //1ms标志


u8        hour,minute,second;

u16        msecond;


/*************        本地函数声明        **************/



/****************  外部函数声明和外部变量声明 *****************/



/********************** 显示时钟函数 ************************/

void        DisplayRTC(void)

{

        if(hour >= 10)        LED8[0] = hour / 10;

        else                        LED8[0] = DIS_BLACK;

        LED8[1] = hour % 10;

        LED8[2] = DIS_;

        LED8[3] = minute / 10;

        LED8[4] = minute % 10;

        LED8[5] = DIS_;

        LED8[6] = second / 10;

        LED8[7] = second % 10;

}


/********************** RTC演示函数 ************************/

void        RTC(void)

{

        if(++second >= 60)

        {

                second = 0;

                if(++minute >= 60)

                {

                        minute = 0;

                        if(++hour >= 24)        hour = 0;

                }

        }

}



/********************** 主函数 ************************/

void main(void)

{

        u8        i,k;

        

        P0M1 = 0;        P0M0 = 0;        //设置为准双向口

        P1M1 = 0;        P1M0 = 0;        //设置为准双向口

        P2M1 = 0;        P2M0 = 0;        //设置为准双向口

        P3M1 = 0;        P3M0 = 0;        //设置为准双向口

        P4M1 = 0;        P4M0 = 0;        //设置为准双向口

        P5M1 = 0;        P5M0 = 0;        //设置为准双向口

        P6M1 = 0;        P6M0 = 0;        //设置为准双向口

        P7M1 = 0;        P7M0 = 0;        //设置为准双向口


        AUXR = 0x80;        //Timer0 set as 1T, 16 bits timer auto-reload, 

        TH0 = (u8)(Timer0_Reload / 256);

        TL0 = (u8)(Timer0_Reload % 256);

        ET0 = 1;        //Timer0 interrupt enable

        TR0 = 1;        //Tiner0 run

        EA = 1;                //打开总中断

        

        display_index = 0;

        hour   = 11;        //初始化时间值

        minute = 59;

        second = 58;

        RTC();

        DisplayRTC();

        

//        for(i=0; i<8; i++)        LED8[i] = DIS_BLACK;        //上电消隐

        for(i=0; i<8; i++)        LED8[i] = i;        //显示01234567

        k = 0;


        while(1)

        {

                if(B_1ms)        //1ms到

                {

                        B_1ms = 0;

                        if(++msecond >= 1000)        //1秒到

                        {

                                msecond = 0;

                                RTC();

                                DisplayRTC();

                        }


                }

        }

/**********************************************/



/**************** 向HC595发送一个字节函数 ******************/

void Send_595(u8 dat)

{                

        u8        i;

        for(i=0; i<8; i++)

        {

                dat <<= 1;

                P_HC595_SER   = CY;

                P_HC595_SRCLK = 1;

                P_HC595_SRCLK = 0;

        }

}


/********************** 显示扫描函数 ************************/

void DisplayScan(void)

{        

        Send_595(~T_COM[display_index]);                                //输出位码

        Send_595(t_display[LED8[display_index]]);        //输出段码

推荐阅读

史海拾趣

GarrettCom公司的发展小趣事

并购:2011年,全球领先的信号传输解决方案提供商Belden成功收购了GarrettCom。这一并购标志着GarrettCom正式成为Belden大家庭的一员,也为其带来了更广阔的发展空间和资源支持。

融合:加入Belden后,GarrettCom继续发挥其在工业通信领域的专长,并与Belden的其他业务线形成协同效应。双方共同为客户提供更全面的信号传输和通信解决方案,进一步提升了市场竞争力。

ACP Optoelectronic Technology Co Ltd公司的发展小趣事

在发展过程中,ACP Optoelectronic Technology Co Ltd注重品牌建设和形象提升。公司加强品牌宣传和推广力度,通过媒体广告、网络宣传等多种方式提升品牌知名度和美誉度。同时,公司也注重客户服务和售后支持,以优质的产品和服务赢得客户的信任和支持。这些举措不仅提升了ACP Optoelectronic Technology Co Ltd的品牌形象,也为其长期发展奠定了坚实基础。


请注意,以上故事仅为虚构,旨在展示电子行业企业可能的发展路径和趋势。实际上,每个企业的发展历程都是独一无二的,受到市场环境、技术创新、管理决策等多种因素的影响。如需了解ACP Optoelectronic Technology Co Ltd的真实发展故事,建议查阅相关新闻报道或公司资料。

Entegris公司的发展小趣事

在晶圆盒传输业务上,Entegris与台湾的家登精密之间发生了一场长达数年的专利侵权诉讼。Entegris最终获得了胜诉,家登被要求赔偿超过3,000万美元。这一胜利不仅保护了Entegris的知识产权,也进一步巩固了其在半导体材料市场的地位。

ELECTRONIC ASSEMBLY公司的发展小趣事

在电子组装行业,品质是企业的生命线。一家名为“品质电子组装”的公司,从创立之初就坚持以品质为核心竞争力。公司引进了国际先进的生产设备和管理体系,建立了严格的质量控制体系,确保每一件产品都符合高标准、严要求。正是凭借着对品质的坚守和追求,品质电子组装赢得了客户的广泛赞誉和信赖,逐渐在行业中树立了良好的口碑。

Hirschmann公司的发展小趣事
当外部触发信号作用于TC4013时,定时器开始工作。同时,TC4066根据预设的数字信号状态来调整电路参数(如电阻、电容值),从而改变定时电路的延时时间或输出特性。最终,定时电路根据这些设置输出具有特定脉冲宽度或时间间隔的信号。
CANDD公司的发展小趣事

为了进一步提升品牌影响力和市场份额,CANDD公司开始实施国际化战略。公司首先在欧洲市场设立了分公司,并成功打开了欧洲市场的大门。随后,公司又进军亚洲市场,通过与当地企业的合作,逐渐在亚洲市场站稳了脚跟。随着国际化战略的深入实施,CANDD公司的品牌知名度和市场份额不断攀升。

问答坊 | AI 解惑

什么是PSoC

PSoC:(power system on a chip)单片片上功率系统。它能把传感器件与电路、信号处理电路、接口电路、功率器件和电路等集成在一个硅芯片上,使其具有按照负载要求精密调节输出和按照过热、过压、过流等情况自我进行保护的智能功能,其优越性不言而 ...…

查看全部问答>

求16C550芯片 WINCE5.0版本驱动

本人现在正在做毕业设计,很急 啊啊!!十万火急啊 !!! 有哪位大侠可以教小妹一下,感激不禁啊!!! 求16C550芯片 WINCE5.0版本驱动  !!! 还有基于嵌入式的GPRS的资料可以分享的!!万分感谢啊!!…

查看全部问答>

SQLite在Wince中Can't find PInvoke DLL 'SQLite.Interop.065.DLL

我在vs中开发,知道SQLite.Interop.065.DLL需要手动部署 我就在工程中添加了这个和那个SQLite.dll,部署到WM的模拟器上后可以运行 而部署到Wince5.0上则提示Can\'t find PInvoke DLL \'SQLite.Interop.065.DLL 我还把windows目录里放了这俩个dll ...…

查看全部问答>

0

攒分赚人品谢谢清洁工和大兔子…

查看全部问答>

关于焊接

各位坛友好,我自己经常要焊接一些贴片电路板,量不大 就几十到一百个左右,自己焊接吧有点多,而且慢,出去找工厂吧人家嫌量小,要价就高,于是自己想买一个小型的焊接设备,大家给推荐一下 并且说说原理,谢谢了 我的要求不高大约在5000左右,能 ...…

查看全部问答>

关于STM32SPI读取DS1302的问题????

前几天想用STM32的SPI接口来读取DS1302,但是调试了两天,读出的数据还是有问题,不是全为0,就全为1。还请各位大虾们帮忙看一下哈。 STM32_DS1302.rar (1.39 MB) 下载次数:202 2010-1-8 16:00 …

查看全部问答>

实用电源电路集锦

本帖最后由 paulhyde 于 2014-9-15 03:54 编辑    …

查看全部问答>

湖北赛区动态

本帖最后由 paulhyde 于 2014-9-15 03:07 编辑 真不知道湖北赛区组委会办事效率怎么样?到现在还没一个官方的获奖名单,别的省获奖名单早就出来了,而我们天天就这样盼星星盼月亮的等啊等,等的时间越长啊,真有些揪心啊,有谁有点内幕的就透漏一 ...…

查看全部问答>

sensortag & ardunio

各位大神, 想请教个问题 SensorTag cc2541 是否能通过P1_1 -7端口与arduino相连(SPI/UART 传输)拿到IMU sensor 的data。 能否通过TI 公司提供的BLE_bridge project 帮助实现呢? …

查看全部问答>

MSP430FR5969 LaunchPad 升级了!

MSP430FR5969 LaunchPad  升级了! 1.6版本与2.0版本的区别! 上:1.6版本,  下:2.0版本 新的板子宽了,加入2塑料脚了 而且X430FR5969 正式到MSP430FR5969了 PCB布局走线没变 ezFET也从1.0升级到1.2咯 上:1.6版本 ...…

查看全部问答>