完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include"intrins.h" #include #define uchar unsigned char #define uint unsigned int void DigDisplay(void); #define GPIO_DIG P0 //***it LSA=P2^2; //***it LSB=P2^3; //***it LSC=P2^4; //--定义全局变量--// unsigned char code DIG_CODE[17]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 unsigned char DisplayData[8]; //用来存放要显示的8位数的值 void StartUART( void ) { AUXR &= 0xF7; //波特率不倍速 S2CON = 0x50; //8位数据,可变波特率 AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T BRT = 0xD9; //设定独立波特率发生器重装值 AUXR |= 0x10; // //波特率9600 // SCON = 0x50; // TMOD = 0x20; // TH1 = 0xFD; // TL1 = 0xFD; // PCON = 0x00; // TR1 = 1; } //************************************通过串口将接收到数据发送给PC端************************************** void R_S_Byte(uchar R_Byte) { SBUF = R_Byte; while( ti == 0 ); //查询法 TI = 0; } void delayms(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void ADinit() { P1M1=0X0F; P1M0=0X0F; P1ASF=0x0F;//P1.0,P1.1,P1.2,P1.3口作为模拟功能AD使用。 ADC_CONTR=0X80;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD转换控制位初始化为0,选择P1.0作为AD输入来用。 _nop_(); _nop_(); _nop_(); _nop_(); AUXR1=0X00; } int GetAD(uchar y) { uchar adf ; int result; ADC_CONTR|=y;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD开始转换,选择P1.0作为AD输入来用。 _nop_(); _nop_(); _nop_(); _nop_(); ADC_CONTR|=0x08; _nop_(); _nop_(); _nop_(); _nop_();/*以上是四个时钟延时*/ while( adf ==0) { adf =(ADC_CONTR&0x10); } result=ADC_RES*4+ADC_RESL; //ADC_CONTR&=0xf7; _nop_(); _nop_(); _nop_(); _nop_(); R_S_Byte(result); return (result); } float Adav(uchar y) { float valav=0; uchar num; for(num=100;num>0;num--) { valav+=GetAD( y); } valav/=100; valav= valav*5.0/1024; return( valav); } void main() { float ad1,ad2,ad3,ad4; ADinit(); StartUART(); while(1) { ADinit(); ad1=Adav(0); ad2=Adav(1); ad3=Adav(2); ad4=Adav(3); // // DisplayData[0]=DIG_CODE[0]; // DisplayData[1]=DIG_CODE[0]; // DisplayData[2]=DIG_CODE[0]; // DisplayData[3]=DIG_CODE[0]; // DisplayData[4]=DIG_CODE[ GetAD(1)%10000/1000]; // DisplayData[5]=DIG_CODE[ GetAD(1)%1000/100]; // DisplayData[6]=DIG_CODE[GetAD(1)%100/10]; // DisplayData[7]=DIG_CODE[GetAD(1)%10/1]; // DigDisplay(); // } } void DigDisplay(void) { unsigned char i; unsigned int j; for(i=0;i<8;i++) { switch(i) //位选,选择点亮的数码管, { case(0):P2=0x00;break; //LSA=0;LSB=0;LSC=0; //显示第0位 case(1):P2=0x04;break; //LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2):P2=0x02;break; //LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3):P2=0x06;break; //LSA=1;LSB=1;LSC=0; break;//显示第3位 case(4):P2=0x01;break; //LSA=0;LSB=0;LSC=1; break;//显示第4位 case(5):P2=0x05;break; //LSA=1;LSB=0;LSC=1; break;//显示第5位 case(6):P2=0x03;break; //LSA=0;LSB=1;LSC=1; break;//显示第6位 case(7):P2=0x07;break; //LSA=1;LSB=1;LSC=1; break;//显示第7位 } GPIO_DIG=DisplayData[i];//发送段码 j=50; //扫描间隔时间设定 while(j--); GPIO_DIG=0x00;//消隐 } }
|
|
|
|
只有小组成员才能发言,加入小组>>
12116 浏览 2 评论
4454 浏览 3 评论
3683 浏览 5 评论
9457 浏览 47 评论
4465 浏览 9 评论
691浏览 0评论
492浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-7 17:53 , Processed in 0.574245 second(s), Total 78, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号