如何成為過硬的硬件工程師-之初識單片機?

單片機其實就是一塊類似計算機CPU的集成芯片,集成了若干組雙向IO口,定時器、比較器,在芯片內部還有保存程序書寫代碼的存儲器ROM和控制臨時代碼數據交換的RAM,光說不練怎麼行,那我們就現在做一個最簡單的實驗吧!

1、首先我們要使用到的兩款軟件就是,Proteus 7.9和Keil uv4這兩個軟件,一個是做電路仿真,而領一個是單片機軟件編寫時使用的,大家可以再網上搜索下載就可以了,建議大家在學習的時候還是先用和諧過的,以後工作了如果有需要再使用正版的。

2、安裝好兩款軟件後我們先來啟動Proteus 7.9,然後我來來添加幾個原件,按照下圖操作,首先我們添加單片機的仿真原型:

添加晶振:

添加電容:

添加電阻:

添加LED:

2、我們來繪製仿真電路,注意修改原件參數需要在對應的文字或者器件上雙擊,然後將要修改的內容填寫到文本框內就可以了:

3、電路圖繪製好後,我們打開Keil uv4,選擇Project->New uVision Project,新建一個工程:

跳出新建工程對話框,輸入工程名,點擊保存:

保存按鈕按下後,會跳出選擇單片機的選項,我們選擇Atmel公司的AT89C51,點擊OK

我們發現在左側工程列表內多了一個Target1,這就是我們剛剛新建的工程,點擊圓圈內的新建按鈕:

在新建的文本內輸入如下內容:

輸入好後,我們保存該代碼文本,在文件名條目內輸入文件名稱:

在工程條目上點擊右鍵,選擇Add Files to Group Source Group 1 將剛才新建的.c文件加入到工程中來:

4、我們來完善全部的代碼:

#include

#define uint8_t unsigned char

#define uint16_t unsigned int

sbit P0_0=P0^0; // 端口定義

sbit P0_1=P0^1; // 端口定義

sbit P0_2=P0^2; // 端口定義

sbit P0_3=P0^3; // 端口定義

void LEDDelayTime(uint16_t Time); // 函數聲明

void LEDDelayTime(uint16_t Time) // LED閃爍間隔時間

{

uint16_t i = 0;

uint16_t j = 0;

for(i=0;i

{

for(j=0;j<1000;j++)

{

;;

}

}

}

void LEDFlicker(void)// LED控制函數

{

P0_0 = 1; // 關閉D1

P0_1 = 1; // 關閉D2

P0_2 = 1; // 關閉D3

P0_3 = 1; // 關閉D4

LEDDelayTime(200); // 延遲

P0_0 = 0; // 打開D1

P0_1 = 0; // 打開D2

P0_2 = 0; // 打開D3

P0_3 = 0; // 打開D4

LEDDelayTime(200); // 延遲

}

void main(void)

{

while(1)

{

LEDFlicker();

}

}

5、我們來生成仿真用的HEX文件:右鍵點擊工程條目->選擇Output->輸入生成HEX文件名稱->選擇HEX文件保存目錄->勾選對號(代表可以生成HEX文件),點擊OK,然後點擊編譯工程,系統會生成HEX文件在你剛剛選擇的目錄:

6、我們將HEX文件裝入仿真電路,我們回到剛剛新建好的Proteus工程,雙擊CPU,然後跳出下圖,我們點擊紅色圓圈內的文件夾,將地址指向剛剛生成的HEX文件,然後點擊OK按鈕。

7、我們完成了以上操作,馬上就成功在望了,我們點擊下圖的運行按鈕來看一下效果吧,看看LED是不是按照我們剛剛設計程序運行了呢?呵呵 答案是肯定的:

LED是不是在一亮一滅的運行呢?呵呵 希望這篇入門實驗能給大家帶來樂趣,勾起你們求知的慾望,因為這只是開始,跟住我,一定你們會學到更多.......

相關問題答案