急!急!急!請高手幫忙編寫C語言的微控制器程式設計。。要能通過的謝啦

2021-04-02 15:35:18 字數 4165 閱讀 5412

1樓:匿名使用者

先看懂一下程式再說,一下程式是除錯成功的時鐘程式

你在這個基礎上一定能改出來的

#include

#include

#define uchar unsigned char

#define uint unsigned int

/*12864 埠定義*/

sbit rs=p3^5; //資料指令選擇輸入

sbit en=p3^4; //液晶使能控制

sbit wr=p3^6; //液晶讀/寫控制

sbit psb=p3^7; //串/並方式控制

sbit beep=p2^3; //蜂鳴器控制埠

sbit s1=p3^0; //按鍵埠定義

sbit s2=p3^1;

sbit s3=p3^2;

sbit wela = p2^6;

sbit dula = p2^7;

uchar count,s1num; //定義全域性變數

char miao,shi,fen,zhou,yu,r; //定義全域性變數

int ni;

uchar code dis1 = ;

uchar code dis2 = ;

uchar code dis3 = ;

uchar code dis4 = ;

#define delaynop(); ;

void lcd_pos(uchar x,uchar y); //確定顯示位置

/* 延時函式 */

void delay(int ms)

}}/*檢查lcd忙狀態 */

/*lcd_busy為1時,忙,等待。lcd-busy為0時,閒,可寫指令與資料。 */

bit lcd_busy()

/*寫指令資料到lcd */

/*rs=0,wr=1,en=高脈衝,d0-d7=指令碼。 */

void write_com(uchar com)

/*寫顯示資料到lcd */

/*rs=1,wr=0,en=1,d0-d7=資料。 */

void write_date(uchar date)

/* lcd初始化設定 */

void init()

lcd_pos(1,0); //設定顯示位置為第二行的第1個字元

i = 0;

while(dis2[i] != '\0')

lcd_pos(2,0); //設定顯示位置為第三行的第1個字元

i = 0;

while(dis3[i] != '\0')

lcd_pos(3,0); //設定顯示位置為第四行的第1個字元

i = 0;

while(dis4[i] != '\0')

tmod=0x01; //t0採用16位計數器方式

th0=(65536-50000)/256; //t0計數器的高8位資料

tl0=(65536-50000)%256; //t0計數器的低8位資料

ea=1; //開總中斷

et0=1; //開t0中斷

tr0=1; //啟動t0計數器

}void write_sfm(uchar add,uchar date) //寫時,分,秒的函式

void write_chinese(uchar *chinese)

void write_zhou(uchar add,uchar i)

}void write_nian(uchar add,int nian)

void write_yue(uchar add,uchar yue)

void write_ri(uchar add,uchar ri)

/*按鍵掃描函式*/

void keyscan()

}if(s1num==2)

if(s1num==3)

if(s1num==4)

if(s1num==5)

if(s1num==6)

if(s1num==7)

if(s1num==8)

}if(s1num!=0)

if(s1num==2)

if(s1num==3)

if(s1num==4)

if(s1num==5)

if(s1num==6)

if(s1num==7)}}

if(s3==0)

if(s1num==2)

if(s1num==3)

if(s1num==4)

if(s1num==5)

if(s1num==6)

if(s1num==7)}}

}}/* 主程式 */

void main()

}void timer0() interrupt 1

write_zhou(4,zhou);

if(r==32)

write_yue(3,yu);

}write_ri(5,r);

}write_sfm(1,shi);

}write_sfm(3,fen);

}write_sfm(5,miao);} }

/* 設定顯示位置 */

void lcd_pos(uchar x,uchar y)

else if (x==1)

else if (x==2)

else if (x==3)

pos = x+y ;

write_com(pos); //顯示地址}

2樓:手機使用者

#include

#define n 5

int main()

break;

}case 2:

break;

}case 3:

for(i=1;i<=n;i++)

break;

}case 4: return 0;}}

}這是第一題的答案,經測試沒問題

希望對你有幫助

3樓:匿名使用者

先看懂datasheet 吧~,

請高手幫忙解決一道c語言的程式設計題!~~急啊!~~

4樓:

**及其不規範,首先給你修改規範,然後給你編上行號,給你說

1 int findstr(char *str,char *substr)

2 12 else break;

13 if(*r=='\0')

14 n++;

15 str++;

16 }

17 return n;

18}首先此題不用指標作,很麻煩,而且函式原形都要修改,要新增兩個字串長度引數,才可以不再使用指標。還是給你講解這個程式的流程吧。

6 while ( *str )

這個迴圈是從源串第一個位元組開始,一直碰到'\0'結束,因為'\0'的ascii碼為0,也就是null。下面**已知道line 16都是這個迴圈體。

8 p=str;

9 r=substr;

取得兩個字串當前指標,為作比較準備,

10 while(*r)

11 if(*r==*p)

12 else break;

這個迴圈的條件和line 6差不多。其中這個迴圈是這樣的,將連個字串的第一個位元組開始比較,如果相等則比較下一個,一直到r結束還是相等的,這個字串就在str中出現過,否則到line 12執行,跳出迴圈。

11 if(*r==*p) 如果這兩個位元組相等,則比較下一個字。

12 else break;不相等,跳出迴圈。

以下這兩句是判斷剛才迴圈結束的原因

13 if(*r=='\0') 如果r指標指向的位元組是'\0',那麼表示整個字串都匹配了,因此就讓計數器n自加1,然後從源串下一個位元組開始再次匹配。

14 n++;

15 str++;

知道str指向字串結束,程式結束了。

還有樓主連指標都看不懂,那就危險了。

求C語言高手編個小程式,急 急 急

include include define n 15 int main 隨機獲取1 20中的值 for i 0 i count為15個數值中相同數值的個數x n count printf x d n x return 0 相同數值?與哪個相同?還是15個數中只有一個數有相同的?你這個數是整數還是隨...

c語言的問題急急急急,急急急急急急急急急C語言的一個不懂的問題

for i 0 i 3 i for j 0 j 4 i 這裡zhi寫錯了。應該是j 修改後 define m 3 define n 4 main max a 0 0 for i 0 i 3 i daofor j 0 j 4 j if a i j max 程式寫的很好,貌似少了個開頭的 include...

C語言高手請幫忙,急!!!請C語言高手幫忙解決!!!非常感謝!!!

本來想刷分的,看了樓上的,算了。其實我已經編到第5題了 基本的c入門,一般的學習書籍上都有類試的例子,樓主要好好學習嘍 暈,譚浩強的書上都例子啊,你偷懶不做作業啊,不能幫你!嘿嘿 急!請c語言高手幫忙解決!非常感謝!15 這個是比較大的c語言程式 個人認為 你的這個c語言題不會出現在考試中 應該是客...