第一篇:嵌入式系統 流水燈、按鍵、定時器實驗報告
嵌入式系統應用
實驗報告
姓
名: 學
號: 學
院: 專
業: 班
級: 指導教師:
實驗
1、流水燈實驗
1.1實驗要求
編程控制實驗板上LED燈輪流點亮、熄滅,中間間隔一定時間。
1.2原理分析
實驗主要考察對STM32F10X系列單片機GPIO的輸出操作。
參閱數據手冊可知,通過軟件編程,GPIO可以配置成以下幾種模式: ◇輸入浮空 ◇輸入上拉 ◇輸入下拉 ◇模擬輸入 ◇開漏輸出 ◇推挽式輸出
◇推挽式復用功能 ◇開漏式復用功能
根據實驗要求,應該首先將GPIO配置為推挽輸出模式。
由原理圖可知,單片機GPIO輸出信號經過74HC244緩沖器,連接LED燈。由于74HC244的OE1和OE2都接地,為相同電平,故A端電平與Y端電平相同且LED燈共陽,所以,如果要點亮LED,GPIO應輸出低電平。反之,LED燈熄滅。
1.3程序分析
軟件方面,在程序啟動時,調用SystemInit()函數(見附錄1),對系統時鐘等關鍵部分進行初始化,然后再對GPIO進行配置。
GPIO配置函數為SZ_STM32_LEDInit()(見附錄2),函數中首先使能GPIO時鐘:
RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO輸入輸出模式:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置GPIO端口翻轉速度: GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 最后將配置好的參數寫入寄存器,初始化完成: GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。
初始化完成后,程序循環點亮一個LED并熄滅其他LED,中間通過Delay()函數進行延時,達到流水燈的效果(程序完整代碼見附錄3)。
實驗程序流程圖如下:
硬件方面,根據實驗指南,將實驗板做如下連接:
1.3實驗結果
實驗
二、按鍵實驗
2.1實驗要求
利用STM32讀取外部按鍵狀態,按鍵按下一次產生一次外部中斷在中斷處理函數中使按鍵所對應的燈亮起。
2.2原理分析
實驗主要考察對STM32F10X系列單片機GPIO外部中斷功能的使用。
STM32F107VCT一共有5組GPIO,分別是PA[15:0]、PB[15:0]、PC[15:0]、PD[15:0]、PE[15:0]。STM32的所有GPIO都可以作為中斷輸入源,單片機通過復用的方式使其對處理器來說來自 GPIO 的一共有 16 個中斷Px[15:0]。具體實現是PA[0]、PB[0]、PC[0]、PD[0]和PE[0]共享一個GPIO中斷;PA[1]、PB[1]、PC[1]、PD[1]和PE[1]共享一個GPIO中斷;……PA[15]、PB[15]、PC[15]、PD[15]和PE[15]共享一個GPIO中斷。以下圖片為以EXTI0為例的外部中斷/事件線路映像:
要產生中斷,必須先配置好并使能中斷線。根據需要的邊沿檢測設置2個觸發寄存器,同時在中斷屏蔽寄存器的相應位寫‘1’允許中斷請求。當外部中斷線上發生了期待的邊沿時,將產生一個中斷請求,對應的掛起位也隨之被置‘1’。在掛起寄存器的對應位寫’1’,將清除該中斷請求。
要把IO口作為外部中斷輸入,有以下幾個步驟:
(1)初始化 IO 口為輸入。這一步設置要作為外部中斷輸入的IO口的狀態,可以設置為上拉/下拉輸入,也可以設置為浮空輸入,但浮空的時候外部一定要帶上拉,或者下拉電阻。否則可能導致中斷不停的觸發。在干擾較大的地方,就算使用了上拉/下拉,也建議使用外部上拉/下拉電阻,這樣可以一定程度防止外部干擾帶來的影響。
(2)開啟IO口復用時鐘,設置IO口與中斷線的映射關系。STM32的IO口與中斷線的對應關系需要配置外部中斷配置寄存器EXTICR,這樣我們要先開啟復用時鐘,然后配置IO口與中斷線的對應關系。才能把外部中斷與中斷線連接起來。
(3)開啟與該IO口相對的線上中斷/事件,設置觸發條件。這一步,我們要配置中斷產生的條件,STM32可以配置成上升沿觸發,下降沿觸發,或者任意電平變化觸發,但是不能配置成高電平觸發和低電平觸發。這里根據自己的實際情況來配置。同時要開啟中斷線上的中斷,這里需要注意的是:如果使用外部中斷,并設置該中斷的EMR位的話,會引起軟件仿真不能跳到中斷,而硬件上是可以的。而不設置EMR,軟件仿真就可以進入中斷服務函數,并且硬件上也是可以的。建議不要配置EMR位。
(4)配置中斷分組(NVIC),并使能中斷。這一步,我們就是配置中斷的分組以及使能,對STM32的中斷來說,只有配置了 NVIC 的設置,并開啟才能被執行,否則是不會執行到中斷服務函數里面去的。
(5)編寫中斷服務函數。這是中斷設置的最后一步,中斷服務函數,是必不可少的,如果在代碼里面開啟了中斷,但是沒編寫中斷服務函數,就可能引起硬件錯誤,從而導致程序崩潰。所以在開啟了某個中斷后,應為該中斷編寫服務函數。在中斷服務函數里面編寫要執行的中斷后的操作,并很據情況判斷是否要對中斷產生的標志位進行清零。
由原理圖可知,按鍵未按下時,GPIO讀到的為高電平,按鍵按下后,IO口接地,產生一個電平跳變,所以外部中斷觸發方式應該設置為下降沿觸發。
2.3程序分析
LED燈的點亮與實驗一中相同,不過多贅述。程序首先對按鍵進行初始化,初始化函數為GPIO_KEY_Config()(見附錄4),配置過程與實驗一中GPIO配置基本一致。由于此處GPIO需要采集外界按鍵信號,故GPIO模式應該為調整為內部上拉電阻輸入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU。
然后執行GPIO中斷初始化函數KEY_EXIT_Init()(見附錄5),首先將連接按鍵的IO口與EXTI線鏈接到一起:
GPIO_EXTILineConfig(GPIO_KEY1_EXTI_PORT_SOURCE,GPIO_KEY1_EXTI_PIN_SOURCE);
然后將觸發方式設置為下降沿觸發并寫入中斷配置寄存器,并使能中斷: EXTI_InitStructure.EXTI_Line = GPIO_KEY1_EXTI_LINE;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure)。
之后進行中斷分組配置及中斷優先級配置,函數為InterruptConfig()(見附錄6)。配置過程較為復雜,涉及到搶占優先級和響應優先級的概念。程序首先將所有外部中斷歸為NVIC_PriorityGroup_2,即2位搶占優先級和2位響應優先級:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
然后將所有外部中斷信號的搶占優先級規定為0、1、2,使其可以相互區別,并將配置好的參數寫入對應寄存器中,完成配置:
NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY1_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY2_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY3_EXTI_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_Init(&NVIC_InitStructure)。
初始化完成后,程序進入等待按鍵中斷觸發狀態,一旦按鍵按下,則進入中斷服務函數EXTI9_5_IRQHandler()(見附錄7)中。在函數中對LED燈進行點亮、熄滅操作,并重置中斷產生標志位。
實驗流程圖如下(主函數代碼見附錄8):
硬件連接方式如下圖所示:
2.3實驗結果
實驗
三、定時器實驗
3.1實驗要求
利用STM32的通用定時器 TIM5 產生一個1S的中斷,在中斷函數中實現 LED1、LED2、LED3、LED4同時翻轉的效果。
3.2原理分析
實驗主要考察對STM32F10X系列單片機定時器的使用。
實驗中使用的STM32F107單片機有多達10個定時器,包括:
◇多達4個16位定時器,每個定時器有多達4個用于輸入捕獲/輸出比較/PWM 或脈沖計數的通道和增量編碼器輸入
◇1個16位帶死區控制和緊急剎車,用于電機控制的 PWM 高級控制定時器
◇2個獨立的看門狗定時器(獨立的和窗口型的)
◇系統時間定時器:24 位自減型計數器
◇2個 16 位基本定時器用于驅動DAC
根據時鐘樹可知,系統時鐘經過分頻之后,進入TIM5的時鐘模塊入口,在經過預分頻處理,才供給TIM5作時鐘使用。預分頻器的系數為:TIMx_PSC,當TIMx_PSC = 0時表示不分頻,則TIM5定時器的時鐘
用CK_CNT =模塊入口時鐘72MHz;當TIMx_PSC = 1時表示不分頻,則TIM5定時器的時鐘用CK_CNT=模塊入口時鐘36MHz;以此類推。公式為:CK_CNT =fCK_PSC/(PSC[15:0]+1),其中PSC最大為65535。
其次是TIM5計數器計數值的設置,TIM5計數器以CK_CNT為時鐘計數,向下計數到0或向上計數到設定值(TIMx_ARR)則產生中斷。以向上計數為例,從 0 開始計數到設定值TIMx_ARR 時產生中斷。要產生一秒一次中斷則要使計數器的值乘以預分頻的值=系統時鐘72MHz,其中計數器的值和預分頻值都必須小于65535。我們使預分頻值為7200,計數器值為10000,則7200 * 10000 = 72,000,000即72M。其中拆分方法很多35000*2000 = 72,000,000,只要注意計數器的值和預分頻值都必須小于65535即可。當計數值溢出后,會改變計數溢出標志位,并產生定時器中斷,實驗中使用其產生中斷來進行LED燈翻轉。
3.3程序分析
LED初始化部分與實驗一相同,完成初始化后,點亮所有LED燈。定時器配置函數為TIM5_Init()(見附錄6)。配置函數首先使能計數器時鐘:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); 然后自動裝載計數值,計數從0開始:
TIM_TimeBaseStructure.TIM_Period =(1001); 并將計數器設置為向上計數:
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 最后寫入計時器配置寄存器,完成配置:
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure)。
配置完成后,還要對計數器溢出標志位進行清零,并打開溢出中斷,使能計數器以開始計數。
TIM_ClearITPendingBit(TIM5, TIM_IT_Update);TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);TIM_Cmd(TIM5, ENABLE)。
定時器配置完成并使能后,計數器開始工作,當到達預設的計數值之后,產生中斷信號。系統在進行相關配置后可以響應定時器產生的中斷,中斷配置函數為NVIC_Configuration()(見附錄7)。函數首先將中斷向量表首地址置于0x08000000:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000); 然后使能TIM5中斷:
NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;最后將配置參數寫入中斷控制寄存器,完成配置: NVIC_Init(&NVIC_InitStructure)。
一旦中斷產生,系統會對中斷產生響應,暫停所有正在執行的低優先級任務且將任務信息和數據壓入對應對戰區,并進入中斷服務函數TIM5_IRQHandler()(見附錄8)中進行處理。
在中斷服務函數中判斷并清除了中斷標志位,以便定時器下一次計數中斷產生。函數中調用了LED_Spark()函數(見附錄9),實現了LED的閃爍。
程序流程圖如下:
硬件連接方式如下圖所示:
實驗
四、按鍵中斷控制LED燈定時閃爍
4.1實驗要求
綜合實驗一、二、三,利用STM32讀取外部按鍵狀態,按鍵按下一次產生一次外部中斷在中斷處理函數中使按鍵所對應的燈閃爍,閃爍間隔通過定時器定時控制。其中,SKEY1控制LED1以1S為間隔,閃爍3次,SKEY2控制LED2以2S為間隔閃爍3次,SKEY3控制LED3以3S為間隔,閃爍3次。
4.2原理分析
實驗需要用到STM32的GPIO輸入輸出操作,GPIO外部中斷和內部定時器中斷。在以上三個實驗中,對各個部分都已經進行過詳盡的解釋,這里不再贅述。此實驗需要將以上實驗做綜合,并對時序進行調整。難點為,對GPIO外部中斷和定時器內部中斷的處理,即如何確定兩種不同中斷的優先級。
這里的使用的方法是,將所有按鍵外部中斷置于中斷分組2,即NVIC_PriorityGroup_2中。將所有按鍵中斷搶占優先級置為0,即最高級別中斷,響應優先級置分別置為1、2、3,相互區別。將定時器中斷搶占優先級置為1,相應優先級社會中低于按鍵中斷,使其可以被按鍵信號中斷計時,并刷新LED閃爍狀態。
4.3程序分析
這在程序初始化階段,分別對LED、按鍵外部中斷和定時器中斷進行初始化。主函數如下:
int main(void){ /* LED初始化 */ LED_config();/* LED閃爍? */ Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();Delay(3000000);Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();Delay(3000000);Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();/* 按鍵初始化 */ GPIO_KEY_Config();/* 按鍵外部中斷初始化 */ KEY_EXIT_Init();/* 外部中斷向量初始化 */ InterruptConfig();/* 定時器5初始化 */ TIM5_Init();/* 定時器中斷初始化 */ NVIC_Configuration();/* 等待中斷觸發 */ while(1){ } } 初始化完成后,等待中斷觸發。一旦按鍵按下,觸發外部中斷,則進入外部中斷服務函數,函數中將判斷哪一個按鍵被按下,記錄按下的按鍵,然后給定時器清零并開始計數,且清零外部中斷標志位。
第二篇:流水燈實驗報告
單片機流水燈實驗
一、任務
讓8個LED燈輪流亮起來,實現流水燈的功能。
二、思路
讓接在P0.0口的LED燈亮起來,那么只要把P0.0口的電平變為低電平就可以了;相反,如果要接在P0.0口的LED燈熄滅,就要把P0.0口的電平變為高電平就可以了。要實現流水燈功能,只要將8個LED燈依次點亮、熄滅,8只LED燈便會一亮一暗的做流水燈了。
我們應該注意一點,由于單片機執行每條指令的時間很短,我們在控制二極管亮滅的時候應該延時一段時間,否則我們就看不到“流水”效果了。
三、步驟
1、用proteus畫電路圖。如下圖:
2、用keil建工程。
1)運行keil C51軟件,點擊Project菜單新建項目,選擇為AT89C52的單片機型號。然后單擊File選擇New新建程序文件,保存成.c 文件,右擊Source Group1添加入程序文件。2)用C語言編寫程序代碼如下:
#include
void main(void){ unsigned char i;while(1){ for(i=0;i<8;i++){
P0=tmpled[i];
delay(50);} } }
void delay(unsigned char tmp){ unsigned char i,j;i=tmp;while(i){ i--;j=255;{
j--;} } } 3)右擊Target 1打開設置,Output菜單下勾選上create hex file。
4)調試運行程序后,在proteus中雙擊單片機,添加hex文件,運行看到流水的的效果。
四、實驗中遇到的問題。
1、用proteus仿真時候,發現錯誤:
error variable not found parsing property resistance of RN1-Rnvalue expected for RN1-R(n=1~8)而且led燈亮度十分微弱。可能是接入的電阻太大了。
檢查電路圖發現排阻的值為RX8,修改為220(自己選擇)后。錯誤便沒有了,同時,led燈的亮度也增強了。
2、關于延時函數。
延時的時間計算不太明白。
3、P0=0xfe;是對單片機P0口的8個I/O口同時進行操作,0x后的數使用十六進制表示,fe轉換為二進制是1111 1110,則P0.0為低電平,對應的led燈亮,其他7個led燈滅。
第三篇:流水燈實驗報告(范文)
單片機流水燈試驗
一、實驗目的:
1、進一步熟悉Keil C51集成開發環境調試功能的使用
2、學會自己編寫程序,進行編譯、仿真調試
3、學會使用單片機的P0口作為I/O口去控制外圍電路,實現LED燈以固定的頻率進行閃爍。
二、實驗設備:
1、PC機
2、SW-51PROC單片機綜合實驗平臺
三、實驗內容:
1、編寫一段程序,用單片機P0口的8個輸出去控制8個LED燈,實現如下功能:
先使8個LED燈輪流點亮,從左向右移動,時間間隔0.5s。以上過程循環實現。
四、實驗步驟:
1、實驗原理:
單片機流水的實質是單片機各引腳在規定的時間逐個上電,使LED燈能逐個亮起來但過了該引腳通電的時間后便滅燈的過程,實驗中使用了單片機的P2端口,對8個LED燈進行控制,要實現逐個亮燈即將P2的各端口逐一置零,中間使用時間間隔隔開各燈的亮滅。使用rl或rr a實現位的轉換。A寄存器的位經過rr a之后轉換如下所示:
A0A1A2A3A4A5A6A7 然后將A寄存器轉換一次便送給P2即MOV P2,A便將轉換后的數送到了P2口,不斷循環下去,便實現了逐位置一操作。
2、實驗電路圖 +5v1234123412340a1a2a3a4a1a2a3a4a1a2a3a4GND0Vcc1P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7b1b2b3b***C51
3通過仿真實驗正確性
代碼如下:ORG 0 MOV A,#00000001B LOOP:MOV P2,A RL A ACALL DELAY SJMP LOOP
DELAY:MOV R1,#255 DEL2:MOV R2,#250 DEL1:DJNZ R2,DEL1
DJNZ R1,DEL2 RET End ORG 0000H LJMP MAIN
4、實驗程序 :
ORG 0050H MAIN:MOV R0,#14
MOV DPTR,#TABLE L0:
MOV A,#0 L1:
MOVC A,@DPTR+A
MOV P0,A
ACALL DELAY1
INC A41 DJNZ R0,L1 SJMP L0 DELAY1:
MOV R1,#250 LOOP1:
MOV R2,#250 LOOP2:
NOP
NOP
NOP
NOP
NOP
DJNZ R0,LOOP2
DJNZ R1,LOOP1
RET TABLE: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH END
5、實驗結果:
五、實驗總結
這次試驗我通過Proteus仿真實現對流水燈功能的實現。受益匪淺,對80c51的功能和結構有了深層次的了解,我深刻的明白,要想完全了解c51還有一定距離,但我會一如既往的同困難作斗爭。在實驗中,我遇到了不少困難,比如不知道怎么將程序寫進單片機中,寫好程序的卻總出錯,不知道什么原因,原來沒有生成hex文件。這些錯誤令我明白以后在試驗中要步步細心,避免出錯。
第四篇:多功能流水燈實驗報告
課程設計報告
設計課題:
多功能流水燈
專業班級:
學生姓名:
指導教師:
設計時間:
題目 多功能流水燈
一、課程設計目的
1、掌握數字系統的設計方法和測試方法。
二、課程設計題目(問題)描述和要求
設計一個四模式三路彩燈(紅、綠、黃三種顏色)顯示系統。該系統的顯示模式由外部輸入Z、Y控制,要求開機自動置入初態后便按規定模式循環運行。設各路彩燈均為8個(紅燈序號為r1-r8,綠燈序號為g1-g8,黃燈序號為y1-y8),各模式規定如下: XY=00時,系統的顯示模式在以下六個節拍間循環:
第一節拍,依次點亮奇號紅燈(r1亮→r1、r3亮→r1、r3、r5亮→r1、r3、r5、r7亮),其余燈均滅。
第二節拍,依次點亮偶號紅燈,其余燈均滅。第三節拍,依次點亮奇號綠燈,其余燈均滅。第四節拍,依次點亮偶號綠燈,其余燈均滅。第五節拍,依次點亮奇號黃燈,其余燈均滅。第六節拍,依次點亮偶號黃燈,其余燈均滅。XY=01時,系統的顯示在第一、二節拍間循環。XY=10時,系統的顯示在第三、四節拍間循環。XY=11時,系統的顯示在第五、六節拍間循環。
三、系統分析與設計
根據課程設計題目問題描述和要求,完成:
主要器件:
繪制電路原理圖:確定選用的元件及其封裝形式,完善電路。
原理圖設計過程:進行電子電路設計時,首先要有一個設計方案,而將電路設計方案表達出來的最好方法就是畫出清晰、正確的電路原理圖。根據設計需要選擇出元器件,并把所選用的元器件和相互之間的連接關系明確地列出,直觀地表達出設計概念。
電路原理圖的基本組成是電子元器件符號和連接導線,電子元器件符號包含了該元器件的功能,連接導線則包含了元器件的電氣連接信息,所以電路原理圖設計的質量好壞直接影響到PCB印制電路板的設計質量。
繪制原理圖的兩大原則:首先應該保證整個電路原理圖的連線正確,信號流向清晰,便于閱讀分析和修改;其次應該做到元器件的整體布局合理、美觀、實用。
在Protel中繪制電路原理圖的步驟: 啟動原理圖編輯器,新建電路原理圖文件。
設置原理圖的相關參數,如圖紙的大小、版面及環境參數等。加載元件庫,在圖紙上放置需要的各種元器件。編輯元器件的屬性,并對元器件進行合理的布局調整。使用導線或網絡標簽對所有的元器件進行電氣意義上的連接。對電路原理圖進行整體的編輯、調整。保存文檔,打印輸出。
繪制元件庫:為繪制原理圖做補充。有些元件在系統庫文件里可能找不到,我們可以自己動手繪制一個能表示實際元件的圖形,并將其添加到原理圖中。建議大家從一開始就建立一個屬于自己的元件庫,以后每設計一次電路,當遇到沒有的原件時,就往庫里添加一個元件,日積月累,自己的元件庫就會充實起來,以后繪制原理圖時就會非常方便。
繪制PCB封裝:也是為設計原理圖做補充。原理圖上的元件僅僅是一個元件代號,我們可以隨意改變其模樣,但是PCB封裝絕對不能隨意改動。所謂封裝,就是元件在PCB上的實際焊接點,如果焊接點與元件對應不上,那么這塊板子就沒用了。
對原理圖進行編譯:執行【項目管理】→【Compile Document ADAC.SCHDOC】,編譯原理圖文件。根據Massage面板中的錯誤和警告提示,修改原理圖,直至編譯通過,生成網絡表。
在PCB編輯器中,執行【設計】→【層堆棧管理器】命令,選擇PCB板層結構;執行【設計】→【PCB板形狀】→【重定義PCB板形狀】定義PCB的外觀尺寸,設置PCB文件的編輯環境。
設置PCB的電氣邊界:在PCB編輯器中,單擊【Keep-Out Layer】標簽,執行【放置】→【禁止布線區】→【導線】設置PCB的電氣邊界。
更新PCB文件:在原理圖編輯器內,執行【設計】→【Update PCB Document ADAC.PCBDOC】命令,生成【工程變化訂單(ECO)】,在對話框內單擊“使變化生效”按鈕,再單擊“執行變化”按鈕,將網絡表和元件封裝載入到PCB文件中。
設置布線規則:在PCB編輯器中,選擇【設計】→【規則】命令,在彈出的【PCB規則和約束編輯器】對話框中,重點進行元件間距、導線間距、導線寬度、焊盤大小、孔徑大小等規則設置。
原件布局:自動布局(執行【工具】→【放置元件】→【自動布局】命令)和手工布局相結合,擺放元件到適當位置。
布線:計算機自動布線(執行【自動布線】→【全部對象】命令,并選擇布線策略)或手工布線。
DRC(Design Rule Check設計規則檢查)校驗和違規項修改:執行【工具】→【設計規則檢查】命令,在彈出的【設計規則檢查器】對話框中,分別設置【Report Options】和【Rules To Check】文件夾下的相關選項,然后單擊“運行設計規則檢查”按鈕,運行批處理DRC。
敷銅:執行【放置】→【覆銅】命令,在彈出的對話框中設置覆銅屬性,包括填充模式、導線寬度、網格尺寸、連接網絡及刪除死銅等。
文件保存,輸出打印:保存、打印各種報表文件及PCB制作文件。
2、將打印好的電路圖紙通過高溫印刷到已給的覆銅板上,再將電路板通過腐蝕制作成線路板,將線路板打孔。1)把圖紙印刷到覆銅板上
四.系統調試過程中出現的主要問題
現有的元件庫中沒有設計所需的芯片元件庫。為了解決這個問題,我上網尋找解決方案,并向老師請教,發現可以自己創建一個集成元件庫。首先啟動 protel dxp,在菜單中點擊file—new—library--schematic library。新建一個原理圖庫文件。點擊菜單file—save,為原理圖庫文件取個名字,然后自己選要用的圖形和引腳,畫至成功之后放置到sheet1.SchDoc文件中。
五.系統運行報告與結論 Pcb圖如圖所示
腐蝕好的電路板如圖所示
六.總結
1、打開PCB編輯軟件Proteus 7.4 的ARES。
在Proteus ISIS 編輯環境下,選擇“Tools”--“ Netlist to ARES ” 或是單擊工具欄中的圖標按鈕,即可進入PCB設計軟件ARES界面。當然也可直接運行Proteus 7.4 ARES 軟件進入其編輯界面。
放置焊盤
在編輯界面中應根據元件的引腳間距放置焊盤及元件所占空間的大小畫元件的邊框。
在ARES
軟
件
界
面
中
點
擊
左
側工具欄中的或圖標用于放置焊盤,這時在對象選擇器中列出了所有焊盤的外徑和內徑的尺寸,我們選擇S/C-70-30(其中S表示正方形焊盤,C表示圓形焊盤,70為焊盤的外徑尺寸,30為內徑的尺寸即鉆孔直徑)如下圖:
如果列表中沒有該尺寸的焊盤,可單擊列表上的圖標新建焊盤,在彈出的對話框中輸入焊盤的名稱及選擇焊盤的形狀后點擊確定,如下圖:
在接著彈出的對話框中設置好焊盤參數后單擊確定即可完成焊盤的新建,如下圖:
現在我們開始放置焊盤,將第一個焊盤放在原點處(即X=0;Y=0),如下圖:
2、分配引腳編號
右鍵單擊某一個焊盤,在彈出的下拉列表中選擇“Edit Properties / 編輯屬性”項,在彈出的“Edit Single Pin/編輯引腳”對話框中按下圖進行設置。按照同樣的方法可完成其它焊盤的設置。
3、添加元件邊框
完成了焊盤放置,接著需要根據元件的實際大小添加邊框。單擊左側工具欄中的并將左下
角
當
前
層
改
為
絲
印
圖標,層,在編輯區內按照實際尺寸畫一個元件邊框,如下圖
4、放置封裝原點
點擊左側工具欄中的圖標,在左側列表框中選擇“ORIGIN”,單擊第一個焊盤,確定為封裝的原點。如下圖:
5、放置元件“REF”
在左側列表框中選擇“REFERENCE”,在元件邊框中單擊添加“REF”。如下圖:
6、保存元件封裝
單擊右鍵并拖動鼠標指針,將整個設計完成的封裝選中,然后選擇“Library / 庫”? “Makepackage / 創建封裝”菜單項,彈出創建封裝對話框,按下圖進行設置即可。
對電子工藝的理論有了初步的系統了解。我們了解到了測試普通元件與電路元件的技巧、印制電路板圖的設計制作與工藝流程作用等。這些知識不僅在課堂上有效,對以后的電子工藝課的學習有很大的指導意義,在日常生活中更是有著現實意義。二.對自己的動手能力是個很大的鍛煉。實踐出真知,縱觀古今,所有發明創造無一不是在實踐中得到檢驗的。沒有足夠的動手能力,就奢談在未來的科研尤其是實驗研究中有所成就。在實習中,我鍛煉了自己動手技巧,提高了自己解決問題的能力。
七.參考書目
1、Protel 2004電路設計入門與應用
2、Protel dxp
3、Protel99教程
第五篇:嵌入式實驗1 流水燈實驗
河南機電高等專科學校
《嵌入式系統開發》課程實驗報告
系部: 電子通信工程系
班級: 電信####
姓名: ######
學號:
## 實驗一搭建實驗環境
一.實驗簡介
搭建嵌入式系統開發環境,建立第一個工程,流水燈實驗
二.實驗目的
掌握STM32開發環境,掌握從無到有的構建工程。
三.實驗內容
熟悉MDK KEIL開發環境,構建基于固件庫的工程,編寫代碼實現流水燈工程。通過ISP下載代碼到實驗板,查看運行結果。下載代碼到目標板,查看運行結果。
四.實驗設備
硬件部分:PC計算機(宿主機)、STM32實驗板。
軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件。
五.實驗步驟
1.熟悉MDK KEIL開發環境 2.熟悉串口編程軟件ISP 3.查看固件庫結構和文件
4.建立工程目錄,復制庫文件 5.建立和配置工程 6.編寫代碼 7.編譯代碼
8.使用ISP下載到實驗板 9.測試運行結果
10.記錄實驗過程,撰寫實驗報告
六.實驗結果及測試
程序代碼主要有兩部分,第一部分是GPIO端口的配置,打開端口時鐘,配置為推挽輸出模式,并使能端口。代碼如下:
void LED_GPIO_Config(void){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOC, GPIO_Pin_4|GPIO_Pin_3);
} 第二部分是主函數,主要實現LED燈的亮滅的功能。要在主函數中調用GPIO端口的初始化
int main(void){
LED_GPIO_Config();
while(1){
LED1(ON);
Delay(0x0FFFFF);
LED1(OFF);
LED2(ON);
Delay(0x0FFFFF);
LED2(OFF);
LED3(ON);
Delay(0x0FFFFF);
LED3(OFF);
} } 七.實驗總結
這次實驗讓我們受益匪淺,學會了利用軟件編程,完成教學任務,學得了知識,而且提高了實踐能力,動手能力。使我學到了不少實用的知識,更重要的是,做實驗的過程,思考問題的方法,這與做其他的實驗是通用的,真正使我們受益匪淺。