乞求 C語言高手 51微控制器高手 幫忙

2025-01-13 06:05:20 字數 3712 閱讀 4410

1樓:網友

lcd_write_chinese_string: 在lcd上顯示漢字。

輸入引數:x、y :顯示漢字的起始x、y座標;

ch_with :漢字點陣的寬度。

num :顯示漢字的個數;

point :漢字點陣陣列中的起始位置。

line :漢字點陣陣列中的起始行數。

row :漢字顯示的行間距。

void lcd_write_chinese_string(unsigned char x, unsigned char y,unsigned char ch_with,unsigned char num,unsigned char point,unsigned char line,unsigned char row)

unsigned char i,n;

lcd_set_xy(x,y); //設定初始位置。

for (i=0;ifor (n=point*2; n<(ch_with+point)*2; n++)//寫乙個漢字。

if (n==(ch_with+point*2)) //寫漢字的下半部分。

if (i==0) lcd_set_xy(x,y+1);

elselcd_set_xy((x+(ch_with+row)*i),y+1);

lcd_write_byte(write_chinese[line+i][n],1);

i++;lcd_set_xy((x+(ch_with+row)*i),y);

lcd_write_chi(0,0,12,1,6,0,0);

只要改一下字型檔的起始位置和結束位置就可以了,你這個函式預設的起始位置為0,結束位置為ch_with*2,我沒去執行,應該稍作修改就ok了。

2樓:網友

你試試這樣看得不得。

void lcd_write_chinese_string(unsigned char x, unsigned char y,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row)

unsigned char i,n;

lcd_set_xy(x,y); //設定初始位置。

i=num; //注意從0開始算,for (i=0;i

微控制器c語言基礎第九講 - 函式

3樓:硬體家園

c語言基礎,共10講,輔助微控制器實戰專案。

51微控制器c語言問題,麻煩各位大哥大姐幫幫忙。。。

4樓:網友

三種可能,1、如果是多個數碼管都很亮的話,是數碼管的驅動電流太大,這種情況可串接乙個小電阻實現。

2、是顯示子程式裡面的延時時間太長,一般5ms就夠了。

3、也可能是因為你定義int s[4];是區域性變數,當這個子程式執行結束後,變數釋放,數值是隨機的。雖然說微控制器的程式的執行速度很快能夠彌補這一點,但還是有可能會出問題的。建議把int s[4];定義為全域性變數來試試。

我不知道你的整體電路時怎麼實現的。你補充的很對,微控制器的輸出的控制訊號應接到鎖存器的輸入端,鎖存器的輸出訊號應與數碼管的控制引腳相連線,這樣才有鎖存的意義,鎖存器的輸入輸出如果弄反了,肯定不能工作的。如果還不行,建議你先試試把數碼管的位選和段選直接接到微控制器的io來試一試,看程式本身有沒有問題。

程式沒問題的話,那就是電路的問題了。

5樓:網友

刷的速度太慢了。你改一改delayus(10000);裡的引數,改小一點就好了,試一下。

6樓:網友

數碼管是一位一位的顯示,是靠人的視覺暫留和數碼管的餘暉作用使人看到清晰的數字,人眼的視覺暫留大約是秒,因此對各個數碼管一遍掃瞄下來的總時間不能超過秒!我一般使用8位數碼管各個位顯示間隔5毫秒就已經很清晰了 。

還有就是呼叫顯示程式的時間間隔太大的話也會導致顯示不清晰。

7樓:網友

你定義的num是unsigned char 型別,微控制器裡面對應無符號8位資料,所以num最大也就是256,你後面的判斷條件num==9999 是不會成立的。

51微控制器c語言簡單程式問題請教:

8樓:做而論道

稍做改動如下,試試看:

void auto_sub()

t0init();

if(jq1 == 0) {

t1_flag = 0;

jq1kg = 0;

delay(1);

dcf1 = 0;

while (jq1 == 0); //等待jq1釋放。

tr0 = 1;

jq1kg = 1;

等待時間到或者jq1按下。

if (t_flag == 1) {//如果是時間到了。

dcf1 = 1;

tr0 = 0;

t_flag = 0;

t1_flag = 1;

如果不是時間到了,那就是jq1按下,結束本函式。

求c語言高手解答

9樓:網友

你的a,b,c都沒設資料型別,假設為int值應該是1(a+b)*c-1&&b+c%2相當於:!(a+b)*c)-(1&&b)+(c%2)求反(邏輯非運算)的優先順序高於洞鬧前乘*的優先彎早級,(a+b)*c=(!3+4)*5)=(7)*5=0*5=0;//不為0的數求邏輯非為0,0值求邏輯非值為1

1&&b=1&&4=1;//邏輯與,兩個納清值都不為0,則值為1c%2==5%2=2;//整除,明顯是2

好了,最後。

a+b)*c-1&&b+c%2=0-1+2==1所以最後值是1

10樓:真好

此值為「1」哪纖。

也許蔽緩納是這巨集沒樣的:(a+b)*c=35 !35=0 0-1=-1 b+c%2=5 所以-1&&5=1

求c語言高手解答

11樓:網友

c是比較智慧型的,當他明確知道乙個表示式的值時,剩下的式子不會再進行運算。

比如&&運算,當兩個值其中乙個為0時,他就是0了,第二個式子就不用運算,由於a=5,b=6

m=a>b)相當於(m=5>6)所以,m=0所以表示式(m=0)的值為0

所以(m=a>b)&&n=c>d)的值就是0所以n=c>d沒有運算,所以運算後n的值不變還是2

12樓:網友

當乙個邏輯表示式的後一部分的取值不會影響整個表示式的值時,後一部分就不會進行運算了。

m=a>b已為假,假&&任何條件都為假,所以後個括號內不執行。

13樓:網友

上面那位仁兄的答案是正確的,呵呵。

m=a) >b) &n=c) >d )

這個是不是學校考試?其實實際工作中,這麼晦澀難懂的**是非常糟糕的**,建議少用少學。

14樓:

因為(m=a>b)不成立,所以第二部分不執行。

5-10題,求計算機c語言高手!

15樓:網友

5題。y=6,x=6

6題。包含1個字元。

7題。輸出5

8題。i=8, j=10

9題。輸出9

10題。執行結果是7

51微控制器高手請指點

呵呵 當然可以實現 執行需要使用控制電機 如 步進電機或伺服電機 控制裝置可以使用51微控制器 負責接收光感測器訊號和控制電機的轉動角度。呵呵 滿意就選滿意回答 當然能夠實現,基本思路有兩種 簡單點的,讓微控制器定時控制電機扭轉一定角度,調整好時間間隔和扭轉角度,就可以控制電池板始終指向太陽了。但是...

c51微控制器 中斷,c51微控制器如何使用中斷

這個程式是有問題的,第一次中斷時,x先賦值0再加一,x為1,第二次中斷時,又給x賦值0,這樣每次中斷都為1,不可能為2,也就不可能執行到b,建議用全域性變數可以解決這個問題。還有一個問題,一直在執行中斷程式,下一次中斷來臨時,為同級中斷,同級中斷是否能觸發,這個問題要考慮。解決辦法 a和b放在主程式...

c51微控制器設計,c51微控制器函式宣告

我這裡有個00 99正計時的程式,你先看看。如果認為基本可以,我再幫你改成倒計時的,並且具有按鍵起動 停止的功能。c51微控制器函式宣告 主函式是起始位置,在主函式main後面的函式必須要有函式宣告另外,在main主函式之前的函式,雖然可以省略函式宣告但編寫順序是有先後的,就是你在主函式裡面呼叫函式a...