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

正文內(nèi)容

基于單片機的電子萬年歷帶計算器-免費閱讀

2024-12-12 02:44 上一頁面

下一頁面
  

【正文】 LcdShowStr(16len1, 0, str1)。 } len = LongToString(str, (s32)number) LcdShowStr(16lenpointnum,1,str)。n=9) { if(i==0amp。 num2 = num2*10 + n。 } len = LongToString(str, (s32)number) LcdShowStr(16lenpointnum,1,str)。amp。 ZeroFlag=0。\039。 num2 = 0。 case 1: LcdShowStr(0, y, )。amp。 timext=0。 //開總中斷 ConfigTimer0(1)。 extern void LcdAreaClear(u8 x, u8 y, u8 len)。 // extern void InitDS1302(void)。float result = 0。u8 len1。}。 typedef signed long s32。 //設(shè)置起始地址 while (len) //連續(xù)寫入空格 { LcdWriteDat(39。) //連續(xù)寫入字符串?dāng)?shù)據(jù),直到檢測到結(jié)束符 { LcdWriteDat(*str++)。 LCD1602_E = 0。 LCD1602_DB = cmd。 do { LCD1602_E = 1。 default: break。 KEY_OUT_2 = 0。 0x0F) == 0x0F) KeySta[4][k] = 1。 0x0F) == 0x00) { //連續(xù) 4 次掃描值為 0,即 4*4ms 內(nèi)都是按下狀態(tài)時,可認為按鍵已穩(wěn)定的按下 KeySta[keyout][i] = 0。 keybuf1[1] = (keybuf1[1] 1) | KEY_IN_Switch。 j4。 } else //已處于設(shè)置狀態(tài)時,保存時間并退出設(shè)置狀態(tài) { ExitTimeSet(1)。amp。 } else if(keycode == 0x27) { OprtKeyAction(3)。039。.39。 //初始顯示一個數(shù)字 0 timext=1。 extern void LeftShiftTimeSet()。 extern void GetResult()。,39。, 39。, 0x26 }, //數(shù)字鍵 數(shù)字鍵 數(shù)字鍵 向上鍵 { 39。 sbit KEY_IN_Switch = P3^6。 sbit KEY_IN_2 = P2^5。 dat = DS1302SingleRead(0)。 buf[2] = timehour。 timesec = buf[0]。 } DS1302_CE = 0。 i++) //連續(xù)寫入 8 字節(jié)數(shù)據(jù) { DS1302ByteWrite(dat[i])。 //發(fā)送讀寄存器指令 dat = DS1302ByteRead()。 //再拉低時鐘,完成一個位的操作 } return dat。 //再拉低時鐘,完成一個位的操作 } DS1302_IO = 1。 /* 發(fā)送一個字節(jié)到 DS1302 通信總線 上 */ void DS1302ByteWrite(unsigned char dat) { unsigned char mask。 extern void LcdCloseCursor()。 sbit DS1302_CE = P3^5。 本次課程設(shè)計是對以前學(xué)過的理論知識進行了鞏固,加深了理解,提高了應(yīng)用的能力,提高了自己的發(fā)現(xiàn)、分析、解決問題的能力;也增加了團隊合作的精神,我們分工明確,每人負責(zé)不 同的工作,做到了人人到參與到作品設(shè)計中,還有更重要的就是提升了自己的動手(實踐)能力。 圖 經(jīng)過此次的軟件仿真,仿真結(jié)果正常,可以順利的進行硬件制作。 、 LCD1602 的顯示電路 本設(shè)計采用液晶屏 LCD1602 來顯示輸出數(shù)據(jù),通過 D0D7 引腳向 LCD 寫指令字或?qū)憯?shù)據(jù)以使 LCD 實現(xiàn)不同的功能或顯示相應(yīng)的數(shù)據(jù)。本系統(tǒng)中的后備電源采用 3v 的電子電源,其壽命可達一年以上。 有 31*8 位的額外數(shù)據(jù)暫存寄存器 (即 RAM,掉電丟失 ) 最少 I/O 引腳傳輸,通過三引腳控制 工作電壓: 工作電流小于 300nA () 讀寫時鐘寄 存器或內(nèi)部 RAM(31*8 位的額外 數(shù)據(jù)暫存寄存 )可以采用單字節(jié)模式 (一次讀寫單個字節(jié) )和突發(fā)模式 (一次讀寫多個字節(jié) ) 8pin DIP (直插封裝 )或 8pin SOICs(貼片封裝 ) 第 11 頁 、 DS1302 的引腳功能 、 DS1302 電路原理圖 : 電路原理圖如圖 , DS1302 與單片機的連接也僅需要 3 條線: CE 引腳、 SCLK串行時鐘引腳、 I/O 串行數(shù)據(jù)引腳, Vcc2 為備用電源,外接 晶振,為芯片提供計時脈沖。當(dāng) RST 為高電平時,所有的 數(shù)據(jù)傳送 被初始化,允許對 DS1302 進行操作。 第 10 頁 、 DS1302 的結(jié)構(gòu) DS1302 的引腳排列 ,其中 Vcc1 為后備電源, VCC2 為主電源。 第 6 腳: E 端為使能端,當(dāng) E 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。字符型 LCD 通常有 14條引腳線或 16 條引腳線的 LCD,多出來的 2 條線是背光電源線 VCC(15 腳 )和地線 GND(16 腳 ),其控制原理與 14 腳的 LCD 完全一樣。 STC89C52 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié) Flash, 256 字節(jié) RAM, 32 位 I/O 口線,看門狗定時器, 2 個數(shù)據(jù)指針, 3 個 16 位定時器 /計數(shù)器, 1 個 6 向量 2 級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。簡易計算器不僅可以進行簡易的計算還可以顯示時間。本次設(shè)計在電子萬年歷的基礎(chǔ)上加上了計算器,通過切換鍵來實現(xiàn)兩個功能的互換。本次設(shè)計選用 DALLAS 公司生產(chǎn)的日歷時鐘芯片 DS1302 來作為實時時鐘芯片,為本系統(tǒng)提供詳細的年、月、日和小時、分鐘、秒等時間信息,而且 DS1302 的使用壽命長,誤差小,功耗低等優(yōu)點。本設(shè)計要制作的就是單片機于生活中最為常見的幾種應(yīng)用 —— 簡易計算器和電子萬年歷。使用 Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)89C51 產(chǎn)品指令和引腳完全兼容 。 單片機的最小系統(tǒng)如下圖 所示 ,18 引腳和 19 引腳接時鐘電路 ,XTAL1 第 6 頁 接外部晶振和微調(diào)電容的一端 ,在片內(nèi)它是振蕩器倒相放大器的輸入 ,XTAL2 接外部晶振和微調(diào)電容的另一端 ,在片內(nèi)它是振蕩器倒相放大器的輸出。 第 4 腳: RS 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。采用三線接口與 CPU 進行 同步通信 ,并可采用突發(fā)方式一次傳送多個字節(jié)的 時鐘信號 或 RAM 數(shù) 據(jù)。 X1 和 X2 是振蕩源,外接 晶振。 SCLK 為時鐘輸入端。起振電容 22pF 對振蕩器的頻率高低、振蕩器的穩(wěn)定性和起振的快速性影響較合適,復(fù)位電路為按鍵高電平復(fù)位。矩陣鍵盤采用四條 I/O 線作為行線,四條 I/O 線作為列線組成鍵盤,在行線和列線的每個交叉點上設(shè)置一 第 14 頁 個按鍵。 我們用 proteus 繪制的仿真圖如下: 圖 、 軟件仿真 在硬件設(shè)計完成后,利用軟件對其進行仿真,這樣,就會減少在做硬件時的錯誤,做到更準(zhǔn)確。)我們的硬件測試比較順利,以下為實物演示圖。 第 18 頁 第八章 致謝 在此也很感謝學(xué)校和老師給我們提供了這樣的平臺,能使我 們的動手能力增強;感謝老師對我們提供的幫助,感謝老師帶給我們新的知識,使我們順利地完成本次的課程設(shè)計。 //時間設(shè)置索引 extern void LcdShowStr(u8 x, u8 y, u8 *str)。 //時 unsigned char min。else DS1302_IO = 0。 mask=1) //低位在前,逐位讀取 { if (DS1302_IO != 0) //首先讀取此時的 IO 引腳,并設(shè)置 dat 中的對應(yīng)位 { dat |= mask。 //除能片選信號 } /* 用單次 讀操作從某一寄存器讀取一個字節(jié), reg寄存器地址,返回值 讀到的字節(jié) */ unsigned char DS1302SingleRead(unsigned char reg) { unsigned char dat。 DS1302ByteWrite(0xBE)。 //發(fā)送突發(fā)讀寄存器指令 for (i=0。 timeday = buf[3]。 buf[5] = timeweek。 struct sTime code InitTime[] = { //2020 年 10 月 8 日 12:30:00 星期二 0x2020,0x10,0x08, 0x12,0x30,0x00, 0x02 }。 //設(shè)置 DS1302 為默認的初始時間 } } 鍵盤按鍵程序 include typedef unsigned char u8。 sbit KEY_OUT_3 = P2^1。239。639。039。 extern u8 setIndex 。 extern void IncSetTime()。) { SwitchFuction=1SwitchFuction。 (keycode = 39。) { PointFlag=1。 } else if(keycode == 0x26) { OprtKeyAction(0)。 } } if(SwitchFuction==0) { if ((keycode=39。 } else if (keycode == 0x25) //向左鍵,向左切換設(shè)置位 第 23 頁 { LeftShiftTimeSet()。 for (i=0。 //矩陣按鍵掃描輸出索引 static unsigned char keybuf[4][4] = { //矩陣按鍵掃描緩沖區(qū) {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF} }。 //消抖后更新按鍵狀態(tài) 第 24 頁 for (i=0。k++) { if((keybuf1[k]amp。 KEY_OUT_1 = 0。 case 3: KEY_OUT_3 = 1。 LCD1602_DB = 0xFF。 //bit7 等于 1 表示液晶正忙,重復(fù)檢測直到其等于 0 為止 } /* 向 LCD1602 液晶寫入一字節(jié)命令, cmd待寫入命令值 */ void LcdWriteCmd(unsigned char cmd) { LcdWaitReady()。 LCD1602_RW = 0。 //設(shè)置 RAM 地址 } /* 在液晶上顯示字符串, (x,y)對應(yīng)屏幕上的起始坐標(biāo), str字符串指針 */ void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str) { LcdSetCursor(x, y)。 //顯示器開,光標(biāo)關(guān)閉 LcdWriteCmd(0x06)。 typedef unsigned int u16。 unsigned char min。s16 temp=0 。long number=0。 //
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1