標(biāo)題: 51單片機(jī)倒計(jì)時(shí)程序 初學(xué)者求思路 中斷函數(shù)還沒(méi)有學(xué) [打印本頁(yè)]
作者: AnRan_ 時(shí)間: 2022-1-21 19:20
標(biāo)題: 51單片機(jī)倒計(jì)時(shí)程序 初學(xué)者求思路 中斷函數(shù)還沒(méi)有學(xué)
剛學(xué)單片機(jī)一周,布置的任務(wù)是讓數(shù)碼管從10變化到0,每次變化間隔1秒。我知道怎么從9變化到0,但是如何讓10變化到9呢?我只知道如何讓數(shù)碼管一直顯示10,但是不知道怎么讓10顯示1秒并且變成9。單片機(jī)用的清翔的開(kāi)發(fā)板,有沒(méi)有大佬給個(gè)思路,非常感謝。
中斷函數(shù)沒(méi)有學(xué),目前只學(xué)了延時(shí)函數(shù),有沒(méi)有辦法用延時(shí)函數(shù)做到這個(gè)功能?
附上開(kāi)發(fā)板原理圖。
-
開(kāi)發(fā)板原理圖.png
(100.19 KB, 下載次數(shù): 32)
下載附件
2022-1-21 19:19 上傳
開(kāi)發(fā)板原理圖
作者: wulin 時(shí)間: 2022-1-21 21:36
用你能理解的寫(xiě)法,用延時(shí)函數(shù)寫(xiě)了兩位數(shù)碼管動(dòng)態(tài)顯示10秒循環(huán)倒計(jì)時(shí)。
- #include <reg51.h>
- sbit dula=P2^6; //段
- sbit wela=P2^7; //位
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰數(shù)碼管段碼
- unsigned int i;//無(wú)符號(hào)整型變量
- bit sign;//位變量
- char num;//有符號(hào)字符型變量
- void delay(unsigned int t)//延時(shí)函數(shù)
- {
- unsigned int i,j;
- for(i=t;i>0;i--)
- for(j=110;j>0;j--);
- }
- void main(void)
- {
- num=10;//賦初值
- sign=0;//賦初值
- while(1)
- {
- sign=~sign;//取反
- if(sign==0)
- {
- P0=0xfe;//送位碼
- wela=1;//位碼鎖存
- wela=0;
- P0=table[num/10];//送十位段碼
- dula=1;//段碼鎖存
- dula=0;
- }
- if(sign==1)
- {
- P0=0xfd;//送位碼
- wela=1;//位碼鎖存
- wela=0;
- P0=table[num%10];//送個(gè)位段碼
- dula=1;//段碼鎖存
- dula=0;
- }
- i++;
- if(i==1000)//約1秒
- {
- i=0;
- num--;
- if(num<0)
- {
- num=10;
- }
- }
- delay(1);//延時(shí)約1ms,以此控制主循環(huán)周期
- }
- }
復(fù)制代碼
作者: AnRan_ 時(shí)間: 2022-1-21 23:09
好的,謝謝
作者: a185980800 時(shí)間: 2022-1-22 00:23
中斷不會(huì),天問(wèn)51了解一下。一鍵生成。
作者: kema 時(shí)間: 2022-1-22 09:55
本帖最后由 kema 于 2022-1-22 09:59 編輯
給你個(gè)最笨的方法哈哈
i=10;
while(1)
{
if(i==10)
{
你會(huì)讓他顯示10
}
if(i==9)
{顯示9}
if(i==8)
{顯示8}
……
delay(1秒);
i--;
if(i==0)
i=10;
}簡(jiǎn)單吧
作者: AnRan_ 時(shí)間: 2022-1-22 10:14
讓他顯示10我會(huì),但是不是得讓這個(gè)10一直刷新持續(xù)1s么?因?yàn)檫@個(gè)10我只會(huì)用動(dòng)態(tài)顯示。你這個(gè)方法不能讓10持續(xù)顯示1s吧
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |