Proteus入门单片机(3)例程分析

发布时间:2022-12-07  

74HC573详解:

/*

调试环境:Proteus 7.8  AT89S52单片机  8位共阴数码管

功能为:实现数码管1秒~99秒倒计时,    12M晶振

*/


#include

#define uchar unsigned char

sbit LED1=P1^1;                           //连的是LED1

#define MAX_NUM     13                //最大倒计时数1~99可设

#define SEGPORT         P0           //定义数码管连接端口

sbit LE_DUAN         = P2^0;           //定义573锁存使能端口 段锁存

sbit LE_WEI         = P2^1;           //定义573锁存使能端口 位锁存


unsigned char code Seg_Duan[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管显示段码值 0~9

unsigned char code Seg_Wei[]  = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                 //数码管的位码,低电平有效。


static uchar second=MAX_NUM,count;    //99只是一个数,可以任意改,因为这里只学习怎样实现倒计时


uchar shiwei;

uchar gewei;


void delay(unsigned int cnt)

{

        while(--cnt);

}


void main()

{

        TMOD|=0x01;       //定时器设置 16位

        TH0=(65536-50000)/256;  //定时时间   50ms

        TL0=(65536-50000)%256;

        EA=1;

        ET0=1;

        TR0=1;

        SEGPORT = 0;//P0等于0,段码位码均为零

        LE_DUAN = 0;//74HC573锁

        LE_WEI = 0;//74HC573锁

        while(1)

        {

                shiwei=second/10;  //数码管10位

                gewei=second%10;   //数码管个位

                       //下面四句送段码,

                SEGPORT=0;    //清空数据,防止有交替重影

                LE_DUAN=1;      //段锁存

                LE_DUAN=0;

                delay(30);


                SEGPORT = Seg_Wei[1];     //先送位码值

                LE_WEI = 1;           //573高电平锁存

                LE_WEI = 0;

                SEGPORT = Seg_Duan[shiwei];    //再送段码值,这里为 2~9

                LE_DUAN = 1;                //573高电平锁存

                LE_DUAN = 0;

                delay(300);



                SEGPORT = Seg_Wei[0];           //先送位码值

                LE_WEI = 1;           //573高电平锁存

                LE_WEI = 0;

                SEGPORT = Seg_Duan[gewei]; //再送段码值,这里为 2~9

                LE_DUAN = 1;                //573高电平锁存

                LE_DUAN = 0;

                delay(300);

        }

}


void tim(void) interrupt 1    //定时器0中断    

{

        TH0=(65536-50000)/256;     //定时时间   50ms

        TL0=(65536-50000)%256;

        count++;

    if(count==20)     //50毫秒定时,50*20=1000(毫秒)=1秒

    {

       count=0;

       second--;

       if(second==0xff)/*无符号char型数值,-1为:0xff,0之后,显示最大倒计数。*/

       {

         LED1=~LED1;      //这里让LED1反转一下,表现倒计时一周。

         second=MAX_NUM;   //回到最大倒计数值,再次倒计,当然,可以加入其他的控制

       }

         

    }

}


分析:在死循环里,一直重复着以下三个操作

第一:分离second的十位和个位,消隐

第二:十位送到十位

第三:个位送到个位


什么导致second的变化?

答:通过定时器与中断,在定时时间到在中断子程序中改变计数值。


实验有什么问题?

首先硬件连接了8颗LED,这里只用了一颗,动态数码管也没有发挥他的功能,然后在进中断时程序的位置无法确定,不能做到精准倒计时。


如何改进?

使用38译码器可以进一步节省代码,将led改为静态数码管可以记录倒计时次数。


学到了什么?

74HC573可以用来控制动态数码管,38译码器可以节省引脚。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    51单片机积累了太多的学习资料、例程、设计实例等,而且他们也非常愿意把这些资料共享出来方便后辈们学习。大学里的课程设计题目甚至毕业设计题目,在网上都能找到许多参考资料,这让很多同学更愿意在51单片机的基础上去实现自己的毕业设计......
    8051单片机和STM32单片机的编程环境对比;单片机编程是一门实战性的技术,程序要在单片机平台上跑起来才能看到效果、才能积累编程经验。在学校学习单片机课程时,可能会感觉到一直有一种脱节的感觉,因为......
    stc51单片机怎么学, 先掌握STC单片机程序烧录方法!;今天我在这里和大家探讨一下关于51单片机怎么学这个话题。 08年我在大学里学习单片机课程的时候,学习内容主要包括单片机的发展历史,单片机......
    及嵌入式基础,业内项目式入门资料包括:郭天祥老师的“新概念51单片机”,及相关的单片机开发经验与分享;以51 单片机课程为例的创客式项目教学在编程类课程中的应用研究;邵华老师以项目为导向的课程......
    产品开发进程。 教育机构教学实验:由于51单片机开发板在硬件和软件方面都比较简单易懂,广泛应用于教育机构的微机原理和单片机课程的教学实验中,帮助学生理解和掌握嵌入式系统的原理和应用。 爱好者个人项目:单片机......
    从开发板学习开始。 从事单片机开发工作的大多数是电子相关专业毕业的,很多专业都有单片机原理与应用这门课程,但大学的单片机课程,我们又能学到什么? 大学课程学到的知识包括:单片机发展历史,单片机的内部寄存器,定时......
    你可以学的很好那就最好不过了,现在很多人用汇编对51单片机进行极限开发呢),但51单片机课程中主要是以C语言为基础,相对来说就好学很多了,再怎么说你大一也有一个学期的C语言基础了吧。学会使用它之后你再去学习其他16位芯......
    基于STC89C52RC的电子秒表;1 设计题目 设计一个电子秒表 2 设计目的 巩固模拟和数字电子技术基础知识,学习51单片机,并用其设计电子产品。 掌握熟悉产品开发的调试方法,增强......
    单片机课程设计一汇编语言实现四位数计算器;汇编语言(英語:assembly language):是任何一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。 在不同的设备中,汇编......
    一.单片机概述;单片机课程目标 了解单片机的基本概念及应用; 熟练掌握单片机的软、硬件知识; 能应用单片机实验平台完成基本实验; 能应用单片机完成简单开发。 单片机简介 单片机即单片机微型单片机......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>