PICC 电子钟程序

发布者:RadiantBreeze最新更新时间:2017-12-06 来源: eefocus关键字:PICC  电子钟 手机看文章 扫描二维码
随时随地手机看文章

/********************************************** 
功能说明:利用TMR0中断扫描数码管、产生秒时钟信号 
单片机 :PIC16F72、PIC16F877、PIC16F873等 
晶振:4MHz   www.picavr.com 
************************************************/ 

#include  "pic.h" 

unsigned char dispbitcnt;  //数码管位码扫描变量 
unsigned char second;   //秒变量 
unsigned char  minite;   //分变量 
unsigned char  hour;    //时变量 
unsigned char  tcnt;    //秒信号产生变量 
unsigned char mstcnt;   //扫描时间变量 



const unsigned char dispcode[10]={0xc0,0xf9,0xa4,0xb0,0x99, 
             0x92,0x82,0xf8,0x80,0x90}; 
            //0123456789段码 
const unsigned char dispbitcode[6]={0xfe,0xfd,0xfb,0xf7, 
            0xef,0xdf}; 
          //123456位码 
unsigned char dispbuf[6]={0,0,0,0,0,0}; 
          //缓冲数组 




//**************TMR0中断数码管扫描程序********************* 
void interrupt tmr0(void) 
{          
if(T0IE && T0IF)     
{     
  T0IF=0;      //清除中断标志位 
  { 
  PORTC=dispcode[dispbuf[dispbitcnt]]; 
  PORTA=dispbitcode[dispbitcnt]; 
  dispbitcnt++; 
  if(dispbitcnt==6) 
   {dispbitcnt=0; 
   }  
  } 
  tcnt++;      //中断产生秒信号 
  if(tcnt==244) 
   {tcnt=0; 
    second++; 
    if(second==60) 
      {second=0; 
       minite++; 
       if(minite==60) 
        {minite=0; 
         hour++; 
         if(hour==24) 
          {hour=0; 
          } 
         } 
     } 
     dispbuf[4]=second%10; 
     dispbuf[5]=second/10; 
     dispbuf[2]=minite%10; 
     dispbuf[3]=minite/10; 
     dispbuf[0]=hour%10; 
     dispbuf[1]=hour/10; 
    } 
   } 





///****************1ms延时程序****************** 
void delay_1ms(unsigned int i) 

unsigned char j; 
for(;i!=0;i--) 
for(j=141;j!=0;j--); 




///****************按键检测********************* 
void key_sCAN(void) 

while(1) 

  if(RB0==0) 
  { 
   delay_1ms(20); 
   if(RB0==0) 
    {second++; 
     if(second==60) 
       {second=0; 
       } 
    dispbuf[4]=second%10; 
    dispbuf[5]=second/10; 
    while(RB0==0); 
    } 
   } 
   if(RB1==0) 
   { 
    delay_1ms(20); 
    if(RB1==0) 
     { 
      minite++; 
      if(minite==60) 
        {minite=0; 
        } 
     dispbuf[2]=minite%10; 
     dispbuf[3]=minite/10; 
     while(RB1==0); 
     } 
   } 
   if(RB2==0) 
   { 
    delay_1ms(20);  
    if(RB2==0) 
     { 
      hour++; 
      if(hour==24) 
       { 
        hour=0; 
       } 
     } 
     dispbuf[0]=hour%10; 
     dispbuf[1]=hour/10; 
     while(RB2==0); 
   } 
  } 

     

   
//***************端口初始化*********************** 
void PORT_INIT(void) 

TRISA=0;               //A口输出 
ADCON1=0x06;     //数字I/O 
TRISC=0;              //C口输出 
TRISB=0XFF;       //B口输入 

//***************TMR0初始************************** 
void TMR0_INIT(void) 

GIE=1;                  //开启全局中断 
OPTION=0X03;     //开启内部上拉,预分频比1/16 
T0IF=0;                //清中断标志 
T0IE=1;                //允许TMR0中断 




//*************主程序******************** 
void main(void) 

while(1) 

dispbitcnt=0; 
PORT_INIT(); 
PORTC=0x00;      //开段码 
PORTA=0x00;      //开位码 
delay_1ms(200);    //延时 
delay_1ms(200);    //延时 
delay_1ms(200);    //延时 
delay_1ms(200);    //延时 
PORTA=0xff;      //关位码 
TMR0_INIT();     //调初始子程序 
TMR0=0;       //开启TMR0中断 
key_scan();      //按键检测子程序 


关键字:PICC  电子钟 引用地址:PICC 电子钟程序

上一篇:PIC单片机音乐播放程序
下一篇:PIC24F之EEPROM读写中断事件处理函数要点

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

