60秒加计数器c语言程序原理,求一个简单的单片机用数码管显示计时60秒的C语言程序,程序一定要带有解释和Proteus 仿真电路图....

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

丶Dear...

2014.05.20

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:55%    等级:7

已帮助:109人

/***程序仿真用89c52 数码管用共阳极数码管

P0口段选,P3.0和P3.1位选

定时器2用法见百度“T2CON”***/

#include

#define uint unsigned int

#define uchar unsigned char

uchar code num[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; //共阳极数码管0-9数组以及全灭和“-”符号

uchar data da[2]; //定义显示缓存

uint sec; //定义秒

uchar a; //显示位选择

//延时子程序

void d(uint i)

{uint j;

for(;i>0;i--)

for(j=110;j>0;j--);

}

//显示函数

void prt()

{

da[0]=sec/10;//十位存入显示缓存

da[1]=sec%10;//各位存入显示缓存

P0=num[da[a]];//将要显示的数据付给P0

d(5);//延迟一小段时间

P3<<=1;//P3数据向左移移位

P0=0xff;//消隐

a++;//显示数据指向下一位

if(a>1) {a=0; P3=0x01;}//第二个数据扫完,指向第一个数据

}

//定时器中断子函数

timer2() interrupt 5

{

static uchar t;

TF2=0;

t++;

if(t==20) //定时够20次即1s

{

t=0; //t清零

sec++; //秒加1

if(sec==60) sec=0; //

}

}

//主函数

void main()

{   //

RCAP2H=(65536-50000)/256;   //

RCAP2L=(65536-50000)%256;   //定时器2定时50MS

TR2=1;   //启动定时器2

ET2=1;   //打开定时器2中断

EA=1;   //开总中断

P3=0x01;

while(1)

{prt();   //显示

}

}

望采纳···

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值