freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

道路交通燈及時(shí)間顯示控制(編輯修改稿)

2025-08-26 04:17 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 U時(shí)刻對(duì)顯示器進(jìn)行數(shù)據(jù)刷新,顯示數(shù)據(jù)有閃爍感,占用的CPU時(shí)間多,但使用的硬件少,能節(jié)省線路板空間。在一般較為簡(jiǎn)單的系統(tǒng)中,為了降低成本,動(dòng)態(tài)顯示方案具備一定的實(shí)用性,也是目前單片機(jī)數(shù)碼管顯示中較為常用的一種顯示方法。動(dòng)態(tài)顯示法是目前各種單片計(jì)算機(jī)采用的流行方法。其優(yōu)點(diǎn)是煙堿簡(jiǎn)單。“動(dòng)態(tài)”由軟件實(shí)現(xiàn)。三、交通信號(hào)燈軟件的系統(tǒng)編程 c語(yǔ)言程序設(shè)計(jì)是單片機(jī)開(kāi)發(fā)、應(yīng)用的重要趨勢(shì)之一。目前,支持硬斷點(diǎn)的單片機(jī)仿真器已能很好地進(jìn)行c語(yǔ)言程序調(diào)試,為單片機(jī)編程使用c語(yǔ)言提供了便利條件。 編譯型程序設(shè)計(jì)語(yǔ)言c的優(yōu)點(diǎn)已為大家熟知:既有多種高級(jí)語(yǔ)言的特點(diǎn),又具備匯編語(yǔ)言的功能:有豐富的庫(kù)函數(shù)、運(yùn)算速度快、編譯效率高、可移植性好,而且可以實(shí)現(xiàn)對(duì)系統(tǒng)硬件的直接控制;具有完善的模塊程序結(jié)構(gòu),支持廣泛采用的由頂向下結(jié)構(gòu)化程序設(shè)汁,為軟件開(kāi)發(fā)中采用模塊化設(shè)計(jì)方法提供了有效支持;可以大大縮短目標(biāo)系統(tǒng)軟件的開(kāi)發(fā)周期,軟件的可讀件明顯增加,便于改進(jìn)、擴(kuò)充,研制規(guī)模更大、性能更完備的系統(tǒng)。 C語(yǔ)言與MCS—51 MCS—51酌編程語(yǔ)言 支持MCS—51單片機(jī)編程的語(yǔ)言.除了前面學(xué)過(guò)的匯編語(yǔ)言外,還有三種:BASIC、PL/M和C。 BASIC語(yǔ)言簡(jiǎn)單易學(xué),適用于對(duì)編程效率或運(yùn)行速度要求不高的場(chǎng)合,8052單片機(jī)片內(nèi)就固化了BASIC語(yǔ)言解釋器。但是BASIC采用浮點(diǎn)運(yùn)算,導(dǎo)致程序復(fù)雜且執(zhí)行時(shí)間長(zhǎng),即使BASIC編譯器也未能解決這個(gè)問(wèn)題。 PL/M可以說(shuō)是“高級(jí)匯編語(yǔ)言”,詳細(xì)控制著代碼的生成。但對(duì)MCS51系列,PL/M不支持復(fù)雜的算術(shù)運(yùn)算和浮點(diǎn)變量,也沒(méi)有豐富的庫(kù)函數(shù)。 用C語(yǔ)言進(jìn)行單片機(jī)程序設(shè)計(jì),編譯器能自動(dòng)完成變量的存儲(chǔ)單元的分配,編程者可以專過(guò)于應(yīng)用軟件的設(shè)計(jì).大大加快開(kāi)發(fā)速度,可以對(duì)單片機(jī)常用的接口芯片編制通用的驅(qū)動(dòng)函數(shù),對(duì)常用的功能模塊、算法等編制相應(yīng)的函數(shù),還可以很容易地進(jìn)行信號(hào)處理算法和程序的移植,有利于產(chǎn)品中單片機(jī)的重新選型和軟件設(shè)計(jì)水平的提高、與國(guó)外嵌入式系統(tǒng)的程序設(shè)計(jì)接軌。 與匯編語(yǔ)言相比,C語(yǔ)言程序在開(kāi)發(fā)速度、軟件質(zhì)量、結(jié)構(gòu)嚴(yán)謹(jǐn)、程序可靠性等方面有明顯優(yōu)勢(shì)。而代碼效率相對(duì)較低的缺點(diǎn),對(duì)于片內(nèi)ROM空間16K/32K字節(jié)以上的單片機(jī)而言,已經(jīng)不很重要。目前,單片機(jī)上C語(yǔ)言程序未經(jīng)人工優(yōu)化的代碼長(zhǎng)度,已縮短到用人工方便地對(duì)時(shí)間要求比較嚴(yán)格的匯編語(yǔ)言模塊和關(guān)鍵代碼進(jìn)行優(yōu)化。 C51編譯器與程序開(kāi)發(fā)過(guò)程 已經(jīng)開(kāi)發(fā)了各種單片機(jī)的C語(yǔ)言編譯器 對(duì)于并不以快速運(yùn)算見(jiàn)長(zhǎng)的MCS—51單片機(jī)來(lái)說(shuō),其C語(yǔ)言編譯器(簡(jiǎn)稱C51)的各項(xiàng)性能指標(biāo)中,最重要的是開(kāi)發(fā)便利,其次是生成代碼緊湊,以及編譯速度、是否有浮點(diǎn)庫(kù)和足夠的算術(shù)支持。C51程序開(kāi)發(fā)過(guò)程如圖10所示:圖10 C51程序開(kāi)發(fā)過(guò)程 C51程序結(jié)構(gòu) 與一般C語(yǔ)言相似,C51程序的基本單位是函數(shù)。函數(shù)由函數(shù)說(shuō)明和函數(shù)體兩部分組成。一個(gè)C源程序至少包含—個(gè)(main).也可以是一個(gè)主函數(shù)和若干其它函數(shù)。主函數(shù)是程序的入口;主函數(shù)中的所有語(yǔ)句執(zhí)行完畢,則程序結(jié)束。 C51程序的一般格式如下:類(lèi)型 函數(shù)名(參數(shù)表)參數(shù)說(shuō)明:{ 數(shù)據(jù)說(shuō)明部分: 執(zhí)行語(yǔ)句部分:} 在程序中,函數(shù)有三種形態(tài):函數(shù)定義、函數(shù)調(diào)用和函數(shù)說(shuō)明。 函數(shù)定義相當(dāng)于匯編中的一般子程序。 函數(shù)調(diào)用相當(dāng)于調(diào)用子程序的CALL語(yǔ)句,要求有函數(shù)名和實(shí)參數(shù)表。在C中,更普遍地規(guī)定函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中。函數(shù)定義和函數(shù)調(diào)用不分先后,但若調(diào)用在定義之前,必須在調(diào)用前先進(jìn)行函數(shù)說(shuō)明。函數(shù)說(shuō)明是一個(gè)沒(méi)有函數(shù)體的函數(shù)定義。 C51中函數(shù)分為兩大類(lèi):庫(kù)函數(shù)和用戶定義函數(shù)。被調(diào)用的函數(shù)可以是庫(kù)函數(shù),也可以是用戶函數(shù)。 庫(kù)函數(shù)是C51在庫(kù)文件中已定義的函數(shù),其函數(shù)說(shuō)明在相關(guān)的頭文件中。用戶在編程時(shí)只要用include預(yù)處理指令將頭文件包含在用戶文件中,直接調(diào)用即可。 用戶函數(shù)是用自己定義,自己調(diào)用的一類(lèi)函數(shù)。 C51程序的編制與一勝C語(yǔ)言行序大致相同。 利用C51程序編寫(xiě)延時(shí)程序?yàn)榱搜驖u進(jìn)地學(xué)習(xí)單片機(jī)的功能,這里我們即使用了單片機(jī)中的定時(shí)器,也直接采用軟件的延時(shí)程序定時(shí)控制發(fā)光二極管的亮滅。該延時(shí)程序的時(shí)間主要是通過(guò)計(jì)算單片機(jī)執(zhí)行指令所需的時(shí)間來(lái)確定的。例如,在前文中介紹過(guò),在選擇12MHz晶振時(shí),執(zhí)行一個(gè)簡(jiǎn)單加法指令的時(shí)間為一個(gè)指令周期,需要1/12M(秒)=1(微秒),所以程序中作1M次加法循環(huán)所需要的時(shí)間就是1秒鐘。當(dāng)然,這只是一個(gè)粗略的算法,需要加上執(zhí)行其他必須指令所花的時(shí)間,并且考慮程序代碼的效率。但是,這不失為一種簡(jiǎn)單的解決方案?!?程序代碼void delay10ms(void){ unsigned char i,j。 //定義延時(shí)循環(huán)變量 for(i=20。i0。i) for(j=248。j0。j)。 //雙重循環(huán),延時(shí)10ms} 信號(hào)燈亮滅的定時(shí)功能 單片機(jī)之所以在工業(yè)控制中有大量的應(yīng)用,就是在于它有其獨(dú)特的定時(shí)、計(jì)數(shù)功能。在本電路中,用定時(shí)器來(lái)實(shí)現(xiàn)燈的閃爍功能??刂茊纹瑱C(jī)I/O端口電平的高低,從而控制發(fā)光二極管的亮滅、控制P1口和P3口的電平高和低。當(dāng)為高電平時(shí),發(fā)光二極管兩端壓差為零,二極管不導(dǎo)通,燈不亮;當(dāng)為低電平時(shí),發(fā)光二極管兩端壓差為5V,二極管導(dǎo)通,燈亮。 單片機(jī)的定時(shí)器MCS51系列的單片機(jī)一般有兩個(gè)內(nèi)部的16位定時(shí)器/計(jì)數(shù)器,分別稱為T(mén)0和T1。這兩個(gè)計(jì)數(shù)器分別是兩個(gè)8位的RAM單元組成的,即每個(gè)計(jì)數(shù)器都是16位的計(jì)數(shù)器,最大的計(jì)數(shù)量是65536。那么這個(gè)定時(shí)/計(jì)數(shù)器是如何產(chǎn)生定時(shí)作用的呢?舉個(gè)例子,如果將時(shí)鐘定時(shí)到1分鐘,那么秒針計(jì)數(shù)到60次后,始終鬧鈴就會(huì)響。這里有個(gè)計(jì)數(shù)和定時(shí)之間的概念轉(zhuǎn)化,時(shí)間表示為秒針的計(jì)數(shù)值,即秒針每一次走動(dòng)的時(shí)間正好是1s。單片機(jī)中的定時(shí)器和計(jì)數(shù)器是復(fù)用的,計(jì)數(shù)器是記錄外部脈沖的個(gè)數(shù),而定時(shí)器則是由單片機(jī)提供的一個(gè)非常穩(wěn)定的計(jì)數(shù)源。定時(shí)器是由單片機(jī)的晶振經(jīng)過(guò)12分頻后獲得的一個(gè)脈沖源。當(dāng)單片機(jī)的晶振為12MHz時(shí),計(jì)數(shù)值1代表的時(shí)間就是1us。計(jì)數(shù)器的容量是16位,也就是最大的計(jì)數(shù)值達(dá)到65536,因此計(jì)數(shù)計(jì)到65536就會(huì)產(chǎn)生溢出。當(dāng)定時(shí)器/計(jì)數(shù)器溢出時(shí),就會(huì)使得相關(guān)的寄存器標(biāo)志產(chǎn)生變化,單片機(jī)將由此而產(chǎn)生定時(shí)中斷,在中斷服務(wù)程序中處理定時(shí)到而需要完成的任務(wù)。 如何使用MCS51單片機(jī)的定時(shí)器呢? 使用單片機(jī)的定時(shí)器/計(jì)數(shù)器主要和編程有關(guān)。編程中需要對(duì)兩個(gè)特殊功能寄存器進(jìn)行操作。這兩個(gè)特殊功能寄存器就是TMOD和TCON,又稱為定時(shí)器的控制字。 首先,介紹定時(shí)器/計(jì)數(shù)器的方式寄存器TMOD。TMOD是一個(gè)8位的特殊功能寄存器,對(duì)應(yīng)的地址為89H,不可位尋址。TMOD控制字中可以完成3個(gè)功能:①確定選擇定時(shí)器,還是計(jì)數(shù)器。②選擇何種工作方式。③是否借用外中斷控制定時(shí)器和計(jì)數(shù)器的啟停。TMOD的低4位是用于控制T0的字段,高四位用于控制T1。TMOD的控制字的格式和含義如表31所示。表31 TMOD的控制字GATEC/TM1M0GATEC/TM1M0這里,以TMOD的低4位來(lái)說(shuō)明各位的定義和功能。GATE:分為兩種情況,GATE=0,定時(shí)器的起停和INT1無(wú)關(guān),在這種情況下,定時(shí)器的起停只取決于TR0。GATE=1時(shí),在此種情況下定時(shí)器/計(jì)數(shù)器的開(kāi)關(guān)不僅要由TR0來(lái)控制,而且還要受到INT1引腳的控制,只有TR1為1,且INT1引腳也是高電平,定時(shí)器才能開(kāi)始工作。C/T:定時(shí)/計(jì)數(shù)器即可作定時(shí)也可用于計(jì)數(shù)。選擇何種功能,由C/T的控制字決定。如果C/T為0就用作定時(shí)器,如果C/T為1就用作計(jì)數(shù)器。當(dāng)然,一個(gè)定時(shí)/計(jì)數(shù)器同一時(shí)刻要么作定時(shí)用,要么作計(jì)數(shù)用,不能同時(shí)用。MM0:用MM0來(lái)控制定時(shí)/計(jì)數(shù)器4種工作方式的選擇?!窆ぷ鞣绞?:M0=0,M1=0。13位定時(shí)/計(jì)數(shù)方式,它由TL(1/0)的低5位和TH(0/1)的8位構(gòu)成13位的計(jì)數(shù)器,此時(shí)TL(1/0)的高3位未用。●工作方式1:M0=0,M1=1。是16位的定時(shí)/計(jì)數(shù)方式,其他特性與工作方式0相同?!窆ぷ鞣绞?:M0=1,M1=0,自動(dòng)重裝初值的8位定時(shí)器/計(jì)數(shù)器。初值放在T(0/1)的高8位。在工作方式2,只有低8位參與計(jì)數(shù),而高8位不參與計(jì)數(shù),用作預(yù)置數(shù)的存放,計(jì)數(shù)范圍256。每當(dāng)計(jì)數(shù)溢出,就會(huì)打開(kāi)T(0/1)的高、低8位之間的開(kāi)關(guān),計(jì)預(yù)置數(shù)進(jìn)入低8位,這是由硬件自動(dòng)完成的,不需要由人工干預(yù)。通常這種工作方式用于波特率發(fā)生器,用于這種用途時(shí),定時(shí)器就是為了提供一個(gè)時(shí)間基準(zhǔn)。計(jì)數(shù)溢出后重新裝入預(yù)置數(shù),再開(kāi)始計(jì)數(shù),不要任何延遲。●工作方式3:M0=1,M1=1。這種工作方式之下,定時(shí)/計(jì)數(shù)器0被拆成2個(gè)獨(dú)立的定時(shí)/計(jì)數(shù)器來(lái)用。其中,TL0可以構(gòu)成8位的定時(shí)器或計(jì)數(shù)器的工作方式,而TH0則只能作為定時(shí)器來(lái)用。一般情況下,只有在T1以上工作方式2運(yùn)行(當(dāng)波特率發(fā)生器用)時(shí),才讓T0工作于方式3。接下來(lái),介紹定時(shí)器/計(jì)數(shù)器的控制寄存器TCON。TCON是一個(gè)8位的特殊功能寄存器,對(duì)應(yīng)的地址為88H,可位尋址。TCON中的低4位用于外部中斷的控制,在后文中將加以介紹,此處只對(duì)高4位的T0、T1控制字及其控制原理進(jìn)行介紹。TCON控制寄存器的格式和含義如表32所示。表32 TCON控制寄存器TF1TR1TF0TR0IE1IT1IE0IT0TR0:T0的運(yùn)行控制位。啟動(dòng)定時(shí)器T0沒(méi)有專門(mén)的指令,而是通過(guò)位TR0進(jìn)行控制。TR0是由軟件置位或清零的。當(dāng)門(mén)控位GATE=0時(shí),T0的運(yùn)行只取決于TR0的0和1;當(dāng)門(mén)控位GATE=1時(shí),僅當(dāng)TR0=1,并且外中斷0引腳上的輸入值為高電平時(shí),T0才開(kāi)始計(jì)數(shù),這兩個(gè)條件有一個(gè)不滿足,則禁止T0計(jì)數(shù)。TF0:T0的溢出和中斷申請(qǐng)標(biāo)志位。當(dāng)T0溢出時(shí),硬件置位TF0,表示提出了中斷申請(qǐng)。該標(biāo)志位可以通過(guò)軟件查詢,也可以用軟件清零和置位。在單片機(jī)響應(yīng)中斷申請(qǐng)后,硬件自動(dòng)清零。TR1:T1的運(yùn)行控制位。TF1:T1的溢出標(biāo)志位和中斷申請(qǐng)標(biāo)志位。 定時(shí)器數(shù)值的設(shè)置應(yīng)該注意的事項(xiàng)理論上說(shuō),定時(shí)器的最小計(jì)數(shù)、定時(shí)間隔時(shí)間是由晶振的頻率決定的,最大的時(shí)間間隔可以是無(wú)窮大。然而,在實(shí)際應(yīng)用中,還是有一定的規(guī)則需要遵守的。首先還是看一看定時(shí)器的一次最大計(jì)數(shù)范圍吧。工作方式0:13位定時(shí)/計(jì)數(shù)方式,因此,最多可以計(jì)劃到2的13次冪,也就是8192次。工作方式1:16位定時(shí)/計(jì)數(shù)方式,因此,最多可以計(jì)劃到2的16次冪,也就是65536次。工作方式2和工作方式3:都是8位的定時(shí)/計(jì)數(shù)方式,因此,最多計(jì)數(shù)值可以達(dá)到2的8次冪,也就是256次。如果想實(shí)現(xiàn)一個(gè)1s的定時(shí),該12MHz晶振頻率下,最長(zhǎng)的定時(shí)也就是65536us??梢圆捎密浖?jì)數(shù)器的概念。先用定時(shí)/計(jì)數(shù)器0做一個(gè)50ms的定時(shí)器,定時(shí)時(shí)間到了以后并不是立即開(kāi)關(guān)發(fā)光二極管。而是將軟件計(jì)數(shù)變量中的值加1,如果軟件計(jì)數(shù)器計(jì)到了20,再開(kāi)關(guān)發(fā)光二極管。并清掉軟件計(jì)數(shù)器中的值。這樣,就變成了20次定時(shí)中斷才開(kāi)關(guān)一次發(fā)光二極管,因此定時(shí)時(shí)間就延長(zhǎng)了成了1000ms。 定時(shí)1ms的程序代碼Void t0(void)interrupt 1 using 0{ TH0=(655361000)/256。 //設(shè)置定時(shí)器高8位初值 TL0=(655361000)%256。 //設(shè)置定時(shí)器低8位初值 51單片機(jī)的中斷系統(tǒng) 中斷系統(tǒng)的概念有關(guān)中斷的概念可以在一般的教材中找到:中斷屬于一種對(duì)事件的實(shí)時(shí)處理過(guò)程。中斷源可能隨時(shí)停止CPU當(dāng)前的工作,轉(zhuǎn)而去處理中斷服務(wù)程序,待中斷服務(wù)程序完成后,再返回原來(lái)工作的斷點(diǎn)處,繼續(xù)原來(lái)的工作。什么是中斷,我們從一個(gè)生活中的例子引入。你正在家中看書(shū),突然電話鈴響了,你放下書(shū)本,去接電話,和來(lái)電話的人交談,然后放下電話,回來(lái)繼續(xù)看你的書(shū)。這就是生活中的“中斷”的現(xiàn)象,就是正常的工作過(guò)程被外部的事件打斷了。要了解單片機(jī)的中斷系統(tǒng),首先需要了解中斷源。可以引起中斷的事件稱之為中斷源。51單片機(jī)中一般工有5個(gè)中斷源:兩個(gè)外部中斷,兩個(gè)計(jì)數(shù)/定時(shí)器中斷,一個(gè)串行口中斷。第二,需要了解中斷的嵌套與優(yōu)先級(jí)處理。由于單片機(jī)中有多個(gè)中斷源,在實(shí)際的應(yīng)用中又可能同時(shí)用到多個(gè)中斷源。所以在使用單片機(jī)的中斷時(shí),需要了解中斷的嵌套和優(yōu)先級(jí)處理。優(yōu)先級(jí)的問(wèn)題不僅僅發(fā)生在兩個(gè)中斷同時(shí)產(chǎn)生的情況,也發(fā)生在一個(gè)中斷已產(chǎn)生,又有一個(gè)中斷產(chǎn)生的情況。第三,也是最為復(fù)雜的一個(gè)部分,就是中斷的響應(yīng)過(guò)程。單片機(jī)的5個(gè)中斷源,每個(gè)中斷產(chǎn)生后都要根據(jù)一個(gè)固定的地址去找處理這個(gè)中斷的程序,稱之為中斷服務(wù)程序。當(dāng)然之前首先要保存主程序下一條將執(zhí)行的指令的地址,以便處理完中斷后回到原來(lái)的地方繼續(xù)往下執(zhí)行程序。具體地說(shuō),中斷響應(yīng)可以分為以下幾個(gè)步驟:●保護(hù)斷點(diǎn),即保存下一將要執(zhí)行的指令的地址,就是把這個(gè)地址送入堆棧。●尋找中斷入口,根據(jù)5個(gè)不同的中斷源所產(chǎn)生的中斷,查找5個(gè)不同的入口地址?!駡?zhí)行中斷服務(wù)程序,用中斷服務(wù)程序處理需要改變的變量或者事件?!裰袛喾祷?,執(zhí)行完中斷服務(wù)程序后,從中斷短點(diǎn)處返回主程序,繼續(xù)執(zhí)行主程序。 單片機(jī)的中斷系統(tǒng)的作用單片機(jī)在自動(dòng)控制中有兩個(gè)重要的功能,一個(gè)是定時(shí)/計(jì)數(shù)的作用,另一個(gè)就是中斷的使用。中斷有如下重要的作用。第一,實(shí)現(xiàn)告訴CPU和低速外設(shè)之間的配合。利用中斷方式進(jìn)行的I/O口操作,在宏觀上可以看成CPU和外設(shè)的并行工作。第二,可以實(shí)現(xiàn)實(shí)時(shí)控制。實(shí)時(shí)處理是控制系統(tǒng)對(duì)單片機(jī)提出的要求,各個(gè)設(shè)備可以隨時(shí)向CPU發(fā)出中斷申請(qǐng),而CPU也必須作出快速響應(yīng)和及時(shí)處理。第三,實(shí)現(xiàn)故障的緊急
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1