课程设计论文基于51单片机的背光灯系统

上传人:汽*** 文档编号:467105772 上传时间:2023-11-02 格式:DOC 页数:17 大小:414.10KB
返回 下载 相关 举报
课程设计论文基于51单片机的背光灯系统_第1页
第1页 / 共17页
课程设计论文基于51单片机的背光灯系统_第2页
第2页 / 共17页
课程设计论文基于51单片机的背光灯系统_第3页
第3页 / 共17页
课程设计论文基于51单片机的背光灯系统_第4页
第4页 / 共17页
课程设计论文基于51单片机的背光灯系统_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《课程设计论文基于51单片机的背光灯系统》由会员分享,可在线阅读,更多相关《课程设计论文基于51单片机的背光灯系统(17页珍藏版)》请在金锄头文库上搜索。

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()

9、; /*时钟低电平周期大于4s*/ _Nop(); _Nop(); _Nop(); SCL=0; /*清时钟线,钳住I2C总线以便继续接收*/ _Nop(); _Nop(); (2)、LED控制部分#includesbit SCL=P20;sbit SDA=P21;/*红灯变化状态数组*/unsigned char code Red_string32=0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C ,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F;/*绿灯变化数组状态*/unsigned char code Green_string32=0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C ,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号