在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → 数控电源-C源程序

数控电源-C源程序

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.04M
  • 下载次数:18
  • 浏览次数:133
  • 发布时间:2021-02-19
  • 实例类别:嵌入式开发
  • 发 布 人:mulunliang
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 数控电源 电源 数控

实例介绍

【实例简介】

【实例截图】

【核心代码】

数控电源-C源程序

├── 0808
├── 0808.LST
├── 0808.M51
├── 0808.OBJ
├── 0808.Uv2.bak
├── 0808.c
├── 0808.hex
├── 0808.lnp
├── 0808.opt.bak
├── 0808.plg
├── 0808.uvopt
├── 0808.uvproj
├── 0808_Opt.Bak
├── 0808_Uv2.Bak
├── 0808_uvopt.bak
└── 数控电源.Bkp
0 directories, 16 files


【核心代码】
#include <reg52.h> //通用51单片机头文件
#define uchar unsigned char  
sbit RESET=P3^3;   //DA转换数值复位端口位定义
sbit keyup=P3^4;   //步进加端口位定义
sbit keydown=P3^5;   //步进减端口位定义

sbit LEDwei1=P2^4;   //低位数码管位选
sbit LEDwei2=P2^5;   //低位数码管位选
sbit LEDwei3=P2^6;   //高位数码管位选
sbit LEDwei4=P2^7;   //高位数码管位选

#define duan P0            //段选宏定义  
void delay(int);   //延时函数声明
void display(uchar);   //显示函数声明

uchar code LEDcode[]={//共阳数码管0-9/F/U(为段选所用)
0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xF8,0x80,0x90,0x8e,0xc1
};       

uchar code byte[]={ //电压DA转换数值1.5V-15.0V 步进0.5V
5,   //1.5
7,8,10,12,14, //2
15,17,19,21,22,//2.5
24,26,28,30,31,//3
33,35,37,38,40, //3.5
42,44,46,47,49, //4.0
51,53,55,56,58,
60,62,63,65,67, //5.0
69,71,72,74,76,
78,80,81,83,85,//6
86,88,90,92,94,
95,97,99,101,102,//7
104,106,108,110,111,
113,115,117,119,120, //8
122,124,126,128,129,
131,133,134,136,138,//9.0
140,142,143,145,147,
149,150,152,154,156,//10
157,159,161,163,164,
166,168,170,172,173,//11
175,177,179,181,182,
184,186,188,190,191, //12
};

uchar code table[]={//用于显示电压值的数组
15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,
47,48,49,50,
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,
67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,
83,84,85,86,87,88,89,90,91,92,93,94,
95,96,97,98,99,100,101,102,103,104,105,106,107,108,
109,110,111,112,113,114,115,116,117,118,119,120
};

void main()
{
uchar num=35;  
while(1)
{
if(keyup==0) //步进加端口为低电平,
{
delay(10);  //稍作延时,消抖,
if(keyup==0)  //步进加端口依然为低电平,说明的确是被按下,
{
num ;
}
while(keyup==0); //防止按死语句
}
if(keydown==0) //步进减端口为低电平,
{
delay(10); //稍作延时,消抖,
if(keydown==0) //步进减端口依然为低电平,说明的确是被按下,
{
num--;
}
while(keydown==0);  //防止按死语句
}
if(RESET==0)  // 复位端口为低电平
{
delay(10);  //稍作延时,消抖,
if(RESET==0)  //复位端口依然为低电平,说明的确是被按下,
{
num=35;  //执行复位操作
}
while(RESET==0);   //防止按死语句
}

P1=byte[num];   //给DA一个数值,转化成相应的电压值
delay(10);
display(num);   //调用显示函数显示电压值
}
}

void delay(int x)   //12M晶振,约0.5ms延时函数
{
int i;
for(;x>0;x--)
for(i=0;i<50;i )
;
}

void display(uchar num)              //显示函数
{ uchar temp;
temp=table[num];
if(num<106) //电压值小于15V的可以直接在数码管上显示出来
{  
duan=LEDcode[temp/100];        //显示十位
LEDwei1=0;
delay(5);
LEDwei1=1;
duan=0xff;

duan=LEDcode[temp%100/10]&0x7f;   //显示个位,并加显小数点
LEDwei2=0;
delay(5);
LEDwei2=1;
duan=0xff;
 
duan=LEDcode[temp%10];      //显示小数点后一位
LEDwei3=0;
delay(5);
LEDwei3=1;
duan=0xff;

duan=LEDcode[11];          //显示U,代表电压U
LEDwei4=0;
delay(5);
LEDwei4=1;
duan=0xff;    

}
else //电压值大于15V的在数码管上显示字母"FF"
{   
duan=LEDcode[10];            //显示高位王鲁赣
// LEDwei1=0;
LEDwei2=0;
LEDwei3=0;
//LEDwei4=0;
delay(6);
LEDwei1=1;
LEDwei2=1;
LEDwei3=1;
LEDwei4=1;
duan=0xff;            //显示低位
}
}   


实例下载地址

数控电源-C源程序

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警