郭天祥微控制器程式設計100例程式及隨筆2 數碼管程式設計

2021-08-16 20:13:16 字數 1568 閱讀 5617

1.兩個問題,乙個待解決:

1.1數碼管的dula,wela,的原理和led1一樣嗎?微控制器為什麼憑這個名字就能找到數碼管?

初步猜測:是郭天祥在他的51微控制器裡面焊接定義好的,就是不知道放在別的地方是否通用。

1.2 sbit dula = p2^6;段的定義介面一定是這個嗎?段的定義口和位的能不能互換呢?

回答:不一定要這麼接,這是定做的板子,郭天祥的板子就可能一定要這麼接,自己畫板子可以自己定義,是i/o口就可以。

2.五個知識點

2.1 sbit dula = p2^6;sbit wela = p2^7;這是數碼管的控制端,p0是數碼管的賦值埠。確定了這兩個埠就能操縱數碼管。

dula,wela = 1;需要開啟,要給埠賦值高電平。

2.2 abcdefgh數碼管 按照順時針命名。當數碼管是共陰極數碼管的時候,1代表該數碼管那一段是亮的。hgfedcba,a是賦值的最低位。位選訊號時,0代表亮。1111 1110代表第乙個數碼管是亮的。

2.3 uchar code table={};用code定義的變數儲存在程式區。const unsigned int a = 100;用const定義的變數儲存在資料儲存區。

2.4 0xfe和0xfe大小寫是一樣的效果。

2.5 p0 = 0xff;如果位選與段選連在一起的畫,在位選與段選之間要用這句話隔開,清空p0口資訊。

3.數碼管相

編寫程式使第乙個數碼管顯示8

#include sbit dula = p2^6;

sbit wela = p2^7;

void main()

實驗板上6個數碼管同時點亮,依次顯示0到f,時間間隔為0.5ms,迴圈下去。

註解:依次顯示指的是6個數碼管同時顯示同乙個數,然後依次變化。

#include #define uint unsigned int

#define uchar unsigned char

uchar code table =

;uint num,x,y;

void delay();

sbit wela = p2^7;

sbit dula = p2^6;

void main() }}

void delay()

第乙個數碼管顯示1,時間為0.5s然後關閉它,立即讓第二個數碼管顯示2,時間為0.5s再關閉它

一直到最後乙個數碼管顯示6,時間同樣為0.5s。關閉它之後再回來顯示第乙個數碼管,一直迴圈下去。

#include #define uint unsigned int

#define uchar unsigned char

uchar code table =

;uint i,x,y;

sbit wela = p2^7;

sbit dula = p2^6;

void delay();

void main() }}

void delay()

郭天祥微控制器程式設計100例程式及隨筆3 定時器程式設計

1.五個知識點 1.1設定中斷的流程 1.1.1主函式設定初始化 1.1.2中斷服務程式 由使用者自己編寫 設定要做的事情,但不可以放太多。1.2主函式的設定 定時器初始化 舉例 void main 或者使用void init interrupt 也可以,不一定要直接放在總程式裡面。設定流程如下 注...

郭天祥51微控制器教程 IIC匯流排

include define uchar unsigned char sbit sda p2 0 資料匯流排 sbit scl p2 1 時鐘匯流排 void delay 大概延時5us void delay1 uchar x 這是乙個寫資料的整體過程 void wirte add uchar ad...

郭天祥10天微控制器學習筆記(1 1)

program 1.1 commit include 包含52標頭檔案,對應的是微控制器型號,其中含各io陣腳的命名定義 sbit d2 p3 0 位定義 p3 0這個陣腳的名字叫d2 unsigned int a 無符號整型,65536到65535 2的16次方 void main 無參主函式入口...