任务:利用单片机的数码管和led灯来实现红绿灯,要求数码管倒计时;有红灯35秒,黄灯5秒,绿灯30秒并配合led灯,利用中断和定时器实现。
求源代码
求51单片机的红绿灯设计的源代码
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 流比 2023-01-30 17:46关注
以下代码仅提供参考
#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int #define LED P0 // 定义LED接口 uchar LED_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管码表 void delay(uint xms) //延时xms的函数 { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void show_LED(uchar num) //数码管显示 { P2=0xff; P0=LED_code[num]; P2=0xfe; } void timer0() interrupt 1 //定时器0中断函数 { static uchar cnt=35; //定义计数器cnt TH0=(65536-50000)/256; TL0=(65536-50000)%256; //重新赋值,实现0.01s的延时 cnt--; if(cnt==0) //当计数器为0时 { LED=0xff; //红灯亮 cnt=35; //cnt重新赋值为35,从35s开始倒计时 } if(cnt==30) //当计数器为30时 { LED=0x00; //绿灯亮 cnt=30; //cnt重新赋值为30,从30s开始倒计时 } if(cnt==5) //当计数器为5时 { LED=0x7f; //黄灯亮 cnt=5; //cnt重新赋值为5,从5s开始倒计时 } show_LED(cnt); //显示数码管 }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 Visual Studio问题
- ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
- ¥20 求一个html代码,有偿
- ¥100 关于使用MATLAB中copularnd函数的问题
- ¥20 在虚拟机的pycharm上
- ¥15 jupyterthemes 设置完毕后没有效果
- ¥15 matlab图像高斯低通滤波
- ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
- ¥15 钢筋实图交点识别,机器视觉代码
- ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)