




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)實(shí)驗(yàn):說(shuō)明,以下是我整理了一些在學(xué)習(xí)單片機(jī)的過(guò)程中所做的一些典型的實(shí)驗(yàn),所有程序均用c語(yǔ)言編寫(xiě),為了方便,在仿真時(shí)電路能省的都被省掉了(比如省去晶振用了外部時(shí)鐘)。程序不一定很優(yōu)化,也不一定完全沒(méi)有錯(cuò)誤,僅供大家參考。希望大家一塊學(xué)習(xí)!第一:i/o操作篇實(shí)驗(yàn)一.閃爍的燈圖:程序:#include at89x51.hvoid delay02s();void main(void)while(1) p1_0=0; /p1.0=0 led點(diǎn)亮 delay02s(); /延時(shí)0.2s p1_0=1; /p1.0=1 led熄滅 delay02s(); /延時(shí)0.2s void delay02s(v
2、oid) /延時(shí)0.2s的函數(shù)unsigned char i,j,k; for(j=20;j0;j-) for(i=20;i=0;i-) for(k=248;k=0;k-); 實(shí)驗(yàn)二:模擬開(kāi)關(guān)程序:#include at89x51.hvoid main() while(1) if (p1_7=0) p1_0 = 0;/key按下p1_7=0,led點(diǎn)亮 else if ( p1_7=1) p1_0 = 1;/key彈起p1_7=1,led熄滅 實(shí)驗(yàn)三: 多路開(kāi)關(guān)程序:#include at89x51.hvoid main()while(1) p1_0 = p1_7; p1_1 = p1_6;
3、p1_2 = p1_5; p1_3 = p1_4; 實(shí)驗(yàn)四:跑馬燈(一)圖:程序:/單一燈的左移右移/八個(gè)發(fā)光二極管l1l8分別接在單片機(jī)的p1.0p1.7接口上/輸出“0”時(shí),發(fā)光二極管亮,開(kāi)始時(shí)p1.0p1.1p1.2p1.3p1.7p1.6p1.0亮,重復(fù)循環(huán)。#include at89x51.hvoid delay02s();void main()unsigned int a; while (1) p1=0xfe; delay02s(); for(a=7;a0;a-)/右移 p1=(p10;a-)/左移 p1=(p11)+0x80; delay02s(); void delay02s(
4、)unsigned int i,j,k; for(i=0;i20;i+) for(j=0;j20;j+) for(k=0;k248;k+);實(shí)驗(yàn)五:跑馬燈(二、查表方式)圖:程序:#include at89x51.hvoid delay02s(); void main()unsigned char table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /第一次,右移一行 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /第二次,右移一行 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, /
5、第一次,左移一行 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, /第二次,左移一行 0x00,0xff,0x00,0xff; /閃爍兩次 unsigned char a; while(1) for (a=0;a0;i-) for(j=20;j0;j-) for(k=248;k0;k-);實(shí)驗(yàn)六:led計(jì)數(shù)程序:#include void delay02s(); void main() unsigned char code table=0x40,0xf9,0x24,0x30,0x19,0x12,0x03,0xf8,0x00,0x18; unsigned cha
6、r disp; while(1) for(disp=0;disp0;i-) for(j=20;j0;j-) for(k=248;k0;k-); 實(shí)驗(yàn)七:二進(jìn)制計(jì)數(shù)程序:/用四個(gè)發(fā)光二極管模擬計(jì)數(shù)點(diǎn)擊開(kāi)關(guān)次數(shù).#include at89x51.hvoid delay10ms();void main()p0=0xff; while(1) /*/ if(p0_7=1) /按鍵按下 delay10ms(); if(p0_7=0) /按鍵彈起,此時(shí)燈亮. p0=p0-1; /*/ if(p0_7=0) /按鍵彈起 delay10ms(); if(p0_7=1) /按鍵按下,此時(shí)燈亮. p0=p0-1;
7、/ void delay10ms() unsigned char i,j; for(i=20;i0;i-) for(j=248;j0;j-); 驗(yàn)八:一鍵多用程序:#include at89x51.hvoid delay10ms();void delay02s();void main()unsigned char id=0; while(1) if(p1_7=0) /按鍵彈起 delay10ms(); if(p1_7=0) id+; if(id=4) id=0; while(p1_7=0); switch(id) case 0: p0_0=p0_0; delay02s(); break; ca
8、se 1: p0_1=p0_1; delay02s(); break; case 2: p0_2=p0_2; delay02s(); break; case 3: p0_3=p0_3; delay02s(); break; void delay10ms()unsigned char i,k; for(i=20;i0;i-) for(k=248;k0;k-);void delay02s()unsigned char j; for(j=20;j0;j-) delay10ms();實(shí)驗(yàn)九:0099計(jì)數(shù)程序:/0099計(jì)數(shù)器#include at89x51.hvoid delay1s();void m
9、ain()unsigned char code table=0xf9,0x24,0x30,0x19,0x12,0x03,0xf8,0x00,0x18,0x40; unsigned int high=9; unsigned int light=9; p0=tablelight; p2=tablehigh; delay1s(); while(1) for(light=0;light0;i-) for(j=20;j0;j-) for(k=248;k0;k-);實(shí)驗(yàn)十:可預(yù)置數(shù)加減計(jì)數(shù)器程序:/k1(p3_7)加計(jì)數(shù).k2(p3_6)頭減計(jì)數(shù).#include at89x51.hvoid delay0
10、2s();void delay10ms();void main()p0=p2; while(1) if(p3_6=0) delay10ms(); if(p3_6=0) p0+; delay02s(); if(p3_7=0) delay10ms(); if(p3_7=0) p0-; delay02s(); void delay02s()unsigned char j; for(j=20;j0;j-) delay10ms();void delay10ms()unsigned char i,k; for(i=20;i0;i-) for(k=248;k0;k-); 實(shí)驗(yàn)十一:圖:共陰led程序:/開(kāi)關(guān)
11、按下時(shí)顯示12345,開(kāi)關(guān)彈起時(shí)顯示hello.#include void delay01ms();void main(void) unsigned char code table1=0xf9,0x24,0x30,0x19,0x12,0xff,0xff,0xff; unsigned char code table2=0x09,0x06,0xc7,0xc7,0x40,0xff,0xff,0xff; unsigned char i; while(1) p2=0xfe; if(p1_0=0) delay01ms(); if(p1_0=0) for(i=0;i8;i+) p0=table1i; p2=
12、(p21)+1; else if(p1_0=1) delay01ms(); if(p1_0=1) for(i=0;i8;i+) p0=table2i; p2=(p20;a-) for(b=248;b0;b-); 實(shí)驗(yàn)十二、4*4鍵盤(pán)圖:程序:#include at89x51.h void delay10ms();void main()unsigned char key; unsigned char table=0x40,0xf9,0x24,0x30,0x19,0x12,0x03,0xf8,0x00,0x18,0x08,0x00,0x46,0x40,0x06,0x0e, 0xff; while(
13、1) p0=0xff; p3=0xff; p3_4=0; key=p3&0x0f; if(key!=0x0f) delay10ms(); key=p3&0x0f; if(key!=0x0f) switch(key) case 0x0e: key=0;break; case 0x0d: key=1;break; case 0x0b: key=2;break; case 0x07: key=3;break; p0=tablekey; key=key&0x0f; while(key!=0x0f) key=p3; key=key&0x0f; p3=0xff; p3_5=0; key=p3&0x0f;
14、if(key!=0x0f) delay10ms(); key=p3&0x0f; if(key!=0x0f) switch(key) case 0x0e: key=4;break; case 0x0d: key=5;break; case 0x0b: key=6;break; case 0x07: key=7;break; p0=tablekey; key=key&0x0f; while(key!=0x0f) key=p3; key=key&0x0f; p3=0xff; p3_6=0; key=p3&0x0f; if(key!=0x0f) delay10ms(); key=p3&0x0f; if
15、(key!=0x0f) switch(key) case 0x0e: key=8;break; case 0x0d: key=9;break; case 0x0b: key=10;break; case 0x07: key=11;break; p0=tablekey; key=key&0x0f; while(key!=0x0f) key=p3; key=key&0x0f; p3=0xff; p3_7=0; key=p3&0x0f; if(key!=0x0f) delay10ms(); key=p3&0x0f; if(key!=0x0f) switch(key) case 0x0e: key=1
16、2;break; case 0x0d: key=13;break; case 0x0b: key=14;break; case 0x07: key=15;break; p0=tablekey; key=key&0x0f; while(key!=0x0f) key=p3; key=key&0x0f; void delay10ms() unsigned int i,k; for(i=20;i0;i-) for(k=20;k0;k-); 實(shí)驗(yàn)十三 lcd原理圖:程序:#include at89x52.h#define lcd_rs p3_2#define lcd_rw p3_1#define lcd
17、_en p3_0#define lcd_data p1void writecmd(int a) /寫(xiě)控制字int i; for(i=2000;i0;i-); lcd_rs=0; lcd_rw=0; lcd_en=1; lcd_data=a; lcd_en=0;void writedata(char lcddata) /顯示字符int i; for(i=2000;i0;i-); lcd_rs=1; lcd_rw=0; lcd_en=1; lcd_data=lcddata; lcd_en=0;void writestring(char addr,char *str) /顯示字符串writecmd(addr); do writedata(*str); str+; while(*str!=0); /=lcd初始化= void lcdinit() writecmd(0x38);/8位,兩行,5x7字型 (控制字001 d1 d2 d3 x x , 其中 d1:數(shù)據(jù)長(zhǎng)度選擇(8位或4位),d2:單雙列選擇,d3:5x10或5x7字型選擇) write
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 百貨紡織品商品購(gòu)銷總合同
- 電力施工合同范本
- 養(yǎng)老院職業(yè)經(jīng)理人聘用合同書(shū)
- 合租的租房合同范本
- 2025年度貨車司機(jī)勞動(dòng)權(quán)益維護(hù)合同
- 二零二五年度農(nóng)業(yè)大棚租賃與農(nóng)業(yè)保險(xiǎn)合同
- 二零二五年度安置房面積轉(zhuǎn)讓與社區(qū)文化活動(dòng)場(chǎng)地租賃合同
- 二零二五年度個(gè)人就業(yè)培訓(xùn)擔(dān)保合同
- 二零二五年度模特與音樂(lè)制作公司合作拍攝合同
- 2025年度方式卡租賃與行業(yè)解決方案定制合同
- QC/T 1091-2023 客車空氣凈化裝置 (正式版)
- 2024年節(jié)水知識(shí)競(jìng)賽考試題及答案
- 2024年江蘇醫(yī)藥職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整
- qc工作崗位職責(zé)
- 【體能大循環(huán)】聚焦體能循環(huán)-探索運(yùn)動(dòng)奧秘-幼兒園探究體能大循環(huán)有效開(kāi)展策略課件
- 采購(gòu)人員廉潔從業(yè)課件培訓(xùn)
- 2024年單招計(jì)算機(jī)試題題庫(kù)及答案
- XX藥業(yè)公司受試者日記卡
- 多組學(xué)數(shù)據(jù)的整合與分析
- 小學(xué)安全教育《平安校園 拒絕欺凌》劉偉【省級(jí)】?jī)?yōu)質(zhì)課
- 靜脈輸液的不良反應(yīng)及處理原則考核試題及答案
評(píng)論
0/150
提交評(píng)論