a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的AD轉換的數碼管顯示程序

基于單片機的AD轉換的數碼管顯示程序

作者: 時間:2012-09-19 來源:網絡 收藏

*本例程采用0804芯片,硬件電路: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
};//數組

本文引用地址:http://www.j9360.com/article/170838.htm

/************主函數**********/
void main()
{
while(1)
{
add();//調用子函數
dissy();//子函數
}
}

/************子函數**********/
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--);//內循環
}



評論


相關推薦

技術專區

關閉