微控制器C語言程式設計,51微控制器C語言程式設計

時間 2022-02-12 23:30:14

1樓:匿名使用者

使用兩個定時器或一個定時器中使用兩個計數都能滿足你的要求。

建議使用一個定時器和一個計數器即可,如計數器為i,則if(i%測溫定時==0)

溫度測量();

if(i%步進電機定時==0)

步進電機控制();

注:此時要求兩個控制模組的定時步長是一致,比如都是1ms

2樓:匿名使用者

設定一個比較小的定時間隔,例如1ms,用靜態變數累加,比如步機電機是10ms觸發一次,測溫是1s觸發一次

void timerisr(void)

if (++tempcnt == 1000)}

3樓:匿名使用者

最簡單的方法:52有三個定時器,多個定時器2

還有一種方法是定時器複用,減小定時器初值,設兩個不同變數自加,分別控制測溫和數碼管的顯示

4樓:匿名使用者

贊同樓上songsheping的做法。或者可以直接i==xx判斷也可以~

5樓:匿名使用者

用同一個定時器, 加兩個時間計數器來計數, 當計數滿足要求時控制溫度或者步進電機.

6樓:匿名使用者

儘量不要用定時器中斷的,我感覺可以用軟體延時試試,呵呵,這樣就簡單了,

7樓:匿名使用者

請問你的微控制器還需要與其它裝置(如,上位機)進行序列通訊嗎?如果不需要選用52系列的微控制器就可以滿足了(t0、t1、t2三個定時器)。

或者ds18b20不用定時器(不用串列埠),用普通i/o(如,p1.0)口程式設計,控制ds18b20、讀取資料,可以省出1個定時器,用51系列微控制器可以滿足。我經常這樣用的。

8樓:匿名使用者

用不同的定時器就行了

9樓:匿名使用者

嗯 三樓說的對 我這樣做過

微控制器c語言程式設計

10樓:皋美媛通辰

ds1302裡的時間是以bcd碼形式存放的。當你程式設計要把資料存在ds1302裡時

,通常要將之轉化為bcd碼。如:(x/10)<<4|(x%10),

x代表十進位制數,(x/10)<<4

|(x%10)這個就能直接寫入ds1302了

11樓:匿名使用者

key4 equ 30h

key2 equ 31h

org 0000h

ljmp main

org 0030h

main:

clr ea

mov sp,#5fh

mov key2,#0

mov key4,#0

loop:

jb p1.0,loop

mov r7,#10

lcall delay

jb p1.0,loop

jnb p1.0,$

mov p3,#0c0h

loop0:

lcall keydeal

mov a,key4

jnz loop41

mov a,p3

anl a,#0f0h

orl a,#0eh

mov p3,a

sjmp loop21

loop41:

dec a

jnz loop42

mov a,p3

anl a,#0f0h

orl a,#0dh

mov p3,a

sjmp loop21

loop42:

dec a

jnz loop43

mov a,p3

anl a,#0f0h

orl a,#0bh

mov p3,a

sjmp loop21

loop43:

dec a

jnz loop21

mov a,p3

anl a,#0f0h

orl a,#07h

mov p3,a

loop21:

mov a,key2

jnz loop22

mov a,p3

anl a,#0fh

orl a,#20h

mov p3,a

sjmp loop3

loop22:

dec a

jnz loop3

mov a,p3

anl a,#0fh

orl a,#10h

mov p3,a

loop3:

ljmp loop0

;----------------------------delay:

mov r2,#2

dly1:

mov r3,#250

djnz r3,$

djnz r2,dly1

djnz r7,delay

ret;-----------------------------keydeal:

jb p1.1,keyen1

mov r7,#10

lcall delay

jb p1.1,keyen1

jnb p1.1,$

inc key4

mov a,key4

anl a,#03h

mov key4,a

keyen1:

jb p1.2,keyen2

mov r7,#10

