国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單片機(jī)的線上教學(xué)時(shí)間顯示系統(tǒng)設(shè)計(jì)

2023-06-09 04:12何小映
電子制作 2023年8期
關(guān)鍵詞:進(jìn)度條矩陣式流程圖

何小映

(西安航空學(xué)院 電子工程學(xué)院,陜西西安,710077)

0 引言

2019 年底,爆發(fā)了新冠疫情,受此影響,疫情地區(qū)的學(xué)校授課轉(zhuǎn)為線上[1],與線下授課不同,線上授課學(xué)生和教師大部分分散在不同地點(diǎn),不像在學(xué)校,大家集中在一起上課,有計(jì)時(shí)系統(tǒng)計(jì)時(shí),到時(shí)自動(dòng)打鈴[2]。網(wǎng)課期間,師生只能自己記下學(xué)校作息時(shí)間,自己通過看手機(jī)等計(jì)時(shí)工具,自己提醒自己造成一定的困擾。針對(duì)這一問題,設(shè)計(jì)了作息時(shí)間顯示系統(tǒng)。

1 系統(tǒng)整體結(jié)構(gòu)

該系統(tǒng)包括時(shí)鐘模塊、矩陣式鍵盤、單片機(jī)、液晶顯示器,系統(tǒng)的整體結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)整體結(jié)構(gòu)圖

時(shí)間由時(shí)鐘模塊提供,矩陣式鍵盤用來輸入時(shí)間和日期、星期的初始值,作息時(shí)間將會(huì)在液晶顯示器LCD12864B 上相應(yīng)的位置進(jìn)行顯示。

2 系統(tǒng)硬件部分

■2.1 時(shí)鐘模塊

時(shí)鐘模塊主要由DS1302、晶振組成、紐扣電池,DS1302 是美國(guó)DALLAS 公司的產(chǎn)品,具有涓細(xì)電流充電能力,采用串行方式傳輸數(shù)據(jù)。晶振頻率為32.768kHz,是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘[3]。具有年、月、日、星期、時(shí)、分、秒寄存器,具有閏年補(bǔ)償功能,工作電壓為2.0V ~5.5V[4]。采用三線接口與單片機(jī)進(jìn)行通信,單片機(jī)可以給它不同的寄存器寫入數(shù)據(jù),也可以從它不同的寄存器讀取數(shù)據(jù),其接口如圖2所示。

圖2 DS1302 接口

其中,VCC1 為后備電源,等于系統(tǒng)電源5V,VCC2 為主電源,等于3.6V,當(dāng)系統(tǒng)上電時(shí),因?yàn)閂cc1>Vcc2,由Vcc1 供電,當(dāng)系統(tǒng)斷電時(shí),由VCC2 供電[5],DS1302 繼續(xù)計(jì)時(shí)。/RST 是復(fù)位/片選線,SCLK 為時(shí)鐘輸入端,I/O 為雙向串行數(shù)據(jù)輸入輸出端。

■2.2 矩陣式鍵盤

DS1302的矯正日期、星期、時(shí)間值的輸入采用矩陣式鍵盤實(shí)現(xiàn)[6],由4×4 鍵盤構(gòu)成[7],電路如圖3所示。

圖3 矩陣式鍵盤

行線連接到P2.0~P2.3,列線連接到P2.4~P2.7,一共有0~9 共10個(gè)數(shù)字鍵,另有四個(gè)功能鍵,分別表示左移、右移、確認(rèn)、退出,括號(hào)中為該鍵的鍵值(16 進(jìn)制)。按鍵的分析采用行列反轉(zhuǎn)法,P2口先輸出0xF0,再讀取P2口的值,讀取的值保留高四位,然后P2口輸出0X0F,再次讀取P2口的值并保留低四位,所得結(jié)果與前次保留的結(jié)果進(jìn)行或運(yùn)算,就能得出每個(gè)鍵分別按下時(shí)的鍵值,再根據(jù)鍵值就可以判斷該鍵的類型,如果是數(shù)字鍵,則此值即為要設(shè)置的時(shí)間參數(shù)的高位或低位(由程序進(jìn)行判斷)。如果是功能鍵,就執(zhí)行相應(yīng)的功能。

■2.3 液晶顯示器

顯示器采用LCD12864B, 該顯示器的控制器為ST7920,可以顯示常用漢字,數(shù)字,英文字符及圖形,與單片機(jī)的接口電路如圖4所示[8]。

圖4 LCD12864B 與單片機(jī)接口

