889、基于51单片机的交通灯(数码管,固定时间)

毕设帮助、开题指导、技术解答(有偿)见文末。

目录

一、设计功能

二、proteus仿真

三、原理图

四、程序源码

五、资料包括

一、设计功能

1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51等等都可通用。

2、利用红黄绿三种颜色的LED模拟交通灯,使用数码管显示各个路口的倒计时。

3、可通过修改程序初始值自定义交通灯时间。

二、proteus仿真

三、原理图

四、程序源码

五、资料包括

需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网盘下载地址及提取码。

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个基于51单片机交通灯倒计时程序: ```c #include <reg51.h> #define uint unsigned int #define uchar unsigned char sbit beep = P1^5; sbit red_light = P2^2; sbit yellow_light = P2^1; sbit green_light = P2^0; sbit digit1 = P0^4; sbit digit2 = P0^5; sbit digit3 = P0^6; sbit digit4 = P0^7; sbit seg_a = P1^0; sbit seg_b = P1^1; sbit seg_c = P1^2; sbit seg_d = P1^3; sbit seg_e = P1^4; sbit seg_f = P1^6; sbit seg_g = P1^7; uchar code table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; void delay(uint t) { uint i, j; for (i = 0; i < t; i++) { for (j = 0; j < 110; j++); } } void display(uint num) { digit1 = digit2 = digit3 = digit4 = 1; P0 = table[num % 10]; digit1 = 0; delay(5); P0 = table[num / 10 % 10]; digit2 = 0; delay(5); P0 = table[num / 100 % 10]; digit3 = 0; delay(5); P0 = table[num / 1000 % 10]; digit4 = 0; delay(5); } void main() { uchar i; uint time; while (1) { for (i = 30; i > 0; i--) { red_light = 1; yellow_light = 0; green_light = 0; display(i); if (i == 3) beep = 0; delay(1000); } for (i = 5; i > 0; i--) { red_light = 1; yellow_light = 1; green_light = 0; display(i); if (i == 4) beep = 0; delay(1000); } for (i = 30; i > 0; i--) { red_light = 0; yellow_light = 0; green_light = 1; display(i); delay(1000); } for (i = 5; i > 0; i--) { red_light = 0; yellow_light = 1; green_light = 0; display(i); delay(1000); } } } ``` 其中,`delay()` 函数用于延时一定的时间,`display()` 函数用于在数码管上显示倒计时数字。程序通过循环控制交通灯的倒计时,每个循环中包括红灯倒计时、红黄灯倒计时、绿灯倒计时和黄灯倒计时四个阶段。同时,在倒计时到达一定时间时,程序会发出蜂鸣声提醒。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冠一电子设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值