STC12C5A60S2单片机AD数据采集与LCD显示
本资源是一份针对STC12C5A60S2单片机的AD(模拟到数字转换)程序,它旨在通过集成ADC(Analog-to-Digital Converter)功能对模拟信号进行采样并处理,以便在LCD(液晶显示器)上显示测量结果。程序主要关注于数据的获取、存储和显示,以及数据处理的平均化。 首先,程序定义了几个硬件引脚,如LCD控制信号(CS、RS、SCLK和PSB)、模拟输入端口(Ain)以及一些辅助变量,如用于存储AD转换结果的数组ad_result_data、ad_result_low2和ad_result_total,以及ad_average_result用于存储最终的平均值。此外,还定义了一些字符数组,如codema1和codema2,用于ASCII编码的显示字符。 在代码中,程序使用了定时器或中断来触发AD转换,并将每次转换的结果存储在ad_result_data数组中。通过比较不同位的数据,程序可以区分低字节和高字节的数据,分别存放在ad_result_low2和ad_result_data中。这样可以确保数据的完整性和精度。 为了提高测量的稳定性,程序还计算了ad_result_total,这是一个临时数组,用于累计多个AD转换结果,然后通过ad_average_result变量计算平均值。这样可以降低噪声的影响,提高数据的可靠性。 在显示部分,程序使用预定义的字符数组(如codenum0-6)来构建数字和单位字符串,例如"1"、"电压"等,然后根据读取的AD结果动态组合这些字符,显示在LCD上。这一步展示了如何将数字数据转化为用户可读的文本信息。 这份STC12C5A60S2单片机AD程序是用于测量电路中的电压或其他模拟信号,并将其结果显示在LCD上,通过连续采样和平均处理提高了数据的准确性和可用性。这对于进行电子设备的精确测量和监控具有重要意义。
* 文件名:AD_CAIYANG.C
* 功能:使用AD采集电压显示在LCD
* 说明:转自网络,本人验证通过
****************************************************************************/
#include<STC12C5A60S2.H>
#define uint unsigned int
#define uchar unsigned char
sbit CS=P2^0; //LCD12864串行通信片选
sbit SID=P2^1; //LCD12864串行通信数据口
sbit SCLK=P2^2; //LCD12864串行通信同步时钟信号
sbit PSB=P2^5; //LCD12864并/串选择:H并行 L串行
unsigned int temp1,sh1,ge1,n1,m1;
unsigned char ad_result_data[10]; //AD转换高八位
unsigned char ad_result_low2[10]; //AD转换低八位
unsigned char ad_result_total[10]; //AD转换总十位
unsigned char ad_average_result; //AD转换十次的平均值
unsigned char Ain,Vin;
unsigned char b,t,R;
char tp=0;
unsigned char code ma1[6]={0xb5,0xe7,0xd1,0xb9,0xa1,0xc3}; //电压:
unsigned char code ma2[]={"."};
uchar code disp1[]={"提示: 按1 键进入"};
uchar code disp2[]={"功能选择界面. "};
unsigned char code num0[]={0xa3,0xb0};
unsigned char code num1[]={0xa3,0xb1};
unsigned char code num2[]={0xa3,0xb2};
unsigned char code num3[]={0xa3,0xb3};
unsigned char code num4[]={0xa3,0xb4};
unsigned char code num6[]={0xa3,0xb6};
unsigned char code num7[]={0xa3,0xb7};
unsigned char code num8[]={0xa3,0xb8};
unsigned char code num9[]={0xa3,0xb9};
//-------模块延时程序---------------------------- 1ms
void delay1ms(uint delay1ms) //STC11F60XE,22.1184M,延时1ms
{
uint i,j;
for(;delay1ms>0;delay1ms--)
for(i=0;i<7;i++)
for(j=0;j<210;j++);
}
void delay(uint delay) //STC11F60XE,22.1184M,延时170us
{
uint i,j;
for(;delay>0;delay--)
for(i=0;i<124;i++);
for(j=0;j<124;j++);
}
/*******************************************************
AD转换程序
*******************************************************/
void AD_initiate() //初始化函数
{
ES=0;
TMOD=0x21; //定时计数器方式控制寄存器,"自动重装,16位计数器".
剩余10页未读,继续阅读
- 粉丝: 0
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 达梦数据库DM8手册大全:安装、管理与优化指南
- Python Matplotlib库文件发布:适用于macOS的最新版本
- QPixmap小demo教程:图片处理功能实现
- YOLOv8与深度学习在玉米叶病识别中的应用笔记
- 扫码购物商城小程序源码设计与应用
- 划词小窗搜索插件:个性化搜索引擎与快速启动
- C#语言结合OpenVINO实现YOLO模型部署及同步推理
- AutoTorch最新包文件下载指南
- 小程序源码‘有调’功能实现与设计课程作品解析
- Redis 7.2.3离线安装包快速指南
- AutoTorch-0.0.2b版本安装教程与文件概述
- 蚁群算法在MATLAB上的实现与应用
- Quicker Connector: 浏览器自动化插件升级指南
- 京东白条小程序源码解析与实践
- JAVA公交搜索系统:前端到后端的完整解决方案
- C语言实现50行代码爱心电子相册教程