




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、/* 普中科技-* 實 驗 名 : LED閃爍的簡單試驗* 實驗說明 : 得到8盞LED交替亮滅的實驗效果* 連接方式 : 見連接圖* 注 意 : */-包含你要使用的頭文件-/#include <reg51.h> /此文件中定義了51的一些特殊功能寄存器/-聲明全局函數-/void Delay10ms(unsigned int c); /延時10ms/* 函 數 名 : main* 函數功能 : 主函數* 輸 入 : 無* 輸 出 : 無*/void main() while(1)/-數字前面加0x表示該數是十六進制的數,0x00就是十六進制的00-/-P2口一共有8個IO口,即
2、從P2.0到P2.7,而0x00二進制就是0000 0000-/-效果就是P2.0到P2.7都是0,即低電平。而如果你想給P2.1口賦高電平時-/-二進制就是0000 0001,就是十六進制0x01.-/P0 = 0x00; /置P0口為低電平Delay10ms(500); /調用延時程序,修改括號里面的值可以調整延時時間P0 = 0xff; /置P0口為高電平Delay10ms(50); / 調用延時程序/* 函 數 名 : Delay10ms* 函數功能 : 延時函數,延時10ms* 輸 入 : 無* 輸 出 : 無*/void Delay10ms(unsigned int c) /誤差
3、0us unsigned char a, b;/-c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* 普中科技-* 實 驗 名 : LED二進制加法顯示實驗* 實驗說明 : LED燈做二進制加1顯示* 連接方式 : 見接線圖* 注 意 : */#include <reg52.h>/-聲明全局函數-/void Delay10ms(unsigned int c); /延時10ms/* 函 數 名 : main* 函數功能 : 主函數* 輸 入
4、 : 無* 輸 出 : 無*/void main() unsigned char Num = 0x00; while (1) P0 = Num; Delay10ms(50); /延時函數 Num+; /* 函 數 名 : Delay10ms* 函數功能 : 延時函數,延時10ms* 輸 入 : 無* 輸 出 : 無*/void Delay10ms(unsigned int c) /誤差 0us unsigned char a, b;/-c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=
5、130;a>0;a-); /* * 普中科技-* 實 驗 名 : 流水燈實驗* 實驗說明 : 延時實現LED流水燈效果P2口八個燈作跑馬燈。采用了寄存器存中間數* 連接方式 : 見接線圖* 注 意 : */-包含你要使用的頭文件#include <reg52.h> /此文件中定義了51的一些特殊功能寄存器#include <intrins.h>/-聲明全局函數-/void Delay10ms(unsigned int c); /延時10ms /* 函 數 名 : main* 函數功能 : 主函數* 輸 入 : 無* 輸 出 : 無*/main()unsigned
6、char LED;LED = 0xfe; /0xfe = 1111 1110 while (1) P0 = LED; Delay10ms(50); LED = LED << 1; /循環右移1位,點亮下一個LED "<<"為左移位 if (P0 = 0x00)/當它全滅的時候,重新賦值 LED = 0xfe; / 0xfe = 1111 1110 /* 函 數 名 : Delay10ms* 函數功能 : 延時函數,延時10ms* 輸 入 : 無* 輸 出 : 無*/void Delay10ms(unsigned int c) /誤差 0us unsi
7、gned char a, b;/-c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 實 驗 名 : LED二進制加法顯示實驗* 實驗說明 : LED燈做右移跑馬燈* 連接方式 : 見接線圖* 注 意 : */-包含你要使用的頭文件#include <reg51.h>#include <intrins.h>/-聲明全局函數-/void Delay10ms(unsigned int c); /延時10ms/*
8、函 數 名 : main* 函數功能 : 主函數* 輸 入 : 無* 輸 出 : 無*/void main(void)unsigned char LED;LED = 0xFE;while(1)P0 = LED;Delay10ms(50);LED = _crol_(LED,1); /循環右移1位,點亮下一個LED 此函數于庫函數/* 函 數 名 : Delay10ms* 函數功能 : 延時函數,延時10ms* 輸 入 : 無* 輸 出 : 無*/void Delay10ms(unsigned int c) /誤差 0us unsigned char a, b;/-c已經在傳遞過來的時候已經賦值了
9、,所以在for語句第一句就不用賦值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 實 驗 名 : 跑馬燈實驗* 實驗說明 : LED燈做跑馬燈左右移動* 連接方式 : 見接線圖* 注 意 : */-包含你要使用的頭文件#include <reg52.h>/-聲明全局函數-/void Delay10ms(unsigned int c); /延時10ms/-聲明一個全局變量-/unsigned char LED;/* 函 數 名 : main* 函數功能 : 主函數* 輸 入 : 無*
10、 輸 出 : 無*/void main() unsigned char i; /-首先賦值LED-/LED = 0xFE;while (1) /-LED往左閃爍-/ for (i = 0 ;i < 7 ; i+) /-將LED 的值賦給P2口-/P0 = LED;Delay10ms(50); /延時一下,為了讓燈有持續點亮的時間LED = LED << 1; / 將LED里面的值左移一位,然后重新賦給LEDLED = LED | 0x01; / 移位后,前面的位為高電平/-LED向右顯示-/for (i = 0 ;i < 7 ; i+)P0 = LED;Delay10m
11、s(50);LED = LED >> 1; / 右移LED = LED | 0x80; / 移位后,后面的位為高電平 /* 函 數 名 : Delay10ms* 函數功能 : 延時函數,延時10ms* 輸 入 : 無* 輸 出 : 無*/void Delay10ms(unsigned int c) /誤差 0us unsigned char a, b;/-c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 實 驗 名 :
12、 獨立按鍵控制LED實驗* 實驗說明 : 每個按鍵控制一個LED* 連接方式 : 見接線圖* 注 意 : */-包含你要使用的頭文件-/#include <reg51.h> /此文件中定義了51的一些特殊功能寄存器#include <intrins.h>/-定義要使用的IO口-/#define GPIO_KEY P1 /獨立鍵盤用P1口#define GPIO_LED P0 /led使用P0口/-聲明全局函數-/void Delay10ms(unsigned int c); /延時10msunsigned char Key_Scan();/* 函 數 名 : main*
13、 函數功能 : 主函數* 輸 入 : 無* 輸 出 : 無*/void main(void)unsigned char ledValue, keyNum;ledValue = 0x01;while (1)keyNum = Key_Scan(); /掃描鍵盤switch (keyNum)case(0xFE) : /返回按鍵K1的數據ledValue = 0x01;break;case(0xFD) : /返回按鍵K2的數據ledValue = 0x02;break;case(0xFB) : /返回按鍵K3的數據ledValue = 0x04;break;case(0xF7) : /返回按鍵K4的數
14、據ledValue = 0x08;break;case(0xEF) : /返回按鍵K5的數據ledValue = 0x10;break;case(0xDF) : /返回按鍵K6的數據ledValue = 0x20;break;case(0xBF) : /返回按鍵K7的數據ledValue = 0x40;break;case(0x7F) : /返回按鍵K8的數據ledValue = 0x80;break;default:break;GPIO_LED = ledValue;/點亮LED燈/* 函 數 名 : Key_Scan()* 函數功能 : 掃描鍵盤* 輸 入 : 無* 輸 出 : 讀取到的鍵
15、值*/unsigned char Key_Scan()unsigned char keyValue = 0 , i; /保存鍵值/-檢測按鍵1-/if (GPIO_KEY != 0xFF)/檢測按鍵K1是否按下Delay10ms(1);/消除抖動if (GPIO_KEY != 0xFF)/再次檢測按鍵是否按下keyValue = GPIO_KEY;i = 0;while (i<50) && (GPIO_KEY != 0xFF) /檢測按鍵是否松開Delay10ms(1);i+;return keyValue; /將讀取到鍵值的值返回/* 函 數 名 : Delay10ms
16、* 函數功能 : 延時函數,延時10ms* 輸 入 : 無* 輸 出 : 無*/void Delay10ms(unsigned int c) /誤差 0us unsigned char a, b;/-c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 實 驗 名 : LED顯示鍵值實驗* 實驗說明 : 8個LED顯示讀取的8個按鍵的值* 連接方式 : 見接線圖* 注 意 : */-包含你要使用的頭文件-/#include <r
17、eg51.h> /此文件中定義了51的一些特殊功能寄存器#include <intrins.h>/-定義要使用的IO口-/#define GPIO_KEY P1 /獨立鍵盤用P1口#define GPIO_LED P0 /led使用P0口/-定義全局函數-/void Delay10ms(unsigned int c); /延時10msunsigned char Key_Scan();/* 函 數 名 : main* 函數功能 : 主函數* 輸 入 : 無* 輸 出 : 無*/void main(void)unsigned char ledValue, keyNum;ledVa
18、lue = 0x00;while (1)keyNum = Key_Scan(); /掃描鍵盤if (keyNum != 0) /有按鍵按下ledValue = keyNum;GPIO_LED = ledValue;/點亮LED燈/* 函 數 名 : Key_Scan()* 函數功能 : 掃描鍵盤* 輸 入 : 無* 輸 出 : 讀取到的鍵值*/unsigned char Key_Scan()unsigned char keyValue = 0 , i; /保存鍵值/-檢測按鍵1-/if (GPIO_KEY != 0xFF)/檢測按鍵K1是否按下Delay10ms(1);/消除抖動if (GPI
19、O_KEY != 0xFF)/再次檢測按鍵是否按下keyValue = GPIO_KEY;i = 0;while (i<50) && (GPIO_KEY != 0xFF) /檢測按鍵是否松開Delay10ms(1);i+;return keyValue; /將讀取到鍵值的值返回/* 函 數 名 : Delay10ms* 函數功能 : 延時函數,延時10ms* 輸 入 : 無* 輸 出 : 無*/void Delay10ms(unsigned int c) /誤差 0us unsigned char a, b;/-c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不
20、用賦值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 實 驗 名 : 按鍵選擇LED花樣顯示實驗* 實驗說明 : 每個按鍵控制選擇一種LED顯示效果* 連接方式 : 見接線圖* 注 意 : */-包含你要使用的頭文件-/#include <reg51.h> /此文件中定義了51的一些特殊功能寄存器#include <intrins.h>/-定義要使用的IO口-/#define GPIO_KEY P1 /獨立鍵盤用P1口#define GPIO_LED P0 /led使用
21、P0口/-定義全局函數-/void Delay10ms(unsigned int c); /延時10msunsigned char Key_Scan();void LED1();void LED2();void LED3();void LED4();void LED5();void LED6();void LED7();void LED8();/* 函 數 名 : main* 函數功能 : 主函數* 輸 入 : 無* 輸 出 : 無*/void main(void)unsigned char keyNum;while (1)keyNum = Key_Scan(); /掃描鍵盤switch (k
22、eyNum)case(0xFE) : /返回按鍵K1的數據LED1();break;case(0xFD) : /返回按鍵K2的數據LED2();break;case(0xFB) : /返回按鍵K3的數據LED3();break;case(0xF7) : /返回按鍵K4的數據LED4();break;case(0xEF) : /返回按鍵K5的數據LED5();break;case(0xDF) : /返回按鍵K6的數據LED6();break;case(0xBF) : /返回按鍵K7的數據LED7();break;case(0x7F) : /返回按鍵K8的數據LED8();break;defaul
23、t:break;/* 函 數 名 : Key_Scan()* 函數功能 : 掃描鍵盤* 輸 入 : 無* 輸 出 : 讀取到的鍵值*/unsigned char Key_Scan()unsigned char keyValue = 0 , i; /保存鍵值/-檢測按鍵1-/if (GPIO_KEY != 0xFF)/檢測按鍵K1是否按下Delay10ms(1);/消除抖動if (GPIO_KEY != 0xFF)/再次檢測按鍵是否按下keyValue = GPIO_KEY;i = 0;while (i<50) && (GPIO_KEY != 0xFF) /檢測按鍵是否松開
24、Delay10ms(1);i+;return keyValue; /將讀取到鍵值的值返回/* 函 數 名 : Delay10ms* 函數功能 : 延時函數,延時10ms* 輸 入 : 無* 輸 出 : 無*/void Delay10ms(unsigned int c) /誤差 0us unsigned char a, b;/-c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* 函 數 名 : LED1* 函數功能 : LED左移閃爍兩次* 輸 入 :
25、 無* 輸 出 : 無*/void LED1()unsigned char i;GPIO_LED = 0x01;for (i=0; i<16; i+)GPIO_LED = _crol_(GPIO_LED, 1);Delay10ms(5);/* 函 數 名 : LED2* 函數功能 : LED右移閃爍兩次* 輸 入 : 無* 輸 出 : 無*/void LED2()unsigned char i;GPIO_LED = 0x80;for (i=0; i<16; i+)GPIO_LED = _cror_(GPIO_LED, 1);Delay10ms(5);/* 函 數 名 : LED3*
26、 函數功能 : LED交替閃爍* 輸 入 : 無* 輸 出 : 無*/void LED3()GPIO_LED = 0xaa;Delay10ms(5);GPIO_LED = 0x55;Delay10ms(5);GPIO_LED = 0xaa;Delay10ms(5);GPIO_LED = 0x55;Delay10ms(5);/* 函 數 名 : LED4* 函數功能 : LED交替閃爍* 輸 入 : 無* 輸 出 : 無*/void LED4()GPIO_LED = 0x55;Delay10ms(5);GPIO_LED = 0xaa;Delay10ms(5);GPIO_LED = 0x55;Delay10ms(5);GPIO_LED = 0xaa;Delay10ms(5);/* 函 數 名 : LED5* 函數功能 : LED交替閃爍* 輸 入 : 無* 輸 出 : 無*/void LED5()GPIO_LED = 0xCC;Delay10ms(5);GPIO_LED = 0x33;Delay10ms(5);GPIO_LED = 0xCC;Delay10ms(5);GPIO_LED = 0x33;Delay10ms(5);/* 函 數 名 : LED6* 函數功能 : LED交替閃爍* 輸 入 : 無* 輸 出 : 無*/void LED6()GPIO_LE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件技術服務外包企業ESG實踐與創新戰略研究報告
- 可鍛性鑄鐵及鑄鋼管子附件企業數字化轉型與智慧升級戰略研究報告
- 礦用錨桿企業縣域市場拓展與下沉戰略研究報告
- 環保資源化設備制造項目可行性研究報告寫作模板-備案審批
- 2025-2030中國智能健身行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030中國建筑勞務行業市場深度調研及競爭格局與投資前景研究報告
- 2025-2030中國女裝短袖襯衫行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030中國垃圾焚燒發電行業發展分析及投資風險預警與發展策略研究報告
- 朔州壓力傳感器項目可行性研究報告
- 2025-2030年中國中繼型波分復用器項目投資可行性研究分析報告
- 第12課《終身學習 持續發展》第2框《信息素養助力發展》-【中職專用】《心理健康與職業生涯》同步課堂課件
- 再生資源消防安全培訓
- 高考地理二輪復習課件專題3S技術
- 安全生產治本攻堅三年行動主要任務
- 2024年濟南城市發展集團投資開發有限公司招聘筆試參考題庫含答案解析
- 2024年贛州市章貢區文化旅游發展集團有限公司招聘筆試參考題庫附帶答案詳解
- 糧食熏蒸操作要點培訓課件
- 同等學力申碩-同等學力(政治學)筆試(2018-2023年)真題摘選含答案
- 園林植物的識別與應用-灌木園林植物的識別與應用
- 親子鑒定報告樣本
- 飼料市場分析報告
評論
0/150
提交評論