单片机c语言实验,单片机实验C语言编程.doc
單片機(jī)實(shí)驗(yàn)C語(yǔ)言編程.doc
下載提示(請(qǐng)認(rèn)真閱讀)1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問題本站不予受理。
2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
文檔包含非法信息?點(diǎn)此舉報(bào)后獲取現(xiàn)金獎(jiǎng)勵(lì)!
下載文檔到電腦,查找使用更方便
14
積分
還剩頁(yè)未讀,繼續(xù)閱讀
關(guān)?鍵?詞:單片機(jī)C語(yǔ)言
單片機(jī)c語(yǔ)言編程
C單片機(jī)C語(yǔ)言編程
單片機(jī)C語(yǔ)言實(shí)驗(yàn)
C 語(yǔ)言程序
資源描述:
流水燈
效果:發(fā)關(guān)二級(jí)管依次獨(dú)個(gè)被點(diǎn)亮,一直循環(huán)下去。
C語(yǔ)言程序如下:
#include unsigned char i;
unsigned char temp;
void delay(void) //延時(shí)子程序
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void main(void) //主程序
{
while(1) //循環(huán)條件永遠(yuǎn)為真,以下程序一直執(zhí)行下去。
{
temp=0xfe;
P3=temp; //直接對(duì)I/O 口P3 賦值,使.P3.0 輸出低點(diǎn)平。
delay(); //延時(shí)
for(i=1;i<8;i++) //實(shí)現(xiàn)燈的移動(dòng)
{
temp=(temp<<1)|0x01; //P3 口I/O 輪流低電平
P3=temp;
delay(); //延時(shí),肉眼可以看到
}
}
}
閃爍燈
效果:發(fā)光二極管維持一閃一閃的狀態(tài)。
C語(yǔ)言程序如下:
#include /******************************************************************************
第一行是一個(gè)"文件包含"處理。
所謂"文件包含"是指一個(gè)文件將另外一個(gè)文件的內(nèi)容全部包含進(jìn)來(lái),所以這里的程序雖然只有4 行,但C 編譯器在處理的時(shí)候卻要處理幾十或幾百行。這里程序中包含REG51.h文件的目的是為了要使用P1 這符號(hào)即通知C 編譯器,程序中所寫的P1 是指80C51 單片機(jī)的P1 端口而不是其它變量。
******************************************************************************/
void delay02s(void) //延時(shí)0.2 秒子程序
{
unsigned char i,j,k; //定義3 個(gè)無(wú)符號(hào)字符型數(shù)據(jù)。
for(i=20;i>0;i--) //作循環(huán)延時(shí)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void main(void) //每一個(gè)C 語(yǔ)言程序有且只有一個(gè)主函數(shù),
{
while(1) //循環(huán)條件永遠(yuǎn)為真,以下程序一直執(zhí)行下去。
{
P3_0=0; // I/O 口P3.0 輸出低電平,小燈被點(diǎn)亮。
delay02s(); //延時(shí)經(jīng)過0.2 秒。
P3_0=1; // I/O 口P3.0 輸出高電平,小燈熄滅。
delay02s(); //延時(shí)經(jīng)過0.2 秒。
}
}
按鍵識(shí)別
效果:按下開關(guān),D1變亮并保持。再按開關(guān),D1熄滅,并保持。
C語(yǔ)言程序如下:
#include sbit INT_0=P3^2; //定義按鍵的輸入端注意此處按鍵判斷使用的是掃
//描方式而表示中斷判斷方式
sbit D1=P3^0; //D1 小燈定義
void delay10ms(void) //延時(shí)程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
key() /按鍵判斷程序
{
if(INT_0==0) //判斷是否按下鍵盤
{
delay10ms(); //延時(shí),軟件去干擾
if(INT_0==0) //確認(rèn)按鍵按下
{
D1=!D1; //D1 亮滅交替變化
}
while(INT_0==0); //按鍵鎖定,每按一次D1 只變化一次.
}
}
main()
{
while(1) //永遠(yuǎn)循環(huán),掃描判斷按鍵是否按下
{
key(); //對(duì)于此處CPU 對(duì)按鍵判斷一直掃描;
}
}
按鍵中斷識(shí)別
效果:一開始顯示“0”,每按一次開關(guān),顯示的數(shù)字就加1。
C語(yǔ)言程序如下:
#include unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char dispcount=0; //計(jì)數(shù)
sbit gewei=P3^1; //個(gè)位選通定義
sbit shiwei=P3^0; //十位選通定義
void Delay(unsigned int tc) //延時(shí)程序
{
while( tc != 0 )
{
unsigned int i;
for(i=0; i<100; i++);
tc--;
}
}
void ExtInt0() interrupt 0 //中斷服務(wù)程序
{
dispcount++;
if (dispcount==100)
{dispcount=0;}
}
void LED( ) //LED顯示函數(shù)
{
if(dispcount>=10) //顯示兩位數(shù)
{
shiwei=1;
P2=table[dispcount/10];
Delay(8);
shiwei=0;
gewei=1;
P2=table[dispcount%10];
Delay(5);
gewei=0;
}
else //顯示一位數(shù)
{
shiwei=0;
gewei=1;
P2=table[dispcount];
Delay(8);
}
}
void main()
{ TCON=0x01; // INT0為0 電平觸發(fā) 為1負(fù)邊沿觸發(fā)
IE=0x81; //開總中斷和允許INT0外部中斷
while(1) //循環(huán)執(zhí)行
{ LED(); } //調(diào)用顯示函數(shù)
}
4×4 矩陣式鍵盤識(shí)別
效果:按下不同的按鍵將顯示不同的內(nèi)容,從右到左,從上到下,按鍵分別代表 0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F.
C語(yǔ)言程序如下:
#include unsigned char code seg7code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};
unsigned char k;
void delay10ms(void) //延時(shí)程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void Getch ( )
{
unsigned char X,Y,Z;
P2=0xff;
P2=0x0f; //先對(duì)P2 置數(shù)行掃描
if(P2!=0x0f) //判斷是否有鍵按下
{
delay10ms(); //延時(shí),軟件去干擾
if(P2!=0x0f) //確認(rèn)按鍵按下;
{
X=P2; //保存行掃描時(shí)有鍵按下時(shí)狀態(tài)
P2=0xf0; //列掃描
Y=P2; //保存列掃描時(shí)有鍵按下時(shí)狀態(tài)
Z=X|Y; //取出鍵值
switch ( Z ) //判斷鍵值(那一個(gè)鍵按下)
{
case 0x77: k=0; break; //對(duì)鍵值賦值
case 0x7b: k=1; break;
case 0x7d: k=2; break;
case 0x7e: k=3; break;
case 0xb7: k=4; break;
case 0xbb: k=5; break;
case 0xbd: k=6; break;
case 0xbe: k=7; break;
case 0xd7: k=8; break;
case 0xdb: k=9; break;
case 0xdd: k=10;break;
case 0xde: k=11;break;
case 0xe7: k=12;break;
case 0xeb: k=13;break;
case 0xed: k=14;break;
case 0xee: k=15;break;
}
}
}
}
void main(void)
{
while(1)
{ P2=0xff;
Getch();
P3=seg7code[k]; //查表LED 輸出
P1=0xf0; //輸出相同的四位數(shù)據(jù)。
}
}
數(shù)碼管動(dòng)態(tài)顯示
效果:液晶顯示器顯示“1234”。
C語(yǔ)言程序如下:
#include sbit qian=P1^0;
sbit bai=P1^1;
sbit shi=P1^2;
sbit ge=P1^3;
code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f}; //顯示段碼
void Delay(unsigned int tc) //延時(shí)程序
{
while( tc != 0 ) //如果tc 為0 則終止延時(shí)
{
unsigned int i; //局部正整數(shù)變量i
for(i=0; i<100; i++); //執(zhí)行400 次將耗時(shí)1 毫秒
tc--; //tc 計(jì)數(shù)減一
}
}
void Led(int date) //顯示函數(shù)
{
qian=0; //P1.0 輸出低電平,選通千位數(shù)
P3=seg7code[date/1000]; //取出千位數(shù),查表,輸出。
Delay(10); //延時(shí)
qian=1; //銷隱
bai=0; //P1.1 輸出低電平,選通百位數(shù)
P3=seg7code[date%1000/100]; //取出百位數(shù),查表,輸出。
Delay(10); //延時(shí)
bai=1; //銷隱
shi=0; //P1.2 輸出低電平,選通十位數(shù)
P3=seg7code[date%100/10]; //取出十位數(shù),查表,輸出。
Delay(10); //延時(shí)
shi=1; //銷隱
ge=0; //P1.3 輸出低電平,選通十位數(shù)
P3=seg7code[date%10]; //取出個(gè)位數(shù),查表,輸出。
Delay(10); //延時(shí)
ge=1; //銷隱
}
main()
{
int display_date=1234; //定義并賦值要顯示的數(shù)據(jù)
while(1)
{
Led(display_date);//調(diào)用顯示函數(shù)顯示數(shù)據(jù)display_date
}
}
數(shù)碼管靜態(tài)顯示
效果:液晶顯示器最左邊第一位將顯示“4”
C語(yǔ)言程序如下:
#include sbit GE=P1^3;
code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f}; //顯示段碼
main()
{
unsigned char display_date=4; //定義并賦值要顯示的數(shù)據(jù)
while(1)
{
P3=seg7code[display_date]; //查表,輸出
GE=0; //P1^3 為低電平,相當(dāng)于把數(shù)碼管的4H 端接地
}
}
展開閱讀全文
溫馨提示:
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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
?
人人文庫(kù)網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請(qǐng)勿作他用。
關(guān)于本文
本文標(biāo)題:單片機(jī)實(shí)驗(yàn)C語(yǔ)言編程.doc
鏈接地址:https://www.renrendoc.com/p-18300669.html
總結(jié)
以上是生活随笔為你收集整理的单片机c语言实验,单片机实验C语言编程.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言入门后怎么玩,玩编程如何让人傻并快
- 下一篇: c语言 写出raw文件,求指导,如何用c