PIC16F877A PICC AD转换程序
//软件思路:选择RAO做为模拟输入通道; // 连续转换4次再求平均值做为转换结果 // 最后结构只取低8位 // 结果送数码管的低3位显示 #include pic.h //包含内部资源预定义 __CONFIG(0x1832); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 const char TABLE ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90}; //定义常数0-9的数据表格 void DELAY(); //delay函数申明
[单片机]
采用AT89C2051的6位电子钟
采用AT89C2051的6位电子钟原理如下图所示,只要硬件连接无误,保证成功。另外图中的SET按纽用于校准时间。按住2秒以上进入校准时间状态及换档和退出,快速点触用于调节时间数值。三极管采用9015即可。数码管最好采用红色的共阳型LED数码管,亮度高些,因为是扫描的显示方式,所以各个数码管的abcdefg各脚采用了总线并联,改动510欧姆的电阻可以改变显示亮度。                电子钟原理图 共阳数码管的管脚排列方式 电子钟实物图 电子钟源程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; AT89C2051时钟程序 ;; ;;;;;;;;;;;;;;;;;
[单片机]
采用AT89C2051的6位<font color='red'>电子钟</font>
PICC编译器开发PIC系列单片机的代码
摘要:介绍PIC系列单片机C语言的发展;以HI-TECH Software公司的HI-TECH PICC为例,介绍PICC编译器的特点和用其开发PIC系列单片机时应注意的一些问题。 关键词:PIC PICC编译器 C语言/汇编语言 Hi-Tech 引言 目前,在市场上应用最广泛的应该属于8位单片机,Microchip Technoloogy公司推出的8位PIC系列单片机,目前在国内市场上深受用户欢迎,已经逐渐成为单片机应用的新潮流;但遗憾的是,目前国内介绍它的C语言开发工具的书籍和文章却比较少,而且用的人也不多,广大的程序员在用其开发的过程中都在慢慢摸索,可能会走一些弯路。笔者最近在用PIC的C语言时就遇到了好些问题,在这
[应用]
时钟芯片DS1302+AT89C2051的红外遥控LED电子钟电路设计与制作
自制LED电子钟在很多电子报刊杂志上都可以见到,但大多数在断电后都要重新设置时间等参数,给使用带来很多不便。也有用后备电池作为备用电源的,但往往体积较大。本文介绍的LED电子钟克服了以往的弊端,而且采用了家电通用的红外遥控器进行控制,方便使用。有一路闹铃输出,可以通过遥控器设置闹铃时间及允许与否。 一.工作原理 DS1302为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32768 Hz 晶振 。 AT89C2051作为主控芯片,一是对接收到的红外遥控编码进行判断识别,并执行相应的处理;第二就是定期的读取时钟芯片DS1302中的时间并把小时和肥
[单片机]
时钟芯片DS1302+AT89C2051的红外遥控LED<font color='red'>电子钟</font>电路设计与制作
Hi-Tech PICC 8bit MCU 的学习笔记 -- 环境篇
/*---------------------------------------------------------*/ Hi-Tech PICC 8bit MCU 的学习笔记 ---------- 环境篇 /*---------------------------------------------------------*/ 第一节 环境 1.概况 PIC 单片机的 C 语言编译器众多,常见的有 Hitech、CCS、IAR、Bytecraft 等公司,其中最常用的是Hitech 公司的PICC 编译器。在此列出几个主要的针对 PIC 单片机的 C 编译器相关连接网址,供参考: Hitech-PIC
[单片机]
自制红外遥控LED电子钟
自制LED电子钟在很多电子报刊杂志上都可以见到,但大多数在断电后都要重新设置时间等参数,给使用带来很多不便。也有用后备电池作为备用电源的,但往往体积较大。本文介绍的LED电子钟克服了以往的弊端,而且采用了家电通用的红外遥控器进行控制,方便使用。有一路闹铃输出,可以通过遥控器设置闹铃时间及允许与否。    一.工作原理   DS1302为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32768Hz晶振。   AT89C2051作为主控芯片,一是对接收到的红外遥控编码进行判断识别,并执行相应的处理;第二就是定期的读取时钟芯片DS1302中的
[电源管理]
自制红外遥控LED<font color='red'>电子钟</font>
单片机电子钟程序完美版(带闹钟温度功能)
本电子钟已经全部测试OK,带闹钟功能,年月日时分秒星期温度,四个按键可设置闹钟调节时间,温度可以显示正125度到负的55度之间,时间走时的话,我测试了一个月,误差不到1分钟。本人已经录制成视频,视频里面有详细的介绍,感兴趣的可以看看 。视频及多图还有源代码的地址: http://www.51hei.com/bbs/dpj-26057-1.html 程序: #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit rs=P1^0;//寄存器选择 sbit rw=P1^1;//读写信号线 sbi
[单片机]
单片机<font color='red'>电子钟</font>程序完美版(带闹钟温度功能)
用51单片机做一个LED显示的电子钟
#include reg52.h #define uchar unsigned char #define uint unsigned int uchar code table ="ME-400-A clock"; uchar code table1 ="    --:--:--    "; uchar code table2 ="ALL:00:00:-- "; uchar code table3 ="    "; uchar clk_time ;  //秒,分,时寄存器初始值 sbit T_RST=P2^2;//ds1302-5 sbit T_IO=P2^3;//ds1302-6 sbit T_CLK=P2^4;//ds1302-
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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