C51#學習筆記02#| 點亮一個LED燈

  • 更改字體設置:【編輯】-【配置】-【顏色和字體】
  • 新建項目
  • 新建.c文件(添加源代碼組)
  • 配置.hex文件
  • 測試代碼:
#include<reg52.h>

void  main()
{

	while(1)	
	{
		;
	}


}
  • 編譯
    編譯按鈕在工作區的左上角,編譯成功之後,發現main.c前面會有一個“+”號,包含的頭文件 #inlude<reg52.h> 也會顯示在下方。
    在這裏插入圖片描述

點亮LED燈

  • 電路圖
    默認情況下LED燈爲高,因爲流水燈P1.0 - P1.7設置了上拉電阻,當程序設置IO口爲低時,LED點亮。
    在這裏插入圖片描述
    第一種方法

P1 = 0xf0; //p1.0亮

  • 寄存器設置規則

P1在系統中頭文件中可見,代表sfr P1 = 0x90;八位寄存器,如何用十六進制代表IO口呢?下面以P1~P7的八位寄存器爲例:

轉換步驟爲:【八位二進制】-【十進制.十進制】-【十六進制】

寄存器編號 八位寄存器 十進制 十六進制
P1^0 1111 1110 15、14 0xfe
P1^1 1111 1101 15 、13 0xfd
P1^2 1111 1011 15 、11 0xfb
P1^3 1111 0111 15 、7 0xf7
P1^4 1110 1111 14、15 0xef
P1^5 1101 1111 13、15 0xdf
P1^6 1011 1111 11、15 0xbf
P1^7 0111 1111 7、15 0x7f

注意:流水燈電路原理圖中默認上拉爲燈滅;若要點亮 LED則只需設置寄存器爲即可。如:P1.0引腳爲低,從低位到高位,從右往左 1111 1110

  • 程序
#include<reg52.h>

void  main()
{

	while(1)	
	{
		P1 = 0xf0; //p1.0亮
		
		//八位二進制 十進制轉換  十六進制
		//1111 1110    15 14      0xfe
		
		//P1 = 0;//  0000 0000   全亮
		//P1 = 0xff//  1111 1111  全滅
	}


}

第二種方法

sbit led1 = P1^0; //定義led1 爲 p1.0

 #include<reg52.h>

 sbit led1 = P1^0;//


 void  main()
 {
 	while(1) {
	
	led1 = 0 ;//

	
	}
 }

燒錄程序

  • 配置

關於單片機型號:請選擇“STC89C52”,在“STC89C51 系列”裏面可選。

注意:系統兼容性的問題,可能會出現燒錄軟件點開後閃退的情況,我的解決辦法是去 STC 官網下載最新的燒錄軟件。

在這裏插入圖片描述

  • 燒錄步驟

插上USB 數據線後,沒有燈亮,然後點擊燒錄軟件的 “下載/編程”,L1亮了,這時立刻按下板子的電源開關,然後 L2 亮了,這樣就開始燒錄了。

在這裏插入圖片描述
在這裏插入圖片描述
拓 展

  • 新建延時頭文件delay.h

#define uchar unsigned char //8 0-255
#define uint unsigned int   //16  0-65535
 
void delay(uint xms);
 
void delay(uint xms)				
{
	uint i,j;
	for(i=xms;i>0;i--)		      //i=xms即延時約xms毫秒
		for(j=112;j>0;j--);
}
  • 主函數
#include<reg52.h>
#include"delay.h"

 sbit led7 = P1^7 ; //p1.7

 void  main()
 {
 	while(1) {
	
	led7 = 0 ;//打開

	delay(500);

	led7 = 1;	  //關閉

	delay(500);

	
	}
 }

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章