历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2020年09月16日 | 基于单片机内部定时器中断计数器设计

2020-09-16 来源:51hei

电源电路就是单片机的供电电路,一般是3.3V或者5V,具体多少要参考各种型号的单片机的工作电压,通常情况下是5V,这里是指通常情况下。
整体设计思路:
单片机中断初始化程序应完成du如下工作:
1、对TMOD赋值,以确定T0和T1的工作方式。
2、计算初值,并将其写入TH0、TL0或TH1、TL1。
3、中断方式时,则对IE赋值,开放中断。
4、使TR0或TR1置位,启动定时/计数器定时或计数。
整体设计思路
单片机的中断为向量中断,即一响应中断就转入固定入口地址执行中断服务程序。各中断源服务程序的入口地址

两个中断入口间只相隔8字节,难以安放一个完整的中断服务程序。因此,通常在中断入口地址处放置一条无条件转移指令,使程序执行转向中断服务程序入口。
定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1

有电路仿真原理图(10分);图中元件参数标注详细正确(10分);有操作过程说明(10分);有工作原理的文字描述(5分);对电路原理的描述全面(5分)。
1.电路仿真原理图:
OIZT1LJ8[5{3{FL{]$PSW[7.png?imageView2/2/w/550

电路原理描述:
共阳型数码管字模:
{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F }; //{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1, 0x86,0x8e};
//0,1,2,3,4,5,6,7,8,9
中断装置和中断处理程序统称为中断系统。
中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。
3.工作原理:
定时器/计数器初始化的一般步骤 51 单片机内部定时器/计数器是可编程序的,通过程序设置寄存器对它进行设定和控制,因此需要进行初始化操作。
(1)确定定时器/计数器的工作方式:   
   通过对 TMOD 中的方式选择位 M1 和 M0 赋值实现。
(2)预置定时或计数初值:  
根据定时时间或计数次数,将计算的定时或计数初值写入 TH0、TL0 或 TH1、TL1。如预置 T0 初值指令。
(3)开放定时器/计数器的中断,设定中断优先级:
通过给 IE 寄存器中的相关位赋值来实现。
(4)启动定时器/计数器:      
通过给 TCON 中的 TR1 或 TR0 置 1 实现。
5电路原理:
定时器/计数器的为自动恢复初值(初值自动装入)的 8 位定时器/计 数器。TLx(x = 0,1)作为常数缓冲器,当 TLx 计数溢出时,在溢出标志 TFx 置 “1”的同时,还自动将 THx 中的初值送至 TLx,使 TLx 从初值开始重新计数。 定时器/计数器的方式 2 工作过程如下图所示。该方式可省去用户软件中重装初
值的指令执行时间,简化定时初值的计算方法,可以相当精确地确定定时时间。

单片机源程序如下

#include

#define LEDCHAR P1                        //LED 字符I/O 口,P1.0~7对应A~DP

#define LEDSELECT P0                //LED 选择I/O口.   P0.0~5对应LED的1~6


unsigned  char code uca_LEDCode[]=

                        {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

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



unsigned char code uca_LEDSelect[]={0x01,0x02,0x04,0x08,0x10,0x20};        

                                        //分别点亮第6,5,4,3,2,1号灯.


unsigned char uca_LedNum[6];                        

                                        //存放数字的各个位


//*                        函数实现


unsigned char * pucLedNum(unsigned long ulNumber)

{

        if(ulNumber>999999)

                ulNumber=999999;

        if(ulNumber<0)

                ulNumber=0;

        uca_LedNum[0] = ulNumber/100000;                                                                   //最高位


        uca_LedNum[1] = (ulNumber-100000*(long)uca_LedNum[0])/10000;


        uca_LedNum[2] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1])/1000;


        uca_LedNum[3] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]

                                        -1000*(long)uca_LedNum[2])/100;


        uca_LedNum[4] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]

                                        -1000*(long)uca_LedNum[2]-100*(long)uca_LedNum[3])/10;


        uca_LedNum[5] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]

                                        -1000*(long)uca_LedNum[2]-100*(long)uca_LedNum[3]-10*(long)uca_LedNum[4]);


        return uca_LedNum;

}




void vShowOneNum(unsigned char ucOneNum,unsigned char ucOrder)

{

        LEDSELECT=0;

        LEDCHAR=uca_LEDCode[ucOneNum];

        LEDSELECT=uca_LEDSelect[ucOrder];                 //ucOrder:0~5(代表从左到右1~6)

}



推荐阅读

史海拾趣

贝特莱公司的发展小趣事

