动态显示PIC定时器1实现秒计数

发布者:梦幻微笑最新更新时间:2016-11-07 来源: eefocus关键字:动态显示  PIC  定时器1  秒计数 手机看文章 扫描二维码
随时随地手机看文章
//利用T1中断实现每秒加1功能 //
//PORTC为段选控制端a-g,D0-D4分别控制共阳极数码管的位选,
#include
#include
#define uint  unsigned int
#define uchar unsigned char
const char table[10]=             //恒定不变0-9(由数码管型号确定)
{             
// 0x21,0xE7,0x32,0x38,0x6C,0xA8,0xA0,0x3D,0x20,0x28,
0xFD,0x91,0xE7,0x6F,0x1F,0x7B,0xFB,0x2D,0xFF,0x7F,
};
uchar count=0 ;
uchar data1=0;
void Delay(char x)
{
    char i;
    while(x--)
    for(i=0;i<200;i++);
}
////////////系统初始化////////////////////////
void initial()
{
 TRISB=0x00;    //端口设置
 TRISC=0x00;    
 TRISD=0x00;
 PORTB=0xFF;   //开始都关
 PORTC=0xFF;   //共阳极
 PORTD=0x00;
 INTCON=0x00;    //关中断
 PIE1=0x00 ;  
 PIR1=0x00 ;
}
 
//////////T0初始化///////////////////////////
void time1_init()
{
 T1CON=0x08;  //16位定时方式,
 TMR1IE=1;  //中断允许位  
 TMR1IF=0;  //清中断标志位
 TMR1H=0xD9;             //设置初始值
 TMR1L=0x00;
}
////////////中断查询并处理///////////////////
//////////////////显示/////////////////////
display(uchar data)
{ uchar a,b,c,d;
 a=(data/1000);     //千位
 b=(data%1000/100);       //百位 
 c=(data%100/10); //十位
 d=(data%10);    //个位
     
 PORTD=0xFE;
 PORTB=table[a];  //显示个位
 Delay(2);
 PORTD=0xFD;
 PORTB=table[b];  //显示十位
 Delay(2);
 PORTD=0xFB;
 PORTB=table[c];  //显示百位
 Delay(2);
 PORTD=0xF7;
 PORTB=table[d];  //显示千位
 Delay(2);
 PORTD=0xFF;
 
}
void interrupt time1_ISR()
{
if(TMR1IF==1)              //10ms中断
 {
  TMR1H=0xD9 ; //重载计数初始值
  TMR1L=0x00 ;
  TMR1IF=0 ; //清中断         
  count=count+1 ;
   if(count==100)
  { count=0;        //每1秒清count ,重新开始等待1秒    
        data1=data1+1 ; //每1秒+1,并显示
  }
 }
}
//////////////主程序/////////////////////////
main()
{       
 //uchar i;
        
 initial();
 time1_init();
 INTCON=INTCON|0xC0;   //GIE=1,PEIE=1;
 TMR1ON=1;        //打开定时器1
 while(1)
 {
 display(data1);                 
 }
}
关键字:动态显示  PIC  定时器1  秒计数 引用地址:动态显示PIC定时器1实现秒计数

上一篇:PIC12F1840串口调试程序成功
下一篇:用PIC微控制器设计LED驱动控制电路的考虑

推荐阅读最新更新时间:2024-03-16 15:19

