找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10493|回复: 10
打印 上一主题 下一主题
收起左侧

单片机电子灯箱控制器源码-小项目分享

  [复制链接]
跳转到指定楼层
楼主
ID:74187 发表于 2018-10-12 09:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家都见过电子灯箱吧,就是路边那种闪烁的,这种东西的逻辑控制很简单,就是周边流水灯循环跑马灯,正转10圈,反转10圈,然后同时闪烁3秒,中间的字体是亮5秒,闪烁3秒,依次循环,逻辑不难,我们用开发板上的小灯来实现这样的效果,代码如下: 005 电子灯箱控制器.rar (33.82 KB, 下载次数: 74)

  1. /********************************************************
  2. *描述:8组小灯正转10圈,反转10圈,常亮5秒,闪烁3秒,依次循环
  3. ********************************************************/
  4. #include "stc15w.h"
  5. #include "intrins.h" //包含左移和右移指令
  6. #include "string.h"         //字符串
  7. #include "stdio.h"         //标准输入输出



  8. /*******************************************************************************
  9. * 文件名:位定义
  10. * 描  述:
  11. * 功  能:
  12. * 作  者:大核桃
  13. * 版本号:1.0.1(2017.05.23)
  14. *******************************************************************************/

  15. bit flag500ms = 0;//500ms翻转一次

  16. sbit LED0 = P1^0;//
  17. sbit LED1 = P1^1;
  18. sbit LED2 = P1^2;
  19. sbit LED3 = P1^3;
  20. sbit LED4 = P1^4;
  21. sbit LED5 = P3^2;
  22. sbit LED6 = P0^0;
  23. sbit LED7 = P0^1;

  24. sbit DATA0 = P2^0;//
  25. sbit DATA1 = P2^1;//
  26. sbit DATA2 = P2^2;//
  27. sbit DATA3 = P2^3;//
  28. sbit DATA4 = P2^4;//
  29. sbit DATA5 = P2^5;//
  30. sbit DATA6 = P2^6;//
  31. sbit DATA7 = P2^7;//

  32. typedef unsigned char uint8;//0-255
  33. typedef unsigned int  uint16;//0-65535
  34. typedef unsigned long uint32;//0-65535*65535

  35. /*******************************************************************************
  36. * 文件名:函数前置声明
  37. * 描  述:
  38. * 功  能:
  39. * 作  者:大核桃
  40. * 版本号:1.0.1(2017.05.23)
  41. *******************************************************************************/

  42. void Bsp_Power_Init(void);
  43. void Delay500ms();                //@11.0592MHz
  44. void Timer0Init(void);                //1毫秒@11.0592MHz



  45. /*******************************************************************************
  46. * 文件名:主循环入口
  47. * 描  述:
  48. * 功  能:
  49. * 作  者:大核桃
  50. * 版本号:1.0.1(2017.05.23)
  51. *******************************************************************************/
  52. void main(void)
  53. {
  54.         uint8 i = 0;

  55.         Bsp_Power_Init();//LED端口初始化
  56.         Timer0Init();    //定时器0初始化函数

  57.         LED0 = 1;


  58.         while(1)
  59.         {
  60.            for(i = 0; i < 3; i++)
  61.            {
  62.                         DATA0 = 0;
  63.                         Delay500ms();
  64.                         DATA0 = 1;
  65.                         Delay500ms();

  66.                         DATA1 = 0;
  67.                         Delay500ms();
  68.                         DATA1 = 1;
  69.                         Delay500ms();

  70.                         DATA2 = 0;
  71.                         Delay500ms();
  72.                         DATA2 = 1;
  73.                         Delay500ms();

  74.            }

  75.                    for(i = 0; i < 3; i++)
  76.            {
  77.                         DATA2 = 0;
  78.                         Delay500ms();
  79.                         DATA2 = 1;
  80.                         Delay500ms();

  81.                         DATA1 = 0;
  82.                         Delay500ms();
  83.                         DATA1 = 1;
  84.                         Delay500ms();

  85.                         DATA0 = 0;
  86.                         Delay500ms();
  87.                         DATA0 = 1;
  88.                         Delay500ms();

  89.            }

  90.                    for(i = 0; i < 3; i++)
  91.            {
  92.                         DATA2 = 0;
  93.                         DATA1 = 0;
  94.                         DATA0 = 0;
  95.                         Delay500ms();

  96.                         DATA2 = 1;
  97.                         DATA1 = 1;
  98.                         DATA0 = 1;
  99.                         Delay500ms();

  100.            }
  101.         }

  102. }

  103. /*******************************************************************************
  104. * 文件名:void Bsp_Power_Init()
  105. * 描  述: 数码管上电显示
  106. * 功  能:编程模块化
  107. * 作  者:大核桃
  108. * 版本号:1.0.1(2017.05.23)
  109. *******************************************************************************/
  110. void Bsp_Power_Init(void)
  111. {
  112.         P0M1 = 0xFC;
  113.         P0M0 = 0X03;
  114.         P0 = 0X00;

  115.         P1M1 = 0xE0;
  116.         P1M0 = 0X1F;
  117.         P1 = 0X00;


  118.         //P2口开漏输出
  119.         P2M1 = 0XFF;
  120.         P2M0 = 0XFF;
  121.         P2 = 0Xff;
  122. //        //P54,P55口为推挽输出
  123.         P5M1 = 0X00;
  124.         P5M0 = 0X00;
  125.         P5 = 0xFF;

  126.         //P37,P36,3.2,P3.3 P3.4口为推挽输出
  127.         P3M1 = 0X00;
  128.         P3M0 = 0XFC;
  129.         P3 = 0X23;

  130. }

  131. /*******************************************************************************
  132. * 文件名:void Delay500ms()                //@11.0592MHz
  133. * 描  述: 普通延时函数
  134. * 功  能:编程模块化
  135. * 作  者:大核桃
  136. * 版本号:1.0.1(2017.05.23)
  137. *******************************************************************************/
  138. void Delay500ms()                //@11.0592MHz
  139. {
  140.         unsigned char i, j, k;

  141.         _nop_();
  142.         _nop_();
  143.         i = 22;
  144.         j = 3;
  145.         k = 227;
  146.         do
  147.         {
  148.                 do
  149.                 {
  150.                         while (--k);
  151.                 } while (--j);
  152.         } while (--i);
  153. }

  154. /*******************************************************************************
  155. * 文件名:void Timer0Init(void)
  156. * 描  述: 定时器0配置
  157. * 功  能:编程模块化
  158. * 作  者:大核桃
  159. * 版本号:1.0.1(2017.05.23)
  160. *******************************************************************************/
  161. void Timer0Init(void)                //1毫秒@11.0592MHz
  162. {
  163.         AUXR |= 0x80;                //定时器时钟1T模式
  164.         TMOD &= 0xF0;                //设置定时器模式 1111_
  165.         TMOD |= 0X01;       //16位模式,不可重装

  166. //        TL0 = 0xCD;                    //设置定时初值
  167. //        TH0 = 0xD4;                     //设置定时初值

  168.         TL0 = (65535 - 11059) % 256;                    //设置定时初值
  169.         TH0 = (65535 - 11059) / 256;                     //设置定时初值


  170.         ET0 = 1;            //打开定时器0中断使能
  171.         TR0 = 1;                    //定时器0开始计时
  172.         EA = 1;             //打开总中断使能
  173. }

  174. void TIME0_IRQ_Handler() interrupt 1
  175. {
  176.         static uint16 tmr10ms = 0;
  177.         static uint8  tmr3s = 0;
  178.         static uint8  tmr5s = 0;
  179.         static uint8 a = 0;

  180.         TL0 = (65535 - 11059) % 256;                    //设置定时初值
  181.         TH0 = (65535 - 11059) / 256;                     //设置定时初值

  182.         //1ms溢出一次
  183.         tmr10ms++;

  184.         if(a)
  185.         {
  186.                 if(tmr10ms >= 500)
  187.                 {
  188.                         tmr10ms = 0;
  189.                         DATA4 = ~DATA4;//500ms闪烁依次
  190.                         tmr3s++;
  191.                 }

  192.                 if(tmr3s >= 6)
  193.                 {
  194.                     tmr3s = 0; //闪烁3次
  195.                         a = 0;
  196.                 }
  197.                         
  198.         }
  199.         else
  200.         {
  201.                 if(tmr10ms >= 500)
  202.                 {
  203.                         tmr10ms = 0;
  204.                         DATA4 = 0; //亮5秒
  205.                         tmr5s++;
  206.                 }

  207.                 if(tmr5s >= 10)
  208.                 {
  209.                     tmr5s = 0;
  210.                         a = 1;
  211.                 }         
  212.         }                                
  213. }

