求单片机数码管倒计时程序 100

要求:使用74HC595和单片机AT89C51共同完成,制作一个红绿灯倒计时程序,两组两位数码管均为60s倒计时,倒计时为零时,重新定时60s,循环即可,最好带protu... 要求:使用74HC595和单片机AT89C51共同完成,制作一个红绿灯倒计时程序,两组两位数码管均为60s倒计时,倒计时为零时,重新定时60s,循环即可,最好带protues的仿真图,谢谢!!!提案好的话可再加分!!!谢谢!!!
需要用C语言,必须使用74HC595完成,谢谢。
展开
 我来答
liuzhou_huang
推荐于2017-12-16 · TA获得超过980个赞
知道小有建树答主
回答量:795
采纳率:93%
帮助的人:266万
展开全部
#include<reg52.h>
#include <intrins.h> //内部包含延时函数 _nop_();
#define uchar unsigned char
#define uint unsigned int sbit d1=P2^0; sbit key1=P0^4;
sbit SDATA_595=P0^0; //串行数据输入 ----接板卡上的SPI 数据信号输入端
sbit SCLK_595=P0^1; //移位时钟脉冲(输入口) ---接板卡上的SPO----串行时钟线----SHcp移位时钟信号输入端
sbit RCK_595=P0^2; //输出锁存器控制脉冲 ----接板卡上SPK STcp锁存信号输入端
uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar num=60;
void delay(uint z);
void aa595_in(uchar Data) {
uchar i;
for(i=0;i<8;i++)
{SCLK_595=0; Data<<=1; SDATA_595=CY;
SCLK_595=1; SCLK_595=0;
}
}
void a595_in(uchar Data) {
uchar i;
for(i=0;i<8;i++) {
SCLK_595=0; Data<<=1; SDATA_595=CY;
SCLK_595=1; SCLK_595=0;
}
}
void aa595_out(void) {
RCK_595=0;
_nop_(); _nop_();
RCK_595=1;
_nop_(); _nop_();
RCK_595=0;
}
void main() {
uchar ge,shi;
while(1) {
if(key1==0) {
delay(10);
if(key1==0)
{d1=0; num--;
if(num==0)
num=60;}
while(!key1);//松手检测
delay(10);//延时10ms
while(!key1);//再松手检测
}
else d1=1;
// aa595_in(duan[num]);
// aa595_in(wei[3]);
shi=num/10;
ge=num%10;
a595_in(duan[shi]);
aa595_in(wei[3]);
aa595_out();
delay(10);
aa595_in(duan[ge]);
aa595_in(wei[2]);
aa595_out();
delay(10);}
}
void delay(uint z) {
uint x,y;
for(x=100;x>0;x--) for(y=z;y>0;y--);
}//延时子程序,延时Zms
追问
有仿真的原理图吗
斛隽u2
2015-05-06 · TA获得超过133个赞
知道答主
回答量:138
采纳率:0%
帮助的人:38.3万
展开全部
这个手里没有现成的,但可以帮你做。程序也不是很复杂。我ID
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式