资源简介
C51简易直流电子负载程序,初学者,写的不好。但可以借鉴一下
代码片段和文件信息
#include“stc12c5a.h“
#include“intrins.h“
#include“adc.h“
#include“lcd1602.h“
#include“pwm.h“
int w=100;
unsigned char i;
unsigned char numtempnum1;
unsigned int i2 i1 q;
unsigned int Valei7V2V4;
int adval0;
float V0V1; //1通道出来的变量为adval1、V1、Vin1
unsigned char code table[]={02550
75100125150175200225250};//0--250平均分配
int code jizhun[]={151490004400038800 //1A--100mA对应10等份输出电压
348002900023500190001470095004900};
void delay(unsigned int z)
{
unsigned int xy;
for (x=z;x>0;x--)
for(y=110;y>0;y--);
}
unsigned char keyscan();
void bijiao();
void display(unsigned char xunsigned char yunsigned int Vin)
{
dis1[ y ] = Vin/10000+‘0‘;
dis1[y+1] = ‘.‘;
dis1[y+2] = Vin%10000/1000+‘0‘;
dis1[y+3] = Vin%1000/100+‘0‘;
dis1[y+4] = Vin%100/10+‘0‘;
dis1[y+5] = Vin%10+‘0‘;
lcd_pos(xy);
for(i=y;i {
lcd_wdat(dis1[i]);
delay1(1);
}
}
void PWM0_set (unsigned char a)
{
CCAP0L= a; //设置值直接写入CCAP0L
CCAP0H= a; //设置值直接写入CCAP0H
}
void PWM1_set (unsigned char b)
{
CCAP1L= b; //设置值直接写入CCAP1L
CCAP1H= b; //设置值直接写入CCAP1H
}
unsigned int GetADCResult(unsigned char ch)
{
// unsigned int Valei7V2;
unsigned int VinV3i6;
// V2=0;
// for(i7=0;i7<15;)
{ ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;//设置ADC控制寄存器,开AD电源,设置ADC速度,设置通道,启动ADC
// while (!(ADC_CONTR & ADC_FLAG));//等待转换标志位FLAG为1
delay2(1);
ADC_CONTR &= ~ADC_FLAG; //软件flag清0
Vale = ADC_RES*4 + ADC_RESL;
if (ch==0)
{
V2=V2+Vale ;
i7++;
}
if(ch==1)
{
V3=V3+Vale;
i6++;
}
}
// adval0 =V3/15; //0路AD(P1.0) ;
if(ch==0)
{ V0 = (V4*49.5)/102.4; //转换为模拟电压量
// Vin = (unsigned int)(V0); //强制类型转换,而后取出各位的值。
Vin0=(unsigned int)(V0)*5; //返回ADC的结果
return Vin0;
}
if(ch==1&&i6>15)
{ V3=V3/i6; i6=0;
// V0 = (V3*4950.0)/1024.0; //转换为模拟电压量
Vin = (unsigned int)((V3*5000.0)/1024.0); //强制类型转换,而后取出各位的值。
V3=0;
Vin1=Vin*10; //返回ADC的结果
return Vin1;
}
}
void main()
{
rw=0;
PWM_init(); //PWM初始化
lcd_init();
i2=0;
lcd_pos(16);
lcd_wdat(‘m‘);
lcd_pos(16);
lcd_wdat(‘m‘);
lcd_pos(26);
lcd_wdat(‘V‘);
lcd_pos(215);
lcd_wdat(‘Q‘);
while(1)
{
InitADC();
while(i2<150)
{
GetADCResult(0);
GetADCResult(1);
bijiao();
// delay(8);
keyscan();
i2++;
}
{
display(11Vin0);
display(21Vin1);
display(19(jizhun[num]/5));
i2=0;
}
if(num==11)
{
q=(50000-Vin1)*10000/50000;
display(29q);
}
}
}
unsigned char keyscan()
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
// delay(1);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:num=1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-07-02 20:26 简易直流电子负载程序2\
文件 1947 2012-08-09 14:55 简易直流电子负载程序2\ADC.h
文件 46 2012-08-06 09:58 简易直流电子负载程序2\dingyi.h
文件 2820 2012-08-07 06:57 简易直流电子负载程序2\lcd1602.h
文件 2057 2012-08-07 19:13 简易直流电子负载程序2\pwm.h
文件 46221 2012-04-24 19:07 简易直流电子负载程序2\STC12C5A.h
文件 25680 2014-07-02 20:25 简易直流电子负载程序2\简易直流电子负载
文件 4699 2014-07-02 20:25 简易直流电子负载程序2\简易直流电子负载.c
文件 7793 2014-07-02 20:25 简易直流电子负载程序2\简易直流电子负载.hex
文件 64 2014-07-02 20:25 简易直流电子负载程序2\简易直流电子负载.lnp
文件 14885 2014-07-02 20:25 简易直流电子负载程序2\简易直流电子负载.LST
文件 24119 2014-07-02 20:25 简易直流电子负载程序2\简易直流电子负载.M51
文件 27556 2014-07-02 20:25 简易直流电子负载程序2\简易直流电子负载.OBJ
文件 1417 2012-09-20 20:37 简易直流电子负载程序2\简易直流电子负载.opt.bak
文件 862 2014-07-02 20:26 简易直流电子负载程序2\简易直流电子负载.plg
文件 2158 2012-09-20 20:37 简易直流电子负载程序2\简易直流电子负载.Uv2.bak
文件 61511 2014-07-02 20:26 简易直流电子负载程序2\简易直流电子负载.uvopt
文件 13286 2014-07-01 22:37 简易直流电子负载程序2\简易直流电子负载.uvproj
文件 3138 2012-08-12 18:10 简易直流电子负载程序2\简易直流电子负载_Opt.Bak
文件 2163 2012-08-06 11:56 简易直流电子负载程序2\简易直流电子负载_Uv2.Bak
文件 57943 2014-07-01 22:37 简易直流电子负载程序2\简易直流电子负载_uvopt.bak
文件 13286 2014-07-01 22:37 简易直流电子负载程序2\简易直流电子负载_uvproj.bak
- 上一篇:Delphi中DBGrid数据分行/拆行/多行显示
- 下一篇:水温控制系统有程序
评论
共有 条评论