找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

真心求助,自己正在做的一个单片机交通灯实验

查看数: 2317 | 评论数: 4 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-10-4 01:04

正文摘要:

题主刚刚休学两年回来读大三,有点笨基础也薄弱,学校布置了一个带救护车的交通灯实验,自己又刚刚学习了数组和计时器,想先至少把无中断的信号灯制作出来,学校为了学生方便计算规定的晶振是6MHz,这里是我自己设想 ...

回复

ID:1086350 发表于 2023-7-1 10:47
请问这个要分时控制吗
ID:1043225 发表于 2022-10-4 18:08
wulin 发表于 2022-10-4 09:24
楼主代码主函数名错误,灯排列要与数组相对应。

原来是这个问题噗()感谢您!帮大忙了!
ID:213173 发表于 2022-10-4 09:24

楼主代码主函数名错误,灯排列要与数组相对应。



  1. #include<reg52.h>
  2. unsigned char code Ledchar[]={
  3. 0x81,0x81,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x01,0x01,0x41,0x41,
  4. 0x01,0x01,0x41,0x41,0x01,0x01,0x41,0x41,0x01,0x01,0x41,0x41,0x01,0x01,0x41,0x41,
  5. 0x81,0x81,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x80,0x80,0x82,0x82,
  6. 0x80,0x80,0x82,0x82,0x80,0x80,0x82,0x82,0x80,0x80,0x82,0x82,0x80,0x80,0x82,0x82};

  7. //void mian()
  8. void main()
  9. {
  10.         unsigned char cnt = 0;
  11.         unsigned char sec = 0;
  12.         TMOD = 0x01;
  13.         TH0 = 0x3C;
  14.         TL0 = 0xB0;
  15.         TR0 = 1;
  16.         TF0 = 0;
  17. //        ET0 = 1;
  18. //        EA = 1;
  19.         P0 = 0x42;
  20.         while(1)
  21.         {
  22.                 if(TF0 == 1)
  23.                 {
  24.                         TF0 = 0;
  25.                         TH0 = 0x3C;
  26.                         TL0 = 0xB0;
  27.                         P0 = Ledchar[sec];
  28.                         cnt++;
  29.                         if(cnt>=10)
  30.                         {
  31.                                 cnt = 0;       
  32.                                 sec++;
  33.                                 if(sec>=64)
  34.                                 {
  35.                                         sec = 0;
  36.                                 }
  37.                         }
  38.                 }
  39.         }
  40. }
复制代码



小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表