導航:首頁 > 操作系統 > 單片機smgduan

單片機smgduan

發布時間:2022-09-26 03:19:07

『壹』 51單片機定時器T1中斷使數碼管計數0—F,每秒加1,想要將if()函數寫到main()函數中,如何實現。

把初始化程序 Timer1Init(); 放在while(1) 的上面,你現在這樣,每次循環都初始化了,就永遠也不計數了 。另外,開機是顯示8,是因為,開機P0口全為1,要過1秒後開始從0開始顯示,可以在while(1)上面加一行 P0=0x3f; 這樣,開機就顯示0了。另外,這種定時1秒,定時器最好定時長點,如50ms ,你現在是定時1ms ,這中斷頻率太高了,如果有其它程序就會影響主程序的執行。
還有,if 語句下面的
if(i==1000)
{
//TR1=0;//要這行,就計數一遍就停了,要不停地計數就要刪掉
i=0;
P0=smgan[n++];
if(n==16) n=0;

}

『貳』 單片機編程錯誤

#include"reg52.h"
typedefunsignedcharu8;
typedefunsignedintu16;

sbitLSA=P2^2;
sbitLSB=P2^3;
sbitLSC=P2^4;

sfrGPIO_KEY=0x90;
sfrGPIO_DIG=0x80;

u16KeyValue;

u8codesmgan[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

voiddelay(u16i)
{
while(i--);
}

voidKeyDown()
{
u8a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)
{
delay(1000);
if(GPIO_KEY!=0x0f)
{
GPIO_KEY=0x0f;
switch(GPIO_KEY)
{
case(0x07):KeyValue=0;break;
case(0x0b):KeyValue=1;break;
case(0x0d):KeyValue=2;break;
case(0x0e):KeyValue=3;break;
}
GPIO_KEY=0xf0;
switch(GPIO_KEY)
{
case(0x70):KeyValue=KeyValue;break;
case(0xb0):KeyValue=KeyValue+4;break;
case(0xd0):KeyValue=KeyValue+8;break;
case(0xe0):KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0))
{
delay(1000);
a++;
}
}
}
}
voidmain()
{
LSA=0;
LSB=0;
LSC=0;
while(1)
{
KeyDown();
GPIO_DIG=smgan[KeyValue];
}
}

『叄』 如何用單片機做一個簡單的倒計時器

我已經完成了,下面是電路圖和實際效果,你也試試,程序已經調試完成了!!!是使用秒錶程序改編完成的,喜歡的話,點一個贊吧!希望能幫到你!!!

#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器

typedef unsigned int u16; //對數據類型進行聲明定義

typedef unsigned char u8;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

u8 code smgan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f};//顯示0~F的值

u8 ssec=100,sec=60,min=04;

u8 DisplayData[8];

sbit beep=P1^5;

unsigned long counter=0;

unsigned int c=0;

sbit p15=P1^5;

bit p;

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

* 函 數 名 : delay

* 函數功能 : 延時函數,i=1時,大約延時10us

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

void delay(u16 i)

{

while(i--);

}

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

* 函 數 名 : Timer0Init

* 函數功能 : 定時器0初始化

* 輸 入 : 無

* 輸 出 : 無

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

void Timer0Init()

{

TMOD=0X11;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。

TH0=0Xd8; //給定時器賦初值,定時10ms

TL0=0Xf0;

ET0=1;//打開定時器0中斷允許

EA=1;//打開總中斷

TR0=1;//打開定時器 -->啟動定時器中斷!

ET1=1;

TR1=1;

TH1=(65536-250)/256; //FC

TL1=(65536-250)%256;

}

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

* 函 數 名 : DigDisplay

* 函數功能 : 數碼管動態掃描函數,循環掃描8個數碼管顯示

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

void DigDisplay()

{

u8 i;

for(i=0;i<8;i++)

{

switch(i) //位選,選擇點亮的數碼管,

{

case(0):

LSA=0;LSB=0;LSC=0; break;//顯示第0位

case(1):

LSA=1;LSB=0;LSC=0; break;//顯示第1位

case(2):

LSA=0;LSB=1;LSC=0; break;//顯示第2位

case(3):

LSA=1;LSB=1;LSC=0; break;//顯示第3位

case(4):

LSA=0;LSB=0;LSC=1; break;//顯示第4位

case(5):

LSA=1;LSB=0;LSC=1; break;//顯示第5位

case(6):

LSA=0;LSB=1;LSC=1; break;//顯示第6位

case(7):

LSA=1;LSB=1;LSC=1; break;//顯示第7位

}

P0=DisplayData[i];//發送段碼

delay(100); //間隔一段時間掃描

P0=0x00;//消隱-->撤銷選中;

}

}

void datapros()

{

DisplayData[0]=smgan[ssec%10];

DisplayData[1]=smgan[ssec/10];

DisplayData[2]=0x40;

DisplayData[3]=smgan[sec%10];

DisplayData[4]=smgan[sec/10];

DisplayData[5]=0x40;

DisplayData[6]=smgan[min%10];

DisplayData[7]=smgan[min/10];

}

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

* 函 數 名 : main

* 函數功能 : 主函數

* 輸 入 : 無

* 輸 出 : 無

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

void main()

