




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
经过本人调试通过,其中的电压TMO是放大了1000倍,如果不放就是它的真实电压,这个值可以在1602 ,12864显示!吐血奉献!#include / 包含51单片机寄存器定义的头文件#include /包含随机函数rand()的定义文件#include #define uchar unsigned char #define uint unsigned int#define AD_SPEED 0x60 / 0110,0000 1 1 70 个时钟周期转换一次sbit dula=P26; /控制数码管位选的使能sbit wela=P27; /控制数码管段选的使能,低电平位选中sbit led1=P10;sbit cesi=P20;sbit cesi1=P21;sbit cesi2=P22;unsigned char tr=0X80; /当需要显示小数点的时候便将最高位置1unsigned char code Table11=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/数码管数据uint result;/*延时函数*/void delay(unsigned int m) /STC12C5A60S2 1T单片机精确延时m=1时,为1us。 while(m-) _nop_();_nop_(); /*/void delay_ms(uint z) /ms级延时程序 uint x,y;for(x=z;x0;x-) for(y=110;y0;y-); /*/void timer0_init()TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;/EADC=1; /开ADC中断EA=1;ET0=1;TR0=1;/*/void display(uint dat) /显示二位void display(uchar bai_c,uchar sh_c,uchar g_c) unsigned long x; unsigned int TMO; x=(5000*(long)dat)/1024; /将得到的电压*1000 TMO=(unsigned int)x; if(TMO3300) /3.216V cesi=0; cesi1=0; cesi2=0; dula=0; P0=tr|TableTMO/1000; /显示最高位 dula=1; dula=0; wela=0; P0=0x7e; wela=1; wela=0; delay_ms(1); dula=0; P0=Table(TMO%1000)/100; /显示次高位 dula=1; dula=0; wela=0; P0=0x7d; wela=1; wela=0; delay_ms(1); P0=Table(TMO%1000)%100)/10; /显示十位 dula=1; dula=0; P0=0x7b; wela=1; wela=0; delay_ms(1); P0=TableTMO%10; /显示个位 dula=1; dula=0; P0=0x77; wela=1; wela=0; delay_ms(1);/*内部AD驱动函数*/*AD设置步骤: 1; 将寄存器的存取位RES清零, 2; 设置速度,设定当前转换的通道.,注:利用或功能,每次进行三个机器周期的延时 3; 开始转换,通过转换标志来确定转换结束(相对的开始,必须打开电源才能进行转换) 4; 读取数据,进行数据的处理 (前四步设定转换通道,并返回转换值) 5; 开电源,确定P1ASF,调用前四步函数,获取转换值,进行显示 */unsigned int get_AD_result(unsigned char channel) unsigned int result; unsigned char AD_finished=0; /转换完成标志设定 ADC_RES = 0; ADC_RESL = 0; channel &= 0x07; /只取低三位 ADC_CONTR = AD_SPEED; delay(3); /延时三个时钟周期,使得ADCONTR能及时写入 ADC_CONTR |= channel; /设置通道 delay(3); /延时三个时钟周期,使得ADCONTR能及时写入 ADC_CONTR |= 0x80; /开启AD电源 delay(3); /延时三个时钟周期,使得ADCONTR能及时写入 ADC_CONTR |= 0x08; /开始转换 AD_finished = 0; while (AD_finished =0 ) /等待A/D转换结束 AD_finished = (ADC_CONTR & 0x10); /0001,0000 测试A/D转换结束否 ADC_CONTR &= 0xE7; /清除标志,一定要用软件清0,其它的不变 /return (ADC_RES); result=ADC_RES*4+(ADC_RESL&0x03); /获取转换结果,高八位与低二位return result; /*内部AD驱动函数*/ADtongdao() unsigned int temp; P1ASF = 0x80; /1000,0000, 将 P1.7 置成模AD ADC_CONTR |= 0x80; /1000,0000 打开 A/D 转换电源 delay(3); /延时三个时钟周期,使得ADCONTR能及时写入 temp=get_AD_result(7); /P1.7为 A/D 当前通道, 测量并发送结果 display(temp); /*/*/void main(void) timer0_init(); /定时器每50ms中断一次 while(1) ADtongdao();/ PCON=0x01; /*/void time0(void) interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; led1=led
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《金牌学案》物理粤教版必修第三册 课件6 带电粒子电场中的直线运动
- 药芯焊丝成型工设备维护保养考核试卷及答案
- 手电筒制作工现场作业技术规程
- 公司醋酸装置操作工标准化技术规程
- 公司异丁烯装置操作工设备安全技术规程
- 办公小机械制造工工艺作业技术规程
- 2026届甘肃省庆阳市陇东院附属中学七年级数学第一学期期末预测试题含解析
- 2025汽车买卖合同范文格式
- 2025设备租赁合同(合同样本)
- 专科知识培训总结课件
- 2025年矿业权评估师考试(矿业权评估地质与矿业工程专业能力)全真冲刺试题及答案
- 3.2 中国的矿产资源教学课件 初中地理湘教版(2024)八年级上册
- 学堂在线 高技术与现代局部战争 章节测试答案
- 新房外部电梯拆除方案(3篇)
- 蓝豚医陪陪诊服务发展研究报告2025
- 公众号文章培训:提升写作技巧与个人风格
- 《水浒传》人物专题系列-鲁智深
- 大学生职业生涯规划与就业指导知到智慧树章节测试课后答案2024年秋西南民族大学
- 友情留言句子
- 2022年国家公务员考试《行测》真题(地市级)及答案解析
- 高速铁路概论 课件 第4章 高速铁路动车组
评论
0/150
提交评论