




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)實(shí)驗(yàn):說明,以下是我整理了一些在學(xué)習(xí)單片機(jī)的過程中所做的一些典型的實(shí)驗(yàn),所有程序均用c語言編寫,為了方便,在仿真時(shí)電路能省的都被省掉了(比如省去晶振用了外部時(shí)鐘)。程序不一定很優(yōu)化,也不一定完全沒有錯(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)二:模擬開關(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)三: 多路開關(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ā)光二極管亮,開始時(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)擊開關(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程序:/開關(guān)
11、按下時(shí)顯示12345,開關(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鍵盤圖:程序:#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) /寫控制字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字型選擇) writecmd(0x08); /關(guān)閉
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 渡槽施工方案
- 排水施工方案
- 液壓玩具模型施工方案
- 場(chǎng)站路基填筑施工方案
- 庭院毛石改造施工方案
- 煙臺(tái)冷庫安裝施工方案
- TSHJMRH 0064-2024 在用潤滑油磨損金屬和污染物元素的測(cè)定 旋轉(zhuǎn)圓盤電極原子發(fā)射光譜法
- 二零二五年度車展活動(dòng)展位搭建與品牌宣傳合同
- 二零二五年度超市店長(zhǎng)入股合作協(xié)議書
- 2025年度餐廳員工勞動(dòng)合同保密條款
- 中考復(fù)習(xí)物理力學(xué)部分綜合試題(人教版含答案)
- 《多元化之教學(xué)評(píng)量》課件
- BCP業(yè)務(wù)連續(xù)性管理手冊(cè)
- 2024年湖南鐵路科技職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫及答案解析word版
- 2024年中考英語第一次模擬試卷-(廣州卷)(全解全析)
- 三年級(jí)數(shù)學(xué)《搭配中的學(xué)問》 全國一等獎(jiǎng)
- 譜學(xué)導(dǎo)論課件
- 2024年醫(yī)保知識(shí)題庫及答案(通用版)
- 使用農(nóng)產(chǎn)品承諾函
- 神經(jīng)根型頸椎病教學(xué)查房
- 分式方程說課王彥娥
評(píng)論
0/150
提交評(píng)論