标题: 求大神修改成数码管倒计时60秒 [打印本页]
作者: qq1234qq 时间: 2018-5-31 15:09
标题: 求大神修改成数码管倒计时60秒
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit shiw=P2^0;
sbit gew=P2^1;
uchar code digit[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xff};
uchar num,num2,shi,ge;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display()
{
P2=0xff;
P1=digit[shi];
shiw=0;
delayms(5);
P2=0xff;
P1=digit[ge];
gew=0;
delayms(5);
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display();
}
}
void T1_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num2++;
if(num2==20)
{
num2=0;
num++;
if(num==60)
num=0;
shi=num/10;
ge=num%10;
}
}
作者: QIANLILI 时间: 2018-5-31 16:36
按你的程序,已修改成倒计时。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit shiw=P2^0;
sbit gew=P2^1;
uchar code digit[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xff};
uchar num,num2,shi,ge;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display()
{
P2=0xff;
P1=digit[shi];
shiw=0;
delayms(5);
P2=0xff;
P1=digit[ge];
gew=0;
delayms(5);
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
num=60; //两位数显示,这里最大是99
shi=num/10;
ge=num%10; //这两句用于开始就显示设定的数值。
while(1)
{
display();
}
}
void T1_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num2++;
if(num2==20)
{
num2=0;
num--; //这里依次减数
if(num==0) //当数值减至0时
num=60; //重新赋值 跟初始值一样就可
shi=num/10;
ge=num%10;
}
}
作者: angmall 时间: 2018-5-31 17:58
请參考下靣程序看看
- //修改成数码管倒计时60秒
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit shiw=P2^0;
- sbit gew =P2^1;
- uchar code digit[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xff};
- uchar num=60,num2,shi,ge; //修改
- void delayms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void display()
- {
- P2=0xff;
- P1=digit[shi];
- shiw=0;
- delayms(5);
- P2=0xff;
- P1=digit[ge];
- gew=0;
- delayms(5);
- }
- void main()
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
- display();
- }
- }
- void T1_time() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- num2++;
- if(num2==20)
- {
- num2=0;
- num--; //修改
- if(num==0) //修改
- num=60; //修改
- shi=num/10;
- ge=num%10;
- }
- }
复制代码
作者: zl2168 时间: 2018-6-1 07:21
实例96 能预置初值的倒计时秒表
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,书中电路和程序设计有详细说明,电路与程序真实可靠可信可行,程序语句条条有注解。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |