ad_imh
1. stc15 ad_1.7 9600 1t
#include <string.h> //
#include <absacc.h>
#include <stdio.h>
#include <intrins.h> // 加入此头文件后,可使用_nop_库函数
#define MAIN_Fosc 11059200L //定义主时钟
#define Main_Fosc_KHZ (MAIN_Fosc / 1000)
#include "15W4KxxS4.h"
#define Buf_Max 5
#define uint8 unsigned char
#define uint16 unsigned int
//#define uchar unsigned char
uint8 data Rec_Buf[Buf_Max];
uint8 i = ;
uint8 xdata buf[];
void delay_ms(unsigned char ms)
{
unsigned int i;
do
{
i = MAIN_Fosc / ;
while(--i) ; //14T per loop
}
while(--ms);
} void UART_Init(void)
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE0; //设定定时初值
TH1 = 0xFE; //设定定时初值
ET1 = ; //禁止定时器1中断
TR1 = ; //启动定时器1
ES=;
} void U1SendData(uint8 ch)
{
SBUF = ch; //写数据到UART数据寄存器
while(TI == ); //在停止位没有发送时,TI为0即一直等待
TI = ; //清除TI位(该位必须软件清零)
} void U1SendString(uint8 *s)
{
while (*s) //检测字符串结束标志
{
U1SendData(*s++); //发送当前字符 }
} void Uart1() interrupt UART1_VECTOR using
{
ES = ; // 串口1中断关闭
if (RI) //串行接收到停止位的中间时刻时,该位置1
{
RI = ; //清除RI位 (该位必须软件清零)
Rec_Buf[i] = SBUF; //把串口1缓存SBUF寄存器数据依次存放到数组Rec_Buf中
i++;
if(i>Buf_Max) //接收数大于定义接收数组最大个数时,覆盖接收数组之前值
{
i = ;
}
}
if (TI) //在停止位开始发送时,该位置1
{
TI = ; //清除TI位(该位必须软件清零)
}
ES = ; // 串口1中断打开
} void ADC_config(void)
{
ADC_CONTR|=0x80; //开AD转换电源
delay_ms(); //适当延时等待AD转换供电稳定
P1ASF|=0x80; //选择P1.7作为模拟功能AD使用
ADC_CONTR|=0x07; //选择P1.7作为AD转换通道输入使用
ADC_CONTR|=0x60; //AD转换速度为90个时钟周期转换一次
ADC_CONTR&=0xEF; //清AD转换完成标志
EADC=; //禁止ADC转换中断
CLK_DIV|=0x20; //ADC转换结果ADC_RES存高2位,ADC_RESL存低8位
ADC_CONTR|=0x08; //启动AD转换,ADC_START=1
} uint16 Get_ADC10bitResult(void)
{
uint16 AD_Dat=;
ADC_CONTR&=0xE7; // 将ADC_FLAG清0
//10位AD结果的高2位放ADC_RES的低2位,低8位在ADC_RESL
AD_Dat = ADC_RES; //将ADC_RES低2位移到应在的第9位和第10位
AD_Dat <<= ;
AD_Dat|= ADC_RESL; //将ADC_RESL的8位移到应在的低8位
ADC_CONTR|=0x08; //重新启动AD转换,ADC_START=1。
return AD_Dat;
} void UART_Send_Byte(unsigned char mydata)
{
ES=;
TI=;
SBUF=mydata;
while(!TI);
TI=;
ES=;
} void UART_Send_Str(char *s)
{
int i=;
while(s[i]!=)
{
UART_Send_Byte(s[i]);
i++;
} }
void UART_Send_END(void)
{
UART_Send_Byte(0xFF);
UART_Send_Byte(0xFF);
UART_Send_Byte(0xFF);
} void delayms(int count) // /* X1ms */
{
int i,j;
for(i=;i<count;i++)
for(j=;j<;j++);
} void UART_Send_start(void)
{
delayms();
UART_Send_END();
delayms();
}
int main(void)
{
uint16 TempPhoto,Temp;
uint8 strPhoto[];
UART_Init(); //初始化串口,
UART_Send_start();//为确保串口HMI正常通信
//UART_Send_Str("page 0");
UART_Send_END(); ADC_config(); //ADC初始化 EA = ; //打开总中断
delay_ms(); //初始化后延时 while ()
{ memset(strPhoto, , sizeof(strPhoto)); //strTemp数组清零
TempPhoto = Get_ADC10bitResult(); //实时读取P1.7通道的AD转换结果
// delay_ms(5);
if(TempPhoto==Temp) //如果ADC检测结果没有变化,则不更新屏显示
{
;
}
else //如果ADC检测结果发生变化,则更新屏显示内容
{
Temp=TempPhoto;
strPhoto[] = TempPhoto/+; //光强度百位
strPhoto[] = (TempPhoto%)/+; //光强度十位
strPhoto[] = (TempPhoto%)%+; //光强度个位 sprintf(buf,"add 1,0,%s",strPhoto );
UART_Send_Str(buf);
UART_Send_END(); // U1SendString("\r\n"); //输出回车换行符,方便观察数据
}
//delay_ms(5);
}
}
ad_imh的更多相关文章
随机推荐
- 【浅色】最强Win7 x64评测
[浅色]最强Win7 x64评测 [浅色]最强Win7 x86 & x64 | WINOS https://www.winos.me/archives/789.htmlESD671MB,安装后 ...
- [UE4]Safe Zone:安全区域
一.在做移动开发的时候,为了避免被手机上的硬件元素挡住界面,就可以使用Safe Zone控件,如下图所示的棕色区域就是Apple IphoneX的课被挡住界面的区域:上面的是Iphone的喇叭位置,下 ...
- TensorFlow 安装报错的解决办法(安装1.5版本)
1.安装Anaconda 百度下载windows版本,一路点下一步,安装好了Anaconda,自带python3.6.6. 2.安装TensorFlow (1)打开Anaconda Prompt,输入 ...
- Includes() vs indexOf() in JavaScript
碰到一个问题, 部分机器网页数据源不正常, 简单排查发现是使用了较新的Array.includs 方法. 查了下兼容性, chrome 需要47版本以后支持, 客户机果然是很久的43版本. 用Arra ...
- LSTM/RNN中的Attention机制
一.解决的问题 采用传统编码器-解码器结构的LSTM/RNN模型存在一个问题,不论输入长短都将其编码成一个固定长度的向量表示,这使模型对于长输入序列的学习效果很差(解码效果很差). 注意下图中,ax ...
- js开发相关
获取url中的参数 (function ($) { $.getUrlParam = function (name) { var reg = new RegExp("(^|&)&quo ...
- 到底什么是哈希Hash?
知识点总结 ---------------------------------------------------------------------------------------------- ...
- !!字体图标(iconfont、Fontello 、雪碧图生成工具。Glyphicons、fontawesome 等)。 图片压缩
http://www.iconfont.cn/ 阿里巴巴矢量图标库 iconfont http://fontawesome.io fontawesome图标 http://www.bootcss.c ...
- spring boot 错误处理总结
在boot 中, 对404 和 异常 有了额外的处理. 当然,我们可以定制, 如何做呢? 1 写一个继承 ErrorController 的Controller 注意, 这里一定要继承 ErrorC ...
- 阿里云视频直播PHP-SDK
阿里云 视频直播 配置 及 PHP-SDK 接入教程准备工作域名管理配置鉴权地址生成器及DEMO演示-熟悉鉴权接入SDK推流回调的配置阿里云 视频直播 配置 及 PHP-SDK 接入教程 个人感觉,阿 ...