傻大方


首页 > 知识库 > >

可控|可控白光LED照明灯报告( 二 )


按关键词阅读: 白光 可控 报告 LED 照明灯


由于例程中不包含动态数字的显示 , 故添加如下子函数以完成此功能 。

7、:/*-LCD_write_shu: 显示6(宽)*8(高)点阵列数字字母符号等半角类输入参数: c:显示的字符;6*8-*/void LCD_write_shu(int row,int page,int c) /row:列 page:页 c:字符 int i;
LCD_set_XY(row*6,page);
/ 列 , 页 row*8 for(i=0;
i#include nokia_5110.h#include BoardConfig.h#include Key.h#include Delay.htypedef unsigned int uint;
typedef unsigned char uc 。

8、har;
#define Num_of_Results 32static uint resultsNum_of_Results;
/保存ADC转换结果的数组 void Trans_val(uint Hex_Val);
int zhaodu=0,gonglv=0;
uint i = 0,j = 0,dir = 0;
uint flag = 0,speed = 0;
/*主函数*/ void main(void)unsigned char Key;
/char z;
/*下面六行程序关闭所有的IO口*/P1DIR = 0XFF;
P1OUT = 0XFf;
/P3DIR = 0XFF;
P3OUT = 0XFF;


9、P4DIR = 0XFF;
P4OUT = 0XFF;
P5DIR = 0XFF;
P5OUT = 0XFF;
P6DIR = 0XFF;
P6OUT = 0X00;
WDTCTL = WDTPW + WDTHOLD;
/关闭看门狗/*-选择系统主时钟为8MHz-*/BCSCTL1 &= XT2OFF;
/打开XT2高频晶体振荡器/do/ IFG1 &= OFIFG;
/清除晶振失败标志/ for (z = 0xFF;
z 0;
z-);
/等待8MHz晶体起振/while (IFG1 & OFIFG);
/晶振失效标志仍然存在?/BCSCTL2 |= SELM_2 + SELS;
/MCLK和SMCLK 。

10、选择高频晶振/P6DIR |= BIT2;
P6OUT |= BIT2;
/关闭电平转换/P5OUT &= BIT7;
P2DIR = 0xff;
/*pwmP1DIR = 0xff;
/ P2端口设置为输出 P1OUT = 0xff;
/ 关闭其他LED P1SEL |= BIT6 + BIT7;
/ P2.3和P2.4连接内部模块,使用的是第二功能作为TimerA的比较输出 。
CCR0 = 200;
/CCTL1 = OUTMOD_7;
/ CCR1 reset/set/CCR1 = flag;
/ CCR1 PWM duty cycleCCTL2 = OUTMOD_7;
/ CCR2 res 。

11、et/setCCR2 = flag;
/ CCR2 PWM duty cycleTACTL = TASSEL_1 + ID_2 + MC_1;
/ ACLK/8, up modeP6DIR |= BIT2;
P6OUT |= BIT2;
/关闭电平转换 *adcP5DIR|=BIT5;
P5OUT&=BIT5;
/关闭数码管显示P6DIR|=BIT6;
P6OUT&=BIT6;
/半闭数码管显示P6DIR|=BIT5;
P6OUT&=BIT5;
/半闭数码管显示Key_INIT();
LCD_init();
/初始化液晶 LCD_clear();
P6SEL |= 0x01;
/ 使能ADC通道ADC1 。

12、2CTL0 = ADC12ON+SHT0_15+MSC;
/ 打开ADC , 设置采样时间ADC12CTL1 = SHP+CONSEQ_2;
/ 使用采样定时器ADC12IE = 0x01;
/ 使能ADC中断ADC12CTL0 |= ENC;
/ 使能转换ADC12CTL0 |= ADC12SC;
/ 开始转换 _EINT();
while(1) /p3.2-p3.4为调整pwm波的板载按键 , 占空比分别加2、4、6Key=Key_Scan();
if(Key!=0)switch(Key)case 1:flag=flag+2;
break;
case 2:flag=flag+4;
break;
case。

13、3:flag=flag+6;
break;
default : break;
else delay_ms(10);
if(flag=200)flag=0;
CCR2 = flag;
/ CCR2 PWM duty cycle/*函数名称:ADC12ISR功 能:ADC中断服务函数 , 在这里用多次平均的计算P6.0口的模拟电压数值参 数:无 返回值 :无*/#pragma vector=ADC_VECTOR__interrupt void ADC12ISR (void)static uint index = 0;
resultsindex+ = ADC12MEM0;
/ Move resultsif(ind 。

14、ex = Num_of_Results)uchar i;
unsigned long sum = 0;
index = 0;
for(i = 0;
i = 5;
/除以32Trans_val(sum);
/*函数名称:Trans_val功 能:将16进制ADC转换数据变换成三位10进制真实的模拟电压数据 , 并在液晶上显示参 数:Hex_Val-16进制数据n-变换时的分母等于2的n次方 返回值 :无*/void Trans_val(uint Hex_Val)int row=0,page=0;
unsigned long caltmp;
uint Curr_Volt;
uchar t1,i;
uchar ptr4 。

15、;
caltmp = Hex_Val;
caltmp = (caltmp 12;
/Curr_Volt = caltmp / 2nptr0 = Curr_Volt / 100;
/Hex-Dec变换t1 = Curr_Volt - (ptr0 * 100);
ptr1 = t1 / 10;
ptr2 = t1 - (ptr1 * 10);
/ptr3 = 0;
/shuzi表中第10位对应符号./在液晶上显示变换后的结果for(i = 0;
i 3;
i+)LCD_write_shu(row+i,page+2,ptri);
5.1测试使用的仪器仪表万用表 。
5.2系统调试的方法并入电路测量电流 , 并调试PWM波 。

【可控|可控白光LED照明灯报告】16、的占空比 , 使按键每次按下变化的占空比令电流步进0.1mA 。
6实验心得按键的电路逻辑不清晰 , 在编程时由于初次使用M430F149程序的初始化多是来自例程 , 端口定义模糊且混乱 。
在对按键使能及执行的模块程序中不能执行 , 即不能实现 。
主函数中没有while语句 , 导致函数不能反复执行 , 而是死循环在AD的中断中 , 不能执行按键中断或执行按键判断函数 。
照度计由于电路简单 , 所以测出的亮度最后一位的数字变化快 , 值不稳定 。
经修改 , 按键改变电流和亮度已经实现 , 但由于发光二极管的U-I曲线为非线性 , 开始的步进为0.1mA , 之有增大迹象 。


来源:(未知)

【学习资料】网址:/a/2021/0406/0021864513.html

标题:可控|可控白光LED照明灯报告( 二 )


上一篇:乡镇政府|乡镇政府现代都市农业产业倍增年终工作总结

下一篇:商业会计|《商业会计》考试试卷