基于ADC0834的AD转换.doc

上传人:飞****9 文档编号:136861393 上传时间:2020-07-03 格式:DOC 页数:6 大小:24.50KB
返回 下载 相关 举报
基于ADC0834的AD转换.doc_第1页
第1页 / 共6页
基于ADC0834的AD转换.doc_第2页
第2页 / 共6页
基于ADC0834的AD转换.doc_第3页
第3页 / 共6页
基于ADC0834的AD转换.doc_第4页
第4页 / 共6页
基于ADC0834的AD转换.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《基于ADC0834的AD转换.doc》由会员分享,可在线阅读,更多相关《基于ADC0834的AD转换.doc(6页珍藏版)》请在金锄头文库上搜索。

1、/*- 功能介绍:-*/#include #include #include #define uchar unsigned char#define uint unsigned int#define ucode unsigned code/*- 包含函数 -*/void DISP(void); /数码管显示函数void key(void);/矩阵键盘函数void _nop_(void);void ad_buf();/模拟量转化为数字函数uchar ADC0834(uchar tds); /AD转换函数/*- 参数定义-*/uchar bdata ekey1; /键前沿提取uchar bdata

2、ekey2;uchar data key2;uchar data key1;uchar bdata lastkey1;uchar bdata lastkey2;uchar disp_a;/数码管显示指针sbit cs0=P20;sbit cs1=P21;sbit cs2=P22;sbit cs3=P23;sbit cs4=P24;sbit esw0=ekey26; /独立按键键沿标志sbit esw1=ekey27; /sbit ek0=ekey10; /矩阵按键键沿标志sbit ek1=ekey11;sbit ek2=ekey12;sbit ek3=ekey13;sbit ek4=ekey1

3、4;sbit ek5=ekey15;sbit ek6=ekey16;sbit ek7=ekey17;sbit ek8=ekey20;sbit ek9=ekey21;sbit row0=P25;sbit row1=P26;sbit row2=P27;sbit sw0=P16;sbit sw1=P17;sbit do_0834=P10;/0834 DIsbit cs_0834=P11; /0834 片选sbit di_0834=P12; /0834 DIsbit clk_0834=P13;/ 0834 时钟sbit dian=P07;/小数点uchar buf0; / 显示缓冲单元个位uchar

4、buf1; /十uchar buf2; /百uchar buf3; / 千uchar buf4;uchar code led=0x0C0,0x0F9,0x0A4,0x0B0,0x99,0x92,0x82,0x0F8,0x80,0x90;uchar msta=0;uchar tds;/通道选择uint adbuf;bit t1s;/一秒标志位bit light; /小数点亮标志位uchar ktime;/*- 主函数-*/void main() uchar f1s=0;uchar i;TMOD=0x01;TH0=0xec;TL0=0x78;TR0=1;while(1) while(!TF0);

5、/5ms?TF0=0;TH0=0x0ec;TL0=0x78;+f1s;if(f1s=200)t1s=1;f1s=0;key();DISP();switch(msta) /待机模块 显示“0000” case 0:if(esw0)msta=1;tds=0xd0;/SW1按下跳到模块1 选择单端模式 AD一次 if(esw1)msta=1;tds=0x80;/SW2按下跳到模块1 选择差分模式 AD一次 if(ek0)msta=2;tds=0xd0;/ ek0按下跳到模块2 选择单端模式 十次AD取平均 if(ek1)msta=2;tds=0x80;/ek1按下跳到 模块2 选择差分模式 十次AD

6、取平均 if(ek2)msta=3;tds=0xd0;/ ek2按下跳到模块3 选择单端模式 一秒AD一次 if(ek3)msta=3;tds=0x80;/ ek3按下跳到模块3 选择差分模式 一秒AD一次 buf4=0,buf3=0,buf2=0,buf1=0; buf0=0; break; case 1:if(esw0)msta=1;tds=0xd0; /只AD一次 if(esw1)msta=1;tds=0x80; light=1;/小数点亮 adbuf=ADC0834(tds); ad_buf(); break; case 2:if(ek0)msta=2;tds=0xd0; /AD十次取

7、平均 if(ek1)msta=2;tds=0x80; light=1; for(i=0;i10;i+) adbuf=adbuf+ADC0834(tds); adbuf=adbuf/11; ad_buf(); break; case 3:if(ek2)msta=3;tds=0xd0; /一秒AD一次 if(ek3)msta=3;tds=0x80;light=1;if(t1s)t1s=0;adbuf=ADC0834(tds);ad_buf();break; default:break; /*- 数码管显示-*/void DISP() P0=0xff; P2=0xff;switch(disp_a)

8、case 0: cs0=0; / 点亮第0位数码管 P0=ledbuf0; disp_a=1; break; case 1: cs1=0; / 点亮第1位数码管 P0=ledbuf1; disp_a=2; break; case 2: cs2=0;/ 点亮第2位数码管 P0=ledbuf2; disp_a=3; break; case 3: cs3=0;/ 点亮第3位数码管 P0=ledbuf3; if(light) dian=0; /小数点亮 disp_a=4; break; case 4: cs4=0;/ 点亮流水灯 P0=buf4; disp_a=0; break;default:bre

9、ak;/*-矩阵键盘及独立按键子程序-*/ void key() uchar kbuf; P2=0x0ff;/关数码管 row0=0; /扫描K03 _nop_(); /延时 _nop_(); kbuf=P2; kbuf=(kbuf&0x0f)0x0f; /K03键位保留 求反转正逻辑 lastkey1=kbuf;/新的键状态暂存R6 P2=0x0ff; row1=0; /扫描K47 _nop_(); _nop_(); kbuf=P2; kbuf=(kbuf&0x0f)0x0f; lastkey1=(kbuf4)+lastkey1; P2=0x0ff; row2=0;/扫描K8K11 _nop

10、_(); _nop_(); kbuf=P2; kbuf=(kbuf&0x0f)0x0f; lastkey2=kbuf; P2=0x0ff; P1=P1|0x0c0; kbuf=P1; kbuf=(kbuf&0x0c0)0x0c0; lastkey2=kbuf+lastkey2;if(lastkey2!=key2)|(lastkey1!=key1)/键状态变化则转移 if(ktime-!=0) lastkey1=key1; lastkey2=key2; else ktime=0x04; ekey1=(key1lastkey1)&lastkey1; key1=lastkey1; ekey2=(key2lastkey2)&lastkey2; key2=lastkey2; /* AD转换 */uchar ADC0834(uchar tds) uchar i,adbuf=0; cs_0834=0; for(i=0;i5;i+) clk_0834=0; di_0834=0; if(tds&0x80) di_0834=1; clk_0834=1; tds=1; do_0834=1;for(i=0;i8;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号