1. 程式人生 > >最適合新手初學單片機的40個實驗免費下載

最適合新手初學單片機的40個實驗免費下載

數據 關閉 模擬 兩種 china 高電平 3.2 程序 使用

最適合新手初學單片機的40個實驗免費下載

給初學者單片機的40個實驗,帶源碼,需要資料的加群:813238832
也可以到闖客網技術論壇下載更多關於單片機,MTK的資料和學習案例

模擬開關燈

1. 實驗任務
如圖4.2.1所示,監視開關K1(接在P3.0端口上),用發光二極管L1(接在單片機P1.0端口上)顯示開關狀態,如果開關合上,L1亮,開關打開,L1熄滅。

2.電路原理圖

圖一

更多資料在闖客網下載鏈接:https://bbs.usoftchina.com/thread-200737-1-1.html

  3. 系統板上硬件連線
  (1). 把“單片機系統”區域中的P1.0端口用導線連接到“八路發光二極管指示模塊”區域中的L1端口上;

(2). 把“單片機系統”區域中的P3.0端口用導線連接到“四路撥動開關”區域中的K1端口上;

  4. 程序設計內容
  (1). 開關狀態的檢測過程
  單片機對開關狀態的檢測相對於單片機來說,是從單片機的P3.0端口輸入信號,而輸入的信號只有高電平和低電平兩種,當撥開開關K1撥上去,即輸入高電平,相當開關斷開,當撥動開關K1撥下去,即輸入低電平,相當開關閉合。單片機可以采用JB BIT,REL或者是JNB BIT,REL指令來完成對開關狀態的檢測即可。
  (2). 輸出控制
如圖3所示,當P1.0端口輸出高電平,即P1.0=1時,根據發光二極管的單向導電性可知,這時發光二極管L1熄滅;當P1.0端口輸出低電平,即P1.0=0時,發光二極管L1亮;我們可以使用SETB P1.0指令使P1.0端口輸出高電平,使用CLR P1.0指令使P1.0端口輸出低電平。

5.程序框圖

圖二

  6. 匯編源程序 ORG 00H
  START: JB P3.0,LIG
  CLR P1.0
  SJMP START
  LIG: SETB P1.0
  SJMP START
END

  7. C語言源程序
  #include <AT89X51.H>
  sbit K1=P3^0;
  sbit L1=P1^0;
  void main(void)
  {
  while(1)
  {
  if(K1==0)
  {
  L1=0; //燈亮
  }
  else
  {
  L1=1; //燈滅
  }
  }
}

3.多路開關狀態指示

  1. 實驗任務
如圖4.3.1所示,AT89S51單片機的P1.0-P1.3接四個發光二極管L1-L4,P1.4-P1.7接了四個開關K1-K4,編程將開關的狀態反映到發光二極管上。(開關閉合,對應的燈亮,開關斷開,對應的燈滅)。

2.電路原理圖

圖三

  3. 系統板上硬件連線
  (1. 把“單片機系統”區域中的P1.0-P1.3用導線連接到“八路發光二極管指示模塊”區域中的L1-L4端口上;
(2. 把“單片機系統”區域中的P1.4-P1.7用導線連接到“四路撥動開關”區域中的K1-K4端口上;

  4. 程序設計內容
  (1. 開關狀態檢測
  對於開關狀態檢測,相對單片機來說,是輸入關系,我們可輪流檢測每個開關狀態,根據每個開關的狀態讓相應的發光二極管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令來完成;也可以一次性檢測四路開關狀態,然後讓其指示,可以采用MOV A,P1指令一次把P1端口的狀態全部讀入,然後取高4位的狀態來指示。
  (2. 輸出控制
根據開關的狀態,由發光二極管L1-L4來指示,我們可以用SETB P1.X和CLR P1.X指令來完成,也可以采用MOV P1,#1111XXXXB方法一次指示。

5.程序框圖

圖四

  6.讀P1口數據到ACC中
  ACC內容右移4次
  ACC內容與F0H相或
  ACC內容送入P1口
  <![endif]-->
  圖4.3.2
  6. 方法一(匯編源程序)
  ORG 00H
  START: MOV A,P1
  ANL A,#0F0H
  RR A
  RR A
  RR A
  RR A
  ORl A,#0F0H
  MOV P1,A
  SJMP START
END

  7. 方法一(C語言源程序)
  #include <AT89X51.H>
  unsigned char temp;
  void main(void)
  {
  while(1)
  {
  temp=P1>>4;
  temp=temp | 0xf0;
  P1=temp;
  }
}

  8. 方法二(匯編源程序)
  ORG 00H
  START: JB P1.4,NEXT1
  CLR P1.0
  SJMP NEX1
  NEXT1: SETB P1.0
  NEX1: JB P1.5,NEXT2
  CLR P1.1
  SJMP NEX2
  NEXT2: SETB P1.1
  NEX2: JB P1.6,NEXT3
  CLR P1.2
  SJMP NEX3
  NEXT3: SETB P1.2
  NEX3: JB P1.7,NEXT4
  CLR P1.3
  SJMP NEX4
  NEXT4: SETB P1.3
  NEX4: SJMP START
END

  9. 方法二(C語言源程序)
  #include <AT89X51.H>
  void main(void)
  {
  while(1)
  {
  if(P1_4==0)
  {
  P1_0=0;
  }
  else
  {
  P1_0=1;
  }
  if(P1_5==0)
  {
  P1_1=0;
  }
  else
  {
  P1_1=1;
  }
  if(P1_6==0)
  {
  P1_2=0;
  }
  else
  {
  P1_2=1;
  }
  if(P1_7==0)
  {
  P1_3=0;
  }
  else
  {
  P1_3=1;
  }
  }
  }

最適合新手初學單片機的40個實驗免費下載