西安邮电大学。
1.课程设计题目。
led背光灯系统。
2.任务和要求。
任务:通过stc89c52、max232、ncp5623、i2c总线组合连接硬件电路,设计一个简单的背光灯系统,了解传输协议和ncp5623的功能表以及其工作原理。编写程序控制红、绿、蓝3个led进行有规律的亮灭。
要求:所设计的背光灯系统应该完成以下功能:
1、可以让红绿蓝三个灯按不同顺序,不同花样亮;
2、可以实现红绿蓝三个灯亮暗的调节;
3、整个系统的变化过程清晰可辨,且与程序相对应。
3.总体方案的选择。
本次课程设计要求用stc89c52、ncp5623、max232等其它器件设计一个背光灯系统,并实现亮度和颜色的调节。
亮度方面,考虑到led的亮度和通过它的电流成正比,因此可以通过控制电流来实现亮度的调节,注意要加一个限流电阻。
颜色方面,考虑到利用红黄蓝三原色可以获得多种颜色,因此通过三原色各自亮度的调节达到颜色的调节。
根据i2c传输协议以及ncp5623的功能表编写程序,控制led灯按不同顺序,不同亮度工作。
总体设计方案框图如下:
4.单元电路的设计。
1)电平转换电路。
由于stc89c52的工作电压在0到+5伏,而从usb线传过来的电压不满足此要求,所以要先进行电压的转换。利用max232实现此功能。
max232的具体管脚分布以及外扩电路如图所示:
在实际的操作中c3、c5、c6、c7、c8的大小选择的是1μf。9号和10号管脚是和单片机stc89c52的p2^4和p2^2相连的。
2)stc89c52单元电路。
单片机stc89c52的管脚分布和外扩电路如下图:
单片机的10号和11号管脚是和max232的9号和10号连接的,单片机的25号和23号即p2^4和p2^2是和ncp的9号和11号即sda和scl相连的。
3)ncp5623单元电路。
ncp5623的管脚分布和外扩电路如下图。
ncp5623的1号、7号、8号、14号管脚是悬空的。9号接单片机的p2^0411号接单片机的p2^2。
5.总体电路图。
6.软件部分。
1)i2c协议。
i2c总线只有两根双向信号线。一根是数据线sda,另一根是时钟线scl。
iic总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
scl线为高电平期间,sda线由高电平向低电平的变化表示起始信号;scl线为高电平期间,sda线由低电平向高电平的变化表示终止信号。
起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。
连接到i2c总线上的器件,若具有i2c总线的硬件接口,则很容易检测到起始和终止信号。
接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将scl线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放scl线使之为高电平,从而使数据传送可以继续进行。
每一个字节必须保证是8位长度。数据传送时,先传送最高位(msb),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。
如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。
当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放sda线,以允许主机产生终止信号。
2)led控制部分。
ncp5623控制三色led灯的真值表:
根据表里的描述变换区间控制led使其按不同方式亮。
7.设计过程中发生的问题及解决的方法。
1)起初看到ncp5623的功能表感觉无从下手,根本看不懂是什么意思,后来查阅了好多资料才知道**里的数据到底是控制什么的,才有思路去写程序。
2)将max232和stc模块电路搭建好之后,用led检验电路是否连通时发现电路不亮。用万用表检测电路的各个部分后发现面包板的有些部分并未连通,后来将整个面包板都接通了,才能正常工作了。所以在用面包板时一定要先将面包板的各个部位连通,以免造成以后工作的不便。
3)程序编号后,烧到板子上发现灯不亮,仔细检查了ncp5623部分发现12个13管脚接到地上了,而应该将这两个管脚接到电源上。并且要连接一个旁路电容。
4)当电路可以实现简单的控制后,在此基础上多加了一些功能,发现灯在变化的过程**现乱码,仔细检查程序发现没有将电流的控制部分加进去。
8.分析和总结。
1)由于自己以前学过单片机,所以做起来相对简单一些,连电路很容易,主要是写程序部分,怎样把程序写的更完美,功能实现的越多,都是要考虑的部分。
2)此次实习让我对51单片机有了更深一步的了解,只要搭配不同的芯片就可以实现不同的功能。在搭电路时一定要看清楚芯片的1管脚,不能将其插错,否则很容易烧坏芯片。
1.3在这次设计过程中,体现出自己单独设计背光灯的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
9.参考文献。
郭天祥的《51单片机c语言教程》
10.过程考核表和成绩鉴定表。
西安邮电大学电子工程学院专业课程设计过程考核表。
西安邮电大学电子工程学院专业课程设计成绩鉴定表。
11. 所有的程序按功能命名后附在文件后面。
具体**如下:
#include<>头文件。
#include <>
#define uint unsigned int宏定义。
#define uchar unsigned char
sbit scl=p2^1; /i2c时钟总线。
sbit sda=p2^0; /i2c数据总线。
uchar rtab[10]=;
uchar gtab[10]=;
uchar btab[10]=;
/在32个数据中均匀的挑出十个数据。
uchar rr[10]=;
uchar gr[10]=;
uchar br[10]=;
延时函数。void delay延迟微秒级别,主要用来表示i2c总线工作时上升沿及下降沿变化时的延迟。
uchar i,j;
for(i=0;i<=7;i++)
void delay1ms(uint z)
uint x,y;
for (x=z;x>0;x--)
for (y=111;y>0;y--)
void delay_50us(uint t)
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--)
void delay_50ms(uint t)
uchar j;
for(;t>0;t--)
for(j=6425;j>0;j--)
***起动总线函数***
void start_i2c() 在时钟为高电平时,给数据一个下降沿脉冲。
sda=1发送起始条件的数据信号。
delay();
scl=1;
delay起始条件建立时间大于4.7us,延时*/
sda=0发送起始信号*/
delay();
结束总线函数。
void stop_i2c() 在时钟为高电平时,给数据一个上升沿脉冲。
sda=0; /发送结束条件的数据信号*/
delay();
scl=1; /结束条件建立时间大于4μs*/
delay();
sda=1; /发送i2c总线结束信号*/
delay();
***字节数据发送函数。
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...