单片机c语言实验,单片机实验C语言编程.doc
單片機實驗C語言編程.doc
下載提示(請認真閱讀)1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內容而直接下載帶來的問題本站不予受理。
2.下載的文檔,不會出現我們的網址水印。
3、該文檔所得收入(下載+內容+預覽)歸上傳者、原創作者;如果您是本文檔原作者,請點此認領!既往收益都歸您。
文檔包含非法信息?點此舉報后獲取現金獎勵!
下載文檔到電腦,查找使用更方便
14
積分
還剩頁未讀,繼續閱讀
關?鍵?詞:單片機C語言
單片機c語言編程
C單片機C語言編程
單片機C語言實驗
C 語言程序
資源描述:
流水燈
效果:發關二級管依次獨個被點亮,一直循環下去。
C語言程序如下:
#include unsigned char i;
unsigned char temp;
void delay(void) //延時子程序
{
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) //循環條件永遠為真,以下程序一直執行下去。
{
temp=0xfe;
P3=temp; //直接對I/O 口P3 賦值,使.P3.0 輸出低點平。
delay(); //延時
for(i=1;i<8;i++) //實現燈的移動
{
temp=(temp<<1)|0x01; //P3 口I/O 輪流低電平
P3=temp;
delay(); //延時,肉眼可以看到
}
}
}
閃爍燈
效果:發光二極管維持一閃一閃的狀態。
C語言程序如下:
#include /******************************************************************************
第一行是一個"文件包含"處理。
所謂"文件包含"是指一個文件將另外一個文件的內容全部包含進來,所以這里的程序雖然只有4 行,但C 編譯器在處理的時候卻要處理幾十或幾百行。這里程序中包含REG51.h文件的目的是為了要使用P1 這符號即通知C 編譯器,程序中所寫的P1 是指80C51 單片機的P1 端口而不是其它變量。
******************************************************************************/
void delay02s(void) //延時0.2 秒子程序
{
unsigned char i,j,k; //定義3 個無符號字符型數據。
for(i=20;i>0;i--) //作循環延時
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void main(void) //每一個C 語言程序有且只有一個主函數,
{
while(1) //循環條件永遠為真,以下程序一直執行下去。
{
P3_0=0; // I/O 口P3.0 輸出低電平,小燈被點亮。
delay02s(); //延時經過0.2 秒。
P3_0=1; // I/O 口P3.0 輸出高電平,小燈熄滅。
delay02s(); //延時經過0.2 秒。
}
}
按鍵識別
效果:按下開關,D1變亮并保持。再按開關,D1熄滅,并保持。
C語言程序如下:
#include sbit INT_0=P3^2; //定義按鍵的輸入端注意此處按鍵判斷使用的是掃
//描方式而表示中斷判斷方式
sbit D1=P3^0; //D1 小燈定義
void delay10ms(void) //延時程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
key() /按鍵判斷程序
{
if(INT_0==0) //判斷是否按下鍵盤
{
delay10ms(); //延時,軟件去干擾
if(INT_0==0) //確認按鍵按下
{
D1=!D1; //D1 亮滅交替變化
}
while(INT_0==0); //按鍵鎖定,每按一次D1 只變化一次.
}
}
main()
{
while(1) //永遠循環,掃描判斷按鍵是否按下
{
key(); //對于此處CPU 對按鍵判斷一直掃描;
}
}
按鍵中斷識別
效果:一開始顯示“0”,每按一次開關,顯示的數字就加1。
C語言程序如下:
#include unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char dispcount=0; //計數
sbit gewei=P3^1; //個位選通定義
sbit shiwei=P3^0; //十位選通定義
void Delay(unsigned int tc) //延時程序
{
while( tc != 0 )
{
unsigned int i;
for(i=0; i<100; i++);
tc--;
}
}
void ExtInt0() interrupt 0 //中斷服務程序
{
dispcount++;
if (dispcount==100)
{dispcount=0;}
}
void LED( ) //LED顯示函數
{
if(dispcount>=10) //顯示兩位數
{
shiwei=1;
P2=table[dispcount/10];
Delay(8);
shiwei=0;
gewei=1;
P2=table[dispcount%10];
Delay(5);
gewei=0;
}
else //顯示一位數
{
shiwei=0;
gewei=1;
P2=table[dispcount];
Delay(8);
}
}
void main()
{ TCON=0x01; // INT0為0 電平觸發 為1負邊沿觸發
IE=0x81; //開總中斷和允許INT0外部中斷
while(1) //循環執行
{ LED(); } //調用顯示函數
}
4×4 矩陣式鍵盤識別
效果:按下不同的按鍵將顯示不同的內容,從右到左,從上到下,按鍵分別代表 0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F.
C語言程序如下:
#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) //延時程序
{
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; //先對P2 置數行掃描
if(P2!=0x0f) //判斷是否有鍵按下
{
delay10ms(); //延時,軟件去干擾
if(P2!=0x0f) //確認按鍵按下;
{
X=P2; //保存行掃描時有鍵按下時狀態
P2=0xf0; //列掃描
Y=P2; //保存列掃描時有鍵按下時狀態
Z=X|Y; //取出鍵值
switch ( Z ) //判斷鍵值(那一個鍵按下)
{
case 0x77: k=0; break; //對鍵值賦值
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; //輸出相同的四位數據。
}
}
數碼管動態顯示
效果:液晶顯示器顯示“1234”。
C語言程序如下:
#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) //延時程序
{
while( tc != 0 ) //如果tc 為0 則終止延時
{
unsigned int i; //局部正整數變量i
for(i=0; i<100; i++); //執行400 次將耗時1 毫秒
tc--; //tc 計數減一
}
}
void Led(int date) //顯示函數
{
qian=0; //P1.0 輸出低電平,選通千位數
P3=seg7code[date/1000]; //取出千位數,查表,輸出。
Delay(10); //延時
qian=1; //銷隱
bai=0; //P1.1 輸出低電平,選通百位數
P3=seg7code[date%1000/100]; //取出百位數,查表,輸出。
Delay(10); //延時
bai=1; //銷隱
shi=0; //P1.2 輸出低電平,選通十位數
P3=seg7code[date%100/10]; //取出十位數,查表,輸出。
Delay(10); //延時
shi=1; //銷隱
ge=0; //P1.3 輸出低電平,選通十位數
P3=seg7code[date%10]; //取出個位數,查表,輸出。
Delay(10); //延時
ge=1; //銷隱
}
main()
{
int display_date=1234; //定義并賦值要顯示的數據
while(1)
{
Led(display_date);//調用顯示函數顯示數據display_date
}
}
數碼管靜態顯示
效果:液晶顯示器最左邊第一位將顯示“4”
C語言程序如下:
#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; //定義并賦值要顯示的數據
while(1)
{
P3=seg7code[display_date]; //查表,輸出
GE=0; //P1^3 為低電平,相當于把數碼管的4H 端接地
}
}
展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
?
人人文庫網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:單片機實驗C語言編程.doc
鏈接地址:https://www.renrendoc.com/p-18300669.html
總結
以上是生活随笔為你收集整理的单片机c语言实验,单片机实验C语言编程.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言入门后怎么玩,玩编程如何让人傻并快
- 下一篇: c语言 写出raw文件,求指导,如何用c