PIC16F883和TLC5615(DA)数模转化实验,呼吸灯
2012-07-06 00:00
288 查看
今天上课做了数模转换的实验。感觉很好玩,在这里写下。
器材:PIC16F883控制芯片、TLC5615、LED灯一个、电阻一个(1K)、PICkit2下载器
实验说明,本实验采用I/O模拟方法实现数模转换,转换结果输出到LED引脚。LED呈现呼吸似的缓慢闪烁。
实验电路图:
RC3连接SCLK、RC5连接Din、RC2连接CS。
输入DA的数字从0加到1024(DA为10位),再从1024减到0。中间最亮的时候做了一点儿延时。
LED灯接一个电阻到地,另一端接DA的模拟输出引脚。
实验中比较重要的时序图:
根据这个时序图,我周期性的给引脚的电位置1和置0。
代码如下:
可以在每完成一个数据的输入后嘴一个延时来减慢LED灯的亮灭速度。看起来就是呼吸的效果。
如果有任何问题,请您跟我联系!感谢您的光临!
器材:PIC16F883控制芯片、TLC5615、LED灯一个、电阻一个(1K)、PICkit2下载器
实验说明,本实验采用I/O模拟方法实现数模转换,转换结果输出到LED引脚。LED呈现呼吸似的缓慢闪烁。
实验电路图:
RC3连接SCLK、RC5连接Din、RC2连接CS。
输入DA的数字从0加到1024(DA为10位),再从1024减到0。中间最亮的时候做了一点儿延时。
LED灯接一个电阻到地,另一端接DA的模拟输出引脚。
实验中比较重要的时序图:
根据这个时序图,我周期性的给引脚的电位置1和置0。
代码如下:
#include<htc.h> #define uchar unsigned char #define uint unsigned int #define CLK RC3 #define DATA_IN RC5 #define CS RC2 void delay(uint x) { uint a,b; while(x--) { b = 0x00ff; while(b--) { a = 0x00ff; while(a--); } } } void main() { uint i,temp,k=0,kp; TRISC=0x00; void delay(uint x); while(1) { i = 12; CS = 0; CLK = 0; kp = k; kp<<=4; while(i--) { temp=kp&0x8000; if(temp!=0) { DATA_IN = 1; } else { DATA_IN = 0; } CLK = 1; kp<< = 1; CLK = 0; } CS = 1; CLK = 0; k++; if(k==0x0fff) { delay(1); while(k--) { i = 12; CS = 0; CLK = 0; kp = k; kp<<=4; while(i--) { temp = kp&0x8000; if(temp!=0) { DATA_IN = 1; } else { DATA_IN = 0; } CLK = 1; kp<< = 1; CLK = 0; } CS = 1; CLK = 0; } k = 0; } } }
可以在每完成一个数据的输入后嘴一个延时来减慢LED灯的亮灭速度。看起来就是呼吸的效果。
如果有任何问题,请您跟我联系!感谢您的光临!
相关文章推荐
- 关于蓝桥杯——DA转化
- STM32 PWM简介及呼吸灯实验
- 算法实验题 车皮编序问题(转化为在全排列的基础上的堆栈问题)
- 产生波形实验(DA转换)
- DSP28335软件实验研究--DA_AD模块功能详解
- 实验C—5 任意十进制数转化为二进制
- svm理论与实验之6: 线性分类器的求解(续集) — 问题的转化
- svm理论与实验之6: 线性分类器的求解(续集) — 问题的转化
- C语言实验:输入一个整数的小写金额值,转化为大写金额值并输出
- 产生波形实验(DA转换)
- Retinex实验效果图和图片格式转化的失真问题
- 产生波形实验(DA转换)
- 基于pic16f883芯片的汇编秒闪LED实验
- 第二周实验报告1:编写递归函数将十进制数转化成二进制数
- 彩色图像转化为灰色图像,再锐化的一个实验
- 2013-11-07 实验之火柴游戏(递归思维逻辑,转化思维,查找最优解思维)
- 数据压缩第二次实验报告——用C语言实现bmp to yuv的图片格式转化
- STM32之呼吸灯实验
- 编译原理实验——将NFA转化为DFA
- C语言实验:输入一个整数的小写金额值,转化为大写金额值并输出