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

正文內(nèi)容

畢業(yè)論文-基于at89c51單片機(jī)的空調(diào)控制系統(tǒng)設(shè)計(jì)-文庫(kù)吧

2024-12-28 11:51 本頁(yè)面


【正文】 接, P2口的 R6至 R9與 Q1至 Q4的基極相連接。這樣通過(guò) P2口送出一個(gè)存儲(chǔ)單元的高位,低位 BCD顯示代碼,通過(guò) P2口另幾位送出掃描選通代碼輪流點(diǎn) 7 亮 LED1至 LED4,就會(huì)將要顯示的數(shù)據(jù)在數(shù)碼管中顯示出來(lái)。 圖 22 LED顯示電路 所謂 LED靜態(tài)驅(qū)動(dòng): 是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的 I/O端口進(jìn)行驅(qū) 動(dòng),或者使用如 BCD碼二 十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng) ;其點(diǎn)亮和關(guān)閉由該 I/O口來(lái)對(duì)其控制,互不干涉,對(duì) I/O驅(qū)動(dòng)能力弱的 MCU,必須增加外部驅(qū)動(dòng)芯片或三極管等器件。此種設(shè)計(jì)一般應(yīng)用在單個(gè) LED的驅(qū)動(dòng)或LED 數(shù)量較少,且所選的 MCUI/O 口比較充裕的情況下。由于每一個(gè) LED 均由獨(dú)立的 I/O 口控制,因此優(yōu)點(diǎn)是軟件 編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用 I/O端口多,如驅(qū)動(dòng) 5個(gè)數(shù)碼管靜態(tài)顯示則需要 58= 40根 I/O端口來(lái)驅(qū)動(dòng),要知道一個(gè) AT89C51單片機(jī)可用的 I/O端口才 32個(gè),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng), 增加了硬件電路的復(fù)雜性。 LED的動(dòng)態(tài)顯示方式 : 數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的 8個(gè)顯示筆劃 a,b,c,d,e,f,g,dp的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極增加位選通控制電路,位選通由各自獨(dú)立的 I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的 公 共極 ,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為 1~ 2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的, 卻 能夠節(jié)省大量的 I/O端口,而且功耗更低。 由于所有的 LED 模塊共用了驅(qū)動(dòng)端,因此 LED 的驅(qū)動(dòng)不再像靜態(tài)法一樣為每個(gè) LED 所獨(dú)享,因此其驅(qū)動(dòng)的設(shè)計(jì)方法也與靜態(tài)法完全不同,需要采用分時(shí)掃描方法來(lái)實(shí)現(xiàn)對(duì)所有 LED的顯示驅(qū)動(dòng),其原理如下: A0設(shè)置為高電平,也即允許第一組 LED顯示,同時(shí)將 A2,A3,A4設(shè)置為低電平,也即關(guān)閉該陰極所對(duì)應(yīng)的 LED組顯示; P2口輸出 A0組對(duì)應(yīng)的顯示數(shù)據(jù),如字符點(diǎn)陣數(shù)據(jù)、 7段碼對(duì)應(yīng)的數(shù)字的數(shù)據(jù)等,該數(shù)據(jù)可以通過(guò) ROM表的形式預(yù)先定義; T,該時(shí)間即為所設(shè)定的定時(shí)器的中斷時(shí)間; 8 A0口設(shè)置為低電平,關(guān)閉 A0組的 LED顯示; A1設(shè)置為高電平,其他幾個(gè)設(shè)置為低電平,開啟 A1組對(duì)應(yīng)的 LED顯示; P0口輸出 A1組對(duì)應(yīng)的顯示數(shù)據(jù); ,直到所有組 被掃描一遍,然后又從 A0 組開始下一個(gè)循環(huán),如此周而復(fù)始,實(shí)現(xiàn)所有 LED的動(dòng)態(tài)顯示。 該方法的原理利用了人眼對(duì)物體的視覺延遲來(lái)達(dá)到所有 LED的同時(shí)顯示,實(shí)際應(yīng)用時(shí),在同一個(gè)時(shí)刻,只有一組 LED處于顯示狀態(tài),而其他 LED處于關(guān)閉狀態(tài)。理論上,若兩次顯示之間的時(shí)間間隔小于 32ms 時(shí),人眼既無(wú)法分辨,因此,為了達(dá)到此要求, LED 的掃描頻率一般可以按照下式計(jì)算得出 :f=32*N。式中, f為掃描的頻率,對(duì)應(yīng)為定時(shí)器的時(shí)間( T=1/ f); 32則是由 32ms換算而來(lái), 32ms對(duì)應(yīng)的頻率剛好為 32Hz; N則時(shí)總的 LED的組 數(shù)(此例中 N=4)。 根據(jù)此式算出的掃描頻率 f實(shí)際是 LED驅(qū)動(dòng)掃描的最小頻率,若低于此頻率,則有可能導(dǎo)致 LED的閃爍; f也不可能越高越好,掃描的頻率太高,每組 LED的點(diǎn)亮?xí)r間就越短,因此有可能導(dǎo)致 LED的亮度不夠或顯示效果不理想等一些問(wèn)題。當(dāng)然提高 LED 的驅(qū)動(dòng)電壓也可以補(bǔ)償由此造成的亮度不夠的問(wèn)題。 數(shù)據(jù)與代碼轉(zhuǎn)換。由前述可知, P2 口的 , P2 口的 選碼, LED 就會(huì)顯示出數(shù)字來(lái)。但 P2 口輸出的數(shù)據(jù)是 BCD 碼,各存儲(chǔ)器存儲(chǔ)的數(shù)據(jù)是二進(jìn)制,也就是和要顯示出的字符 表達(dá)的含義是不一致的。可見,將要顯示的存儲(chǔ)器單元的數(shù)據(jù)直接送到 P2 口去驅(qū)動(dòng) LED數(shù)碼管顯示是不能正確表達(dá)的,必須在系統(tǒng)內(nèi)部將要顯示的數(shù)據(jù)經(jīng)過(guò) BCD碼轉(zhuǎn)換后,將各個(gè)單元數(shù)據(jù)的段選代碼送入 P2口,給 CD4511譯碼后去驅(qū)動(dòng)數(shù)碼管顯示。具體轉(zhuǎn)換過(guò)程如下:我們先將要顯示的數(shù)據(jù)裝入累加器 A 中,再將 A 中的數(shù)據(jù)轉(zhuǎn)換成高低兩位的 BCD 碼,再放回 A 中,然后將 A中的值輸出。如:有一個(gè)單元存儲(chǔ)了 45這樣一位數(shù),則需轉(zhuǎn)換成四位 BCD碼 (0100) (1001)然后放入A中, A中 BCD碼,高四位代表 4,低 四位代表 5,同時(shí)送給兩個(gè)譯 碼器中,譯碼后 45 字就在兩個(gè) LED 中顯示出來(lái)。 電源電路 :將 220V,50HZ的交流電壓轉(zhuǎn)換成 5V直流電壓。 :利用電感和電容的阻抗特性,將整流后的單向脈動(dòng)電流中的交流分量濾去,使單向脈動(dòng)電流變換成平滑的直流電。 :當(dāng)電網(wǎng)電壓波動(dòng)或負(fù)載的變動(dòng)會(huì)導(dǎo)致負(fù)載上得到的直流電不穩(wěn)定,影響電子設(shè)備的性能,用穩(wěn)壓管,即采用一些負(fù)反饋方式的穩(wěn)壓電路,使之自動(dòng)調(diào)節(jié)不穩(wěn)定因素,從而得到穩(wěn)定電壓。 供電部分輸入 220V、 50HZ 的交流電,輸出電壓 +5V,供給整個(gè)電路電源, 電流最大為 400mA; LM17812和 LM17805負(fù)載重,功率大,加裝了散熱片。 本設(shè)計(jì)的電源電路設(shè)計(jì)圖如下: 9 圖 23 電源電路 外部晶振電路 外部晶振電路由 2個(gè) 33pF的電容和一個(gè) 12MHz的晶體振蕩器構(gòu)成。 片內(nèi)電路與片外器件構(gòu)成一個(gè)時(shí)鐘產(chǎn)生電路, CPU的所有操作均在時(shí)鐘脈沖下同步進(jìn)行。片內(nèi)振蕩器的振蕩頻率非常接近晶振頻率,一般在 ~ 12MHz之間選取, C5,C6是反饋電容,起穩(wěn)定振蕩頻率,快速起振的作用,其值在 5pF~ 33pF之間選取,典型值為 33pF。本電路選用的電容為 33pF,晶振頻率為 12MHz。 在引腳 XTAL1和 XTAL2外接晶體振蕩器,就構(gòu)成了內(nèi)部震蕩方式,內(nèi)部震蕩方式所得的時(shí)鐘信號(hào)比較穩(wěn)定,實(shí)用電路中使用較多。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生震蕩時(shí)鐘脈沖。內(nèi)部震蕩方式的外部電路如圖 24所示: 圖 24 外部晶振電路 外部振蕩信號(hào)由 X2引入, X1和 X2:片內(nèi)振蕩電路輸入、輸出引腳,這兩個(gè)端子用來(lái)外接石英晶體和微調(diào)電容。在石英晶體的兩個(gè)管腳加交變電場(chǎng)時(shí),它將會(huì)產(chǎn)生一定 頻率的機(jī)械變形,而這種機(jī)械振蕩又會(huì)產(chǎn)生交變電場(chǎng),上述物理現(xiàn)象稱為壓電效應(yīng)。一般情況下,無(wú)論是機(jī)械振動(dòng)的振幅,還是交變電場(chǎng)的振幅都非常小。但是,當(dāng)交變電場(chǎng)的頻率為某一特定值時(shí),振幅驟然增大,產(chǎn)生共振,稱之為壓電振蕩。這一特定頻率就是石英晶體的固有頻率,也稱諧振頻率,即用來(lái)連接 89C51 片內(nèi) OSC的定時(shí)反饋回路。石英晶振起振后要能在 X2 線上輸出一個(gè) 3V 左右的正弦波,以便使 MCS51 片內(nèi)的 10 OSC電路按石英晶振相同頻率自激振蕩。通常 OSC 的輸出時(shí)鐘頻率 fosc為 ~ 16 MHz,典型值為 12 MHz或者 MHz。電容 C5, C6 可以幫助起振,典型值為 33 pF,調(diào)節(jié)它們可以達(dá)到微調(diào)fosc的目的。 11 3軟件設(shè)計(jì) 本設(shè)計(jì)中采用的處理器是 AT89C51單片機(jī),由此可采用面向 MCS51的程序設(shè)計(jì)語(yǔ)言,包括 ASM51匯言和 C語(yǔ)言,這兩種語(yǔ)言各有特點(diǎn)。 C語(yǔ)言更接近機(jī)器語(yǔ)言,常用來(lái)編制與系統(tǒng)硬件相關(guān)的程序,如訪問(wèn) I/O 端口、中斷處理程序、實(shí)時(shí)控制程序、實(shí)時(shí)通信程序等;而數(shù)學(xué)運(yùn)算程序則適合用 C51高級(jí)語(yǔ)言編寫,因?yàn)橛酶呒?jí)語(yǔ)言編寫運(yùn)算程序 可提高編程效率和應(yīng)用程序的可靠性。 與以往的 80C51單片機(jī)不同, AT89C51具有在線調(diào)試和下載功能,它由支持 AT89C51的開發(fā)工具包 Keil 。也就是說(shuō),在用戶系統(tǒng)保留 AT89C51的情況下,通過(guò)開發(fā)系統(tǒng)與 AT89C51 的串行接口通信,直接對(duì)用戶系統(tǒng)進(jìn)行調(diào)試,并在調(diào)試完成后將調(diào)試好的程序下載到AT89C51 中。 Keil 開發(fā)系統(tǒng)提供四項(xiàng)功能:編譯、下載、調(diào)試和模擬,分別由 Keil 、在線串行下載器、調(diào)試器和模 擬器來(lái)實(shí)現(xiàn)。 Keil 在 Windows操作系統(tǒng)下直接使用,編譯匯編源程序,并生成 16 進(jìn)制文件和列表文件。串行下載器是一個(gè)軟件程序,它允許通過(guò)標(biāo)準(zhǔn) PC 機(jī)上的串口串行下載匯編程序到片內(nèi) 8kB的閃速程序存儲(chǔ)器中。調(diào)試器采用 Windows系統(tǒng),允許用戶使用 AT89C51的 UART串行接口在芯片上調(diào)試代碼執(zhí)行。在典型調(diào)試對(duì)話中,調(diào)試器提供對(duì)片內(nèi)所有外圍設(shè)備的訪問(wèn)、單步和設(shè)置斷點(diǎn)的代碼執(zhí)行控制方式。模擬器采用 Windows系統(tǒng),能完全模擬 AT89C51的所有功能。模擬器使用簡(jiǎn)單,結(jié)合了許多 標(biāo)準(zhǔn)調(diào)試特征,包括多斷點(diǎn)、單步以及代碼執(zhí)行跟蹤等能力。 主程序功能單一化,只對(duì)各子程序進(jìn)行控制、調(diào)動(dòng),使整個(gè)程序成為有機(jī)的整體。軟件主程序是系統(tǒng)的監(jiān)控程序,主要工作流程為:系統(tǒng)在上電以后進(jìn)入初始化狀態(tài),將系統(tǒng)中所有的接口模式、狀態(tài)以及有關(guān)的存儲(chǔ)單元置位成初始狀態(tài),然后恢復(fù) AT89C51的 P1口 (控制輸出 )的工作狀態(tài)。 主程序流程圖 本設(shè)計(jì)主程序流程如圖 31所示。 程序啟動(dòng)后,首先清理系統(tǒng)內(nèi)存,然后對(duì)溫度進(jìn)行采集,通過(guò)溫度采集芯片內(nèi)部轉(zhuǎn)換后,傳輸?shù)絾纹瑱C(jī),由單片 機(jī)控制顯示設(shè)備,顯示現(xiàn)在的溫度,然后系統(tǒng)進(jìn)入待機(jī)狀態(tài),等待鍵盤輸入設(shè)定溫度,系統(tǒng)將設(shè)定溫度與現(xiàn)在溫度進(jìn)行比較,得出結(jié)果,啟動(dòng)制冷系統(tǒng)或者加熱系統(tǒng)。 12 圖 31 主程序流程圖 DS18B20的溫度采樣程序流程圖 CPU對(duì) DS18B20的訪問(wèn)流程是:先對(duì) DS18B20初始化,再進(jìn)行 ROM操作命令,最后才能對(duì)存儲(chǔ)器和數(shù)據(jù)進(jìn)行操作。 DS18B20每一步操作都要遵循嚴(yán)格的工作時(shí)序和通信協(xié)議。如主機(jī)控制 DS18B20完成溫度轉(zhuǎn)換 這一過(guò)程,根據(jù) DS18B20 的通訊協(xié)議,須經(jīng)三個(gè)步驟:每一次讀寫之前都要對(duì) DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條 ROM指令,最后發(fā)送 RAM指令,這樣才能對(duì) DS18B20進(jìn)行預(yù)定的操作。DS18B20工作的流程 如圖 32。 13 圖 32 溫度采樣框 程序如下: float tt。 Init_DS18B20()。 // 初始化 ds18b2子函數(shù) delay_MS(1)。 WriteOneChar(0xcc)。 // 跳過(guò) ROM命令 WriteOneChar(0xbe)。 // 發(fā)送讀取數(shù)據(jù)命令 temp_data[0]=ReadOneChar()。 // 連續(xù)讀兩個(gè)字節(jié)數(shù)據(jù) temp_data[1]=ReadOneChar()。 temp1=temp_data[1]。 temp1=8。 temp1=temp1|temp_data[0]。 // 兩字節(jié)合成一個(gè)整型變量。 return temp1。 // 返回溫度值 } void tem_deal(uint tem) /* 溫度數(shù)據(jù)顯示處理函數(shù) */ { if(tem6348) // 溫度值正負(fù)判斷 { tem=65536tem。 flag1=1。 } // 負(fù)溫度求補(bǔ)碼 ,標(biāo)志位置 1 else flag1=0。 Dis_ram[0]=temamp。0x0f。 // 取小數(shù)部分的值 14 Dis_play[3]=Dis_ram[0]。 // 存入小數(shù)部分顯示值 Dis_ram[0]=tem4。 // 取中間八位 ,即整數(shù)部分的值 Dis_play[0]=Dis_ram[0]/100。 // 取百位數(shù)據(jù)暫存 Dis_play[2]=Dis_ram[0]%100。 // 取后兩位數(shù)據(jù)暫存 if(Dis_play[2]=XX) Dis_play[4]=1 。 else Dis_play[4]=0 。 if(Dis_play[2]=SX) Dis_play[5]=1 。 else Dis_play[5]=0 。 Dis_play[1]=Dis_play[2]/10。 // 取
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1