收藏 分享(赏)

stc12c5a60s2_AD采集_12864串行显示终极程序_带滤波.docx

上传人:scg750829 文档编号:7233136 上传时间:2019-05-10 格式:DOCX 页数:6 大小:2.74MB
下载 相关 举报
stc12c5a60s2_AD采集_12864串行显示终极程序_带滤波.docx_第1页
第1页 / 共6页
stc12c5a60s2_AD采集_12864串行显示终极程序_带滤波.docx_第2页
第2页 / 共6页
stc12c5a60s2_AD采集_12864串行显示终极程序_带滤波.docx_第3页
第3页 / 共6页
stc12c5a60s2_AD采集_12864串行显示终极程序_带滤波.docx_第4页
第4页 / 共6页
stc12c5a60s2_AD采集_12864串行显示终极程序_带滤波.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、stc12c5a60s2 AD 采集 12864 串行显示终极程序 带滤波作者:电子工程师 (天津)由于 AD 采集电压并在 12864 上显示的程序很常用,然而网上很多程序各种各样,又有很多缺点,所以就利用工作之余的时间对用到的程序进行了整理,调试,优化以方便各位电子爱好者使用。这段程序已经调试通过,改下 io 即可直接应用。最后有两张效果图。LCD_PSB=0;(并串选择口)LCD_RST =1;(复位口)注意:本程序用的是 12864 串行显示,将 PSB 引脚接地,RST 拉高、片选口 RS 接高之后除了电源和地线,只用 2 根线就可以显示了,接线很方便,最大程度的节省了 io 口。

2、本程序是以电流采集为例的,采集的是电流传感器输出的电压,然后转换成电流,如果只需要采集电压的话将转化为电流的语句删除即可。AD 是 stc12c5a60s2 自带的 10 位AD。使用很方便。有不明白的可以 qq 联系我,1264136841#include“stc12c5a60s2.h“#include“intrins.h“float ADvalue = 0;unsigned int volage = 0;unsigned int current = 0;void InitializeDisplay();void InitializeLcd12864();void displaystring

3、(unsigned char add,unsigned int num);void WriteCommandLcd12864(unsigned char temp);void InitializeDisplay();void InitializeAD();unsigned int ReadADvalue(unsigned char channel);float SmoothingFilter(unsigned int temp);void Delay_us(unsigned int xus);void Delay_ms(unsigned int xms);sbit LCD_SID = P25;

4、/即 RW 口sbit LCD_CLK = P26;/即 E 口code unsigned char name1 = “escrewdriver“;code unsigned char name2 = “电流采集显示“;code unsigned char name3 = “电流: A “;code unsigned char name4 = “参数: mm “;“;void main()/ InitializeAD();/ InitializeTimer0();/ InitializeUart();InitializeLcd12864();InitializeDisplay();while(

5、1)ADvalue = ReadADvalue(0); /读回 AD 值ADvalue = ADvalue*5000/1024; /转换成电压值/* if(ADvalue 2500) /防止电压浮动在 2.5V 以上ADvalue = 2500;ADvalue = 2500-ADvalue; /电流反方向流过传感器,输出电压值小于 2.5V,*/current = (ADvalue*8); /计算电流,每 0.625V 代表 7.5A 即每 1V 代表 12Acurrent = SmoothingFilter(current); /进行一下平滑滤波displaystring(0x8b,curr

6、ent);displaystring(0x9b,0.5*current);/*延时函数*/void Delay_us(unsigned int xus) /11.0592MHzwhile(xus0)_nop_();_nop_();_nop_();void Delay_ms(unsigned int xms) /11.0592MHzunsigned int y=0;for(;xms0;xms-)for(y=0;y0;length-)WriteDataLcd12864(*temp);temp+;/*显示电压和电流*/void displaystring(unsigned char add,unsigned int num)unsigned char buf10,i;buf0 = num/10000;buf1 = num%10000/1000;buf2 = num%1000/100;buf3 = num%100/10;buf4 = num%10;WriteCommandLcd12864(add);for(i=0;i=10)i=0;bufi+ = temp;average = (average+buf0+buf1+buf2+buf3+buf4+buf5+buf6+buf7+buf8+buf9)/10;return average;/*/*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报