




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
關(guān)于單片機的C語言第1頁,共110頁,2023年,2月20日,星期三51匯編語言能直接操作單片機的系統(tǒng)硬件,指令執(zhí)行速度快。但其程序可讀性差,且編寫、移植困難。
第2頁,共110頁,2023年,2月20日,星期三C51是為51系列單片機設(shè)計的一種C語言,其特點:C51語言已成為51系列單片機程序開發(fā)的主流軟件方法。結(jié)構(gòu)化語言,代碼緊湊——效率可與匯編語言媲美接近真實語言,程序可讀性強——易于調(diào)試、維護(hù)庫函數(shù)豐富,編程工作量小——產(chǎn)品開發(fā)周期短機器級控制能力,功能很強——適合于嵌入式系統(tǒng)開發(fā)與匯編指令無關(guān),易于掌握——在單片機基礎(chǔ)上上手快第3頁,共110頁,2023年,2月20日,星期三C51與標(biāo)準(zhǔn)C語言對比相同之處:語法規(guī)則、程序結(jié)構(gòu)、編程方法差異之處:數(shù)據(jù)類型、存儲模式、中斷處理教學(xué)安排:①
介紹C51語言的數(shù)據(jù)結(jié)構(gòu)及C51編程手段;②
介紹單片機I/O口的初步應(yīng)用及C51編程方法。第4頁,共110頁,2023年,2月20日,星期三1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)3C51仿真開發(fā)環(huán)境4C51初步應(yīng)用編程
第5頁,共110頁,2023年,2月20日,星期三C51單片機軟件系統(tǒng)結(jié)構(gòu)Project(可包含若干程序文件)C51(庫函數(shù))LIB(庫函數(shù))(頭文件)KeilC51(μVionsion3)Main(函數(shù))File_1(*.c)Func_k(函數(shù))…….………File_n(*.*)Func_1(函數(shù))Func_n(函數(shù))…….用戶編程編譯系統(tǒng)第6頁,共110頁,2023年,2月20日,星期三①程序由函數(shù)組成(一個主函數(shù),或一個主函數(shù)和若干自定義函數(shù));②利用預(yù)處理命令對變量或函數(shù)進(jìn)行集中定義或說明;③函數(shù)和變量都需遵循先定義后使用的基本原則;④主函數(shù)中的所有語句執(zhí)行完畢,則程序結(jié)束。C51與標(biāo)準(zhǔn)C程序結(jié)構(gòu)完全相同第7頁,共110頁,2023年,2月20日,星期三舉例:LED閃爍控制功能第8頁,共110頁,2023年,2月20日,星期三預(yù)處理命令---------函數(shù)說明------------全局變量定義------
主函數(shù)------------調(diào)用函數(shù)------------局部變量定義---------
程序體
程序體------第9頁,共110頁,2023年,2月20日,星期三1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)
1.C51的變量
2.C51的指針3C51仿真開發(fā)環(huán)境4C51初步應(yīng)用編程
第10頁,共110頁,2023年,2月20日,星期三在程序執(zhí)行過程中,數(shù)值可以發(fā)生改變的量稱為變量。變量名與存儲單元地址相對應(yīng),變量值與存儲單元的內(nèi)容相對應(yīng)。例如在哈佛結(jié)構(gòu)的存儲空間中如何建立變量概念?
第11頁,共110頁,2023年,2月20日,星期三【存儲種類】
數(shù)據(jù)類型
【存儲類型】
變量名存儲地址(標(biāo)準(zhǔn)C)作用范圍(標(biāo)準(zhǔn)C)*方括號項——可以缺省C51變量定義的四個要素:存儲空間(C51特有)數(shù)據(jù)格式(C51擴充)第12頁,共110頁,2023年,2月20日,星期三
①自動變量(auto)——在函數(shù)內(nèi)部定義的變量,退出函數(shù)后,分配給該變量的存儲單元即自行消失(局部變量)?!敬鎯ΨN類】
數(shù)據(jù)類型
【存儲類型】
變量名②外部變量(extern)——在函數(shù)外部定義的變量,可始終保持變量的數(shù)值(全局變量)。
【強調(diào)】一個外部變量只能被定義一次,在定義文件之外的地方使用時需用extern進(jìn)行聲明。③靜態(tài)變量(static)——靜態(tài)局部變量/靜態(tài)全局變量④寄存器變量(register)——以寄存器為存儲空間的變量*若省略存儲種類選項,則變量默認(rèn)為自動變量第13頁,共110頁,2023年,2月20日,星期三數(shù)據(jù)的不同格式叫做數(shù)據(jù)類型*有符號數(shù)類型可以忽略signed標(biāo)識符標(biāo)準(zhǔn)C語言的數(shù)據(jù)類型【存儲種類】
數(shù)據(jù)類型
【存儲類型】
變量名第14頁,共110頁,2023年,2月20日,星期三C51擴充數(shù)據(jù)類型:bit、sfr或sfr16、sbitbit型用bit定義一個位變量,語法規(guī)則如下:bitbit_name
[=
常數(shù)0~1];例如:bitdoor=0;//定義一個叫door的變量且初值為0與標(biāo)準(zhǔn)C的變量定義及初始化用法是一致的,例如:
inta=5;unsignedcharsum=0x10;第15頁,共110頁,2023年,2月20日,星期三Sfr或sfr16型sfr定義特殊功能寄存器SFR,語法規(guī)則如下:
sfr
或
sfr16sfr_name=字節(jié)地址常數(shù);第16頁,共110頁,2023年,2月20日,星期三例如,sfrP0=0x80;//定義P0口地址80H
sfrPCON=0x87;//定義PCON地址87H
sfr16DPTR=0x82;//定義DPTR的低端地址82H第17頁,共110頁,2023年,2月20日,星期三sbit型將SFR范圍內(nèi)的位地址(0x80~0xFF)定義為位變量序號特殊功能寄存器名稱符號字節(jié)地址位地址第18頁,共110頁,2023年,2月20日,星期三
1)sbit
bit_name=
位地址常數(shù);
將位于SFR字節(jié)地址內(nèi)的絕對位地址定義為位變量名。例如,sbitCY=0xD7;
序號特殊功能寄存器名稱符號字節(jié)地址位地址第19頁,共110頁,2023年,2月20日,星期三2)sbitbit_name=
sfr_name
^
位位置;
將已有定義的SFR的0~7位定義為位變量名。
例如:sfrPSW=0xD0;sbitCY=PSW^7;
序號特殊功能寄存器名稱符號字節(jié)地址位地址第20頁,共110頁,2023年,2月20日,星期三3)sbitbit_name=
sfr字節(jié)地址
^
位位置;
將SFR字節(jié)地址的相對位地址定義為位變量名。
例如:sbitCY=0xD0^7;
序號特殊功能寄存器名稱符號字節(jié)地址位地址第21頁,共110頁,2023年,2月20日,星期三C51編譯器在頭文件“reg51.h”中定義了全部sfr/sfr16和sbit變量。用一條預(yù)處理命令#include<reg51.h>把這個頭文件包含到C51程序中,無需重定義即可直接使用它們的名稱。第22頁,共110頁,2023年,2月20日,星期三應(yīng)用舉例:第23頁,共110頁,2023年,2月20日,星期三51系列單片機有三個邏輯存儲空間:【存儲種類】
數(shù)據(jù)類型
【存儲類型】
變量名片內(nèi)數(shù)據(jù)存儲器,片外數(shù)據(jù)存儲器和程序存儲器。第24頁,共110頁,2023年,2月20日,星期三建立C51存儲類型與存儲空間的對應(yīng)關(guān)系data區(qū)xdata區(qū)code區(qū)bdata區(qū)第25頁,共110頁,2023年,2月20日,星期三C51的存儲類型與存儲空間對應(yīng)關(guān)系表
第26頁,共110頁,2023年,2月20日,星期三C51編譯器指定了三種默認(rèn)存儲類型:【存儲種類】
數(shù)據(jù)類型
【存儲類型】
變量名C51編譯器的三種編譯模式:小編譯模式(SMALL)、緊湊編譯模式(COMPACT)和大編譯模式(LARGE)第27頁,共110頁,2023年,2月20日,星期三變量名可以由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線,變量名長度隨編譯系統(tǒng)而定。變量名具有字母大小寫的敏感性,如SUM和sum代表不同的變量。強調(diào):頭文件中定義的變量都是大寫的【存儲種類】
數(shù)據(jù)類型
【存儲類型】
變量名第28頁,共110頁,2023年,2月20日,星期三C51擴展的若干關(guān)鍵字一覽表
變量名不得使用標(biāo)準(zhǔn)C語言和C51語言的關(guān)鍵字。第29頁,共110頁,2023年,2月20日,星期三unsignedchardatasystem_status=0;
//定義system_status為無符號字符型自動變量,該變量位于data區(qū)中且初值為0。數(shù)據(jù)結(jié)構(gòu)定義舉例變量名為system_status位與片內(nèi)RAM區(qū)無符號字符型自動型初值為零第30頁,共110頁,2023年,2月20日,星期三unsignedcharbdatastatus_byte;
unsignedintcodeunit_id[2]={0x1234,0x89ab};
staticcharm,n;
//定義status_byte為無符號字符型自動變量,該變量位于bdata區(qū)//定義unit_id[2]為無符號整型自動變量,該變量位于code區(qū)中,是長度為2的數(shù)組,且初值為0x1234和0x89ab。//定義m和n為2個位于data區(qū)中的有符號字符型靜態(tài)變量。第31頁,共110頁,2023年,2月20日,星期三1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)
1.C51的變量
2.C51的指針3C51與匯編語言的混合編程4C51仿真開發(fā)環(huán)境5C51初步應(yīng)用編程
第32頁,共110頁,2023年,2月20日,星期三C51的指針與標(biāo)準(zhǔn)C的指針幾乎是一樣的,都可以簡單理解為“存儲地址的變量”,例如:2.C51的指針
int*b=&a;取變量a的地址指針變量inta;//定義一個整型變量a//定義一個整型指針變量b,其初值為a的地址第33頁,共110頁,2023年,2月20日,星期三在C51里定義指針,還需要額外指明兩個問題:
1)指針變量自身位于哪個存儲區(qū)域;
2)該指針的值代表的是哪個存儲區(qū)域里的地址。以SMALL編譯模式(默認(rèn)data區(qū)存儲類型)為例:例1charxdataa=‘A’;//定義xdata區(qū)里的變量a,初值‘A’char*ptr=&a;解:ptr是一個char型的指針變量,它本身位于data存儲區(qū),它的初值是位于xdata區(qū)里變量a的地址?!敬鎯ΨN類】數(shù)據(jù)類型【存儲類型】變量名第34頁,共110頁,2023年,2月20日,星期三解:
unsigned
charidataa=‘A’;例2
若ptr是一個unsignedchar型指針變量,它本身位于idata存儲區(qū),它的初值是位于idata存儲區(qū)里的unsignedchar型自動變量a(初值為‘A’)的地址。試據(jù)此完成相關(guān)變量的定義和初始化。
unsigned
char*idataptr=&a;第35頁,共110頁,2023年,2月20日,星期三C51提供兩種指針:通用指針和具體指針通用指針
占用3字節(jié)而對于dataidatapdata數(shù)據(jù)類型,實際只需要2字節(jié)。通用指針代碼比具體指針代碼的執(zhí)行速度要慢。具體指針使用者規(guī)定指針指向存儲區(qū)段的指針:
Chardata*str;指針指向data區(qū)中的char型數(shù)據(jù)1字節(jié)
intxdata*prt;指針指向xdata區(qū)中的int型數(shù)據(jù)2字節(jié)使用具體指針可節(jié)省存儲空間,代碼執(zhí)行速度快。
第36頁,共110頁,2023年,2月20日,星期三1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)3C51仿真開發(fā)環(huán)境
1、Keil的編譯環(huán)境μVision32、μVision3的基本使用方法4C51初步應(yīng)用編程
第37頁,共110頁,2023年,2月20日,星期三Keil是德國KeilSoftware公司的51單片機開發(fā)軟件包,包括C編譯器、宏匯編、連接器、庫管理及仿真調(diào)試器,通過一個集成開發(fā)環(huán)境(uVisoin3)組合起來。第38頁,共110頁,2023年,2月20日,星期三μVision3的軟件界面包括四大組成部分,即菜單工具欄,項目管理窗口,文件窗口和輸出窗口。第39頁,共110頁,2023年,2月20日,星期三μVision3中共有11個下拉菜單。工具欄的位置和數(shù)量可以通過設(shè)置選定和移動。第40頁,共110頁,2023年,2月20日,星期三項目管理窗口用于管理項目文件目錄,它由五個子窗口組成,可以通過子窗口下方的標(biāo)簽進(jìn)行切換,它們分別是:文件窗口,寄存器窗口,幫助窗口,函數(shù)窗口,模版窗口。項目管理窗口:第41頁,共110頁,2023年,2月20日,星期三輸出窗口:輸出窗口用于編譯過程中的信息交互作用,由三個子窗口組成,可以通過子窗口下方的標(biāo)簽進(jìn)行切換,它們分別是:編譯窗口,命令窗口,搜尋窗口。第42頁,共110頁,2023年,2月20日,星期三信息窗口:觀察窗口(Watch&CallStatckWindows)輸出窗口(OutputWindows)存儲器窗口(MemoryWindow)反匯編窗口(DissamblyWindow)串行窗口(SerialWindow)第43頁,共110頁,2023年,2月20日,星期三1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)3C51仿真開發(fā)環(huán)境
1、Keil的編譯環(huán)境μVision32、μVision3的基本使用方法4C51初步應(yīng)用編程
第44頁,共110頁,2023年,2月20日,星期三輸入源程序→建立工程→對工程進(jìn)行詳細(xì)設(shè)置→將源程序變?yōu)槟繕?biāo)代碼→運行調(diào)試。使用方法第45頁,共110頁,2023年,2月20日,星期三(1)源文件的建立點擊新建文件按鈕打開一個新的文本編緝窗口,輸入程序源代碼,以*.c保存該文件。第46頁,共110頁,2023年,2月20日,星期三(2)建立工程文件點擊“Project->NewProject…”菜單,在編緝框中輸入一個名字(設(shè)為exam1),無需擴展名。第47頁,共110頁,2023年,2月20日,星期三選擇目標(biāo)CPU(Intel系列的80C51BH)第48頁,共110頁,2023年,2月20日,星期三添加源程序(右擊“SourceGroup1”→點擊“AddfiletoGroup”SourceGroup1”→添加生成的.c文件)第49頁,共110頁,2023年,2月20日,星期三(3)工程設(shè)置右擊Project窗口的Target1→選擇“Project->Optionfortarget‘target1’”→工程設(shè)置對話框第50頁,共110頁,2023年,2月20日,星期三設(shè)置對話框中的OutPut頁面(勾選“CreatHexfile”)第51頁,共110頁,2023年,2月20日,星期三(4)編譯、連接產(chǎn)生目標(biāo)代碼(hex文件)點擊F7或工具按鈕啟動編譯、連接功能。完成后將在命令窗口中顯示編譯結(jié)果第52頁,共110頁,2023年,2月20日,星期三若有語法錯誤,雙擊出錯提示可指出錯誤所在行號第53頁,共110頁,2023年,2月20日,星期三(5)一般調(diào)試過程①啟動調(diào)試過程——Ctrl+F5、
Debug->Start/StopDebugSession②開始調(diào)試——詳見下頁③結(jié)束調(diào)試——、Debug->StopRunning第54頁,共110頁,2023年,2月20日,星期三調(diào)試工具欄復(fù)位運行到光標(biāo)行執(zhí)行完當(dāng)前子程序過程單步單步暫停運行調(diào)試菜單欄快捷鍵指向下條運行行第55頁,共110頁,2023年,2月20日,星期三基本調(diào)試手段:1、運行到光標(biāo)行——從當(dāng)前行運行到光標(biāo)所在行(Ctrl+F10)2、嚴(yán)格單步運行——遇到函數(shù)時亦單步進(jìn)行(F11)3、跨函數(shù)單步運行——遇到函數(shù)時將其視作一行語句(F10)4、斷點運行——全速運行到斷點行停止(雙擊設(shè)置/解除斷點)5、監(jiān)視輸出端口——打開IO窗口(Peripherals->I/O-Ports)6、監(jiān)視運行變量——打開Watch#1窗口(點擊)
……第56頁,共110頁,2023年,2月20日,星期三將調(diào)試通過的*.hex文件加載到*.DSN文件中后即可運行第57頁,共110頁,2023年,2月20日,星期三Keil與Proteus的聯(lián)合仿真運行(需要關(guān)聯(lián)設(shè)置)第58頁,共110頁,2023年,2月20日,星期三1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)3C51仿真開發(fā)環(huán)境4C51初步應(yīng)用編程
1IO端口的簡單應(yīng)用
1.1基本輸入輸出單元與編程
1.2LED數(shù)碼管原理與編程
2IO端口的進(jìn)階實踐第59頁,共110頁,2023年,2月20日,星期三基本輸入輸出單元與編程
輸出單元:
發(fā)光二極管(LED)作為輸出顯示設(shè)備具有電路簡單、功耗低、壽命長、響應(yīng)速度快等特點。低電平驅(qū)動限流電阻R=100Ω~1kΩ高電平驅(qū)動灌電流拉電流第60頁,共110頁,2023年,2月20日,星期三輸入單元:
按鍵或開關(guān)是最基本的輸入設(shè)備。【強調(diào)】P0口為漏極開路結(jié)構(gòu)——需要外接上拉電阻
P0~P3為準(zhǔn)雙向IO口——讀引腳前需先寫1第61頁,共110頁,2023年,2月20日,星期三實例1獨立按鍵識別【要求】開機時LED全熄,然后根據(jù)按鍵動作使相應(yīng)燈亮,并將亮燈保持到下次按鍵動作時為止。獨立按鍵——每個按鍵都彼此獨立,且各占有一根I/O口線。第62頁,共110頁,2023年,2月20日,星期三①按鍵的閉合電平為0,但LED的驅(qū)動電平為1,故不能直接將P0口的狀態(tài)送到P1口,而應(yīng)使其先取反再送出;②為使按鍵抬起后LED能保持先前的點亮狀態(tài),需要在按鍵都未壓下期間禁止向P1送出P0狀態(tài)值。【分析】③為避免P0口未使用端口產(chǎn)生的不利影響,應(yīng)對其高4位清零。第63頁,共110頁,2023年,2月20日,星期三參考程序如下“取反”操作的優(yōu)先級高于“與”操作第64頁,共110頁,2023年,2月20日,星期三編程界面和運行界面分別如下圖第65頁,共110頁,2023年,2月20日,星期三第66頁,共110頁,2023年,2月20日,星期三實例2鍵控流水燈
【要求】K1為“開始鍵”,可使K3和K4有效,初值為“自下向上”運動;K2為“停止鍵”,可使K3和K4失效,并使全燈關(guān)閉;
K3和K4為“方向鍵”,分別對應(yīng)“自上向下”和“自下向上”運動。第67頁,共110頁,2023年,2月20日,星期三分析——整體關(guān)系設(shè)置方向和啟停標(biāo)志,且賦初值0獲取按鍵狀態(tài)值啟停標(biāo)志=0?根據(jù)鍵值修改方向和啟停標(biāo)志值方向標(biāo)志=0?關(guān)閉LEDLED↑YLED↓YNN第68頁,共110頁,2023年,2月20日,星期三分析——局部關(guān)系(獲取按鍵狀態(tài))(P0&0x0f)=0x0f?讀P0口鍵值=P0&0x0f
鍵值=0Y
結(jié)束N第69頁,共110頁,2023年,2月20日,星期三分析——局部關(guān)系(修改狀態(tài)標(biāo)志)
對應(yīng)功能:啟停=1,啟停=0,方向=1,方向=0switch(表達(dá)式){case常量表達(dá)式1:語句1;case常量表達(dá)式2:語句2;………case常量表達(dá)式n:語句n;default:語句n+1;}1#~4#的鍵值:0x0e,0x0d,0x0b,0x07第70頁,共110頁,2023年,2月20日,星期三分析——局部關(guān)系(LED循環(huán)控制)建立LED顯示碼數(shù)組={01,02,04,08}循環(huán)4次?N結(jié)束
延時YLED↑環(huán)節(jié)自右向左循環(huán)輸出狀態(tài)碼循環(huán)4次?N結(jié)束
延時YLED↓環(huán)節(jié)自左向右循環(huán)輸出狀態(tài)碼第71頁,共110頁,2023年,2月20日,星期三參考程序如下if((P0&0x0f)==0x0f)return0;return(P0&0x0f);第72頁,共110頁,2023年,2月20日,星期三Keil項目和程序界面如下圖所示
第73頁,共110頁,2023年,2月20日,星期三.1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)3C51仿真開發(fā)環(huán)境4C51初步應(yīng)用編程
1IO端口的簡單應(yīng)用
1.1基本輸入輸出單元與編程
1.2LED數(shù)碼管原理與編程
2IO端口的進(jìn)階實踐第74頁,共110頁,2023年,2月20日,星期三LED顯示元件——人機交互輸出設(shè)備,其作用是指示中間運行結(jié)果與運行狀態(tài)。點式字段式LED光柱式LED的類型第75頁,共110頁,2023年,2月20日,星期三com為公共端共陽極LED共陰極LED引腳配置七段式LED顯示器(7-SegmentDisplay)第76頁,共110頁,2023年,2月20日,星期三LED的亮暗組合(顯示碼)能形成不同的顯示字符以共陰極為例,部分字符的顯示碼(字模)為:七段LED數(shù)碼管的標(biāo)準(zhǔn)顯示字符為0-9,A-F第77頁,共110頁,2023年,2月20日,星期三實例3LED數(shù)碼管顯示在P0口連接一個共陰極數(shù)碼管,使之循環(huán)顯示0-9數(shù)字。第78頁,共110頁,2023年,2月20日,星期三分析:將顯示碼循環(huán)輸出到P0口即可實現(xiàn)循環(huán)顯示。但由于數(shù)字0~9的顯示段碼沒有規(guī)律可循,需要采取查表方式進(jìn)行操作:循環(huán)10次?N
延時循環(huán)指針i賦值(10)P0←數(shù)組[i]Y①將顯示碼按序存放在一個數(shù)組中,順序號與代表的顯示字符相對應(yīng)。(如,charled_mod[]={x1,x2,….,xn)②通過循環(huán)變量指定待送出的數(shù)組元素第79頁,共110頁,2023年,2月20日,星期三參考程序第80頁,共110頁,2023年,2月20日,星期三實例4計數(shù)顯示器對按鍵動作進(jìn)行計數(shù)和顯示,達(dá)到99后重新由1開始計數(shù)。個位LED接P2口;十位LED接P0口(上拉電阻)第81頁,共110頁,2023年,2月20日,星期三分析:①讀P3.7口,進(jìn)行加1計數(shù)和超界處理;②拆分計數(shù)器數(shù)值——個位、十位;③查找/輸出顯示碼到P0和P2口。計數(shù)值拆分:取模運算(%)→個位整除10運算(/)→十位>99?N計數(shù)器加1計數(shù)器←1YP3.7=0?NY查找/輸出顯示碼:按拆分值輸出相應(yīng)數(shù)組元素第82頁,共110頁,2023年,2月20日,星期三參考程序第83頁,共110頁,2023年,2月20日,星期三(接前頁)第84頁,共110頁,2023年,2月20日,星期三程序運行效果
第85頁,共110頁,2023年,2月20日,星期三1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)3C51仿真開發(fā)環(huán)境4C51初步應(yīng)用編程
1IO端口的簡單應(yīng)用
2IO端口的進(jìn)階實踐
2.1數(shù)碼管動態(tài)顯示原理與編程
2.2行列式鍵盤原理與編程第86頁,共110頁,2023年,2月20日,星期三靜態(tài)顯示接口和動態(tài)顯示接口靜態(tài)顯示接口:一個并行口接一個數(shù)碼管。優(yōu)點:被顯示數(shù)據(jù)只要送入并行口后就不再需要CPU干預(yù),因而顯示效果穩(wěn)定。缺點:占用資源較多第87頁,共110頁,2023年,2月20日,星期三動態(tài)顯示接口:將所有數(shù)碼管的段碼線對應(yīng)并聯(lián)起來接在一個8位并行口上,而每位數(shù)碼管的公共端分別由一位I/O線控制。第88頁,共110頁,2023年,2月20日,星期三工作原理:輪流顯示,即每一時刻只有一只顯示器工作。當(dāng)時間間隔很小(如10ms)時,人眼的暫留特性→無閃爍的連續(xù)顯示。優(yōu)點:占用資源較少缺點:占用機時較多(需要CPU隨時刷新顯示值)第89頁,共110頁,2023年,2月20日,星期三實例5數(shù)碼管動態(tài)顯示采用共陰極動態(tài)LED顯示原理,實現(xiàn)如下功能:SW1向下?lián)軙r顯示字符“L2”,向上撥時顯示字符“H3”。第90頁,共110頁,2023年,2月20日,星期三分析:Proteus中的雙聯(lián)LED數(shù)碼管相當(dāng)于兩個并聯(lián)的數(shù)碼管。第91頁,共110頁,2023年,2月20日,星期三如果不考慮switch,動態(tài)顯示“L2”的程序可以如下:第92頁,共110頁,2023年,2月20日,星期三完整的源程序switch_sta0022led_point0101switch_sta+led_point0123P3=2-led_point2121需要數(shù)碼管指針led_point和開關(guān)狀態(tài)標(biāo)志switch_sta的配合才能實現(xiàn)兩個顯示值的切換功能。第93頁,共110頁,2023年,2月20日,星期三運行效果圖第94頁,共110頁,2023年,2月20日,星期三1C51的程序結(jié)構(gòu)
2C51的數(shù)據(jù)結(jié)構(gòu)3C51仿真開發(fā)環(huán)境4C51初步應(yīng)用編程
1IO端口的簡單應(yīng)用
2IO端口的進(jìn)階實踐
2.1數(shù)碼管動態(tài)顯示原理與編程
2.2行列式鍵盤原理與編程第95頁,共110頁,2023年,2月20日,星期三獨立式鍵盤的電路簡單,易于編程,但占用的IO口線較多,當(dāng)需要較多按鍵時可能產(chǎn)生IO資源緊張問題。獨立式鍵盤獨立式鍵盤與行列式鍵盤第96頁,共110頁,2023年,2月20日,星期三行列式鍵盤——將IO口分為行線和列線,按鍵跨接在行線和列線上,列線通過上拉電阻接正電源。行列式鍵盤特點:占用IO口線較少,但軟件將較為復(fù)雜。鍵值(按鍵閉合時的數(shù)值),鍵模(按鍵代表的數(shù)值)第97頁,共110頁,2023年,2月20日,星期三①判斷哪一行有鍵壓下寫端口(0xf0):行線電平=0;列線電平=1。讀端口進(jìn)行判
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班級多樣化的交流活動設(shè)計計劃
- 有效的會議記錄與跟進(jìn)方法計劃
- 跨文化背景下如何制定有效的信息披露政策及管理機制
- 學(xué)生論文寫作能力的培養(yǎng)計劃
- 餐飲茶樓裝修設(shè)計與成本控制策略
- 山東省濟(jì)寧市重點高中2024-2025學(xué)年高二上學(xué)期12月月考生物試題含答案
- 金融市場的財務(wù)報告影響分析
- 實現(xiàn)倉庫運輸成本管理的工作計劃
- 質(zhì)量管理體系在教育培訓(xùn)中的推廣與應(yīng)用
- 通過普及法律常識來增強公民交通安全意識
- 航空航天標(biāo)準(zhǔn)與認(rèn)證互認(rèn)
- 心理課教案自我認(rèn)知與情緒管理
- 車站信號自動控制課件:進(jìn)站信號機點燈電路
- 民用無人機操控員執(zhí)照(CAAC)考試復(fù)習(xí)重點題庫500題(含答案)
- GB/T 6553-2024嚴(yán)酷環(huán)境條件下使用的電氣絕緣材料評定耐電痕化和蝕損的試驗方法
- 瀝青基材料在石油化工設(shè)備熱絕緣中的開發(fā)
- 中職旅游專業(yè)《中國旅游地理》說課稿
- 煤層底板采動破裂深度壓水
- 第15課 列強入侵與中國人民的反抗斗爭【課件】-中職高一上學(xué)期高教版
- 新人教小學(xué)數(shù)學(xué)六年級下冊《成數(shù)》示范課教學(xué)課件
- CAR-T細(xì)胞療法行業(yè)營銷策略方案
評論
0/150
提交評論