PIC单片机入门_PICC的指向RAM的指针
问题: 将30h,31h,32h单元中最大的数放入40h。 利用指向RAM的指针进行编程如下: span style= font-size:18px; #include pic.h static volatile unsigned char add1 @0x30; static volatile unsigned char add2 @0x31; static volatile unsigned char add3 @0x32; static volatile unsigned char add @0x40; main() //绝对地址定位 { add1=0x51; add2=0x5; add3=0x6
[单片机]
Windows下PIC 8位单片机源程序汇编和固化(五)
3 MPLAB中源程序文件被存入到指定的目录和装载 在PC机屏幕上,当用键盘键入并编辑了源程序(COUNTASM)之后,再用鼠标键打开File下拉菜单,选择Save(保存)命令,用鼠标键点击Save,即可打开图1(目录路径为C:\PROGRA~1\MPLAB)的窗口。在该窗口的File Name(文件名)栏中(标题——Save File As),选择好路径,用键盘输入文件名PIC COUNTASM(用户自定义名),再用鼠标键点击OK,即可将源程序文件以指定的文件名PIC COUNTASM存入到指定的目录中。这一过程通常称为对PIC单片机(微控制器)源程序(COUNTASM)的存盘。 在MPLAB集成开发环境下,在MPLAB
[单片机]
基于PIC18F系列单片机的嵌入式系统设计
引言 嵌入式系统是指以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、体积、成本、可靠性、功耗严格要求的专用计算机系统。嵌入式系统是面向应用的,系统的硬件选型和软件开发模式都必须根据具体的应用确定。 永磁无刷直流电动机是电机控制研究领域的热点之一,这与其自身固有的技术优势密切相关:以电子换相取代了有刷直流电动机的机械换相。从根本上革除了普通有刷直流电动机由于电刷换相带来的火花、噪音、高故障率等一系列问题,同时又使系统的性能能够与普通有刷直流电动机相媲美,因此得到了广泛的应用。永磁无刷直流电动机的电子换相离不开电机的转子位置信号,传统的方法是采用霍尔器件或其他位置传感器检测位置信号,这使得系统的维护和制
[应用]
第26章 STM32F429的定时器应用之TIM1-TIM14的中断实现
26.1 初学者重要提示 学习本章节前,务必优先学习第25章,HAL库的几个常用API均作了讲解和举例。 实际应用中,中断入口函数名称不要写错,有些中断的入口函数名称比较特殊,详情可看本章的2.2小节。 26.2 定时器中断的驱动设计 定时器中断的实现相对比较简单,仅需一个函数即可实现TIM1-TIM14定时器的中断更新配置。 26.2.1 定时器中断初始化 实现代码如下: 1. /* 2. ****************************************************************************************************** 3. * 函
[单片机]
第26章 STM32F429的<font color='red'>定时器</font>应用之TIM<font color='red'>1</font>-TIM14的中断实现
AVR定时器1的CTC模式设置
在CTC模式编程的时候,要执行的步骤如下: 1. 将PD4~PD5 设置为输出(默认为低电平)。DDRD|=BIT(4)|BIT(5); 2. 决定比较输出模式,试验中为模式电平取反。TCCR1A=0x50; 3. 决定方波产生模式位,试验中是模式4, 亦即WGM12=1。TCCR1B|=BIT(3); 4. 决定分频N,这里就假设去1 吧,无预分频。TCCR1B|=BIT(0); 5. 在步骤3 中,方波产生模式位为4,换句话说就是OCR1A 决定匹配的最大值。 CTC模式实际上就是比较输出模式,输出占空比相同的脉冲 频率=时钟晶振/2N(1+OCRnA) 如:四个指令就可以配置好CTC模式(8M,输出2KHz)
[单片机]
使用PIC单片机开发需要什么东西
  PIC单片机,由Microchip制造。目前,它有许多类型的单片机,具有相同替代方案的国产单片机有英锐恩的EN系列。但这里仅以PIC18F452为例,所以让我们对PIC18F452做一些简单的介绍。   PIC18F452是一个40引脚单片机,每个引脚都有自己的功能,这里不赘述了。   那么,假设我想创建一个关于LED闪烁的项目,这算是一个关于PIC单片机的最简单项目之一,所以用它来介绍PIC18F452可能非常简单、直观。   首先,我需要以下内容,以便我可以使用它们来处理PIC。英锐恩单片机工程师们在另一篇文章中讨论了PIC18F452单片机中另一些可用功能,可以去看一下。   一、MPLAB   MPLA
[单片机]
使用<font color='red'>PIC</font>单片机开发需要什么东西
基于PIC16F877单片机的简易数字电压表设计及proteus仿真
1.系统功能 1.1可测0~5V的8路输入电压值; 1.2在LED数码管上轮流显示; 1.3单路选择显示; 2.系统硬件设计 2.1 单片机采用PIC16F877 2.2 键盘为4×4行列式键盘,按键设有10个数字键0……9,和5个功能键依次是:各通道轮流显示键、单通道显示键、向左滚动显示键、显示启动/停止键、回车键。 2.3有3位LED管,左边1位用于指示显示通道,右边2位显示电压值,保留到小数点后面1位。 3系统软件设计 3.1键盘管理程序(包括键扫描、键处理程序); 3.2LED动态显示程序; 3.3各通道轮流显示,共显示8个通道,每通道显示1s; 3.4 单通道显示,仅显示指定通道电压,并保持到其他功能键按下。 仿真原理图
[单片机]
基于<font color='red'>PIC</font>16F877单片机的简易数字电压表设计及proteus仿真
PIC单片机应用专题三:I2C读写24C02
自从开始学习单片机起,就觉得I2C是个很有用的东西,它能大大节省我们的端口,现把软件模拟的I2C程序写出来,既是给大家分享,也是为自己做一下备份.下面的程序是用I2C存储24C02: INCLUDE P16F5X.INC ;同样可用于其他型号 ;*************************定义变量************************ STATUS EQU 3H PORTB EQU 6H PORTC EQU 7H EEPROM EQU 08H ADDR EQU 09H
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved