91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

ReCclay
認(rèn)證:VIP會員
所在專題目錄 查看專題
【藍(lán)橋杯單片機(jī)組模塊】1、硬件電路基礎(chǔ)知識 與 蜂鳴器模塊上手
【藍(lán)橋杯單片機(jī)組】兩種外設(shè)訪問方式:IO編程和MM編程
【藍(lán)橋杯單片機(jī)組模塊】2、以 LED 流水燈為例,熟悉 CT107D 外設(shè)驅(qū)動套路
【藍(lán)橋杯單片機(jī)組模塊】3、上手 CT107D 外設(shè)驅(qū)動之?dāng)?shù)碼管模塊
【藍(lán)橋杯單片機(jī)組模塊】4、按鍵模塊
【藍(lán)橋杯單片機(jī)組模塊】5、EEPROM模塊
作者動態(tài) 更多
【FPGA基礎(chǔ)】基于 Pango Design Suite(PDS) 的FPGA開發(fā)流程
2021-05-14 11:22
【FPGA基礎(chǔ)】基于Quartus Prime 17.1 的FPGA開發(fā)流程
2021-05-08 17:49
【AD快速入門】8051最小系統(tǒng)繪制
2021-04-22 10:03
藍(lán)橋嵌入式之 ADC電壓采集與顯示
2021-04-14 11:48
藍(lán)橋嵌入式之 實時時鐘RTC
2021-04-13 14:50

【藍(lán)橋杯單片機(jī)組模塊】2、以 LED 流水燈為例,熟悉 CT107D 外設(shè)驅(qū)動套路

?導(dǎo)讀:《藍(lán)橋杯單片機(jī)組》專欄文章是博主2018年參加藍(lán)橋杯的單片機(jī)組比賽所做的學(xué)習(xí)筆記,在當(dāng)年的比賽中,博主是獲得了省賽一等獎,國賽二等獎的成績。成績雖談不上最好,但至少問心無愧。如今2021年回頭再看該系列文章,仍然感觸頗多。為了能更好地幫助到單片機(jī)初學(xué)者,今年特地抽出時間對當(dāng)年的文章邏輯和結(jié)構(gòu)進(jìn)行重構(gòu),以達(dá)到初學(xué)者快速上手的目的。需要指出的是,由于本人水平有限,如有錯誤還請讀者指出,非常感謝。那么,接下來讓我們一起開始愉快的學(xué)習(xí)吧。

在前面的那一篇《【藍(lán)橋杯單片機(jī)組模塊】1、硬件電路基礎(chǔ)知識 與 蜂鳴器模塊上手》文章中,我們詳細(xì)介紹了 CT107D 開發(fā)板的各個外設(shè)驅(qū)動方式。本節(jié)通過LED流水燈的例子再次熟悉CT107D外設(shè)驅(qū)動套路,為后文更復(fù)雜的外設(shè)驅(qū)動搭橋鋪路。

一、LED 外設(shè)基本知識復(fù)習(xí)

前面我們總結(jié)了CT107D的常用外設(shè)地址圖,如下所示。

LED 外設(shè)對應(yīng)的地址為:0x8000

IO 編程點亮LED核心代碼如下:

P2 = ((P2&0x1F)|0x80);
P0 = 0x00; //點亮所有LED
P2 = P2 & 0x1F;

二、LED 循環(huán)流動實驗

LED流水燈花樣多了去了,咱還是只挑經(jīng)典的來就行就可以啦。 : )

那就寫一個左右循環(huán)流動的 Demo 吧。

#include <stc15.h>

typedef unsigned char u8;//注意類型定義用typedef,養(yǎng)成習(xí)慣最好不過了!
typedef unsigned int  u16;

void CloseFucker();
void FlowLed();

void main()
{
	CloseFucker();
	
	while(1)
	{
		FlowLed();
	}
}

void CloseFucker()
{
	P2 = (P2 & 0x1F) | 0xA0;
	P0 = P0 & 0xAF;
	P2 = P2 & 0x1F;
}

void FlowLed()
{
	u16 i;
	static bit dir = 0;//單獨定義成函數(shù)需要static
	static u8 shift = 0x01;

	P2 = ((P2&0x1F)|0x80);
		
	P0 = ~shift;
	if(dir == 0)
	{
		shift <<= 1;
		if(shift == 0x80)
			dir = 1;
	}
	else
	{
		shift >>= 1;
		if(shift == 0x01)
			dir = 0;
	}

	for(i=0; i<60000; i++);	
	P2 = P2 & 0x1F;
}

程序總體來說的話不難理解,這里總結(jié)一下初學(xué)者常問的幾個問題。

三、初學(xué)者常見問題

Q1:LED流動的延時間隔是怎么實現(xiàn)的?具體延時多少?

A:延時間隔通過軟件延時實現(xiàn)。延時間隔我們一般用定時器,這里考慮到新手嘛,剛剛上手使用CT107D,肯定想直觀看到程序的效果,所以此處的延時是用for循環(huán)軟件延時來做的,更加簡單方便。但是for循環(huán)的缺點也就很明顯了,我們無法直觀的知道延時間隔,for(i=0; i<60000; i++); 這段延時也是試出來的,LED 流動停頓剛好挺合適,讀者直接拿去用便是了,不用過分糾結(jié)它到底延時了多少。

Q2:點亮第一顆LED為什么要寫成shift = 0x01取反(相當(dāng)于P0 = 0x01取反),而不直接寫shift = 0xFE(相當(dāng)于P0 = 0xFE)?

A:方便移位。首先明白一點,LED是低電平點亮,shift中為0的位,對應(yīng)的LED會亮。寫成shift = ~(0x01)shift = 0xFE這兩種形式都可以點亮第一顆LED,但是第二顆LED呢?難道要重新再重新算一下:1111 1101,得出shift = 0xFD?難道不麻煩么?如果寫成 shift = 0x01 的形式,將其左移一位shift = shift << 1,然后再取反shift = ~shift。這樣不就可以點亮第二顆LED了么,第三、四....顆LED都是同理。這樣豈不是更加直觀方便,通過一點小算法,屏蔽了里面的計算細(xì)節(jié)。

Q3:FlowLed 函數(shù)中的變量為什么要使用靜態(tài)變量(static)?

A:這樣可以做到每次進(jìn)入該函數(shù)時對應(yīng)的static變量保持上一次的值。這個應(yīng)該是C語言的基礎(chǔ)知識,調(diào)用某個函數(shù)時,其中的staic變量保持上一次的值不變。

小結(jié):本篇文章先是回憶了CT107D開發(fā)板的LED外設(shè)驅(qū)動知識,接著以 LED 流水燈的demo再次熟悉外設(shè)驅(qū)動套路,并在該demo后詳細(xì)列出并解答了初學(xué)者常見的幾個問題。

希望大家多多支持我的原創(chuàng)文章。如有錯誤,請大家及時指正,非常感謝。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
本篇所含全部資料,點擊此處留下郵箱我會發(fā)給你
資料明細(xì):資料包含LED流動的Demo實現(xiàn)
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 353
收藏 347
關(guān)注 431
成為作者 賺取收益
全部留言
0/200
  • dy-i2UfRuvP 2021-05-19 13:22
    思路清晰,受益匪淺
    回復(fù)
  • dy-iipPZRPN 2021-05-13 22:45
    圍觀學(xué)習(xí)
    回復(fù)
  • dy-3EbVR6Ei 2021-05-13 22:37
    思路清晰,受益匪淺
    回復(fù)
  • dy-Xq2JxpfN 2021-05-13 22:19
    學(xué)習(xí)了
    回復(fù)
  • dy-9g42stbW 2021-05-13 22:11
    不亞于看了一篇高質(zhì)量論文
    回復(fù)
  • dy-mLj7kl5v 2021-05-13 20:44
    學(xué)習(xí)了
    回復(fù)
  • dy-apcih3c1 2021-05-13 20:27
    大開眼界,真是好文
    回復(fù)
  • dy-k78ZHtFD 2021-05-13 20:09
    精彩,很多東西還沒接觸到
    回復(fù)
  • dy-nAWdnPGS 2021-05-13 18:57
    圍觀學(xué)習(xí)
    回復(fù)
  • dy-prSX6RBY 2021-05-13 18:48
    什么時候更新
    回復(fù)
  • dy-jqGVYqsF 2021-05-13 16:53
    圍觀學(xué)習(xí)
    回復(fù)
  • dy-VIQ9auhf 2021-05-13 15:07
    思路清晰,受益匪淺
    回復(fù)
  • dy-7mura2gg 2021-05-13 14:50
    不亞于看了一篇高質(zhì)量論文
    回復(fù)
  • dy-YN3DYTeH 2021-05-13 14:42
    精彩,很多東西還沒接觸到
    回復(fù)
  • dy-9hjGevyn 2021-05-13 13:59
    什么時候更新
    回復(fù)
  • dy-H1WY5jXH 2021-05-13 13:27
    講的真好!
    回復(fù)
  • dy-wVQjSHHX 2021-05-13 13:10
    什么時候更新
    回復(fù)
  • dy-88VlYaFf 2021-05-12 15:54
    比論文強一萬倍
    回復(fù)
  • dy-9QTV6UZW 2021-05-12 15:30
    感謝分享
    回復(fù)
  • dy-WYS5BCmB 2021-05-12 15:16
    不亞于看了一篇高質(zhì)量論文
    回復(fù)
主站蜘蛛池模板: 章丘市| 松江区| 峡江县| 津南区| 开封市| 台东市| 淮南市| 昌都县| 遵义市| 岳阳县| 那曲县| 合川市| 海口市| 浮山县| 磐安县| 康乐县| 白玉县| 阿鲁科尔沁旗| 石阡县| 嘉禾县| 吕梁市| 青铜峡市| 溧阳市| 临澧县| 壶关县| 治多县| 友谊县| 武穴市| 东兴市| 华坪县| 自治县| 乐都县| 华阴市| 峨眉山市| 梨树县| 肇东市| 仪陇县| 报价| 台前县| 大埔区| 滁州市|