这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 单片机C语言程序设计:定时器控制数码管动态显示

共1条 1/1 1 跳转至

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

高工
2013-10-25 15:38:18     打赏

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

显示

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

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

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

*/

#includereg51.h>

#includeintrins.h>

#defineucharunsignedchar

#defineuintunsignedint

//段码,最后一位是“-”的段码

uchar code

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

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

ucharcodeTable_of_Digits[][8]={{0,9,10,1,2,10,2,5},{2,3,10,5,9,10,5,8}};

uchari,j=0;

uintt=0;

//主程序

voidmain()

{

P3=0x80;

//位码初值

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

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

TL0=(8192-4000)%32;

IE=0x82;

TR0=1; //启动T0

while(1);

}

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

voidDSY_Show()interrupt1

{

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时显示时分秒

}

单片机C语言程序设计:定时器控制数码管动态显示
扩展阅读:100 000s 以内的计时程序




关键词: 基础知识    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]