华强电子网

电子元器件
采购信息平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

单片机C语言程序设计:定时器控制数码管动态显示

来源:-- 作者:-- 浏览:1249

标签: 单片机 数码管

摘要: /* 名称:定时器控制数码管动态显示说明:8 个数码管上分两组动态显示年月日与时分秒,本例的位显示延时用定时器实现。*/#include#include#define uchar unsigned char#define uint unsigned int//段码,最后一位是"-"的段码uchar codeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82

/* 名称:定时器控制数码管动态

显示

说明:8 个数码管上分两组动

态显示年月日与时分秒,本例的

位显示延时用定时器实现。

*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

//段码,最后一位是"-"的段码


uchar code

DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};

//待显示的数据:09-12-25 与 23-59-58(分两组显示)

uchar code Table_of_Digits[][8]={{0,9,10,1,2,10,2,5},{2,3,10,5,9,10,5,8}};

uchar i,j=0;

uint t=0;

//主程序

void main()

{

P3=0x80;

//位码初值

TMOD=0x00; //计数器 T0 方式 0

TH0=(8192-4000)/32; //4ms 定时

TL0=(8192-4000)%32;

IE=0x82;

TR0=1; //启动 T0

while(1);




}

//T0 中断函数控制数码管刷新显示

void DSY_Show() interrupt 1

{

TH0=(8192-4000)/32; //恢复初值

TL0=(8192-4000)%32;


P0=0xff; //输出位码和段码

P0=DSY_CODE[Table_of_Digits[i][j]];

P3=_crol_(P3,1);


j=(j+1)%8; //数组第 i 行的下一字节索引

if(++t!=350) return; //保持刷新一段时间

t=0;

i=(i+1)%2; //数组行 i=0 时显示年月日,i=1 时显示时分秒



}


型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67