導航:首頁 > 操作系統 > 單片機最低位怎麼循環顯示1到9

單片機最低位怎麼循環顯示1到9

發布時間:2024-06-23 21:23:29

1. 我想要實現單片機: 數碼管每隔1s顯示從0-9怎麼實現 全部代碼。

你要c語言的還是匯編的?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uchar x); //延時程序
void ds_50ms(void); //50ms定時,中斷程序
void Ptime(uchar); //時間處理函數
void Js_Scan(void); //數碼管掃描函數

sbit S1=P2^4; //置位P2.4為數碼管1控制位

int num=0,m=0; //定義數據類型

//int code LED_Num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數碼管掃描數組,共陰極
int code LED_Num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽極

void main(void) //主函數
{
TMOD=0x01; //定義計時器工作類型
TH0=(65535-50000)/256; //定時器高4位初值
TL0=(65535-50000)%256; //定時器低4位初值
EA=1; //開中斷
ET0=1; //開中斷
while(1) //建立死循環
{
Js_Scan(); //調用數碼管掃描函數
TRO=1;
}
}
void ds_50ms(void) interrupt 1 using 1 //50ms定時中斷程序
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++; //執行累加,直到50ms
Ptime(num); //調用時間處理函數
}
void Ptime(uchar time) //時間處理函數
{
if(time==20) //判斷是否到1000ms,即1秒
{
num=0; //num清零
m++; //m累加
}
if(m==9) //數碼管顯示9時,m清零,重新計數
{
m=0;
}
}
void Js_Scan() //數碼管掃描函數
{
uchar j; //定義j數據類型
for(j=0;j<5;j++) //建立循環
{
S1=1;P0=LED_Num[m];delay(1);S1=0; //掃描顯示位,稍作延時(對於單位數碼管可直接置高置低,此為掃描的寫法,單位不需要延時,不需要寫for循環)
}
}
void delay(uchar x) //延時函數,防止數碼管顯示不穩定
{
uchar k;
while(x--)
for(k=0;k<125;k++);
}
這個是共陽極的,共陰極改變數組就行了。。。。 將前面的//刪掉 將後面數組加上// S1=0;S1=1;就行了。

2. 鐢ㄥ崟鐗囨満鎺у埗涓涓8孌墊暟鐮佺★紝鍏跺驚鐜鏄劇ず鏁板瓧0鍒9錛屾瘡浣嶆暟瀛楁樉紺烘椂闂翠負涓縐掞紝瀹氭椂鍔熻兘鐢ㄥ崟鐗囨満涓鏂鏄劇ず

鍙鎺у埗涓浣嶆暟鐮佺℃病鍟ユ剰鎬濓紝濡傛灉鍙鏄鐮旂┒涓涓嬪掓槸鍙浠ョ殑


緇欎綘涓浠芥垜鑷宸卞啓鐨勶紝鍒╃敤鍥涗綅鏁扮爜綆℃樉紺烘ā鎷熸椂閽熺殑紼嬪簭鍚э紝渚涗綘鐮旂┒


鍙﹀栵紝鍐嶇粰浣犱竴涓涓浣嶆暟鐮佺$殑錛屾槸浣犺佹眰鐨勯偅縐


榪欎袱涓閮芥槸鍒╃敤鍗曠墖鏈虹殑瀹氭椂鍣ㄤ腑鏂鏉ヤ駭鐢熺掍俊鍙風殑


涓嬮潰榪欎釜鏄 鍥涗綅鏁扮爜綆$殑錛屾渶涓嬭竟鐨勬槸涓浣嶆暟鐮佺$殑錛岀鍙d笉涓鏍風殑璇濓紝鑷宸辨敼涓


/***************************************************************************/

#include<reg51.h>

sbit p20=P3^7; sbit p21=P3^6; sbit led=P2^7;//鎸夐敭鍙奓ED絝鍙e畾涔

sbit Axs=P1^3; sbit Bxs=P1^2; sbit Cxs=P1^1; sbit Dxs=P1^0;//鏁扮爜綆′綅閫夌鍙

char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//鏁扮爜綆℃樉紺虹紪鐮

unsigned int h,m,s,t,n;

/***************************************************************************/

void YS(char hs)//寤舵椂鍑芥暟

{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}

/***************************************************************************/

void XS(int xh,int xm) //鏄劇ず瀛愬嚱鏁

