全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
经过本人调试通过,其中的电压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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北京公务员考试申论真题及答案解析
- 2025年二级建造师考试试题【网校专用】附答案详解
- 2025年安全员B证考试试卷附答案详解(预热题)
- 中职信息技术考试题目及答案解析(版)
- 2025年二级建造师考试试题审定版附答案详解
- 大学计算机一级考试试题及答案
- 安全教育队会课件五年级
- 中学生安全知识竞赛课件
- 七年级生命生态安全课件
- 简短比赛自我介绍
- 员工5S培训课件
- 施工现场有害气体检测与通风管理方案
- 农村应急机井施工方案
- 禁止视频外露协议书
- 2026浙江省机关事务管理局后勤服务编制单位及直属幼儿园招录(聘)人员17人笔试考试参考题库附答案解析
- 涉密人员岗前培训
- 2025年法宣在线宪法学习试题库和答案
- 移动式压力容器充装(R2)特种作业证考试题库(附答案)
- 家居护理创业计划
- 2025年贵州省综合评标专家库考试题库(二)
- 2025年宜昌市市级机关公开遴选考试真题
评论
0/150
提交评论