圖中GND為電源負(fù)極,接地。VCC 為電源正極,接+5V,VO 為對(duì)比度調(diào)節(jié)端,接電位器。RS=1 時(shí),表示傳輸?shù)氖菙?shù)據(jù),RS=0 時(shí),表示傳輸?shù)氖强刂浦噶?。R/W=1時(shí),單片機(jī)從LCD12864 讀出數(shù)據(jù),R/W=0 時(shí),單片機(jī)寫入數(shù)據(jù)到LCD12864B,E 為使能端,D0~D7 為8位數(shù)據(jù),PSB=1 時(shí),采用并行模式,PSB=0 時(shí),采用串行模式,/RESET 為復(fù)位端,低電平有效。Vout 為模塊驅(qū)動(dòng)電壓輸出端,A 為背光電源正極,接+5V,K 為背光電源負(fù)極,接地。

■2.4 改值請(qǐng)求電路

當(dāng)顯示的日期時(shí)間與當(dāng)前日期時(shí)間不一致時(shí),需要進(jìn)行矯正,矯正請(qǐng)求方式采用單片機(jī)外部中斷0,接口電路如圖5所示。

圖5 時(shí)間日期矯正請(qǐng)求

在主程序中,設(shè)置EA=1,允許總中斷。EX0=1,允許外部中斷0 中斷,當(dāng)需要矯正日期時(shí)間時(shí),按圖5 中的按鍵,程序進(jìn)入外部中斷0 中斷函數(shù),進(jìn)行初始值設(shè)置。

硬件整體電路圖如圖6所示。

圖6

3 系統(tǒng)軟件部分

軟件包括主函數(shù)和中斷處理函數(shù)及其他函數(shù)。采用C51語(yǔ)言編寫。

■3.1 主函數(shù)程序設(shè)計(jì)

主函數(shù)程序流程圖如圖7所示。

圖7 主函數(shù)程序流程圖

圖中xjc 表示節(jié)次,因?yàn)槊抗?jié)課的時(shí)間區(qū)間是固定的,比如第一節(jié)課是08:30-09:15,如果當(dāng)前時(shí)間是08:40, 則xjc=1。 如 果xjc!=0,表示當(dāng)前為上課時(shí)間,則顯示該節(jié)課所處的節(jié)次、起始時(shí)間、進(jìn)度條、截止時(shí)間。

上課期間,使用進(jìn)度條可以顯示當(dāng)前上課時(shí)間進(jìn)度,此時(shí)需要將顯示模式切換為擴(kuò)展模式,用來顯示圖形,進(jìn)度條顯示在第四行中間位置,占6個(gè)字節(jié)位置,一行48個(gè)點(diǎn),共16 行,當(dāng)給某點(diǎn)送“1”時(shí)點(diǎn)亮該點(diǎn),送“0”時(shí)該點(diǎn)熄滅,通過點(diǎn)亮、熄滅某些點(diǎn)就能顯示進(jìn)度條。一節(jié)課45 分鐘,一行多出3個(gè)點(diǎn),所以第一分鐘每行點(diǎn)亮最左邊3個(gè)點(diǎn),后面每1 分鐘每行就向右多點(diǎn)亮一個(gè)點(diǎn),進(jìn)度條顯示程序流程如圖8所示。

圖8 進(jìn)度條顯示流程圖

圖8中,thl 為每行需點(diǎn)亮的點(diǎn)數(shù),計(jì)算方法是:當(dāng)前時(shí)間的小時(shí)和分鐘折合成分鐘減去該節(jié)課的起始時(shí)間的小時(shí)和分鐘折合成的分鐘數(shù)再加3,例如第一節(jié)課時(shí)間是08:30-09:15,如果當(dāng)前時(shí)間是09:10,則thl的值如公式(1)所示。

