版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)原理及應(yīng)用</b></p><p><b> 課程設(shè)計(jì)</b></p><p> 學(xué)院名稱:計(jì)算機(jī)科學(xué)與通信工程學(xué)院</p><p> 專業(yè)班級(jí):通信工程0901</p><p><b> 學(xué)生姓名:</b></p>&
2、lt;p><b> 學(xué)生學(xué)號(hào):</b></p><p><b> 指導(dǎo)教師: </b></p><p><b> 一、 設(shè)計(jì)目的</b></p><p> 1、熟悉鍵盤(pán)的工作原理,掌握HD7279A芯片實(shí)現(xiàn)鍵盤(pán)掃描程序設(shè)計(jì)及調(diào)試方法;</p><p>
3、 2、了解掌握定時(shí)器的選擇和編程方法,了解定時(shí)器中斷服務(wù)程序設(shè)計(jì)方法;內(nèi)部功能模塊如定時(shí)器/計(jì)數(shù)器、中斷、片內(nèi)外存儲(chǔ)器、I/O口、串行口通訊等;</p><p> 3、進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)和工作原理;</p><p> 4、通過(guò)實(shí)際程序設(shè)計(jì)和調(diào)試,逐步掌握模塊化程序設(shè)計(jì)方法和調(diào)試技術(shù);</p><p> 5、在課程設(shè)計(jì)過(guò)程中,不斷調(diào)試程序和修改程序,提
4、高了對(duì)單片機(jī)的應(yīng)用能力,分析問(wèn)題和解決問(wèn)題的能力;</p><p> 6、熟悉日歷時(shí)鐘的編程方法。</p><p> 二、設(shè)計(jì)方案(包括文字說(shuō)明,程序框圖,加注釋的核心源程序清單)</p><p><b> 1、功能要求</b></p><p> 1)能在LED顯示器上實(shí)現(xiàn)正常的時(shí)分秒計(jì)時(shí);</p>
5、<p> 2)能通過(guò)鍵盤(pán)輸入當(dāng)前時(shí)間,并從該時(shí)間開(kāi)始計(jì)時(shí);</p><p> 3)有校時(shí) 、校分功能;</p><p> 4)有報(bào)時(shí)功能,通過(guò)指示燈表示;</p><p> 5)有鬧時(shí)功能,鬧時(shí)時(shí)間可以設(shè)定,通過(guò)指示燈表示。</p><p><b> 2、文字說(shuō)明</b></p>&l
6、t;p> HD7279是一片具有串行接口的,可用于驅(qū)動(dòng)8位共陰極式數(shù)碼管(或64只獨(dú)立LED)的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)還可連接多達(dá)64鍵的鍵盤(pán)矩陣,單片即可完成LED顯示、鍵盤(pán)接口的全部功能。</p><p> HD7279內(nèi)部含有譯碼器,可直接接受BCD碼或者16進(jìn)制碼,并同時(shí)具有兩種譯碼方式,此外還有消隱、閃爍、左移、右移、段尋址等多種控制指令。</p><p> H
7、D7279具有片選信號(hào),可方便地實(shí)現(xiàn)多于8位的顯示或多于64鍵的鍵盤(pán)接口。</p><p> 3、程序框圖: </p><p> 4、核心源程序清單:</p><p> //******************************test7279*******************************</p><p
8、> #include "c8051f020.h" </p><p> #include <intrins.h></p><p> //和通信10屆的同學(xué)一起上電路分析很愉快。成績(jī)一般吧,90分。還有,我一</p><p> //直想聲明一點(diǎn),我不是來(lái)重修的,電路分析沒(méi)上過(guò)補(bǔ)修而已。要知道坐在第一</p>&
9、lt;p> //排被學(xué)弟學(xué)妹們用看重修生的眼光來(lái)看待是多么...如果你在文庫(kù)里找到了另外</p><p> //一份08屆一班學(xué)號(hào)12號(hào)上傳、財(cái)富值為5分的,最好不要下載,很讓人抓狂。</p><p> //如果已經(jīng)下載…我也無(wú)話可說(shuō)。</p><p> sbitHD7279_DAT=P1^7; </p><p> sbi
10、tHD7279_CLK=P1^6;</p><p> #define NOSELECT7279 P5 |= 0x80//片選置1,未選中</p><p> #define SELECT7279 P5 &= ~(0x80) //片選清零,選中</p><p> #define Set7279DAT HD7279_DAT=1 /
11、/數(shù)據(jù)線置1</p><p> #define Clr7279DAT HD7279_DAT=0 //數(shù)據(jù)線置0</p><p> #define Set7279CLK HD7279_CLK=1 //時(shí)鐘高電平</p><p> #define Clr7279CLK HD7279_CLK=0 //時(shí)鐘低電平</p>&
12、lt;p> // HD7279測(cè)試/演示程序 </p><p> //I/O口初始化 </p><p> void Delay1ms(unsigned char T); //延時(shí)T毫秒</p><p> void Delay1s(unsigned char T); // 延時(shí)T秒</p>&l
13、t;p> void Delay1us(unsigned char T); //延時(shí)T微秒</p><p> //仿真總線時(shí)序發(fā)送一個(gè)字節(jié)</p><p> void Send7279Byte(unsigned char ch)</p><p><b> {</b></p><p><b&g
14、t; char i;</b></p><p> SELECT7279; //置CS低電平 </p><p> Delay1us(50); //延時(shí)50μ</p><p> for (i=0;i<8;i++) </p><p><b> {</b&g
15、t;</p><p> if (ch&0x80) //輸出7位到HD7279A的DATA端 1000 0000</p><p><b> {</b></p><p> Set7279DAT; //數(shù)據(jù)線置1</p><p><b> }</b>
16、;</p><p><b> else</b></p><p><b> {</b></p><p> Clr7279DAT; //數(shù)據(jù)線置0</p><p><b> }</b></p><p> Set7279CLK;
17、 //置CLK高電平 </p><p> ch=ch<<1; //待發(fā)數(shù)據(jù)左移 </p><p> Delay1us(8); //延時(shí)8μ</p><p> Clr7279CLK; //置CLK低電平 </p><p> Delay1us(8);
18、 //延時(shí)50μ</p><p><b> }</b></p><p> Clr7279DAT; //發(fā)送完畢,DATA端置低,返回 </p><p><b> }</b></p><p> //總線時(shí)序接收一個(gè)字節(jié)</p><p>
19、 unsigned char Receive7279Byte(void)</p><p><b> {</b></p><p> unsigned char i,ch;</p><p><b> ch=0;</b></p><p> Set7279DAT; //DATA端置
20、為高電平,輸入狀態(tài)</p><p> Delay1us(50); //延時(shí)50μ</p><p> for (i=0;i<8;i++)</p><p><b> {</b></p><p> Set7279CLK; //置CLK高電平</p><p>
21、Delay1us(8); //延時(shí)8μ</p><p> ch=ch<<1; //接收數(shù)據(jù)左移1位</p><p> if (HD7279_DAT)</p><p> ch+=1; //接收1位數(shù)據(jù)</p><p> Clr7279CLK; //置CLK低
22、電平</p><p> Delay1us(8); //延時(shí)8μ</p><p><b> }</b></p><p> Clr7279DAT; //接收完畢,DATA端重新置成低電平(輸出狀態(tài))</p><p> return ch;</p><p><
23、b> }</b></p><p> void BlankLED(unsigned char ch)</p><p><b> {</b></p><p> Send7279Byte(0x98); //發(fā)消隱指令 </p><p> Send7279Byte(ch); //
24、1-顯示 0-消隱</p><p> NOSELECT7279; //置CS高電平 </p><p><b> }</b></p><p> unsigned char code BdSeg[]={</p><p> 0x7e,0x30,0x6d,0x79, // 0 1 2 3 </p&g
25、t;<p> 0x33,0x5b,0x5f,0x70, // 4 5 6 7</p><p> 0x7f,0x7b,0x77,0x1f, // 8 9 a b</p><p> 0x4e,0x3d,0x4f,0x47, // c d e f</p><p> 0x00,0x01}; </p><p><b>
26、 /*</b></p><p><b> b6</b></p><p><b> ---</b></p><p> b1| b0 |b5</p><p> ---- small</p><p> b2| b3 |b4</p>
27、<p><b> ---- .b7</b></p><p><b> */</b></p><p> void DispLED(char *DispBuf,char ShowDot) // ShowDot顯示小數(shù)點(diǎn)位 </p><p><b> {</b></p>
28、<p> char i,ch;</p><p> ShowDot--;</p><p> for (i=0;i<6;i++)</p><p><b> {</b></p><p> ch=DispBuf[i]; //取一字符</p><p&
29、gt; if ((ch>='a') && (ch<='f')) //將字符轉(zhuǎn)換成數(shù)字</p><p><b> {</b></p><p> ch-='a';ch+=0xa;</p><p><b> }</b></p&
30、gt;<p> if ((ch>='A') && (ch<='F'))</p><p><b> {</b></p><p> ch-='A';ch+=0xa;</p><p><b> }</b></p>&l
31、t;p> Send7279Byte(0x90+5-i); //用不譯碼方式顯示第i位</p><p> if (ch==' ')</p><p> Send7279Byte(0x00); </p><p><b> else</b></p><p> if (ch==
32、'-')</p><p> Send7279Byte(0x01); </p><p><b> else </b></p><p><b> {</b></p><p> if (ShowDot==i) //查表顯示,同時(shí)點(diǎn)亮小數(shù)點(diǎn)</p>&l
33、t;p> Send7279Byte(0x80|BdSeg[ch&0x0f]); </p><p><b> else</b></p><p> Send7279Byte(BdSeg[ch&0x0f]); </p><p><b> }</b></p><p><b
34、> }</b></p><p> NOSELECT7279; / /置CS高電平 </p><p><b> }</b></p><p> //*****************************S-3530A****************************
35、***</p><p> #include "c8051f020.h" </p><p> #include <intrins.h></p><p> #include "test7279.h"</p><p> Unsigned char Count1
36、ms,set,set1,set2;//set用于標(biāo)識(shí)是否停止計(jì)時(shí),set1用于標(biāo)識(shí)</p><p> //是否設(shè)置時(shí)間,set 2用于標(biāo)識(shí)是否設(shè)置鬧鐘</p><p> //按1校時(shí)加1,按2校時(shí)減1,按3校分加1,按4校分減1 static int time[3]={23,59,50};//當(dāng)前時(shí)間<
37、/p><p> static char disptime[6]={'2','3','5','9','5','0'};//初始時(shí)間</p><p> int dertime[3]={00,00,01};//存放時(shí)間的中間變量 </p><p> int nowtime[
38、3]={00,01,00};//鬧鐘時(shí)間</p><p> void Delay1us(unsigned char us)</p><p><b> {</b></p><p> while (us)</p><p><b> {</b></p><p> _nop
39、_(); _nop_(); _nop_(); _nop_(); _nop_(); //占用一個(gè)指令周期</p><p><b> --us;</b></p><p><b> }</b></p><p><b> }</b></p><p> void SYSCLK_I
40、nit (void)</p><p><b> {</b></p><p> int i; // delay counter</p><p> OSCXCN = 0x67; // start external oscillator with
41、</p><p> // 22.1184MHz crystal</p><p> for (i=0; i < 256; i++) ; // Wait for osc. to start up</p><p> while (!(OSCXCN & 0x80)) ; // Wait for crystal osc
42、. to settle</p><p> OSCICN = 0x88; // select external oscillator as SYSCLK</p><p> // source and enable missing clock</p><p> // detector</p><p>
43、 //OSCICN = 0x07; </p><p> //interal 16MHZ</p><p><b> }</b></p><p> #define PRT0CF P0MDOUT</p><p> #define PRT1CF P1MDOUT</p><p> #defi
44、ne PRT2CF P2MDOUT</p><p> void PORT_Init (void)</p><p><b> {</b></p><p> XBR0 = 0x07; // Enable SMBus, SPI0, and UART0</p><p> XB
45、R1 = 0x00;</p><p> XBR2 = 0x44; // Enable crossbar and weak pull-ups</p><p> EMI0TC = 0x21;</p><p> P74OUT = 0xFF;</p><p> P0MDOUT = 0x1
46、5;</p><p> P1MDOUT |= 0x3C; //P1.2-P1.5推挽輸出</p><p> P1 &= 0xc3; //P1.2-P1.5=0</p><p><b> }</b></p><p> void SPI0_Init (void)</p>
47、;<p><b> {</b></p><p> SPI0CFG = 0x07; // data sampled on 1st SCK rising edge</p><p> // 8-bit data words</p><p> SPI0CFG|=0xC0;
48、 //CKPOL =1;</p><p> SPI0CN = 0x03; // Master mode; SPI enabled; flags</p><p> // cleared</p><p> SPI0CKR = SYSCLK/2/8000000-1; // SPI clock
49、 <= 8MHz (limited by </p><p> // EEPROM spec.)</p><p><b> }</b></p><p> void Timer0_Init (void)</p><p><b> {</b></p><p> CK
50、CON&=0xf7;//12分頻</p><p> TMOD=0x01; //定時(shí)器0 工作在方式1 </p><p> TR0 = 0; //啟動(dòng)定時(shí)器</p><p> Count1ms=40; // STOP Timer0</p><p> TH0 = 0x9e; </p><p>
51、 TL0 = 0x58;</p><p> TR0 = 1; // START Timer0</p><p> IE|= 0x2; //srart interrupt</p><p><b> }</b></p><p> char GetKeyValue(void)</p><p
52、><b> {</b></p><p> char KeyValue;</p><p> if (CPT1CN&0x40) return -1; //無(wú)鍵按下</p><p> Send7279Byte(0x15); //發(fā)送鍵盤(pán)指令 0001 0101</p>
53、<p> KeyValue=Receive7279Byte();</p><p> NOSELECT7279; //置CS高電平 </p><p> return KeyValue; </p><p><b> }</b></p><p> void Wai
54、tKeyOff(void) //等待按鍵釋放</p><p><b> {</b></p><p> while (!(CPT1CN&0x40)); </p><p><b> }</b></p><p> void inputnum(void)
55、 //i=5開(kāi)始,輸入數(shù)字顯示disptime[5-i] i=5--0</p><p> { //賦給dertime[j]</p><p> char j,KeyValue,i;</p><p><b> i=5;</b></p><p&g
56、t;<b> while(1)</b></p><p><b> {</b></p><p> KeyValue=GetKeyValue();</p><p> WaitKeyOff();</p><p> if(((KeyValue%16)>=0) && ((Key
57、Value%16)<=9)) //i=5 4 3 2 1 0</p><p><b> {</b></p><p> disptime[5-i]=KeyValue;</p><p> if(((disptime[0]<=1) || ((disptime[0]==2) && (disptime[1]<4
58、))) && (disptime[2]<6) && (disptime[4]<6) )</p><p> //符合數(shù)字時(shí)鐘的實(shí)際意義</p><p><b> { </b></p><p> Send7279Byte(0xC8+i); </p><p> Send
59、7279Byte(KeyValue);</p><p> NOSELECT7279; </p><p><b> i--;</b></p><p><b> }</b></p><p><b> }</b></p><p>
60、 if(i<0) break;</p><p><b> }</b></p><p> for (j=0;j<3;j++) //將顯示的時(shí)間賦值給存放時(shí)間的變量</p><p><b> {</b></p><p> dertime[j]=disptime[2*j]*10+
61、disptime[2*j+1];</p><p><b> }</b></p><p><b> if(set1)</b></p><p><b> {</b></p><p> set1=!set1;// 設(shè)置時(shí)間后復(fù)位</p><p><
62、;b> }</b></p><p><b> if(set2)</b></p><p><b> {</b></p><p> set2=!set2;// 設(shè)置鬧鐘后復(fù)位</p><p><b> }</b></p><p>
63、<b> }</b></p><p> void FlashLED(unsigned char No)</p><p><b> {</b></p><p><b> char i;</b></p><p> Send7279Byte(0x88);//發(fā)閃爍指令 &
64、lt;/p><p><b> i=0x1;</b></p><p> while (No)</p><p><b> {</b></p><p><b> i=i<<1;</b></p><p><b> No--;</
65、b></p><p><b> }</b></p><p> Send7279Byte(~i); //1閃爍</p><p> NOSELECT7279; //置CS高電平 </p><p><b> }</b></p><p> //***ma
66、in函數(shù)***</p><p> void main(void)</p><p><b> {</b></p><p> char j,KeyValue;</p><p> WDTCN = 0xde;</p><p> WDTCN = 0xad; //關(guān)看門狗<
67、/p><p> SYSCLK_Init (); //初始化時(shí)鐘</p><p> Timer0_Init();//初始化定時(shí)器</p><p> PORT_Init (); //初始化IO口</p><p> SPI0_Init (); //初始化SPI0</p>
68、<p> CPT1CN|=0x80;//使能比較器1</p><p> REF0CN = 0x03; //使能片內(nèi)參考電壓</p><p> DAC0CN |= 0x80;//使能DAC0</p><p> DAC0H=0;DAC0L=0;</p><p> EA=1;//開(kāi)中斷</
69、p><p> Delay1us(25000);//等待25ms復(fù)位時(shí)間 </p><p> Send7279Byte(0xA4); //發(fā)復(fù)位指令 </p><p> NOSELECT7279; </p><p> DispLED(disptime,0); //顯示初始時(shí)間</p><p&g
70、t; while(1) //見(jiàn)流程圖</p><p><b> {</b></p><p> KeyValue=GetKeyValue();</p><p> WaitKeyOff();</p><p> if((KeyValue%16)==0x0f)</p><
71、;p><b> {</b></p><p><b> set=!set;</b></p><p><b> }</b></p><p> if(set) //啟停*****</p><p><b> {</b></p>
72、<p> if((KeyValue%16)==0x0e)</p><p><b> {</b></p><p> set1=!set1;// 設(shè)置時(shí)間</p><p><b> }</b></p><p> if((KeyValue%16)==0x0d)</p>&
73、lt;p><b> {</b></p><p> set2=!set2;// 設(shè)置鬧鐘</p><p><b> }</b></p><p> if(set1)//設(shè)置時(shí)間**********</p><p><b> {</b></p><
74、p> DispLED("------",0);</p><p> inputnum();</p><p> for (j=0;j<3;j++) //int-char</p><p><b> {</b></p><p> time[j]=dertime[j];</p&
75、gt;<p><b> }</b></p><p><b> }</b></p><p> if(set2)// 設(shè)置鬧鐘********</p><p> {DispLED("------",0);</p><p> inputnum();</p
76、><p> for (j=0;j<3;j++) //int-char</p><p><b> {</b></p><p> nowtime[j]=dertime[j];//nowtime[j]鬧鐘時(shí)間</p><p><b> }</b></p><p>&
77、lt;b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> switch (KeyValue%16)//校時(shí)</p><p>
78、;<b> {</b></p><p> case 1:time[0]=(time[0]+1+24)%24;break;</p><p> case 2:time[0]=(time[0]-1+24)%24;break;</p><p> case 3:time[1]=(time[1]+1+60)%60;break;</p>
79、<p> case 4:time[1]=(time[1]-1+60)%60;break;</p><p> case 0xd:FlashLED(8);break;//暫停閃爍</p><p> default:break;</p><p><b> }</b></p><p><b> }
80、</b></p><p><b> }</b></p><p><b> }</b></p><p> void Timer0_ISR (void) interrupt 1 </p><p><b> {</b></p><p>&l
81、t;b> int i;</b></p><p> TH0 = 0x9e; </p><p> TL0 = 0x58;</p><p> if (set==1)</p><p><b> return; </b></p><p> Count1ms--;// u
82、nsigned char Count1ms會(huì)小于0,因?yàn)闊o(wú)符號(hào)會(huì)溢出,計(jì)數(shù)次數(shù)變大所以延遲大。</p><p> if (Count1ms==0)//秒</p><p><b> {</b></p><p> Count1ms=40;</p><p> time[2]=time[2]+1;</p>
83、<p> if((time[1]==59) && (time[2]==55))//報(bào)時(shí)功能,接近整點(diǎn)時(shí)閃爍***</p><p> Send7279Byte(0xbf);</p><p> //鬧鐘功能 ***********</p><p> if((time[0]==nowtime[0])&&(time[1]=
84、=nowtime[1])&&(time[2]==nowtime[2]))</p><p> Send7279Byte(0xbf);</p><p> if(((time[1]*60+time[2]-nowtime[1]*60-nowtime[2])>10)&&(time[0]==nowtime[0]))</p><p>
85、FlashLED(8);</p><p> if (time[2]>=60) //分</p><p><b> {</b></p><p> time[2]=0;</p><p> time[1]=time[1]+1;</p><p> if (time[1]>=60
86、) // 時(shí)</p><p><b> {</b></p><p> time[1]=0;</p><p> time[0]=time[0]+1;</p><p> if((time[1]==00) && (time[2]==00))</p><p> FlashLED
87、(8);</p><p> if (time[0]>=24) </p><p><b> {</b></p><p> time[0]=0;</p><p><b> }</b></p><p><b> }</b></p>
88、;<p><b> }</b></p><p> if (set!=1)</p><p><b> {</b></p><p> for (i=0;i<3;i++) //將time里面的數(shù)字拆開(kāi)放在disptime里</p><p><b> {<
89、/b></p><p> disptime[2*i]=time[i]/10;</p><p> disptime[2*i+1]=time[i]%10;</p><p><b> }</b></p><p> DispLED(disptime,0); //顯示時(shí)間************</p&g
90、t;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 三、調(diào)試過(guò)程(調(diào)試中出現(xiàn)的問(wèn)題、解決的方法)</p><p> 問(wèn)題1:只能通過(guò)修改程序里面的int nowtime[3]={
91、00,01,01};改變鬧鐘時(shí)間。</p><p> 通過(guò)添加程序模塊if(set2)// 設(shè)置鬧鐘********</p><p> {DispLED("------",0);</p><p> inputnum();</p><p> for (j=0;j<3;j++) //int-char<
92、;/p><p><b> {</b></p><p> nowtime[j]=dertime[j];//nowtime[j]鬧鐘時(shí)間</p><p><b> }</b></p><p><b> }</b></p><p> 可以通過(guò)鍵盤(pán)修改鬧鐘
93、時(shí)間。</p><p> 問(wèn)題2:數(shù)組類型不匹配問(wèn)題</p><p> static int time[3]={23,59,50};</p><p> static char disptime[6]={'2','3','5','9','5','0'};</p&
94、gt;<p> int dertime[3]={00,00,01};</p><p> 通過(guò)程序語(yǔ)句disptime[2*i]=time[i]/10;</p><p> disptime[2*i+1]=time[i]%10;拆分</p><p> for (j=0;j<3;j++) //int-char</p><
95、;p><b> {</b></p><p> dertime[j]=disptime[2*j]*10+disptime[2*j+1];</p><p><b> }整合</b></p><p><b> 解決。</b></p><p> 問(wèn)題3:如何實(shí)現(xiàn)數(shù)字時(shí)鐘
96、1s跳一次</p><p> 首先選定定時(shí)器T0,工作在方式1 ,12分頻。計(jì)算初值9e58H,使LED閃爍周期為25000μs,循環(huán)40次,達(dá)到工作頻率為1Hz。CKCON&=0xf7;//12分頻</p><p> TMOD=0x01; //定時(shí)器0 工作在方式1 </p><p> TR0 = 0; //啟動(dòng)定時(shí)器</p>
97、<p> Count1ms=40; // STOP Timer0</p><p> TH0 = 0x9e; </p><p> TL0 = 0x58;</p><p> 問(wèn)題4:不能反復(fù)定時(shí)或設(shè)定鬧鈴,只能設(shè)置一次。</p><p> 要對(duì)set1,set2進(jìn)行復(fù)位操作。</p><p>&l
98、t;b> if(set1)</b></p><p><b> {</b></p><p> set1=!set1;// 設(shè)置時(shí)間后復(fù)位</p><p><b> }</b></p><p><b> if(set2)</b></p>&
99、lt;p><b> {</b></p><p> set2=!set2;// 設(shè)置鬧鐘后復(fù)位</p><p><b> }</b></p><p> 問(wèn)題5:對(duì)鍵盤(pán)按鍵輸入的數(shù)值進(jìn)行軟件限定</p><p><b> 解決方案:</b></p>&
100、lt;p> if(((disptime[0]<=1) || ((disptime[0]==2) && (disptime[1]<4))) && (disptime[2]<6) && (disptime[4]<6) ) //符合數(shù)字時(shí)鐘的實(shí)際意義</p><p> 問(wèn)題6:如何實(shí)現(xiàn)在校時(shí)功能中,小時(shí)位置00與23、分鐘位置00與59的
101、互相轉(zhuǎn)換。</p><p><b> 解決方案:</b></p><p> case 1:time[0]=(time[0]+1+24)%24;break;</p><p> case 2:time[0]=(time[0]-1+24)%24;break;</p><p> case 3:time[1]=(time[
102、1]+1+60)%60;break;</p><p> case 4:time[1]=(time[1]-1+60)%60;break;</p><p> 四、調(diào)試結(jié)論(有無(wú)達(dá)到設(shè)計(jì)要求等)</p><p> 1、程序從23:59:50開(kāi)始運(yùn)行,23:59:55開(kāi)始閃爍,00:00:00時(shí)刻結(jié)束。設(shè)置初始定時(shí)時(shí)間為00:01:01,到這個(gè)時(shí)刻閃爍10秒后停止閃爍
103、。</p><p> 2、按f鍵,可控制時(shí)鐘的停止和開(kāi)始;</p><p> 3、先按f鍵然后按e鍵,可調(diào)整時(shí)鐘的時(shí)間;</p><p> 4、先按f鍵然后按d鍵,可調(diào)整鬧鐘的時(shí)間;</p><p> 5、按1鍵可使時(shí)鐘+1;按2鍵可使時(shí)鐘-1;</p><p> 6、按3鍵可使分鐘+1;按4鍵可使分鐘-1;
104、</p><p><b> 五、經(jīng)驗(yàn)總結(jié)</b></p><p> 我在課程設(shè)計(jì)一開(kāi)始就很快地定下了第四個(gè)課題日歷時(shí)鐘與鍵盤(pán)顯示程序設(shè)計(jì),以為會(huì)很簡(jiǎn)單。但第一次課設(shè)我就意識(shí)到了這種想法有多么可笑。這個(gè)課題比想象中要難很多。絕大多數(shù)人選擇選擇點(diǎn)陣式液晶顯示屏的顯示程序設(shè)計(jì),身為少數(shù)派的自己幾乎沒(méi)有可以一起探討一起研究的同伴。也曾經(jīng)想過(guò)要不要換大眾課題。最終還是放棄了
105、這種想法。路漫漫其修遠(yuǎn)兮,吾將上下而求索。</p><p> 雖然這次的課程設(shè)計(jì)算起來(lái)在實(shí)驗(yàn)室的時(shí)間只有四天,但在這四天學(xué)到了不少東西。平時(shí)上課很多含糊的知識(shí)通過(guò)這次課程設(shè)計(jì)中有點(diǎn)明白了。一開(kāi)始對(duì)代碼修改幾乎毫無(wú)頭緒,通過(guò)幾次實(shí)驗(yàn)的努力與思考,最終能比較熟練的在實(shí)驗(yàn)平臺(tái)上進(jìn)行操作了。</p><p> 要自己熟練地掌握一個(gè)軟件,唯有將更多的功夫得花在課下。只有不停的探索,不住的磨練,才
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子時(shí)鐘單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)——電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)——電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)-電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)----電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)-電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘設(shè)計(jì)
- 數(shù)字電子時(shí)鐘-單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘.doc
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)模擬電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--- 單片機(jī)電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘.doc
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)模擬電子時(shí)鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論