AD转换的数码管显示
时间:09-18
来源:互联网
点击:
*本例程采用AD0804芯片,硬件电路:cs片选端接P2.3,WR写数据端写P3.6,RD读数据端接P3.7,锁存端接P2.6脚,数码管位选端分别接P3.2 ,P3.3,P3.4,段选端接P1口*/
#includereg52.h>//头文件#define uint unsigned int//宏文件#define uchar unsigned char//宏文件uchar num;//变量void delay3(uint z);//延时定义void dissy();//延时函数定义sbit ge=P3^2;//个位定义sbit shi=P3^3;//十位定义sbit bai=P3^4;//百位定义sbit ad_cs=P2^3;//片选端sbit ad_wr=P3^6;//写数据端sbit ad_rd=P3^7;//读数据端sbit pian=P2^6;//锁存器片选void add();//ad转换子函数void delay(uint i);//延时子函数申明uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数组/************主函数**********/void main(){while(1){add();//调用AD转换子函数dissy();//数码管显示子函数 } }/************AD转换子函数**********/void add()//AD转换子函数{uchar i;ad_cs=1;//将片选关闭ad_cs=0;//将片选打开ad_wr=1;//写数上升沿ad_wr=0;//写数下降沿ad_wr=1;//写数上升沿P1=0xff;//送数到P0口ad_rd=1;//读数上升沿delay(25);//延时一会儿ad_rd=0;//读数下降沿//////**************因为AD转换时间周期长,
我现在的数码管没有采用锁存器,AD转换时间大于显示时间,
所以显示时会闪烁,解决此问题方法是,连续调用了显示子程序七次,
这样显示时就和AD转换时一至,显示出来的数就不闪了********************//////for(i=0;i7;i++) //调用7次,相当于delay(255)void dissy();//////**********************************//////num=P1;//将数给计数器num}/************显示子函数**********/void dissy()//显示子函数{ P0=table[num/100];//百位显示数据bai=0;//百位打开delay(14);//延时一会bai=1;//关闭百位P0=table[num%100/10];//十位显示数据shi=0;//十位打开delay(14);//延时一会shi=1;//关闭十位P0=table[num%10];//百位显示数据ge=0;//关闭十位delay(14);//延时一会ge=1;//关闭十位}/**************延时子函数*************/void delay(uint i)//延时函数 {uint j,k;//定义变量for(j=i;j>0;j--)//外循环for(k=30;k>0;k--);//内循环}
- 全新物联网解决方案,可手机控制的健康饮水机智能控制系统完整方案(08-27)
- 基于FPGA和ADS7890的高速AD转换(06-05)
- 用Proteus学习51单片机之AD转换(01-24)
- 详解基于CAN总线的汽车仪表系统设计—核心电路模块设计(12-16)
- 巧设pic877a单片机的AD转换模块(12-03)
- AVR单片机入门系列(27)AVR AD转换中断(12-03)