{

char d1,d2,d3,d4;

d1=(xh/1)%10; d2=(xh/10)%10;//鍒嗙誨皬鏃

d3=(xm/1)%10; d4=(xm/10)%10;//鍒嗙誨垎閽


P0=table[d1];Cxs=0;YS(10);Cxs=1;//灝忔椂涓浣

P0=table[d2];Dxs=0;YS(10);Dxs=1;//灝忔椂鍗佷綅

P0=table[d3];Axs=0;YS(10);Axs=1;//鍒嗛挓涓浣

P0=table[d4];Bxs=0;YS(10);Bxs=1;//鍒嗛挓鍗佷綅

P0=0x7f; P1=0xfd; YS(10); P1=0xff;//灝忔暟鐐

}

/***************************************************************************/

void main(void)

{

TH0=(65536-1000)/256; TL0=(65536-1000)%256;

TMOD=0x01; EA=1; ET0=1; TR0=1;//瀹氭椂鍣ㄥ垵濮嬪寲

while(1)//涓誨驚鐜

{

if(p20==0){YS(10);if(p20==0){h++;if(h>23){h=0;}}while(!p20){XS(h,m);}}

if(p21==0){YS(10);if(p21==0){m++;if(m>59){m=0;}}while(!p21){XS(h,m);}}

XS(h,m);//璋冪敤鏁扮爜綆℃樉紺哄嚱鏁

}

}

/***************************************************************************/

void int1() interrupt 1 //瀹氭椂鍣ㄤ腑鏂

{

TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;t++;

if(t>500){t=0;led=~led;}//LED闂鐑

if(n>1000){n=0;s++;}//濡傛灉杈懼埌涓縐掞紝縐掑姞涓

if(s>59){s=0;m++;}//濡傛灉杈懼埌涓鍒嗭紝鍒嗗姞涓

if(m>59){m=0;h++;}//濡傛灉杈懼埌涓灝忔椂錛屽皬鏃跺姞涓

if(h>23){h=0;}//濡傛灉杈懼埌24灝忔椂錛屽皬鏃舵竻闆

}

/***************************************************************************/



/***************************************************************************/

#include<reg51.h>

sbit Axs=P1^3;//鏁扮爜綆′綅閫夌鍙

char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//鏁扮爜綆℃樉紺虹紪鐮

unsigned int h,m,s,t,n;

/***************************************************************************/

void YS(char hs)//寤舵椂鍑芥暟

{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}

/***************************************************************************/

void main(void)

{

TH0=(65536-1000)/256; TL0=(65536-1000)%256;

TMOD=0x01; EA=1; ET0=1; TR0=1;//瀹氭椂鍣ㄥ垵濮嬪寲

while(1)//涓誨驚鐜

{

P0=table[m];Axs=0;YS(10);Axs=1;//灝忔椂涓浣

}

}

/***************************************************************************/

void int1() interrupt 1 //瀹氭椂鍣ㄤ腑鏂

{

TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;

if(n>1000){n=0;m++;}//濡傛灉杈懼埌涓縐掞紝縐掑姞涓

if(m>9){m=0;}//濡傛灉杈懼埌涓灝忔椂錛屽皬鏃跺姞涓

}

/***************************************************************************/

閱讀全文

與單片機最低位怎麼循環顯示1到9相關的資料

熱點內容
androidgetmethod 瀏覽:796
編程輸出1112 瀏覽:789
加密貨幣礦怎麼樣 瀏覽:208
信息流優化師和程序員 瀏覽:99
pythonkivy框架 瀏覽:732
xshell怎樣返回上一條命令 瀏覽:487
python函數內存機制 瀏覽:827
手機國際網路伺服器地址 瀏覽:396
安卓系統投影儀怎麼連接外接設備 瀏覽:814
陰線向下接進20日均線選股源碼 瀏覽:431
穴點陣圖pdf 瀏覽:44
高頻量化演算法 瀏覽:907
3j指標源碼怎麼用 瀏覽:866
出發命令 瀏覽:180
比較低碳鋼和鑄鐵在壓縮 瀏覽:320
天眼精準打擊指標源碼 瀏覽:939
pythondataframe 瀏覽:453
單片機的繼電器原理圖怎麼畫 瀏覽:897
自學程序員好考嗎 瀏覽:980
還款解壓再質押 瀏覽:972