找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于单片机的节日彩灯控制电路与程序设计报告与资料

[复制链接]
跳转到指定楼层
楼主
一、任务

  以单片机为核心,设计一个节日彩灯控制器。

二、设计要求
以单片机为核心,设计一个节日彩灯控制器,要求有四个控制按键:


             第5章  系统调试与测试结果分析
5.1  使用的调试工具及调试环境
1  调试工具
本设计调试工具采用电脑、单片机仿真以及5V直流稳压电源
2  调试环境
地点:
室温:30 ℃
2  系统调试
根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试,最后将各模块组合后进行整体测试
1硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。通过kill软件烧录下载到硬件中验证功能。
2软件调试
    软件调试采用单片机仿真器及微机,将编好的程序进行调试,主要是检查语法错误。
3硬件软件联
将调试好的硬件和软件进行联调,主要调试系统的实现功能。
3  测试结果及状态分析
此次系统设计结果较好,经Proteus软件仿真系统的调试,可检测出仿真电路正常;对应按键按下,彩灯出现不同花型,实现了多控制、多闪烁的LED彩灯循环;经以上仿真测试证实,本设计能实现设计系统要求的预期功能。
                        
本次课程设计以STC89C51单片机作为主控核心,按键控制电路、彩灯显示电路以及单片机最小系统等模块组成的核心主控制电路,利用软件编程烧录程序到单片机来实现对LED节日彩灯的控制。
通过软硬件的仿真调试,对彩灯控制器的运行成果感觉比较满意,它实现了我们要求达到的目标,实现了多控制、多闪烁方式的LED节日彩灯循环,并且用快慢两种节拍实现花型交换。本系统亮灯模式多,可根据操作提示随意变换想要的闪烁方式。同时本设计具有电路结构简单、易操作、硬件少、体积小、成本低、低能耗等优点,具有一定的实用和参考价值。
但是在设计中也出现了一些问题:Proteus仿真软件不是很稳定,造成仿真页面奔溃,另外硬件调试程序时出现了延时问题等。这种都是以后的工作当中需要注意并解决的问题。


参考文献[1] 刘宏.电子工艺实习,华南理工大学出版社,2011.
[2] 邓奕.电子线路CAD实用教程,华中科技大学出版社,2013
[3] 康华光.电子技术基础.高等教育出版社,2006.
[4] 手把手教你学51单片机C语言版,宋雪松,清华大学出版社。2010
[5] C语言程序设计,谭浩强,清华大学出版社,2010

单片机源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char          //宏定义
  3. #define uint unsigned int

  4. sbit k1=P1^2;                  //位定义
  5. sbit k2=P1^3;
  6. sbit k3=P1^4;
  7. sbit k4=P1^5;

  8. uchar a=0;                //定义所需变量
  9. uchar b;

  10. uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};          //从上到下流水数组
  11. uchar code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};          //从下到上流水数组

  12. void delay_ms(uint xms)                                //延时函数
  13. {
  14.         uint i,j;
  15.         for(i=xms;i>0;i--)
  16.                 for(j=110;j>0;j--);
  17. }

  18. void key_scan(uchar b)                                 //按键扫描
  19. {
  20.                 if(b==1)                                                        //若K1按下
  21.                 {
  22.                         while(k2==1&&k3==1&&k4==1)
  23.                         {
  24.                                 for(a=0;a<8;a++)                   //执行从上到下流水操作
  25.                                 {
  26.                                         P0=table1[a];
  27.                                         delay_ms(100);
  28.                                 }
  29.                                 a=0;
  30.                     }               
  31.                 }

  32.                 if(b==2)                                                        //若K2按下
  33.                 {
  34.                         while(k1==1&&k3==1&&k4==1)
  35.                         {                                                                //P0全部输出高电平,关闭LED
  36.                                 P0=0xff;
  37.                         }
  38.                 }

  39.                 if(b==3)                                                        //若K3按下
  40.                 {
  41.                         while(k1==1&&k2==1&&k4==1)
  42.                         {
  43.                                 for(a=0;a<8;a++)                        //执行从下到上流水操作
  44.                                 {
  45.                                         P0=table2[a];
  46.                                         delay_ms(100);
  47.                                 }
  48.                                 a=0;
  49.                         }
  50.                 }

  51.                 if(b==4)                                                        //若K4按下
  52.                 {
  53.                         while(k1==1&&k2==1&&k3==1)
  54.                         {
  55.                                 P0=0xaa;                                        //奇偶位分别点亮
  56.                                 delay_ms(100);
  57.                                 P0=0x55;
  58.                                 delay_ms(100);
  59.                         }
  60.                 }        
  61. }

  62. void main(void)                                                                //主函数
  63. {

  64.         TMOD=0X01;                                                                //定时器中断初始化
  65.         TH0=(65536-1000)/256;
  66.         TL0=(65536-1000)%256;
  67.         EA=1;
  68.         ET0=1;
  69.         TR0=1;

  70.         while(1);
  71.         
  72. }
  73. ……………………

  74. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
电工1512班 周苗 节日彩灯控制器.zip (106.51 KB, 下载次数: 60)


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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