qcthl 為上次每行需點(diǎn)亮的點(diǎn)數(shù),初始值為0,則thl>qcthl 成立,執(zhí)行qcthl=thl 來控制進(jìn)度條更新的頻率,因?yàn)閠hl 每分鐘更新一次,在一分鐘之內(nèi)qcthl=thl 始終成立,所以為進(jìn)度條每分鐘更新一次,另外,qcthl的值需要在休息時(shí)間程序段中再次清0,否則一節(jié)課結(jié)束,qcthl為最大值,后面上課時(shí)間的進(jìn)度條不會(huì)顯示。jsjdt(thl)函數(shù)計(jì)算進(jìn)度條數(shù)組jdt[ ]的值,jdt[ ]數(shù)組共7個(gè)數(shù),此處jdt[0]=0,jdt[1]=jdt[2]=jdt[3]=jdt[4]=jdt[5]=0xFF;jdt[6]=0xE0,共43個(gè)“1”,對(duì)應(yīng)一行共43個(gè)點(diǎn)點(diǎn)亮,第一個(gè)值jdt[0]=0是因?yàn)檫M(jìn)度條在08:30 后面顯示,而顯示圖形時(shí),1個(gè)列號(hào)包含兩個(gè)字節(jié),08:30 是5個(gè)字節(jié),進(jìn)度條從第二個(gè)列號(hào)開始顯示,故第一字節(jié)被起始時(shí)間08:30的最后一個(gè)數(shù)字“0”占據(jù),所以該字節(jié)所在的八個(gè)點(diǎn)為0,否則起始時(shí)間分值的個(gè)位會(huì)被占據(jù)無法正常顯示。dis(48,2,7,16,jdt)表示將jdt[]數(shù)組中的點(diǎn)陣數(shù)據(jù)從第48 行,第2 列號(hào)開始顯示出來,共16 行,7個(gè)字節(jié)數(shù)據(jù),實(shí)際每行顯示點(diǎn)陣的為6個(gè)字節(jié),如前所述。

如果xjc=0,則當(dāng)前為休息時(shí)間,先使qcthl=0(如前述),然后清屏第三四行內(nèi)容,再在第四行顯示“休息到XX:XX”,因?yàn)樾菹r(shí)間至少十分鐘,所以由變量控制僅在休息時(shí)間的第一分鐘清屏三、四行。

■3.2 矩陣式鍵盤處理程序

矩陣式鍵盤用來設(shè)置初始值,當(dāng)日期、星期、時(shí)間不正確時(shí)需要進(jìn)行矯正,此時(shí)按圖5 中的按鍵,程序進(jìn)入外部中斷0 服務(wù)程序,該程序的流程圖如圖9所示。

圖9 中斷0 服務(wù)程序流程圖

圖9流程圖中,sethang 確定要設(shè)置的兩位數(shù)字的行地址,setlie 確定要設(shè)置的兩位數(shù)字的列地址,12864B 一共有四行,第一行到第四行的地址分別為:0x80,0x90,0x88,0x98。本系統(tǒng)中要設(shè)置的參數(shù)位于第一二行,其中年、月、日、星期在第一行設(shè)置,sethang=0x80,對(duì)應(yīng)的setlie 分別為:0x00,0x02,0x04,0x06,時(shí)、分、秒在第二行顯示,sethang=0x90,對(duì)應(yīng)的setlie=0x02,0x04,0x06,gbwz 變量表示七個(gè)要設(shè)置的變量,其值為0~6,分別對(duì)應(yīng)年、月、日、星期、時(shí)、分、秒。szjax 變量是數(shù)字鍵按下標(biāo)志位,當(dāng)數(shù)字鍵按下時(shí)其值為1,certn 是確認(rèn)鍵按下標(biāo)志,只有先按下數(shù)字鍵,再按確認(rèn)鍵時(shí),certn的值才變化。由流程圖可知,如果第一次就按功能鍵,不會(huì)影響閃動(dòng)位置處的值。

4 結(jié)論

圖10為第一節(jié)課前、課中、課后的時(shí)間信息顯示。

從圖10可以看出,該系統(tǒng)能夠顯示日期,星期,時(shí)間,當(dāng)當(dāng)前時(shí)間為上課時(shí)間,則顯示當(dāng)前節(jié)次及該節(jié)課起始時(shí)間、進(jìn)度條、截止時(shí)間,如果當(dāng)前為休息時(shí)間,則顯示休息到下節(jié)課上課時(shí)間,滿足了網(wǎng)課期間作息時(shí)間的提示要求。

圖10 作息時(shí)間顯示實(shí)例

猜你喜歡
進(jìn)度條矩陣式流程圖
“進(jìn)度條”思維
電除塵矩陣式電磁振打器控制系統(tǒng)改進(jìn)優(yōu)化
為什么進(jìn)度條到99%就不動(dòng)了
為什么進(jìn)度條到99%就不動(dòng)了
為什么進(jìn)度條到99%就不動(dòng)了
專利申請(qǐng)審批流程圖
專利申請(qǐng)審批流程圖
基于Quasi-Z源矩陣式變換器電壓傳輸比的研究
寧??h村級(jí)權(quán)力清單36條
安森美半導(dǎo)體最新矩陣式全LED前照燈方案