基于51单片机TLC2543的AD电压采集双通道12864显示程序
基于51单片机TLC2543的电压双通道12864显示程序带继电器保护控制(超出设定值继电器断开)冒泡法测量电压采集 50 次!
基于51单片机TLC2543的电压双通道12864显示程序 带继电器保护控制(超出设定值继电器断开)
冒泡法测量电压采集50次!
#include<reg52.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define lcd_data P0
uchar table[5];
uint sda=8000;
sbit eoc=P1^3;
sbit clk=P1^4;
sbit sdi=P1^5;
sbit sdo=P1^6;
sbit cs=P1^7;
sbit lcd_rs=P2^4;
sbit lcd_rw=P2^5;
sbit lcd_en=P2^6;
sbit lcd_psb=P2^1;
sbit lcd_rst=P2^3;
sbit key1=P3^1;
sbit key2=P3^2;
sbit key3=P3^3;
sbit key4=P3^4;
sbit LED=P2^0;
void delay_ms(uchar t)
{
uint j,k;
for(k=t;k>0;k--)
for(j=110;j>0;j--);
}
void write_com(uchar com)
{
lcd_rs=0;
lcd_rw=0;
lcd_en=0;
基于51单片机TLC2543的电压双通道12864显示程序带继电器保护控制(超出设定值继电器断开)冒泡法测量电压采集 50 次!
P0=com;
delay_ms(5);
lcd_en=1;
delay_ms(5);
lcd_en=0;
}
void write_dat(uchar date)
{
lcd_rs=1;
lcd_rw=0;
lcd_en=0;
P0=date;
delay_ms(5);
lcd_en=1;
delay_ms(5);
lcd_en=0;
}
void clear()
{
write_com(0x01);
delay_ms(2);
}
void lcd_pos(uchar X,uchar Y)
{
uchar pos;
if(X==0)
{X=0x80;}
else if(X==1)
{X=0x90;}
else if(X==2)
{X=0x88;}
else if(X==3)
{X=0x98;}
pos=X+Y;
write_com(pos);
}
void display1(uchar x,uchar y,uchar *disp)
{
lcd_pos(x,y);
while(*disp) //显示函数
基于51单片机TLC2543的电压双通道12864显示程序带继电器保护控制(超出设定值继电器断开)冒泡法测量电压采集 50 次!
{
write_dat(*disp);
disp=disp+1;
delay_ms(1);
}
}
void lcd_init()
{
lcd_psb=1;
lcd_rst=0;
delay_ms(5);
lcd_rst=1;
delay_ms(5);
write_com(0x30); // 基本操作指令 delay_ms(5);
write_com(0x0c); // 显示开,关光标 delay_ms(5);
write_com(0x01); // 清除LCD的显示内容 delay_ms(5);
}
uint read(uchar port)
{
uchar ch,i,j;
uint ad;
ch=port;
for(j=0;j<3;j++)
{
ad=0;
ch=port;
eoc=1;
cs=1;
cs=0;
clk=0;
for(i=0;i<12;i++)
{
if(sdo) ad|=0x01;
sdi=(bit)(ch&0x80);
clk=1;
clk=0;
ch<<=1;
ad<<=1;
基于51单片机TLC2543的电压双通道12864显示程序带继电器保护控制(超出设定值继电器断开)冒泡法测量电压采集 50 次!
}
}
cs=1; /////////转换和读取数值
while(!eoc);
ad>>=1;
return(ad);
}
void display(uchar x,uchar y,uint temp) //温度显示函数 {
uchar i=0;
table[0]=temp/1000;
table[1]=-2;//显示小数点
table[2]=temp%1000/100;
table[3]=temp%1000%100/10;
table[4]=temp%1000%100%10;
lcd_pos(x,y);
for(i=0;i<5;i++)
{
write_dat('0'+table[i]);
}
}
void main()
{
int i,j,temp;
double AD1=0,AD2=0;
int xdata sum[50];
lcd_init();
clear();
display1(0,0,"测量电压值");
display1(1,0,"测量电流值");
display1(2,0,"设定电流值");
while(1)
{
for(j=0;j<50;j++)
{
sum[j]=read(0x00);//通道0用了冒泡算法 delay_ms(1);
}
AD2=read(0x10);//通道1没有用冒泡算法 for(i=0;i<50-1;i++)
{
基于51单片机TLC2543的电压双通道12864显示程序带继电器保护控制(超出设定值继电器断开)冒泡法测量电压采集 50 次!
} for(j=i+1;j<50;j++) { if(sum[i]>sum[j]) { temp=sum[i]; sum[i]=sum[j]; sum[j]=temp; } } } for(i=0;i<30;i++) { AD1=AD1+(sum[10+i]/30); } display(0,5,AD1); display(1,5,AD2); if(key1==0) {display(2,5,100);sda=100;} if(key2==0) {display(2,5,200);sda=200;} if(key3==0) {display(2,5,300);sda=300;} if(key4==0) {display(2,5,400);sda=400;} if(AD2>=sda) { delay_ms(100); if(AD2>=sda) { LED=0; display1(3,0,"电流超出设定值!"); delay_ms(2000); } } else { LED=1; display1(3,0," "); } AD1=0;AD2=0; }
…… 此处隐藏:927字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [外语考试]管理学 第13章 沟通
- [外语考试]07、中高端客户销售流程--分类、筛选讲
- [外语考试]2015-2020年中国高筋饺子粉市场发展现
- [外语考试]“十三五”重点项目-汽车燃油表生产建
- [外语考试]雅培奶粉培乐系列适用年龄及特点
- [外语考试]九三学社入社申请人调查问卷
- [外语考试]等级薪酬体系职等职级表
- [外语考试]货物买卖合同纠纷起诉状(范本一)
- [外语考试]青海省实施消防法办法
- [外语考试]公交车语音自动报站系统的设计第3稿11
- [外语考试]logistic回归模型在ROC分析中的应用
- [外语考试]2017-2021年中国隔膜泵行业发展研究与
- [外语考试]神经内科下半年专科考试及答案
- [外语考试]园林景观设计规范标准
- [外语考试]2018八年级语文下册第一单元4合欢树习
- [外语考试]分布式发电及微网运行控制技术应用
- [外语考试]三人行历史学笔记:中世纪人文主义思想
- [外语考试]2010届高考复习5年高考3年联考精品历史
- [外语考试]挖掘机驾驶员安全生产责任书
- [外语考试]某211高校MBA硕士毕业论文开题报告(范
- 用三层交换机实现大中型企业VLAN方案
- 斯格配套系种猪饲养管理
- 涂层测厚仪厂家直销
- 研究生学校排行榜
- 鄱阳湖湿地景观格局变化及其驱动力分析
- 医学基础知识试题库
- 2010山西省高考历年语文试卷精选考试技
- 脉冲宽度法测量电容
- 谈高职院校ESP教师的角色调整问题
- 低压配电网电力线载波通信相关技术研究
- 余额宝和城市商业银行的转型研究
- 篮球行进间运球教案
- 气候突变的定义和检测方法
- 财经大学基坑开挖应急预案
- 高大支模架培训演示
- 一种改进的稳健自适应波束形成算法
- 2-3-鼎视通核心人员薪酬股权激励管理手
- 我国电阻焊设备和工艺的应用现状与发展
- MTK手机基本功能覆盖测试案例
- 七年级地理教学课件上册第四章第一节