贝特莱与小米的合作是其发展历程中的又一重要事件。作为小米全系列合作伙伴,贝特莱为米家智能门锁提供了独家指纹传感器和定制算法芯片。随着米家智能门锁销量突破百万大关,贝特莱也实现了销售上的重大突破。这一合作不仅证明了贝特莱技术的成熟与可靠,也进一步提升了其在智能门锁市场的地位。

Hind Rectifiers Ltd公司的发展小趣事

贝特莱与小米的合作是其发展历程中的又一重要事件。作为小米全系列合作伙伴,贝特莱为米家智能门锁提供了独家指纹传感器和定制算法芯片。随着米家智能门锁销量突破百万大关,贝特莱也实现了销售上的重大突破。这一合作不仅证明了贝特莱技术的成熟与可靠,也进一步提升了其在智能门锁市场的地位。

Excelsys公司的发展小趣事

随着全球对环保意识的日益增强,Excelsys公司积极响应绿色环保的号召,将环保理念融入到产品设计和生产过程中。公司采用环保材料、优化生产工艺、提高能源利用效率等措施,减少了对环境的影响。同时,公司还积极参与环保公益活动,为行业的绿色发展贡献力量。

Emerson Embedded Power公司的发展小趣事

在电子行业的早期,Emerson Embedded Power就开始注重技术创新。该公司不断投入研发资源,开发高效、可靠的电源解决方案,以满足不断增长的市场需求。其创新的电源管理技术不仅提高了设备的性能,还降低了能源消耗,赢得了客户的广泛认可。

ABCO公司的发展小趣事

ABCO公司深知产品质量是企业生存的根本。因此,公司建立了一套严格的质量管理体系,从原材料采购到产品生产、检测、出厂等各个环节都进行严格把控。同时,公司还注重持续改进,不断优化生产流程,提高生产效率,确保产品质量始终保持在行业前列。

Automatic Connector公司的发展小趣事

在电子连接器行业,品质是决定企业生死存亡的关键。Automatic Connector公司深知这一点,因此在生产过程中严格执行品质管理标准。公司引进了先进的生产设备和质量检测仪器,确保每一件产品都符合高标准的质量要求。同时,公司还建立了完善的售后服务体系,及时解决客户在使用过程中遇到的问题。凭借卓越的品质和优质的服务,Automatic Connector赢得了客户的信赖和好评。

问答坊 | AI 解惑

基于MCS-51的电子琴设计!!谁能帮我做下

指导老师太刻薄了~~论文改了又改还是过不了~~我都快急死~~我好声好气跟他说~~他说什么我的论文没达到标准 还说什么让我再读一年~~拜托好心人帮帮忙~~    我的邮箱:  289651662@qq.com [ 本帖最后由 vbnm 于 2009-5-26 23:21 ...…

查看全部问答>

error LNK2019: 无法解析的外部符号 SHGetPathFromIDListW,

   我把VC6.0下的一个目录浏览程序在VS2005中打开后,移植到我的程序中!我开发的是wince下的程序,用VS2005开发!编译后出现链接错误:如下我错误信息!我已经把该包含的头文件都包含了啊!哪位知道请指教一下! 正在链接... CEView ...…

查看全部问答>

关于vxworks的任务的地址空间

关于vxworks的任务的地址空间,什么命令可以看到制定任务占用的地址范围?…

查看全部问答>

如何读取CPU ID?

如何读取CPU ID?也就是我希望在应用中判断到当前的CPU是什么类型的,比如是三星的2440、2450或6410等…

查看全部问答>

关于2410显示颜色问题

   2410的板子320X240的分辨率,是16bpp的,现在板子显示颜色有问题,背景色是橘红色,打开东西之后是黑色,请问是什么问题?改如何修改??…

查看全部问答>

TLV数据对象

大家好,我这有些问题,希望有人给予帮助.这儿有两个数据对象的命令,主要是对TLV数据对象的操作 set data;retrive data 针对set data命令,这有一个EF文件内有三个原始数据对象   tag     length   &nbs ...…

查看全部问答>

STM32通过FSMC控制LCD的问题

最近做点小东西时用到了压箱底N久的一块屏(SED1335控制器,320×240单色),我将其挂在FSMC总线上,然后配置FSMC总线时用到如下子程序: =========================我是分割线=========================     void FSMC_Configura ...…

查看全部问答>

MSP430外围模块功能下载

MSP430外围模块功能简介,分为一二两个部分…

查看全部问答>

晒设计方案+STM32F429液晶屏基本操作

Stm32F429最突出的亮点应该就是自带LCD驱动器,看了一下官方例程stm32f429i_discovery_lcd.c里有关于液晶的操作,果然牛X,很多操作函数都没见过,比如有关层的函数和PolyLine函数,上网查了一下才发现其实这些函数st在之前的各种EVAL板子的例程中都 ...…

查看全部问答>