欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

AD轉換的數碼管顯示(C語言)

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年08月08日   【字體:

/*本例程采用AD0804芯片,硬件電路:cs片選端接P2.3,WR寫數據端寫P3.6,RD讀數據端接P3.7,鎖存端接P2.6腳,數碼管位選端分別接P3.2 ,P3.3,P3.4,段選端接P1口*/


#include<reg52.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;i<7;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--);//內循環
}
關閉窗口

相關文章