版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 09級(jí)單片機(jī)課程設(shè)計(jì)報(bào)告 </p><p><b> 設(shè)計(jì)題目:</b></p><p> 項(xiàng)目二 數(shù)字計(jì)數(shù)器的設(shè)計(jì) </p><p> 院 系: 信息與電氣工程學(xué)院 </p><p> 數(shù)字計(jì)數(shù)器的課程設(shè)計(jì)</p><p><b> 目
2、錄</b></p><p> 第一章:目的、設(shè)計(jì)要求</p><p><b> 一、緒論3</b></p><p><b> 二、設(shè)計(jì)要求3</b></p><p><b> 第二章:設(shè)計(jì)方案</b></p><p><b&
3、gt; 一、系統(tǒng)設(shè)計(jì)3</b></p><p><b> 二、功能設(shè)計(jì)4</b></p><p><b> 第三章:硬件設(shè)計(jì)</b></p><p><b> 1、單片機(jī)4</b></p><p> 2、LED數(shù)碼管6</p><
4、;p> 3、按鍵(模擬數(shù)字脈沖)6</p><p><b> 第四章:軟件設(shè)計(jì)</b></p><p><b> 1、程序流程圖7</b></p><p><b> 2、設(shè)計(jì)程序7</b></p><p><b> :系統(tǒng)調(diào)試</b>
5、</p><p><b> 1、硬件調(diào)試13</b></p><p><b> 2、軟件調(diào)試13</b></p><p><b> ?。很浖?shí)用方法總結(jié)</b></p><p> 軟件實(shí)用方法總結(jié)13</p><p><b> 參
6、考文獻(xiàn)32</b></p><p> 摘要:本文介紹了采用STC12C5A60S2單片機(jī)實(shí)現(xiàn)數(shù)字計(jì)數(shù)器的實(shí)用電路,實(shí)現(xiàn)了利用外部中斷,對(duì)外部矩形脈沖信號(hào)計(jì)數(shù),并在LED數(shù)碼管上顯示,設(shè)計(jì)了按鍵控制來(lái)模擬外部矩形脈沖。已經(jīng)過(guò)軟件和硬件測(cè)試,并達(dá)到設(shè)計(jì)項(xiàng)目二要求。</p><p> 關(guān)鍵字:?jiǎn)纹瑱C(jī);LED數(shù)碼管;外部中斷;按鍵;軟件</p><p>
7、 第一章 目的、設(shè)計(jì)要求</p><p><b> 課程設(shè)計(jì)目的:</b></p><p> 1、通過(guò)單片機(jī)課程設(shè)計(jì),熟練C語(yǔ)言的編程方法,將理論聯(lián)系到實(shí)踐中去,提高我們的動(dòng)腦和動(dòng)手的能力。</p><p> 2、通過(guò)數(shù)字計(jì)數(shù)器系統(tǒng)的設(shè)計(jì),掌握l(shuí)ed數(shù)碼管及外部中斷的使用方法。</p><p> 3、通過(guò)此次課
8、程設(shè)計(jì),熟練掌握電路板焊接技能,及keil編程軟件、stc單片機(jī)下載程序的使用方法。</p><p><b> 二、設(shè)計(jì)要求</b></p><p> ?。?)掌握硬件原理基礎(chǔ)上,編寫C程序?qū)ν獠烤匦蚊}沖進(jìn)行計(jì)數(shù)。 </p><p> (2)在數(shù)碼管上顯示計(jì)數(shù)。</p><p> (3)在電路板上的現(xiàn)有電路編寫程
9、序來(lái)實(shí)現(xiàn)功能。</p><p> ?。?)調(diào)試,并且完成課程設(shè)計(jì)報(bào)告。</p><p> 最終實(shí)現(xiàn): 鍵盤輸入模擬外部中斷,對(duì)外部矩形脈沖信號(hào)計(jì)數(shù),并在LED數(shù)碼管上顯示。</p><p><b> 第二章 設(shè)計(jì)方案</b></p><p><b> 一、系統(tǒng)設(shè)計(jì)</b></p>
10、<p> 1、數(shù)字計(jì)數(shù)器的系統(tǒng)框圖如圖1所示。</p><p><b> 圖1</b></p><p> 主要由3個(gè)模塊組成:LED數(shù)碼管顯示、按鍵模擬外部中斷、單片機(jī)最小工作電路(包括復(fù)位,電源VCC,接地GND,晶振電路等);</p><p><b> 功能設(shè)計(jì):</b></p>&l
11、t;p> 通過(guò)電源總開關(guān)實(shí)現(xiàn)系統(tǒng)通斷電;</p><p> 2、上電初始時(shí)左右兩邊四位LED數(shù)碼管個(gè)位顯示0,通過(guò)按鍵S2模擬外部脈沖1,按鍵S3模擬外部脈沖0,具體如下:</p><p> 1)、按下按鍵S2,右邊四位LED顯示加1遞增,并向前進(jìn)位,最多計(jì)數(shù)到9999;</p><p> 2)、按下按鍵S3,左邊四位LED顯示加1遞增,并向前進(jìn)位,最
12、多計(jì)數(shù)到9999;</p><p> 3、通過(guò)“復(fù)位”鍵使LED回到初始狀態(tài);</p><p><b> 第三章 硬件設(shè)計(jì)</b></p><p><b> 單片機(jī)</b></p><p><b> 簡(jiǎn)介:</b></p><p> 單片微型機(jī)
13、計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是具有生命力的機(jī)種,單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī)。特別適用于控制領(lǐng)域,故又稱為微控制器。</p><p> 通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件;中央處理器、存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠坎考O(shè)備和結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。</p><p> 本課程設(shè)計(jì)所采用的單片機(jī)型號(hào)是STC12C
14、5A60S2,其管腳圖如圖2所示。</p><p><b> 圖2</b></p><p> 該系列單片機(jī)正常工作所需的最小應(yīng)用電路如圖3所示:</p><p><b> 圖3</b></p><p> 此次課程設(shè)計(jì)所用電路板的單片機(jī)的最小應(yīng)用電路如圖4:</p><p&
15、gt;<b> 圖4</b></p><p><b> LED數(shù)碼管</b></p><p> 本課程LED數(shù)碼管顯示部分的硬件原理圖如圖5所示。</p><p><b> 圖5</b></p><p><b> 其中</b></p>
16、<p> 1. LED數(shù)碼管采用共陰極接法,故要使LED數(shù)碼管點(diǎn)亮應(yīng)使對(duì)應(yīng)的段的正極為高電平, </p><p> 顯示數(shù)字對(duì)應(yīng)8位段碼如下:</p><p> 數(shù)字 0 1 2 3 4 5 6 7 8 9 </p><p> 段碼 0x3f,0x06,0x5b,0x4f,0x66,0x
17、6d,0x7d, 0x07, 0x7f, 0x6f</p><p> 2. 采用74H573數(shù)字鎖存器,鎖存數(shù)據(jù);</p><p> 3. WELA接單片機(jī)的P2^6口,通過(guò)高電平使能74H573鎖存器控制8個(gè)數(shù)碼管要顯示的哪一個(gè);</p><p> 4. DULA接單片機(jī)的P2^7口,通過(guò)高電平使能74H573鎖存器控制每個(gè)數(shù)碼管要顯示的段碼;</p
18、><p> 5.PA00--PA07分別接單片機(jī)的P0^0 ~ P0^7口,這樣就可以通過(guò)控制單片機(jī)P0口的值來(lái)控制數(shù)碼管。</p><p> 3、按鍵(模擬數(shù)字脈沖)</p><p> 通過(guò)鍵盤連接,模擬數(shù)字脈沖。本課程設(shè)計(jì)電路板的按鍵原理圖如圖6所示:</p><p><b> 圖6</b></p>
19、<p> 其中按鍵S2,KEY1接單片機(jī)的P3^3/INT1引腳;</p><p> 按鍵S3,KEY2接單片機(jī)的P3^2/INT0引腳;</p><p> 按鍵按下時(shí),單片機(jī)的引腳由高電平變成低電平,由此來(lái)模擬外部脈沖,可分低電平及下降沿兩種觸發(fā)方式計(jì)數(shù)。</p><p><b> 第四章 軟件設(shè)計(jì)</b></p&g
20、t;<p><b> 1、程序流程圖</b></p><p> 程序流程圖如圖7所示。</p><p> 此流程圖采用流程圖繪制軟件——億圖 繪制。</p><p><b> 圖7</b></p><p><b> 設(shè)計(jì)程序</b></p>
21、<p> 先定義頭文件key.h 以方便程序編寫及改動(dòng),</p><p> 一、頭文件程序如下:</p><p> /********************************************************</p><p> key.h 包含 1.按鍵等端口定義</p><p><b>
22、 2.數(shù)據(jù)類型定義</b></p><p><b> 3.延時(shí)函數(shù)</b></p><p> **********************************************************/</p><p> #ifndef _KEY_H_</p><p> #define _
23、KEY_H_</p><p> #define uchar unsigned char //定義數(shù)據(jù)類型</p><p> #define uint unsigned int</p><p> /********************端口定義**************************/</p><p> #defin
24、e led P1 //P1口接led</p><p> sbit dula = P2^7;</p><p> sbit wela =P2^6;</p><p> /**********定義按鍵及按鍵要實(shí)現(xiàn)的功能******************/</p><p> sbit key1=P3^3;</p>
25、<p> sbit key2=P3^4; </p><p> sbit key3=P3^5;</p><p> /******************定義變量****************************/</p><p> // 此表為 LED 的字模 // 0 1 2 3 4 5 6
26、 7 8 9 </p><p><b> //共陰極</b></p><p> uchar code table[] = {</p><p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p>
27、 0x7f,0x6f,0x77,0x7c,</p><p> 0x39,0x5e,0x79,0x71,0x00</p><p><b> };</b></p><p> /************延時(shí)函數(shù)*********/</p><p> void delay(uint x)</p><p
28、> { </p><p><b> uint i,j;</b></p><p> for(i=x;i>0;i--) //i=x ,大約延時(shí)X毫秒即Xms,</p><p> for(j=100;j>0;j--); //晶振采用11.059MHZ時(shí)值設(shè)為110,</p><p&
29、gt; } //由于采中的為22MHZ故值應(yīng)按情況而定</p><p><b> #endif</b></p><p> 主程序led.c如下:</p><p> /*******************************************************************************
30、</p><p> * 標(biāo)題: 試驗(yàn)4位數(shù)碼管上顯示外部中斷計(jì)數(shù) *</p><p> *P3.2和P3.3外部中斷輸入 由兩個(gè)四位數(shù)碼管分別顯示計(jì)數(shù) *</p><p> * 連接方法: P3.2外部中斷0輸入接按鍵S3<
31、;/p><p> P3.3外部中斷1輸入接按鍵S2 *</p><p> 程序完成時(shí)間:2012年11月20日晚已經(jīng)過(guò)測(cè)試</p><p> 測(cè)試時(shí)間: 2012年11月20日晚</p><p> *********************************************************
32、***********************/</p><p> #include <STC12C5A.H></p><p> #include "key.h"</p><p> uint num0,num1;//uint 最多計(jì)2^16</p><p> //uchar num0,num1; /
33、/uchar最多計(jì)2^8次=256</p><p> uint LedOut[8];</p><p> uchar ledw[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//此表為第幾個(gè)led數(shù)碼管亮的代碼 </p><p> //1111 1110 , 1111 1101 ,1111 1011,1111
34、 0111,即7f, bf, df ,ef</p><p> //1110 1111 ,1101 1111, 1011 1111,0111 1111, 即f7, fb, fd , fe</p><p> //7f, bf, df ,ef</p><p> void delay(uint);</p><p> void displ
35、ay();</p><p> void main()</p><p><b> {</b></p><p> num0=0;//外部中斷0計(jì)數(shù)</p><p> num1=0;//外部中斷1計(jì)數(shù)</p><p> // IT0=0; //低電平觸發(fā)</p&g
36、t;<p> IT0=1; //下降沿觸發(fā)</p><p><b> EX0=1;</b></p><p> //IT1=0; //低電平觸發(fā)</p><p> IT1=1; //下降沿觸發(fā)</p><p> EA=1;//開總中斷</p>&
37、lt;p> EX1=1; //開外部中斷1</p><p><b> while(1)</b></p><p><b> {</b></p><p> display();</p><p><b> }</b></p><p>
38、<b> }</b></p><p> /********************************************************</p><p> * 顯示函數(shù) *</p><p> ***********************
39、*********************************/</p><p> void display()</p><p><b> { </b></p><p> uchar i=1;</p><p><b> { </b></p><p> if (
40、num1<10) //外部中斷1計(jì)數(shù)</p><p><b> {</b></p><p> LedOut[3]=table[16]; //千位</p><p> LedOut[2]=table[16];//num%1000/100]&0x7f;//百位/100];</p><p>
41、; LedOut[1]=table[16];//num%100/10];//十位</p><p> LedOut[0]=table[num1%10]; //個(gè)位</p><p><b> } </b></p><p> else if (num1>9&&num1<100)&l
42、t;/p><p><b> {</b></p><p> LedOut[3]=table[16]; //千位</p><p> LedOut[2]=table[16];//num%1000/100]&0x7f;//百位/100];</p><p> LedOut[1]=table[num1%100
43、/10];//十位</p><p> LedOut[0]=table[num1%10]; //個(gè)位</p><p><b> } </b></p><p> else if (num1>99&&num1<1000)</p><p><b>
44、{</b></p><p> LedOut[3]=table[16]; //千位</p><p> LedOut[2]=table[num1%1000/100]&0x7f;//百位/100];</p><p> LedOut[1]=table[num1%100/10];//十位</p><p>
45、 LedOut[0]=table[num1%10]; //個(gè)位</p><p><b> } </b></p><p> else if(num1>999&&num1<10000)</p><p><b> {</b></p><p>
46、LedOut[3]=table[num1%10000/1000]; //千位</p><p> LedOut[2]=table[num1%1000/100]&0x7f;//百位/100];</p><p> LedOut[1]=table[num1%100/10];//十位</p><p> LedOut[0]=table[num1
47、%10]; //個(gè)位</p><p><b> } </b></p><p><b> }</b></p><p><b> {</b></p><p> if (num0<10) //外部中斷0計(jì)數(shù)</p><
48、;p><b> {</b></p><p> LedOut[7]=table[16]; //千位</p><p> LedOut[6]=table[16];//num%1000/100]&0x7f;//百位/100];</p><p> LedOut[5]=table[16];//num%100/10];
49、//十位</p><p> LedOut[4]=table[num0%10]; //個(gè)位</p><p><b> } </b></p><p> else if (num0>9&&num0<100)</p><p><b> {</b>
50、;</p><p> LedOut[7]=table[16]; //千位</p><p> LedOut[6]=table[16];//num%1000/100]&0x7f;//百位/100];</p><p> LedOut[5]=table[num0%100/10];//十位</p><p> LedO
51、ut[4]=table[num0%10]; //個(gè)位</p><p><b> } </b></p><p> else if (num0>99&&num0<1000)</p><p><b> {</b></p><p> LedOut
52、[7]=table[16]; //千位</p><p> LedOut[6]=table[num0%1000/100];//百位/100];</p><p> LedOut[5]=table[num0%100/10];//十位</p><p> LedOut[4]=table[num0%10]; //個(gè)位</
53、p><p><b> } </b></p><p> else if(num1>999&&num1<10000)</p><p><b> {</b></p><p> LedOut[7]=table[num0%10000/1000]; //千位</p&g
54、t;<p> LedOut[6]=table[num0%1000/100];//百位/100];</p><p> LedOut[5]=table[num0%100/10];//十位</p><p> LedOut[4]=table[num0%10]; //個(gè)位</p><p><b> } &
55、lt;/b></p><p><b> }</b></p><p> for( i=0; i<8; i++) </p><p><b> {</b></p><p> wela=1; //位碼</p><p> P0=ledw[i];//0xe
56、f; //1111 0111 ef</p><p><b> wela=0;</b></p><p> dula=1; //段碼</p><p> P0 = LedOut[i];</p><p><b> dula=0;</b></p><
57、;p> delay(25);</p><p><b> }</b></p><p><b> }</b></p><p> /********************************************************</p><p> * INT0中斷函數(shù)
58、 *</p><p> ********************************************************/</p><p> void counter0(void) interrupt 0 using 1</p><p><b> {<
59、;/b></p><p><b> EX0=0; </b></p><p><b> num0++;</b></p><p><b> EX0=1;</b></p><p><b> }</b></p><p>
60、/********************************************************</p><p> * INT1中斷函數(shù) *</p><p> ********************************************************/</p&
61、gt;<p> void counter1(void) interrupt 2 using 2</p><p><b> {</b></p><p><b> EX1=0;</b></p><p><b> num1++;</b></p><p><
62、;b> EX1=1;</b></p><p><b> }</b></p><p> /********************************************************/</p><p><b> 第五章 系統(tǒng)調(diào)試</b></p><p>&
63、lt;b> 1、硬件調(diào)試</b></p><p> 檢測(cè)各硬件模塊是否斷路或者短路,根據(jù)電路圖查看接線線路是否正確。檢測(cè)接線無(wú)誤后,接入電源,測(cè)量各芯片的供電電壓,檢查無(wú)誤后,進(jìn)入軟件調(diào)試階段。</p><p><b> 2、軟件調(diào)試</b></p><p> 首先使用keil編譯好程序,生成HEX文件,安裝好PL23
64、03驅(qū)動(dòng)程序,使用STC-ISP下載軟件,將程序程序到單片機(jī)后,按下開關(guān),兩邊LED數(shù)碼管均顯示0。</p><p> 接下來(lái)將按鍵S2,KEY1接單片機(jī)的P3^3/INT1引腳;按鍵S3,KEY2接單片機(jī)的P3^2/INT0引腳;</p><p> 按下S3按鍵可看到左邊四個(gè)LED數(shù)碼管加1計(jì)數(shù)變換;按下S2按鍵可看到右邊四個(gè)LED數(shù)碼管加1計(jì)數(shù)變換。</p><
65、p> 按下復(fù)位S1,可看到8位LED數(shù)碼管恢復(fù)初始狀態(tài)即歸零。</p><p> 調(diào)試完成后按關(guān)停止開關(guān)可以使電路斷電,LED數(shù)碼管熄滅。</p><p> 第六章 軟件實(shí)用方法總結(jié)</p><p><b> 軟件實(shí)用方法總結(jié):</b></p><p> 關(guān)于keil官方軟件中新建項(xiàng)目時(shí)選擇單片機(jī)型號(hào)中無(wú)
66、STC型號(hào)的單片機(jī)的解決方案:</p><p> 數(shù)據(jù)庫(kù)替換法(STC官網(wǎng)http://www.stcmcu.com/方法):</p><p><b> 操作步驟:</b></p><p> 1.先備份KEIL安裝目錄UV3(KEIL3版本是UV3,KEIL4是UV4,下同)文件夾下面的UV3.CDB(或者UV4.CDB)文件,然后用ST
67、C官網(wǎng)提供的同名的CDB文件(下載壓縮包內(nèi)的UV3.cdb已經(jīng)集合了 keil自帶的數(shù)據(jù)庫(kù)+STC數(shù)據(jù)庫(kù))代替。</p><p> 注:沒有UV4.CDB的話,可以將“UV2.CDB(或者UV3.CDB)”改名成“UV4.CDB”來(lái)使用。</p><p> 步驟1完成后新建工程是如圖8所示:</p><p><b> 圖8</b><
68、/p><p> 2. 將壓縮包內(nèi)的 “STC”文件夾(已經(jīng)存放了STC所有系列的頭文件)放到KEIL安裝目錄Keil\C51\INC目錄下。</p><p> 第2步驟的作用:可以 單擊右鍵 快捷插入STC對(duì)應(yīng)的頭文件。</p><p><b> ?如圖9所示:</b></p><p><b> 圖9<
69、;/b></p><p> 本課程設(shè)計(jì)所采用的STC12C5A60S2系列單片機(jī)的頭文件“STC12C5A.H”如下:</p><p> /*------------------------------------------------*/</p><p> /* --- 宏晶科技 STCMCU ---------------------------*
70、/</p><p> /* --- Mobile: (86)13922805190 -------------------*/</p><p> /* --- Fax: 86-755-82944243 ----------------------*/</p><p> /* --- Tel: 86-755-82948412 ------------------
71、----*/</p><p> /* --- Web: www.STCMCU.com -----------------------*/</p><p> /* 適用于: STC12C5AxxX STC12LE5AxxX ------------*/</p><p> /* ------- STC12C5AxxCPP STC12LE5AxxCPP ----
72、------*/</p><p> /* ------- STC12C5AxxAD STC12LE5AxxAD ----------*/</p><p> /* ------- STC12C5AxxS2 STC12LE5AxxS2 ----------*/</p><p> /* ------- IAP12C5Axx IAP12LE5Axx
73、 ----------*/</p><p> /* ------- IAP12C5AxxCPP IAP12LE5AxxCPP ----------*/</p><p> /* ------- IAP12C5AxxAD IAP12LE5AxxAD ----------*/</p><p> /* ------- IAP12C5AxxS2 IAP12LE5A
74、xxS2 ----------*/</p><p> /*------------------------------------------------*/</p><p> #ifndef __STC12C5A_H__</p><p> #define __STC12C5A_H__</p><p> //////////////
75、//////////////////////////////////////////////////////////////////////////////////////////////////</p><p> sfr PSW = 0xd0; //程序狀態(tài)字 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2
76、Bit1 Bit0</p><p> //位描述 CY AC F0 RS1 RS0 OV F1 P</p><p> //初始值=0000,0000 0 0 0 0 0 0 0 0</p
77、><p> sbit CY = PSW^7; //進(jìn)位標(biāo)志</p><p> sbit AC = PSW^6; //輔助進(jìn)位標(biāo)志</p><p> sbit F0 = PSW^5; //用戶標(biāo)志</p><p> sbit RS1 =
78、 PSW^4; //寄存器組選擇位1</p><p> sbit RS0 = PSW^3; //寄存器組選擇位0</p><p> sbit OV = PSW^2; //溢出標(biāo)志</p><p> sbit P = PSW^0; //ACC的偶校驗(yàn)位</
79、p><p> /////////////////////////////////</p><p> sfr ACC = 0xe0; //累加器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p> //初始值=0000
80、,0000 0 0 0 0 0 0 0 0</p><p> sbit ACC7 = ACC^7; //累加器第7位</p><p> sbit ACC6 = ACC^6; //累加器第6位</p><p> sbi
81、t ACC5 = ACC^5; //累加器第5位</p><p> sbit ACC4 = ACC^4; //累加器第4位</p><p> sbit ACC3 = ACC^3; //累加器第3位</p><p> sbit ACC2 = ACC^2; //
82、累加器第2位</p><p> sbit ACC1 = ACC^1; //累加器第1位</p><p> sbit ACC0 = ACC^0; //累加器第0位</p><p> /////////////////////////////////</p><p> sfr B
83、 = 0xf0; //B寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p> //初始值=0000,0000 0 0 0 0 0 0 0 0</p><
84、;p> /////////////////////////////////</p><p> sfr SP = 0x81; //堆棧指針 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p> //初始值=0000,0111
85、0 0 0 0 0 1 1 1</p><p> /////////////////////////////////</p><p> sfr DPL = 0x82; //數(shù)據(jù)指針低字節(jié) Bit7 Bit6 Bit5 Bit4 Bit
86、3 Bit2 Bit1 Bit0</p><p> //初始值=0000,0000 0 0 0 0 0 0 0 0</p><p> /////////////////////////////////</p><p> sfr DPH
87、 = 0x83; //數(shù)據(jù)指針高字節(jié) Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p> //初始值=0000,0000 0 0 0 0 0 0 0 0</p><p> //
88、//////////////////////////////////////////////////////////////////////////////////////////////////////////////</p><p> sfr PCON = 0x87; //電源控制寄存器 Bit7 Bit6 Bit5 Bit4 Bit3
89、 Bit2 Bit1 Bit0</p><p> //位描述 SMOD SMOD0 LVDF POF GF1 GF0 PD IDL</p><p> //初始值=0011,0000 0 0 1 1 0 0 0
90、 0</p><p> #define SMOD 0x80 //串口波特率倍速位,置1可使波特率快1倍</p><p> #define SMOD0 0x40 //FE/SM0選擇位,0:SCON.7為SM0 1:SCON.7為FE</p><p> #define LVDF 0x20
91、 //低壓檢測(cè)中斷請(qǐng)求位,由硬件置1,需由軟件清0</p><p> #define POF 0x10 //上電復(fù)位標(biāo)志位,上電時(shí)由硬件置1,需由軟件清0</p><p> #define GF1 0x08 //通用標(biāo)志位1</p><p> #define GF0 0x
92、04 //通用標(biāo)志位0</p><p> #define PD 0x02 //掉電控制位,寫1可以使MCU進(jìn)入PowerDown模式</p><p> #define IDL 0x01 //空閑控制位,寫1可以使MCU進(jìn)入Idle模式</p><p> ////////////////
93、/////////////////</p><p> sfr WAKE_CLKO = 0x8f; //掉電喚醒/時(shí)鐘輸出控制 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p> //位描述 PCAWAKEUP RXDPINIE T1PINIE T0PINIE L
94、VD_WAKEUP BRTCLKO T1VLKO T0CLKO</p><p> //初始值=0000,0000 0 0 0 0 0 0 0 0</p><p> #define PCAWAKEUP 0x80 //允許PCA的上升沿/下降沿中斷喚醒掉電MCU</p&g
95、t;<p> #define RXD_PIN_IE 0x40 //允許RXD(P3.0)下降沿置位RI中斷時(shí)喚醒掉電MCU(必須打開相應(yīng)中斷)</p><p> #define T1_PIN_IE 0x20 //允許T1(P3.5)下降沿置位T1中斷時(shí)喚醒掉電MCU(必須打開相應(yīng)中斷)</p><p> #define T0_PIN_I
96、E 0x10 //允許T0(P3.4)下降沿置位T0中斷時(shí)喚醒掉電MCU(必須打開相應(yīng)中斷)</p><p> #define LVD_WAKEUP 0x08 //允許LVD(P4.6)的低壓檢測(cè)中斷喚醒掉電MCU(必須打開相應(yīng)中斷)</p><p> #define BRTCLKOEN 0x04 //打開P1.0腳的BRT時(shí)鐘溢出脈
97、沖,輸出的時(shí)鐘頻率為1/2倍的BRT溢出率</p><p> #define T1CLKOEN 0x02 //打開P3.5腳的定時(shí)器1時(shí)鐘溢出脈沖,輸出的時(shí)鐘頻率為1/2倍的T1溢出率</p><p> #define T0CLKOEN 0x01 //打開P3.4腳的定時(shí)器0時(shí)鐘溢出脈沖,輸出的時(shí)鐘頻率為1/2倍的T0溢出率</p>
98、<p> /////////////////////////////////</p><p> sfr CLK_DIV = 0x97; //時(shí)鐘分頻寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p> //位描述
99、 - - - - - CLKS2 CLKS1 CLKS0</p><p> //初始值=xxxx,x000 x x x x x 0 0 0</p><p> #define FOSCD1 0x00 //
100、系統(tǒng)時(shí)鐘為Fosc</p><p> #define FOSCD2 0x01 //系統(tǒng)時(shí)鐘為Fosc/2</p><p> #define FOSCD4 0x02 //系統(tǒng)時(shí)鐘為Fosc/4</p><p> #define FOSCD8 0x03 //系統(tǒng)時(shí)鐘為Fosc/8</p&
101、gt;<p> #define FOSCD16 0x04 //系統(tǒng)時(shí)鐘為Fosc/16</p><p> #define FOSCD32 0x05 //系統(tǒng)時(shí)鐘為Fosc/32</p><p> #define FOSCD64 0x06 //系統(tǒng)時(shí)鐘為Fosc/64</p><p>
102、; #define FOSCD128 0x07 //系統(tǒng)時(shí)鐘為Fosc/128</p><p> /////////////////////////////////</p><p> sfr BUS_SPEED = 0xa1; //數(shù)據(jù)總線速度控制器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2
103、 Bit1 Bit0</p><p> //位描述 - - ALES1 ALES0 - RWS2 RWS1 RWS0</p><p> //初始值=xx10,x011 x x 1 0 x 0 1
104、1</p><p> #define ALES1 0x20 //P0地址建立時(shí)間和保持時(shí)間到ALE信號(hào)的下降沿的時(shí)鐘數(shù)</p><p> #define ALES0 0x10 //ALES1/ALES0=0/0:1個(gè)時(shí)鐘 0/1:2個(gè)時(shí)鐘 1/0:3個(gè)時(shí)鐘 1/1:4個(gè)時(shí)鐘</p><p> #define
105、RWS2 0x04 //MOVX指令的時(shí)鐘數(shù)</p><p> #define RWS1 0x02 //RWS2/RWS1/RWS0=000:1個(gè)時(shí)鐘 001:2個(gè)時(shí)鐘 010:3個(gè)時(shí)鐘 011:4個(gè)時(shí)鐘</p><p> #define RWS0 0x01 // 100:5
106、個(gè)時(shí)鐘 101:6個(gè)時(shí)鐘 110:7個(gè)時(shí)鐘 111:8個(gè)時(shí)鐘</p><p> /////////////////////////////////</p><p> sfr WDT_CONTR = 0xc1; //看門狗定時(shí)器控制器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0<
107、/p><p> //位描述 WDT_FLAG - EN_WDT CLR_WDT IDL_WDT PS2 PS1 PS0</p><p> //初始值=0x00,0000 0 x 0 0 0 0 0 0</p><p>
108、; #define WDT_FLAG 0x80 //看門狗復(fù)位標(biāo)志,當(dāng)看門狗溢出產(chǎn)生復(fù)位后,硬件自動(dòng)置1,需要由軟件清0</p><p> #define EN_WDT 0x20 //軟件使能看門狗,打開后不能用軟件的方式關(guān)閉</p><p> #define CLR_WDT 0x10 //清看門狗定時(shí)器</p&
109、gt;<p> #define IDLE_WDT 0x08 //IDLE模式下,看門狗定時(shí)器是否繼續(xù)計(jì)時(shí)</p><p> ////////////////////////////////////////////////////////////////////////////////////////////////////////////////</p><
110、;p> sfr AUXR = 0x8e; //輔助寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p> //位描述 T0x12 T1x12 UM0x6 BRTR S2SMOD BRTx12 EXTRAM S
111、1BRS</p><p> //初始值=0000,0000 0 0 0 0 0 0 0 0</p><p> #define T0x12 0x80 //定時(shí)器0時(shí)鐘控制,0:Fosc/12(傳統(tǒng)的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍于傳統(tǒng)速度)&l
112、t;/p><p> #define T1x12 0x40 //定時(shí)器1時(shí)鐘控制,0:Fosc/12(傳統(tǒng)的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍于傳統(tǒng)速度)</p><p> #define UR0x6 0x20 //串口模式0的時(shí)鐘控制,0:Fosc/12(傳統(tǒng)的12分頻) 1:Fosc/2(2分頻,,即6倍于傳統(tǒng)速度
113、)</p><p> #define BRTR 0x10 //獨(dú)立波特率發(fā)生器啟動(dòng)控制位,1:啟動(dòng)獨(dú)立波特率發(fā)生器 0:停止獨(dú)立波特率發(fā)生器</p><p> #define S2SMOD 0x08 //串口2波特率倍速位,置1可使串口2的波特率快1倍</p><p> #define BRTx12
114、 0x04 //獨(dú)立波特率發(fā)生器時(shí)鐘控制,0:Fosc/12(傳統(tǒng)的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍于傳統(tǒng)速度)</p><p> #define EXTRAM 0x02 //內(nèi)部擴(kuò)展RAM禁能位,0:內(nèi)部擴(kuò)展RAM有效 1:禁用內(nèi)部擴(kuò)展RAM</p><p> #define S1BRS 0x01
115、 //串口1的波特率發(fā)生器選擇位,0:定時(shí)器1 1:獨(dú)立波特率發(fā)生器(注意串口2只能夠使用獨(dú)立波特率發(fā)生器)</p><p> /////////////////////////////////</p><p> sfr AUXR1 = 0xa2; //輔助寄存器1 Bit7 Bit6 Bit5 Bit4 Bit3
116、 Bit2 Bit1 Bit0</p><p> //位描述 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS</p><p> //初始值=x000,00x0 x 0 0 0 0 0 x
117、 0</p><p> #define PCA_P4 0x40 //將PCA口映射到P4口,0:ECI(P1.2)CEX0(P1.3)CEX1(P1.4) 1:ECI(P4.1)CEX0(P4.2)CEX1(P4.3)</p><p> #define SPI_P4 0x20 //將SPI口映射到P4口,0:SCLK(P1.7
118、)MISO(P1.6)MOSI(P1.5)SS(P1.4) 1:SCLK(P4.3)MISO(P4.2)MOSI(P4.1)SS(P4.0)</p><p> #define S2_P4 0x10 //將串口2映射到P4口,0:RXD2(P1.2)TXD2(P1.3) 1:RXD2(P4.2)TXD2(P4.3)</p><p> #define GF2
119、 0x08 //通用標(biāo)志位2</p><p> #define ADRJ 0x04 //ADC結(jié)果調(diào)整,0:{ADC_RES[9876,5432],ADC_RESL[----,--10]} 1:{ADC_RES[----,--98],ADC_RESL[7654,3210]}</p><p> #define DPS 0
120、x01 //DPTR0/DPTR1選擇位,0:DPTR0 1:DPTR1</p><p> ////////////////////////////////////////////////////////////////////////////////////////////////////////////////</p><p> sfr P0 =
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)----手動(dòng)計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)---倒數(shù)計(jì)數(shù)器
- 倒數(shù)計(jì)數(shù)器單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告(零件計(jì)數(shù)器)
- 單片機(jī)課程設(shè)計(jì)----語(yǔ)言報(bào)數(shù)計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)(語(yǔ)言報(bào)數(shù)計(jì)數(shù)器)
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易頻率計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)外部脈沖計(jì)數(shù)器
- 基于單片機(jī)的頻率計(jì)數(shù)器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)00-99加計(jì)數(shù)器
- 單片機(jī)計(jì)數(shù)器實(shí)驗(yàn)報(bào)告
- 單片機(jī)課程設(shè)計(jì)---基于51單計(jì)時(shí)計(jì)數(shù)器系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于51單計(jì)時(shí)計(jì)數(shù)器系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--00-99加計(jì)數(shù)器程序設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)帶有l(wèi)cd顯示的音樂倒數(shù)計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)-00-99手動(dòng)計(jì)數(shù)器設(shè)計(jì)
- 基于單片機(jī)lcd顯示的音樂倒數(shù)計(jì)數(shù)器課程設(shè)計(jì)論文
- 傳感器課程設(shè)計(jì)---基于單片機(jī)的工業(yè)產(chǎn)品自動(dòng)計(jì)數(shù)器
- 《單片機(jī)原理與應(yīng)用》課程設(shè)計(jì)---可編程定時(shí)計(jì)數(shù)器
- 光電計(jì)數(shù)器課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論