• 大小: 705KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: C/C++
  • 标签:

资源简介

本论文着重阐述了LED彩灯控制器的设计方法,以AT89C51单片机作为主控核心,按键、数码管等较少的辅助硬件电路相结合,采用模块设计,利用软件实现对LED彩灯进行控制。本系统具有体积小、硬件少、电路结构简单、软件功能完善,控制系统可靠,性价比较高等优点。 论文主要论述了基于单片机的LED彩灯控制器的设计过程。主要工作如下:重点论证了系统方案的选择及其实现方法;全文详细论述了系统的软、硬件电路,其中硬件部分重点介绍了单片机的基本结构和各引脚以及晶振电路、复位电路的工作原理,软件部分重点叙述主程序和子程序的C语言实现;硬件、软件电路调试过程;所有源程序均采用C语言编译,并在Keil uVision2软件里编译、调试;在Proteus环境下实现软、硬件电路仿真。实验结果证明了设计方案的正确性与可行性,以此为理论基础,对我们设计彩灯电路具有很强的使用和参考价值。

资源截图

代码片段和文件信息

#include 

unsigned char RunMode;
//**********************************System Fuction*************************************************
void Delay1ms(unsigned int count)
{
unsigned int ij;
for(i=0;i for(j=0;j<120;j++);
}

unsigned char code LEDDisplayCode[] = { 0xC00xF90xA40xB00x990x920x820xF8 //0~7
                           0x800x900x880x830xC60xA10x860x8E0xFF};

void Display(unsigned char Value)
{
P3 = LEDDisplayCode[Value];
}

void LEDFlash(unsigned char Count)
{
unsigned char i;
bit Flag;
for(i = 0; i {
Flag = !Flag;
if(Flag)
Display(RunMode);
else
Display(0x10);
Delay1ms(100);
}
Display(RunMode);
}

unsigned char GetKey(void)
{
unsigned char KeyTempCheckValueKey = 0x00;
CheckValue = P2&0x32;
if(CheckValue==0x32)
return 0x00;

Delay1ms(10);
KeyTemp = P2&0x32;
if(KeyTemp==CheckValue)
return 0x00;

if(!(CheckValue&0x02))
Key|=0x01;
if(!(CheckValue&0x10))
Key|=0x02;
if(!(CheckValue&0x20))
Key|=0x04;
return Key;
}

unsigned int TimerCountSystemSpeedSystemSpeedIndex;
void InitialTimer2(void)
{
TMOD  = 0x01; //16 Bit Auto-Reload Mode
  TH2 = RCAP2H = 0xFC;//重装值初始值 TL2 = RCAP2L = 0x18;
        TL2 = RCAP2L = 0x18;
ET2=1; //定时器 2 中断允许
TR2 = 1; //定时器 2 启动
EA=1;
}

unsigned int code SpeedCode[]={   1   2   3   5   8  10  14  17  20  30
     40  50  60  70  80  90 100 120 140 160
180 200 300 400 500 600 700 800 9001000};//30
void SetSpeed(unsigned char Speed)
{
SystemSpeed =SpeedCode[Speed];
}

void LEDShow(unsigned int LEDStatus)
{
P1 = ~(LEDStatus&0x00FF);
P0 = ~((LEDStatus>>8)&0x00FF);
}

void InitialCPU(void)
{
RunMode = 0x00;
TimerCount = 0;
SystemSpeedIndex = 10;

P1 = 0x00;
P0 = 0x00;
P2 = 0xFF;
P3 = 0x00;
Delay1ms(500);
P1 = 0xFF;
P0 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
SetSpeed(SystemSpeedIndex);
Display(RunMode);
}

//Mode 0
unsigned int LEDIndex = 0;
bit LEDDirection = 1LEDFlag = 1;
void Mode_0(void)
{
LEDShow(0x0001< LEDIndex = (LEDIndex+1)%16;
}
//Mode 1
void Mode_1(void)
{
LEDShow(0x8000>>LEDIndex);
LEDIndex = (LEDIndex+1)%16;
}
//Mode 2
void Mode_2(void)
{
if(LEDDirection)
LEDShow(0x0001< else
LEDShow(0x8000>>LEDIndex);
if(LEDIndex==15)
LEDDirection = !LEDDirection;
   LEDIndex = (LEDIndex+1)%16;
}
//Mode 3
void Mode_3(void)
{
if(LEDDirection)
LEDShow(~(0x0001< else
LEDShow(~(0x8000>>LEDIndex));
if(LEDIndex==15)
LEDDirection = !LEDDirection;
   LEDIndex = (LEDIndex+1)%16;
}

//Mode 4
void Mode_4(void)
{
if(LEDDirection)
{
if(LEDFlag)
LEDShow(0xFFFE<     else
LEDShow(~(0x7FFF>>LEDIndex));
}
else
{
if(LEDFlag)
LEDShow(0x7FFF>>LEDIndex);
else
LEDShow(~(0xFFFE< }
if(LEDIndex==15)
{
LEDDirection = !LEDDirection;
if(L

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.       162  2010-06-10 17:13  毕业设计\~$毕业论文.doc

     文件     158833  2010-06-06 01:32  毕业设计\仿真\Last Loaded 单片机彩灯.DBK

     文件       5160  2010-05-30 17:37  毕业设计\仿真\单片机彩灯.c

     文件     158822  2010-06-09 18:06  毕业设计\仿真\单片机彩灯.DSN

     文件       3990  2010-05-30 18:45  毕业设计\仿真\单片机彩灯.hex

     文件        742  2010-06-10 11:52  毕业设计\仿真\单片机彩灯.PWI

     文件     748544  2010-06-10 10:49  毕业设计\答辩.ppt

     文件     111104  2010-06-09 19:04  毕业设计\英文翻译.doc

     目录          0  2010-06-10 11:52  毕业设计\仿真

     目录          0  2010-06-10 17:14  毕业设计

     文件     516608  2010-06-09 18:21  毕业设计\毕业论文.doc

----------- ---------  ---------- -----  ----

              1703965                    11


评论

共有 条评论

相关资源