logo资料库

基于C51单片机、AD1674和MAX7221的数字电压表(含原理图).pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
特别说明 此资料来自百度文库(http://wenku.baidu.com/) 您目前所看到的文档是使用的抱米花百度文库下载器所生成 此文档原地址来自 http://wenku.baidu.com/view/5a815fea19e8b8f67c1cb90c.html 感谢您的支持 抱米花 http://blog.sina.com.cn/lotusbaob
基于C51片机、AD1674和MAX7221的字电表(含原理) 2010年06月24日 星期四 15:43 #include #include #define uchar unsigned char #define uint unsigned int #define addo (10.0/4095.0)// 率, 12 位精度 (2^12-1=4095) ,量程 10V 管脚定义 */ sbit DIN = P2^5; sbit SCL = P2^6; sbit CS = P2^7; sbit STS = P2^0; sbit CS1 = P2^1; sbit A0 = P2^2; sbit CE = P2^3; sbit RC = P2^4; /* static uchar disbuf[8];// 示存 */ void delay_us(uchar n) { uchar i; while(n--) { for(i=0;i<10;i++); } } /* 微秒延函 毫秒延函 */ void delay_ms(uint n) { uchar i; while(n--) { for(i=0;i<100;i++); } } /* */ void WriteData(uchar dat) { uchar i; /* MAX7221 向 串行一个字的据
for(i=0;i<8;i++) { DIN = (dat&(0x80>>i))?1:0; SCL = 0; delay_us(2); SCL = 1; delay_us(2); } } */ void MAX7221_Write(uchar addr,uchar dat) { CS = 0; WriteData(addr); WriteData(dat); CS = 1; } /* MAX7221 向 中指定的地址入据 */ void MAX7221_Initial(void) { MAX7221_Write(0x0A,0x07);//LED /*MAX7221 的初始化 8/16 MAX7221_Write(0x0B,0x07);// MAX7221_Write(0x0C,0x01);// MAX7221_Write(0x0F,0x00);// MAX7221_Write(0x09,0xff);// } */ void display(void) { uchar i; for(i=0;i<8;i++) { MAX7221_Write(i+1,disbuf[i]); } } /*LED 示函 取 */ uint AD1674_Read(void) { uint temp; /* AD1674 果 亮度值设置 描示器的个 正常操作模式(非掉电模式) 正常示模式(非模式) 个 8 0~7 8 的 个据行 B BCD 型
uchar temp1,temp2; CS1 = 1; CE = 0; // CS1 = 0; A0 = 0; RC = 0; CE = 1; //CE=1,CS1=0,RC=0,A0=0 _nop_(); while(STS==1);// 初始化 据采集 , 等待据采集束 CE = 0; // RC = 1; A0 = 0; CE = 1; //CE=1,CS1=0,RC=1,12/8=1,A0=0 芯片使能 启动 位温度 12 _nop_(); temp1 = P0;// 允高八位据并行输出 取果的高八位 取果的低四位 CE = 0;// RC = 1; A0 = 1; CE = 1;//CE=1,CS1=0,RC=1,12/8=0,A0=1 芯片使能 _nop_(); temp2 = P0;// CE = 0; CS1 = 1;// temp = (temp1<<8)|temp2;// return (temp>>4);// } */ void HEXTOBCD(uchar chn) { uint temp; temp = (int)(AD1674_Read()*addo*1000);// /* 向冲器中入要示的据 允低四位据并行输出 AD1674 据采集 高位和低位合成实际温度, 口的高四位 temp2 P0 返回果,右移四位是因 temp2 P0 口的高四位 disbuf[0] = temp/10000; disbuf[1] = (temp%10000/1000)|0x80;// 可示的实际温度值 disbuf[2] = temp%1000/100; disbuf[3] = temp%100/10; disbuf[4] = temp%10; 小点的位示
空示 示通道号 采集第一通道的据 示采集到的据 disbuf[5] = 15; disbuf[6] = 15;// disbuf[7] = chn;// } */ void main() { MAX7221_Initial(); while(1) { HEXTOBCD(1);// /* 主函 display();// delay_ms(10); } } 原理如下原理如下原理如下原理如下::::
分享到:
收藏