三色背光灯设计理论方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安邮电大学
专业课程设计报告书
院系名称:电子与信息工程学院学生姓名:
学号
专业名称:光电子技术系
班级:
实习时间:
1.课程设计题目
利用单片机控制GRB三原色背光系统
2.任务和要求
(1)收集资料和熟悉相关内容——包括单片机最小系统设计,I2C总线协议,
用grb三原色led实现背光的概念,单片机c语言编程和开发环境。
(2)连接调试stc89c52单片机最小系统,可以运行简单的程序。焊接和连接ncp5623,并将其最小系统一起连接。
(3)进一步熟悉开发环境,编写程序,调试整个系统,实现资料上所列的几个功能,也就是使三种颜色的灯组合成不同的颜色来变化,同时形成不同的花色。(4)撰写课程设计报告要遵守一定的规范和要求,即课程设计报告书写工整、语句通顺、数据准确、图表清晰。
3.总体方案的选择
总体方案的选择:
图1 总体设计选择
(1)硬件部分:根据设计的电路图,焊接好好电路,得到完整的电路系统。
(2)软件部分:在软件Keil uVision2环境下调试程序,最终实现I2C协议及LED 控制部分,用STC_ISP_V486采取串口的方式下载到相应的设计电路板中。(3)模块化分3部分:MAX232EJE电路、STC89C52电路以及NCP5623电路。总的设计系统如下:
图2总的设计系统
4.单元电路的设计
根据总体方案原理框图,确定对各单元电路的设计要求,这时应全面检查确定无误后,才可以设计具体的单元电路。每个单元电路应该画出具体的电路图,需要计算出元件参数。设计单元电路时,要注意元器件的选择。
(1)MAX232EJE电路:
经过设计与计算得到所需要的器件如下:6个100pf电容、MAX232EJE一个、数据传输端口、USB端口
图3 MAX232EJE电路:
(2)STC89C52电路:
经过设计与计算得到所需要的器件如下:晶振一个、2个30pf电容、8.2?
k电阻一个、STC89C52一个、10uf电容
图4 STC89C52电路
(3)NCP5623电路:
经过设计与计算得到所需要的器件如下:2个1uf/6.3V电容、红绿蓝三个灯62? k电阻一个、NCP5623一个
图5 NCP5623电路
5.画总体电路图。
根据各部分之间的关系得到总的电路图如下:
图6 各部分与整体电路图
6.软件部分,I2C协议及LED控制部分。
图7 I2C协议的总程序程序图
①起动总线函数与结束总线函数:
在I2C总线上每传输一位数据,都有一个时钟脉冲相对应,其逻辑“0”和“1”的信号电平取决于该点的正端电源VDD的电压。I2C总线数据传输时,在时钟线高电平期间数据线上必须保持有稳定的逻辑电平状态,高电平为数据1,低电平为数据0。只有在时钟线为低电平时,才允许数据线上的电平变化。I2C总线数据传送时有两种时序状态被分别定义为起始信号和终止信号。
起始信号:在时钟线保持高电平期间,数据线在由高电平到低电平变化时启
中动I2C总线,为I2C总线的起始信号。
终止信号:在时钟线保持高电平期间,数据线在由低电平到高电平变化时将停止I2C总线的数据传送,为I2C总线的终止信号。起始信号和终止信号都是由主控制器产生。总线上带有I2C总线接口的器件很容易检测到这些信号。但是对于不具备这些硬件接口的单片机来说,为了能准确地检测到这些信号,必须保证在
总线的一个时钟周期内对数据线至少进行两次采样。
void Start_I2c()
{
SDA=1; /*发送起始条件的数据信号*/
delay();
SCL=1;
delay(); /*起始条件建立时间大于4.7us,延时*/
SDA=0; /*发送起始信号*/
delay();
}
写控制字
起动总线函数结束总线函数
字节数据发送函数I2C 协议
void Stop_I2c()
{
SDA=0; /*发送结束条件的数据信号*/
delay();
SCL=1; /*结束条件建立时间大于4μs*/
delay();
SDA=1; /*发送I2C总线结束信号*/
delay();
}
②字节数据发送函数
字节数据发送函数字节数据发送函数字节数据发送函数,在没有时钟信号时,数据传送将停止进行,接口的线与特征将使SCL在低电平时钳住总线。这种情况可以用于当接收器接收到一个字节数据后要进行一些其他工作而无法立即接收下一个数据时,迫使总线进入等待状态,直到接收器准备好接收新数据时再释放时钟线使数据传送得以继续正常进行。例如,当接收器接收完主控制器的一个字节数据后,产生中断信号并进行中断处理,中断处理完毕后才能接收下一个字节数据,这时接收器在中断处理时钳住SCL为低电平直到中断处理完毕才释放SCL。
void SendByte(uchar dat)
{
uchar i;
SCL=0;
for(i=0;i<8;i++)
{
if(dat&0x80)
{
SDA=1;
}
else
{
SDA=0;
}
dat=dat<<1;
delay();
SCL=1;
delay();
SCL=0;
delay();
}
SDA=1;
delay();
}
void ack(void) {
uchar i;
SCL=1;
delay();
while((SDA==1)&&(i<200))i++;
SCL=0;
delay();
}
void init(void)
{
SCL=1;
SDA=1;
}
③写控制字
主控器发送起始信号后,立即发送寻址字节,这时,总线上的所有器件都将寻址字节中的7位地址与自己器件地址相比较,如两者相同,则该器件认为被主
控器寻址,并根据读写位确定是被控发送器或被控接收器。
void write_byteNCP(uchar dat)
{
init();
Start_I2c();
SendByte(0x70); //芯片地址
ack();
SendByte(dat);
ack();
Stop_I2c();
}
void mie()
{
write_byteNCP(0x00);
delay_50ms(20);
}