{

Timer0Init(); //定時器0初始化

while(1)

{

datapros();

DigDisplay();

}

}

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

* 函 數 名 : void Timer0() interrupt 1

* 函數功能 : 定時器0中斷函數

* 輸 入 : 無

* 輸 出 : 無

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

void Timer0() interrupt 1

{

TH0=0Xd8; //給定時器賦初值,定時10ms

TL0=0Xf0;

ssec--;

if(ssec==00) //1s

{

ssec=100;

sec--;

if(sec==00)

{

sec=60;

min--;

if(min==-1)

{

P1=1;

ssec=0;sec=0;min=0;

TR0=0;

}

}

}

}

void Timer1() interrupt 3

{

TH1=(65536-250)/256; //FC

TL1=(65536-250)%256;

if(p!=1) p15=~p15;

if(p==1) p15=0;

c++;

if(c==250)

{

//c=0;

p=~p;

}

if(c>=250&&1695);

if(c==1696) c=0;

}

『肆』 單片機p0=~smgan[0]是什麼意思

應該是大寫的字母,P0=~smgan[0]。這是從P0口輸出數字0的段碼,smgan[ i ],是程序前定義過的段碼表。但是,原理圖中或模擬圖中的數碼管類型與段碼表不符,兩者正相反。例如,數碼管是共陽的,而段碼表是共陰的,所以,從P0口輸出段碼之前要先取反,~ 符號是8位數都取反的意思。請及時採納。

『伍』 單片機編程里的smgan lednum password keycode 一般定義什麼

匯編語言和keil c語言!keil c實際上就是c語言,只不過裡面有些特殊定義,區別很小的,如果你c好的話建議你直接學keilc,匯編編起來比較復雜,代碼多,但是他也有c不具備的優勢,就是可以自己定義空間,把每個單元都用到極致,這點很重要尤其是你的系統比較大,內存比較緊張的時候就不能讓系統自動分配地址。但是不論哪種語言你都要對硬體有所了解,了解內部結構及工作流程,

『陸』 單片機延時函數

因為第二個延時時間太長導致數碼管刷新頻率太低

『柒』 51單片機開發模板製作溫度顯示按鍵控速風扇,程序編好,按鍵功能實現不了,求大神門幫忙看看,感謝,感謝

首先你這程序有問題,這四行不屬於任何的子程序,編譯都出錯。
DisplayData[1] = smgan[temp / 10000];
DisplayData[2] = smgan[temp % 10000 / 1000];
DisplayData[3] = smgan[temp % 1000 / 100] | 0x80;
DisplayData[4] = smgan[temp % 100 / 10];DisplayData[5] = smgan[temp % 10];
把這四行改正後,編譯後模擬運行程序,3個按鍵是起作用的。你感覺不起作用,是因為那3個按鍵,就是改變 flag 分別為0,1,2。可是,主程序中根據 flag 值不同,執行的卻是同一個動作,都是 moto=1; (稍稍有一點區別,只是你感覺不出來)所以,按什麼鍵都是這個動作,按不按都 一樣,當然那就會覺得按鍵不起作用。那3個按鍵控制的動作要有區別呀,或者動作區別要大,才能看出來按鍵起作用啦。最簡單,直接的方法是,按住按鍵不鬆手,看數碼管是不是全滅啦,如果全滅了,說明按鍵就是起作用的。

『捌』 單片機編程的問題。C141錯誤

smgan[15]。。你定義數組說有15個元素,而你[ ]內填寫的卻是16個元素,這樣必然是不對的。
smgan[15]中這15是指數組有多少的元素,並非是實際數組從smgan[0]、smgan[1]開始的那個元素標識值。。
u8 code smgan[15]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71};
如果需要全部元素應該寫成:
u8 code smgan[16]=(0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71};
另外,數組定義數值可以前面不填寫成默認。u8 code smgan[]={n,n+1,n+2..}(定義時候後面要用花括弧)
仔細看c語言基礎書本上的例句,然後再編寫。。學習就是從簡單的會了,然後再逐漸擴展到難的,也就是不感覺多難了。。急於求成會挫傷自身自信和學習興趣的,真正智者所不取。

閱讀全文

與單片機smgduan相關的資料

熱點內容
程序員求助國企 瀏覽:837
雲伺服器網址租用多少錢 瀏覽:942
行車記錄儀安卓版怎麼用 瀏覽:500
java是不是數字 瀏覽:182
php模擬瀏覽器環境 瀏覽:353
編程誰都能學會嗎 瀏覽:407
使用國家反詐app都要開啟什麼 瀏覽:712
下載民宿APP有什麼用 瀏覽:52
續子語pdf 瀏覽:385
2021年加密貨幣最新行情 瀏覽:162
nfs怎麼加密ipsec 瀏覽:245
國二考試調用編譯器運算選擇題 瀏覽:750
同濟大學高等數學pdf 瀏覽:234
延時的宏命令怎麼設置 瀏覽:596
資料庫有哪些加密 瀏覽:209
改之理反編譯注冊教程 瀏覽:391
什麼是編譯程序和翻譯程序 瀏覽:208
python課程心得總結 瀏覽:17
派派中怎麼看對方在哪個伺服器 瀏覽:796
xp配置java環境變數配置 瀏覽:9