当前位置:网站首页 > 技术博客 > 正文

ds1302时钟电路原理图



#include "DS1302.h" #define DIG P0 sbit LSA = P2^2; sbit LSB = P2^3; sbit LSC = P2^4; uchar init_time[] = {0x50,0x15,0x14,0x22,0x10,0x06,0x17};//初始化的时间 //秒 分 时 日 月 周 年  uchar code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管数字表 uint disp[8]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};//把要显示的数字传给他  uchar Num=0; uint count_flag = 0; //中断溢出次数 void time0_init();//定时器0初始化 void display();//数码管显示时间 void main(void){ init_ds1302(); //初始化时写入起始时间  time0_init(); while(1){ display(); } } //* void display(){ ds1302_readtime(); //读取时间 disp[7] = DIG_CODE[init_time[0]&0x0f]; disp[6] = DIG_CODE[init_time[0]>>4]; disp[5] = 0X40; //显示一个横线 disp[4] = DIG_CODE[init_time[1]&0x0f]; disp[3] = DIG_CODE[init_time[1]>>4]; disp[2] = 0X40; disp[1] = DIG_CODE[init_time[2]&0x0f]; disp[0] = DIG_CODE[init_time[2]>>4]; } // void time0_init(){ TMOD=0X02;//选择为定时器模式,工作方式2,8位自动重装模式,仅用TRX打开启动。 TH0=0X9C; //给定时器赋初值,定时100us,0x9c就是156,就是还需计数100次产生溢出,就是0.1ms TL0=0X9C; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器 } void DigDisplay() interrupt 1 //中断入口函数,扫描以实现动态显示 { //定时器在工作方式二会自动重装初,所以不用在赋值。 // TH0=0X9c;//给定时器赋初值,定时0.1ms // TL0=0X00;  count_flag++; if(count_flag==1) { count_flag = 0; DIG=0; switch(Num) //位选,选择点亮的数码管,  { case(7): LSA=0;LSB=0;LSC=0; break; case(6): LSA=1;LSB=0;LSC=0; break; case(5): LSA=0;LSB=1;LSC=0; break; case(4): LSA=1;LSB=1;LSC=0; break; case(3): LSA=0;LSB=0;LSC=1; break; case(2): LSA=1;LSB=0;LSC=1; break; case(1): LSA=0;LSB=1;LSC=1; break; case(0): LSA=1;LSB=1;LSC=1; break; } DIG=disp[Num]; //段选,选择显示的数字。 Num++; if(Num>7) Num=0; } }

  • 上一篇: kdump启动失败
  • 下一篇: 标志位v
  • 版权声明


    相关文章:

  • kdump启动失败2025-06-02 08:01:01
  • java中hashcode的作用2025-06-02 08:01:01
  • get opt2025-06-02 08:01:01
  • 常用运维工具合集2025-06-02 08:01:01
  • wpf编程2025-06-02 08:01:01
  • 标志位v2025-06-02 08:01:01
  • api在线测试工具2025-06-02 08:01:01
  • crc16校验算法ccitt2025-06-02 08:01:01
  • 数组指针和指针数组的作用和区别2025-06-02 08:01:01
  • xampp安装包2025-06-02 08:01:01