课程设计(论文)-基于51单片机的背光灯系统.doc
《课程设计(论文)-基于51单片机的背光灯系统.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)-基于51单片机的背光灯系统.doc(18页珍藏版)》请在三一文库上搜索。
1、西安邮电学院专业课程设计报告书院系名称:电子工程学院学生姓名:专业名称:班 级:实习时间:11年5 月 9日 至 11年1 月 20日 1课程设计题目背光灯系统2任务和要求 通过STC89C52、MAX232、NCP5623连接好硬件电路,设计一个简单的背光灯系统,了解协议和5623的功能表以及相关的知识。编写程序控制红、绿、蓝3个LED进行有规律的亮灭。所设计的背光灯系统应该完成以下功能:1、可以实现背光灯系统亮度的调节;2、可以利用三原色实现背光灯系统颜色的调节;3、整个系统的变化过程清晰可辨。3总体方案的选择实验要求设计一个背光灯系统,并实现亮度和颜色的调节。亮度方面,考虑到LED的亮度
2、和通过它的电流成正比,因此可以通过控制电流来实现亮度的调节,注意要加一个限流电阻。颜色方面,考虑到利用红黄蓝三原色可以获得多种颜色,因此通过三原色各自亮度的调节达到颜色的调节。实验流程图:阅读相关资料熟悉实验目的以及要求设计实验进程电路设计程序编写电路的检测程序的调试导入程序观察实验现象实验结束满意不满意4单元电路的设计STC89C52单元电路MAX232单元电路NCP5623单元电路五、总体电路图六、软件部分,I2C协议及LED控制部分。(1)、I2C协议#include#include #include#define NOP() _nop_() /* 定义空指令 */#define _No
3、p() _nop_() /*定义空指令*/sbit SCL=P20; /I2C 时钟 sbit SDA=P21; /I2C 数据 bit ack; /*应答标志位*/* 起动总线函数 函数原型: void Start_I2c(); 功能: 启动I2C总线,即发送I2C起始条件. */void Start_I2c() SDA=1; /*发送起始条件的数据信号*/ _Nop(); SCL=1; _Nop(); /*起始条件建立时间大于4.7us,延时*/ _Nop(); _Nop(); _Nop(); _Nop(); SDA=0; /*发送起始信号*/ _Nop(); /* 起始条件锁定时间大于4
4、s*/ _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; /*钳住I2C总线,准备发送或接收数据 */ _Nop(); _Nop();/* 结束总线函数 函数原型: void Stop_I2c(); 功能: 结束I2C总线,即发送I2C结束条件. */void Stop_I2c() SDA=0; /*发送结束条件的数据信号*/ _Nop(); /*发送结束条件的时钟信号*/ SCL=1; /*结束条件建立时间大于4s*/ _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; /*发送I2C总线结束信号*/ _Nop(); _N
5、op(); _Nop(); _Nop();/* 字节数据发送函数 函数原型: void SendByte(UCHAR c);功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作。(不应答或非应答都使ack=0)发送数据正常,ack=1; ack=0表示被控器无应答或损坏。*/void SendByte(unsigned char c) unsigned char BitCnt; for(BitCnt=0;BitCnt8;BitCnt+) /*要传送的数据长度为8位*/ if(cBitCnt)&0x80)SDA=1; /*判断发送位*/ else SDA=0;
6、 _Nop(); SCL=1; /*置时钟线为高,通知被控器开始接收数据位*/ _Nop(); _Nop(); /*保证时钟高电平周期大于4s*/ _Nop(); _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); SDA=1; /*8位发送完后释放数据线,准备接收应答位*/ _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA=1)ack=0; else ack=1; /*判断是否接收到应答信号*/ SCL=0; _Nop(); _Nop();/* 字节数据接收函数 函数原型: UCHAR RcvByte();功
7、能: 用来接收从器件传来的数据,并判断总线错误(不发应答信号), 发完后请用应答函数应答从机。 */ unsigned char RcvByte() unsigned char retc; unsigned char BitCnt; retc=0; SDA=1; /*置数据线为输入方式*/ for(BitCnt=0;BitCnt8;BitCnt+) _Nop(); SCL=0; /*置时钟线为低,准备接收数据位*/ _Nop(); _Nop(); /*时钟低电平周期大于4.7s*/ _Nop(); _Nop(); _Nop(); SCL=1; /*置时钟线为高使数据线上数据有效*/ _Nop(
8、); _Nop(); retc=retc1; if(SDA=1)retc=retc+1; /*读数据位,接收的数据位放入retc中 */ _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); return(retc);/* 应答子函数函数原型: void Ack_I2c(bit a);功能: 主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)*/void Ack_I2c(bit a) if(a=0)SDA=0; /*在此发出应答或非应答信号 */ else SDA=1; _Nop(); _Nop(); _Nop(); SCL=1; _Nop(); _Nop()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 论文 基于 51 单片机 背光 系统
链接地址:https://www.31doc.com/p-3292585.html