單片機編輯庫
- 初衷簡介
- 51起步,思路簡介
- 51必備基礎程式庫之延時程式
- 延時程式代碼如下:
- 下面開始我們的主題內容
- 例程一:點亮led
- led程式
- 主程式:main.c
- 程式框架選擇
- proteus仿真演示
- 程式下載:
初衷簡介
鑒于目前網上各種單片機資料橫飛,能夠下載到的資料也錯中復雜,由此,我為自己創建了一個屬于自己的單片機資料庫,未來我將陸續上傳一些自己撰寫好的單片機程式以及傳感器資料到這里,與有需要的小伙伴一起分享,同時也可以將自己的代碼存于云間,方便自己查看,
我將從最基礎51單片機開始做起,能做仿真的我也將會盡量上傳仿真檔案,目前我會的單片機系統有stc89C51,STM32,ESP8266的相關系列,關于這些有不懂的問題伙伴們可以在評論區發表,我們一起進行探討與進步,
51起步,思路簡介
我將從51單片機開始進行程式上傳,我會將每一個所用到的模塊或傳感器的程式打包到一個檔案夾內,方便大家使用與下載,我例程中的方式有點類似于stm32程式的撰寫,需要匯入檔案夾,如果你們習慣使用全部檔案在一個檔案夾的方式,請大家自行拖拽檔案內的頭檔案,

我是用到的編程軟體為keil5,同時后面我將使用proteus對能夠進行仿真的程式進行仿真,有需要的可以點擊鏈接進行下載
keil5軟體下載鏈接,提取碼 4h3r
keil5注冊機,可到2032年,提取碼 fz3j
proteus下載鏈接,提取碼 5zj6
51必備基礎程式庫之延時程式
這里我先上傳一個51單片機中經常需要用到的延時程式,建議大家每次進行51程式撰寫的時候都先加入這個庫,
延時程式代碼如下:
頭檔案 delay.h
#ifndef _DELAY_H
#define _DELAY_H
#include "reg52.h"
void delay_100us(unsigned int x); //延時x*100us
void delay_ms(unsigned int x); //延時 x ms
#endif
主程式 delay.c
#include "delay.h"
void delay_100us(unsigned int x) //延時x*100us
{
unsigned char a,b;
for(x;x>0;x--)
for(b=1;b>0;b--)
for(a=43;a>0;a--);
}
void delay_ms(unsigned int x) //延時 x ms
{
for(x;x>0;x--)
delay_100us(10);
}
下面開始我們的主題內容
例程一:點亮led
led程式
關于led所需要的驅動程式如下,需要的可自行復制
led.h
#ifndef _LED_H
#define _LED_H
#include "reg52.h"
sbit led1=P0^0;
void led_on();//點亮led燈
void led_off();//熄滅led燈
void led_init();//初始化LED系統
#endif
led.c
#include "led.h"
/*
led的點亮和熄滅需要根據具體的電路決定,如果led的正極接的
單片機的引腳,那么就是“1”點亮,“0”熄滅;在本系統中,led的
負極接的單片機的引腳,所以是“0”點亮,“1”熄滅,
*/
void led_on()//點亮led燈
{
led1=0;
}
void led_off()//熄滅led燈
{
led1=1;
}
void led_init()//初始化LED系統
{
led_off();//先將led燈關閉
}
主程式:main.c
程式實作的功能為使接在P0.0引腳上的led燈每0.5秒進行一次翻轉
#include "reg52.h"
#include "led.h"
#include "delay.h"
void turn_back()//使led燈的狀態翻轉
{
led_on();//點亮led燈
delay_ms(500);//延時500ms=0.5s
led_off();//熄滅led燈
delay_ms(500);
}
void main()
{
led_init();//初始化LED系統
while(1)
{
turn_back();
}
}
程式框架選擇


proteus仿真演示


程式下載:
程式傳送門
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/266284.html
標籤:其他
