部分地圖(1):
部分圖紙(2):
部分圖紙(3):
代碼如下:
# include & ltreg 51 . h & gt;
# include & ltintrins.h & gt
#定義uchar無符號字符
#定義uint無符號整數
sbit st=p2^0;//開始轉換位
sbit oe=p2^2;//輸出使能位
sbit ale=p2^3;?//地址允許鎖存位
sbit eoc=p2^1;//轉換位結束
sbit clk=p2^4;//時鐘
龍int datas,白,佘,葛;
烏恰爾·段;
uchar碼號[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };//不帶點的數字
uchar碼num_dot[]={0xbf,0x86,0xdb,0xcf,0xe6,0x ed };//帶點的數字
uchar碼魏[]={0x0d,0x0b,0x 07 };//位代碼
無效延遲(單位z)
{
烏恰爾壹世;
while(z -)
for(I = 0;我& lt120;i++);
}
空顯示()
{
uchar I = 0;
白=(datas * 500/255)/100;//計算並獲取最高位
她=(datas * 500/255)/10% 10;//計算得到中間位
ge =(datas * 500/255)% 10;//計算得到最低位
for(I = 0;我& lt3;i++)
{
=魏[我];
if(I = = 0){ Duan = num _ dot[Bai];}
else if(I = = 1){ Duan = num[she];}
else if(I = = 2){ Duan = num[ge];}
P0 =段;
延遲(2);
}?
}
void main()
{
TMOD = 0x 02;//定義T0和工作模式2
TH0 = 0x 216;//TH0初始值
TL0 = 0x 216;?//TH1初始值
EA = 1;?//打開主機中斷
ET0 = 1;//打開中斷使能位
TR0 = 1;?//打開T0
while(1)
{
ST = OE = 0;//首先將START和EO設置為0。
ALE = 1;//設置ALE和ST為1拉高。
ST = 1;
ALE = 0;//將ALE和START設置為0,開始數據轉換。
ST = 0;
而(!EOC);?//等待EOC,ECO為1,表示轉換完成。
OE = 1;//打開OE,讀取數據。
datas = p 1;?//保存數據中的數據。
顯示();
}
}
void inter_1()中斷1
{
CLK = ~ CLK;
}
運行結果如下