复制代码




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏10 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:393796 发表于 2018-10-23 23:40 | 只看该作者
好东西呀!顶起来
回复

使用道具 举报

板凳
ID:405817 发表于 2018-10-30 13:19 | 只看该作者
谢谢楼主的分享精神。
回复

使用道具 举报

地板
ID:140706 发表于 2018-11-11 11:06 | 只看该作者
谢谢楼主的分享,好东西
回复

使用道具 举报

5#
ID:426965 发表于 2018-11-20 17:25 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

6#
ID:452412 发表于 2018-12-25 14:07 | 只看该作者
谢谢楼主的分享,好东西
回复

使用道具 举报

7#
ID:461544 发表于 2019-4-26 22:54 | 只看该作者
感谢分享
回复

使用道具 举报

8#
ID:579509 发表于 2019-7-8 18:16 | 只看该作者
努力学习中
回复

使用道具 举报

9#
ID:584509 发表于 2019-7-16 15:33 | 只看该作者
谢谢楼主的分享,好东西
回复

使用道具 举报

10#
ID:476623 发表于 2022-10-25 20:55 | 只看该作者
楼主辛苦了!下载了学习学习。
回复

使用道具 举报

11#
ID:1049825 发表于 2022-10-31 20:45 | 只看该作者
学以致用,相辅相成,赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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