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的更多相关文章
随机推荐
- stm32在linux下使用clion开发
参考大神的资料,淘宝买了个板子和jlink 几个概念 jlink / openJtag,实现调试协议的硬件 openocd,这个和上面的硬件一起组成调试器 这样有个感性的认识. 具体流程 libusb ...
- 多版本opencv管理; find_package()的原理解析
近期用cmake编译程序时,报错找不到opencv2.由于我电脑里安装了多个版本的opencv,管理不善,借此机会梳理一下思路. 1. Cmake -- find_package(Opencv REQ ...
- mysql大表设计以及优化
MYSQL千万级数据量的优化方法积累https://m.toutiao.com/group/6583260372269007374/?iid=6583260372269007374 MySQL 千万级 ...
- mysqli用户权限操作
此操作指令在 mysql 的数据库中 所以要 use mysql 查询mysqli中所有用户的权限 select host,user form user; 添加用户 grant all privil ...
- 20165312 2017-2018-2《JAVA程序设计》第8周学习总结
20165312 2017-2018-2<JAVA程序设计>第8周学习总结 一.第十二章知识点总结 进程与线程 进程是程序的一次动态执行进程,它对应了从代码加载.执行至执行完毕的一个完整过 ...
- weblogic发序列化命令执行漏洞工具分享
weblogic发序列化命令执行漏洞工具分享(链接: https://pan.baidu.com/s/1qE5MFJ32672l-MMl-QL-wQ 密码: d85j) JBOSS_EXP 工具分享( ...
- Python 快速排序 算法
基本的快排算法,二分法 #!/usr/bin/env python # encoding: utf-8 l1=[1,4,2,6,3] def path_sort(l,start_index,end_i ...
- 微信小程序版本管理
备忘录:<需要修改完善> 打开小程序开发者工具,点击版本管理,点击设置 , 通用更改码云的名字和邮箱 网络认证选择用户名和密码 把密码输入了,点击远程 添加 输入码云的https地址 和仓 ...
- C++学习基础十七-- 函数指针
C++常用的函数指针 语法:返回值类型 (*函数名)(参数列表); 举例说明:int (*Func)(int m, int n); 用typedef简化函数指针的定义 例如: typedef int ...
- OS与Internet
1 操作系统 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行 ...