今天上课作了数模转换的实验。感受很好玩,在这里写下。 ui
器材:PIC16F883控制芯片、TLC561五、LED灯一个、电阻一个(1K)、PICkit2下载器 spa
实验说明,本实验采用I/O模拟方法实现数模转换,转换结果输出到LED引脚。LED呈现呼吸似的缓慢闪烁。 code
实验电路图: it
RC3链接SCLK、RC5链接Din、RC2链接CS。 class
输入DA的数字从0加到1024(DA为10位),再从1024减到0。中间最亮的时候作了一点儿延时。 下载
LED灯接一个电阻到地,另外一端接DA的模拟输出引脚。 方法
实验中比较重要的时序图: im
根据这个时序图,我周期性的给引脚的电位置1和置0。 数据
代码以下: img
#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灯的亮灭速度。看起来就是呼吸的效果。
若是有任何问题,请您跟我联系!感谢您的光临!