lcall delay

jb p1.2,keyen2

jnb p1.2,$

inc key2

mov a,key2

anl a,#01h

mov key2,a

keyen2:

ret;-----------------------------end

12樓:匿名使用者

初始化燈滅,設為00。先進行按鍵的讀取,一個按鍵控制開關,就先判斷是否按下開關鍵,沒有的話就不執行,直到按下,執行下面的語句。再進行按鍵的讀取,如果按下控制4個led燈的鍵,那就先賦初值0001,點亮一個燈,再用左移或是右移,迴圈點亮4個燈;如果按下控制2個led燈的按鍵,就按一下相應位置1,也可以設初值01,進行左移或是右移,同時也要判斷是否按下開關鍵,如果按下就退出當前語句,返回至初始的按鍵讀取

13樓:馭風者楊

這個不難實現,利用獨立按鍵和流水燈的知識可以做的。試試看。

求一個51微控制器c語言程式程式設計 30

51微控制器c語言程式設計

14樓:清風

不用ic亮度可能達不到要求,51微控制器的io口驅動電流不夠

15樓:

你的設計有點問題,不過你看下這個程式對你應該有幫助。

#include

#define int8 unsigned char#define int16 unsigned int#define int32 unsigned longint8 flag;

int8 n;

int8 code table[32]=,/* " " */,/*"歡",0*/

,/*"迎",1*/

,/*"您",2*/

,/*"乘",3*/

,/*"坐",4*/

,/*"廣",5*/

,/*"州",6*/

,/*"三",7*/

,/*"汽",8*/

,/*"公",9*/

,/*"司",10*/

,/*"公",11*/

,/*"共",12*/

,/*"汽",13*/

,/*"車",14*/

,/*",",15*/

,/*"大",16*/

,/*"學",17*/

,/*"城",18*/

,/*"2",0*/

,/*"線",19*/

,/*"開",20*/

,/*"往",21*/

,/*"大",22*/

,/*"學",23*/

,/*"城",24*/

,/*",",25*/

,/*"請",26*/

,/*"您",27*/

,/*"坐",28*/

,/*"好",29*/

,/*"扶",30*/

,/*"穩",31*/

,/*"!",32*/

/* " " */

};void delay(void);

int16 offset;

void main(void)

for (i=8;i<16;i++) //顯示右半邊螢幕}}void delay(void)

void timer0() interrupt 1 using 3else}

求51微控制器c語言程式設計?

微控制器C語言程式設計,微控制器C語言程式設計題

按你的程式的結構,不做大的變動,又能理解的方法 四個程式合併成一個,當然就只能有一個主程式了,一個while 1 了,凡是while 1 以上的程式只保留一個就行了。四個程式的while 1 以下的都合併寫在一個while 1 下面,分為四段。有四個按鍵,判斷按鍵被按下的程式會寫吧?那判斷每個按鍵的...

C 微控制器高手,微控制器為什麼不用C 語言程式設計呢

相信很多初學者都有同樣的疑問,也有同樣的希望。就是用c 語言來寫微控制器程式的源 現在我來解釋一下微控制器的源 程式幾乎沒有人用c 來寫的。1.假設一下你現在用c 寫完了一個程式 那麼你要讓微控制器認識必須要編譯吧,對吧 請問你有合適的編譯軟體來編譯你的 嗎?2.就算有編譯器能編譯,你能保證它的 效...

51微控制器c語言程式設計標頭檔案的問題

矮子根 不知你是怎麼弄的,我照你的樣式重複了一遍也沒有報錯,請照下圖認真檢查 另外注意 你在兩個檔案裡定義的beep 和 beep 是不一樣的,這才是錯誤的原因。 這個告警是告訴你沒有實現函式吧。你應該把這個函式的主體在.c裡實現。 微控制器的戰鬥機 你看看定義的函式名一樣嗎? 對於c語言的標頭檔案...