单片机节日彩灯设计,C语言版

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计报告书

课题名称

节日彩灯控制器设计 姓 名 学 号 院、系、部

电气工程系 专 业

电子工程及其自动化 指导教师

2013年 7 月10日

※※※※※※※※※

※※

※ ※※ ※※※※※※※※※

2010级单片机 课程设计

节日彩灯控制器设计

一、设计目的

1、了解节日彩灯控制器的工作原理

2、掌握电路板的实物焊接

3、掌握独立电源设计方法和原理

二、设计要求

1、设计4个按键S0、S1、S

2、S3,

2、S0—开始,按此键则灯开始流动(由上而下)。

3、S1—停止,按此键则停止流动,所有灯为暗。

4、S2—上,按此键则灯由上向下流动。

5、S3—下,按此键则灯由下向上流动。

三、硬件电路设计

3.1系统结构框图

图3-1 系统结构框图

节日彩灯控制系统主要由单片机、LED灯、5V电源及开关组成

3.2 STC89C52单片机最小系统

单片机最小系统包括:单片机,复位电路,晶振电路。

1、单片机的介绍:

VCC:供电电压。GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P0口的管脚第一次写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1

口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚备选功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(计时器0外部输入)

P3.5 T1(计时器1外部输入)

2、复位的介绍:

复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。

单片机的RST引脚为主机提供了一个外部复位信号输入口。复位按键按下以前,RST引脚为低电平。按下复位按键后,RST引脚得到两个机器周期以上的高电平,单片机的复位方式可由手动复位方式完成。

3、晶振的介绍:

外接石英晶体或者陶瓷谐振器以及电容C1、C2接在放大器的反馈回路(AT89C52内部有一个用于构成内部振荡器的高增益反相放大电路,XTAL1、XTAL2分别是该放大器的输入和输出端)中构成并联振荡电路。

为了使装置能够被外部时钟信号激活,XATL1应该有效,而XTAL2应该被悬空。由于输入到内部的时钟信号电路通过了一个二分频的信号,外部信号的工作周期比没有别的要求,但是最大值和最小值的大小可以在数据表上观察出来。

3.3 LED显示电路

主要由8个LED灯与保护电阻组成

图3-3 LED灯显示电路

3.4系统电路原理图

由按键控制功能的LED工作的方式,其中的LED采取共阳极接法通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能

图3-4系统电路原理图

四、软件设计

4.1设计思路

本设计由主程序、子程序和延时程序组成。其中,子程序的关键在于设计了两个数组,通过数组中的初始数值控制二极管的亮、灭。主程序除了调用二极管显示子程序外,还一直保持查询是否有功能键按下,一旦有按键按下,就会进入相应的按键处理,实现对发光二极管的控制。

4.2程序流程图

图4-1 程序流程图

五、源程序

#include

#define uint unsigned int

#define uchar unsigned char

void san();

void wu();

void delay(uint);

sbit key2=P3^5;//关闭彩灯的开关

sbit key1=P3^4;//启动彩灯的开关

sbit key3=P3^3;//控制彩灯右移的开关

sbit key4=P3^1;//控制彩灯左移的开关

uchar temp;//定义一个无符号字符型数据变量

uchar temp1;//定义一个无符号字符型数据变量uchar temp2;/定义一个无符号字符型数据变量

uint a;

int c;

void main()//主程序

{

while(1)//判断哪个开关被按下

{

if(key1==0)

{

san();

}

if(key2==0)

{

P1=0xff;

}

if(key3==0)

{

san();

}

if(key4==0)

{

wu();

}

}

}

相关文档
最新文档