51单片机数控电源c语言设计,单片机数控电源设计,含源代码,原理图
#include
#define SC P0
void delay_ms(int n);
void AN();
void XSJ(unsigned char SJ);//写数据
void XZL(unsigned char ZL);//写指令
void CSH();//初始化
void SZZH();//转换
void TLC_5651(int buf);
unsigned int A_D();
sbit key1 = P2^3; //左1
sbit key2 = P2^4;
sbit key3 = P2^5;
sbit key4 = P2^6;
sbit RS = P2^0; //数据h/命令L
sbit RW = P2^1; //读H/写L
sbit E = P2^2; //使能
sbit CS_5615=P1^5; //定义片选信号IO口
sbit CLK_5615=P1^6; //定义时钟信号IO口
sbit DAT_5615=P1^7; //定义数据输入IO口
sbit CS=P1^4; //定义片选信号IO口
sbit CLK=P1^5; //定义时钟信号IO口
sbit DIO=P1^6; //定义数据输入IO口
unsigned int U = 0;//电压
unsigned int I = 0;//电流
char uu[3];
char ii[3];
int main()
{
CSH();
while(1)
{
AN();
SZZH();
XZL(0x82);
XSJ(uu[0]);
XZL(0x83);
XSJ(uu[1]);
XZL(0x84);
XSJ('.');
XZL(0x85);
XSJ(uu[2]);
XZL(0xc2);
XSJ(ii[0]);
XZL(0xc3);
XSJ(ii[1]);
XZL(0xc4);
XSJ('.');
XZL(0xc5);
XSJ(ii[2]);
TLC_5651(U);
if(U>999)
U=0;
I=A_D();
}
}
void CSH()//初始化
{
int wz =0x82,i;
XZL(0X38);
XZL(0X0F);
//XZL(0X06);
//XZL(0X80);
XZL(0x80);
XSJ('V');
XZL(0x81);
XSJ('=');
XZL(0x8f);
XSJ('V');
XZL(0xc0);
XSJ('I');
XZL(0xc1);
XSJ('=');
XZL(0xCf);
XSJ('A');
for(i=0;i<13;i++)
{
XZL(wz++);
XSJ(' ');
}
wz = 0xc2;
for(i=0;i<13;i++)
{
delay_ms(5);
XZL(wz++);
XSJ(' ');
}
}
void XZL(unsigned char ZL)//写指令
{
E=0;
RS=0;
RW=0;
SC = ZL;
E=1;
delay_ms(5);
E=0;
}
void XSJ(unsigned char SJ)//写数据
{
E=0;
RS=1;
RW=0;
SC = SJ;
E=1;
delay_ms(5);
E=0;
}
void AN() //按钮控制电压数
{
if(key1 == 0)
{
delay_ms(20);
if(key1 == 0)
U+=2;
}
if(key2 == 0)
{
delay_ms(20);
if(key2 == 0)
U-=2;
}
if(key3 == 0)
{
delay_ms(20);
if(key3 == 0)
U = 50;
}
if(key4 == 0)
{
delay_ms(20);
if(key4 == 0)
U = 0;
}
}
void delay_ms(int n) //阻塞延时
{
int i = 0,j = 0;
for(i = 0;i
for(j = 0;j<123;j++);
}
void SZZH()//转换
{
uu[0] = 0x30+U/100;
uu[1] = 0x30+(U/10)%10;
uu[2] = 0x30+U%10;
ii[0] = 0x30+I/100;
ii[1] = 0x30+(I/10)%10;
ii[2] = 0x30+I%10;
}
void TLC_5651(int buf) //电压
{
int a,c; //定义变量
c=buf*2; //要输出的数据赋值
CS_5615=0; //引脚拉低
for(a=16;a>0;a--) //循环16次
{
DAT_5615=c>>15; //把数据串行输入进da芯片(把数据右移15位得到最高位数据,赋值给数据脚)
c=c<<1; //将数据左移一位,下次循环时就是传输第二位数据了
CLK_5615=1; //拉高
CLK_5615=0; //拉低
}
CLK_5615=1;
CLK_5615=0;
CLK_5615=1;
CLK_5615=0;
CS_5615=1;
}
unsigned int A_D()
{
unsigned char i,dat;
CS=1; //一个转换周期开始
CLK=0; //为第一个脉冲作准备
CS=0; //CS置0,片选有效
DIO=1; //DIO置1,规定的起始信号
CLK=1; //第一个脉冲
CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平
DIO=1; //DIO置1, 通道选择信号
CLK=1; //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
CLK=0; //第二个脉冲下降沿
DIO=0; //DI置0,选择通道0
CLK=1; //第三个脉冲
CLK=0; //第三个脉冲下降沿
DIO=1; //第三个脉冲下沉之后,输入端DIO失去作用,应置1
CLK=1; //第四个脉冲
for(i=0;i<8;i++) //高位在前
{
CLK=1; //第四个脉冲
CLK=0;
dat<<=1; //将下面储存的低位数据向右移
dat|=(unsigned char)DIO; //将输出数据DIO通过或运算储存在dat最低位
}
CS=1; //片选无效
return dat-25; //将读出的数据返回
}
51单片机数控电源c语言设计,单片机数控电源设计,含源代码,原理图相关推荐
- 单片机电子密码锁C语言程序,单片机电子密码锁的设计(汇编语言).doc
word格式整理版 文档可编辑 一.设计总说明 ? 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别.IC卡辨认)已在国内外相继面世.但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保 ...
- 基于51单片机的霓虹灯c语言,基于单片机控制的霓虹灯控制器056
基于单片机控制的霓虹灯控制器 摘要:本设计采用AT89S51单片机实现对霓虹灯的控制.系统由单片机控制部分和显示部分组成.显示部分的128个发光二极管成8行16列矩阵式分布.单片机I/O口输出的信号经 ...
- 自学python单片机编程-用Python语言控制单片机
早年,虽然Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言.遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼.本文引用地址:ht ...
- 自学python单片机编程-用Python语言控制单片机-可编程逻辑-与非网
早年,虽然 Python 是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言.遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼. 然而今时不同 ...
- 单片机发射红外c语言程序,单片机模拟红外发射源程序IR-send
单片机模拟红外遥控器发射的C语言程序 //********************************************单片机红外发射**************************** ...
- 单片机最小系统c语言报告,单片机最小系统实验报告.doc
长沙学院 电子工艺实习报告 姓名: 潘舟 学号: 2009044211 系别: 电子与通信工程 时间: 2011.11.14-2011.11.25 专业: 电子信息工程 指导老师:龙英.刘辉.王新辉. ...
- 大学生考勤系统C语言代码,C++学生考勤系统(含源代码)
<C++学生考勤系统(含源代码)>由会员分享,可在线阅读,更多相关<C++学生考勤系统(含源代码)(26页珍藏版)>请在人人文库网上搜索. 1.C+吾言程序设计课程设计报告书题 ...
- 单片机节日彩灯c语言程序,单片机课程设计简易节日彩灯
<单片机课程设计简易节日彩灯>由会员分享,可在线阅读,更多相关<单片机课程设计简易节日彩灯(7页珍藏版)>请在人人文库网上搜索. 1.单片机课程设计节日彩灯一. 需求分析:1. ...
- 基于单片机的血压计c语言,基于单片机血压计的设计
基于血压计的设计(18000字) 摘 要 本设计制作了一台智能血压计.该血压计采用了STC12C5A60S2作为主控制器,利用专用的血压传感器作为数据采集,通过三运放仪用放大电路将信号放大,整形,将模 ...
- 单片机编码电位器c语言,基于单片机的数字电位器的设计
分辨率扩展 Ra和Rb同时并联在输入信号Vin的两端,其抽头数均为32.Ra和Rb的输出作Rc端口电压VH和VL设置,Ra始终比Rb高一个位置间隔,这样就可以将1/32Vi-31/32Vi共31种输入 ...
最新文章
- discard connection丢失数据_python kafka 生产者发送数据的三种方式
- StringBuffer类的常用方法
- lisp删除块中图元_DeleteBlocks
- c++餐饮管理系统_扎哈·哈迪德建筑事务所赢得深圳湾超级总部基地C塔项目国际竞赛...
- Android学习笔记(18):编辑框EditText
- 浏览器插件 - Chrome 对 UserScript 的声明头(metadata)兼容性一览
- linux dd winpe,winpe/linux多重启动
- 微型计算机的硬件系统主要核心软件,计算机硬件系统最核心的是什么
- Kafka高频面试题:夺命10连问
- GPIO 使用 — Rockchip
- 不努力做事,隔壁老王 可想而知您将来必然是艰难的
- 【105】百度脑图-在线思维导图工具
- 微信机器人服务器成本,微信机器人案例汇总
- 2019年2月1日训练日记
- 计算机无法启动 一直在启动修复需要多久,关于电脑总是卡机蓝屏启动修复~...
- 基于kotlin实现的简单个人账户管理APP
- 贴片式T卡的测试与应用
- 贴片式T卡可以解决传统T卡的那些问题?
- 端到端的神经网络(end-to-end)
- 一些中文自然语言处理工具包