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

正文內(nèi)容

基于單片機(jī)的電子鐘課程畢業(yè)設(shè)計(jì)論文(參考版)

2025-06-30 20:19本頁(yè)面
  

【正文】 // 寫涓流充電寄。 //去保護(hù) reset_3w()。 wbyte_3w(0x8e)。 }void ds1302_init() /* initialize time amp。 reset_3w()。 wbyte_3w(Clock_Add)。}uchar read_byte(uchar Clock_Add) // 從DS1302讀一個(gè)字節(jié){ uchar Clock_Data。 wbyte_3w(0)。 wbyte_3w(hex2bcd[day_of_week])。 wbyte_3w(hex2bcd[date])。 //寫入初始化時(shí)間 wbyte_3w(hex2bcd[min])。 //復(fù)位 wbyte_3w(CLOCK_BURST_ADD)。 reset_3w()。 wbyte_3w(Clock_Add)。 } return R_Byte。 R_Byte = 1。 TmpByte = (uchar)IO。 i++) { SCLK = 1。 for(i = 0。 R_Byte = 0x00。 uchar R_Byte。 W_Byte = 1。 } SCLK = 0。 if(W_Byte amp。 i 8。 //啟動(dòng)數(shù)據(jù)傳送}void wbyte_3w(uchar W_Byte) //寫字節(jié)子程序{ uchar i。 RST = 0。uchar code bcd2hex[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, /* 0009 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, /* 1019 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, /* 2029 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, /* 3039 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, /* 4049 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, 0, 0, 0, 0, 0, /* 5059 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, /* 6069 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, /* 7079 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 0, 0, 0, 0, 0, 0, /* 8089 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, 0, 0, 0, 0, 0, /* 9099 */}。 //定義管腳RSTuchar sec,min,hour,date,month,year。 //定義管腳SCLKsbit IO = P3^6。void ds1302_task()。void write_clock_burst()。void write_byte(uchar Clock_Add,uchar Clock_Data)。void wbyte_3w(uchar)。void sendbyte()。 //14:28 /*定義寄存器地址*/ define READ_SEC_ADD 0x81 //讀秒寄存器define READ_MIN_ADD 0x83 //讀分寄存器define READ_HOUR_ADD 0x85 //讀時(shí)寄存器define READ_DATE_ADD 0x87 //讀日寄存器define READ_MONTH_ADD 0x89 //讀月寄存器define READ_DOW_ADD 0x8B //讀周寄存器define READ_YEAR_ADD 0x8D //年寄存器define WRITE_SEC_ADD 0x80 //寫秒寄存器define WRITE_MIN_ADD 0x82 //寫分寄存器define WRITE_HOUR_ADD 0x84 //寫時(shí)寄存器define WRITE_DATE_ADD 0x86 //寫日寄存器define WRITE_MONTH_ADD 0x88 //寫月寄存器define WRITE_DOW_ADD 0x8A //寫周寄存器define WRITE_YEAR_ADD 0x8C //寫年寄存器define CLOCK_BURST_ADD 0xBE //時(shí)鐘多字節(jié)傳送模式extern void write_clock_burst()。 uchar clk_hour=14。 uchar year=8。uchar date=12。 uchar min=25。void ds1302_task()。void write_clock_burst()。void write_byte(uchar Clock_Add,uchar Clock_Data)。void wbyte_3w(uchar)。 //延時(shí); beeper=1。 //鬧鈴子程序; disp_time()。 //DS1302子程序;ds18b20()。 //初始化鬧鈴管腳;while(1) //循環(huán); { key_task()。 }void main() //主程序;{ ds1302_init()。c120。b10。atime。void delay(unsigned int time) //10ms延時(shí){ unsigned char a,b,c。void ds18b20()。void lcd_disp_time1()。void ds1302_init()。uchar read_byte(uchar)。uchar rbyte_3w()。void reset_3w()。void dis()。 extern bit alarm_flag。extern bit flash_flag。 //;define uint unsigned intdefine uchar unsigned chardefine true 1 //定義true=1;define false 0 //定義false=0;define FUNCTION 0xDF //定義FUN鍵值為DFH;define UP 0xEF //定義UP鍵值為EFH;define DOWN 0xF7 //定義DOWN鍵值為F7H;define ALARM 0xFB //定義ALARM鍵值為FBH;define Ente_Snooze 0xFB //定義E/S鍵值為BFH;void key_task(void)。 //定義確認(rèn)/;sbit Alarm=P2^1。 //;sbit DOWN=P2^3。 //。 //;sbit WDZ=P2^6。 //74LS164的A;sbit CLK=P1^1。由于筆者能力有限,提供的程序還可以進(jìn)一步優(yōu)化,并且還可以根據(jù)需求為電子時(shí)鐘增設(shè)新功能。所以多功能電子時(shí)鐘有多種實(shí)現(xiàn)方案,能夠?qū)崿F(xiàn)的功能也很多,筆者已經(jīng)通過仿真和調(diào)試,實(shí)現(xiàn)了時(shí)間日歷顯示和校對(duì)、鬧鈴等功能?;趩纹瑱C(jī)實(shí)現(xiàn)電子時(shí)鐘,僅僅是眾多方法之一。隨著生產(chǎn)力的發(fā)展,社會(huì)的進(jìn)步,生產(chǎn)生活對(duì)時(shí)鐘的需求越來越大,對(duì)時(shí)鐘的體型、功能的要求也各有不同。源程序見附錄A。例如:If(K7==0){alarm_flag= true。溫度顯示子程序與時(shí)間顯示子程序原理相同,源程序見附錄A 鍵盤子程序調(diào)試依據(jù)設(shè)計(jì)要求,鍵盤子程序需要完成對(duì)時(shí)間/日歷的校對(duì)、日期/溫度的顯示和鬧鈴的開關(guān)。由于條件限制,筆者無法做出溫度采集部分,所以應(yīng)用了Proteus軟件進(jìn)行仿真。為了能正常顯示溫度,需要將讀取到的TL和TH組合成一個(gè)字節(jié),再轉(zhuǎn)換成十進(jìn)制數(shù)。 環(huán)境溫度采集子程序調(diào)試DS18B20溫度傳感器使用起來非常方便,不但接線少,而且編程容易。將這三部分調(diào)試成功,那么整個(gè)設(shè)計(jì)的軟件部分也就基本完成了。 軟件調(diào)試在硬件調(diào)試完畢的基礎(chǔ)上,需要進(jìn)一步完善程序,也就是進(jìn)入軟件調(diào)試階段。}日歷顯示子程序原理與時(shí)鐘顯示子程序原理相同,源程序見附錄A該程序的功能是:當(dāng)按下K7時(shí),第1~6位LED數(shù)碼管馬上由時(shí)間顯示日期。源程序見附錄A 按鍵電路調(diào)試按鍵電路比較簡(jiǎn)單,故調(diào)試起來也很容易。上電后LED數(shù)碼管顯示“142800”,之后開始走時(shí)。檢查無誤后可以上電檢查。4. 編寫DS1302的時(shí)鐘/日歷程序,只要求能夠正確顯示時(shí)間。該晶振體型比較小,在焊接時(shí)要小心,注意不要將晶振引腳弄斷。2. 注意電源正負(fù)極連接。在與單片機(jī)連接的過程中需要注意以下幾點(diǎn):1. 清楚DS1302與單片機(jī)連接的管腳。 delay_50ms(10)。 led=led1。 CLK=0。 if (led1==0x1) DAT=1。jj++) { led1=ledamp。 for(jj=0。gsb7。 disp_buffer[6]=tab[6]。 disp_buffer[4]=tab[4]。 disp_buffer[2]=tab[2]。 disp_buffer[0]=tab[0]。j) {。t) for(j=6245。 for(。unsigned char tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f }。sbit CLK=P1^1。 void sendbyte()。以下是筆者編寫的一段顯示程序:上電后,7位數(shù)碼管分別顯示0~6。5. 編寫一段顯示程序,燒錄進(jìn)單片機(jī),、。、B腳。2. 因?yàn)槭且莆伙@示,所以需要注意前一位74LS164的QH腳要與下一位74LS164的A、B腳連接。在連接顯示電路之前要明確共陰型8段LED的10個(gè)管腳與各段發(fā)光二極管的對(duì)應(yīng)關(guān)系,熟悉74LS164管腳位置,然后才能開始進(jìn)行連接[19]。 delay()。n8。 while(1) { P1=0xFFH。}void main(){ unsigned int n。k0。j0。i0。筆者編輯了使一組P1口點(diǎn)亮8個(gè)發(fā)光二極管循環(huán)點(diǎn)亮的程序,程序代碼如下:include void delay(void) //延時(shí)子程序{ Unsigned char i, j,k。筆者在制作外部接口電路時(shí)使用的是排針,焊接時(shí)容易出現(xiàn)管腳之間短路,所以在上電以前必須先排查電路。3. 如果使用P0口做I/O口,要接上拉電阻。2. 單片機(jī)電源要連接正確,并且保證AT89C51的31號(hào)引腳接高電平。筆者根據(jù)自己實(shí)際制作該多功能電子時(shí)鐘的經(jīng)驗(yàn),將調(diào)試過程介紹如下: 硬件調(diào)試 單片機(jī)基礎(chǔ)電路調(diào)試單片機(jī)基礎(chǔ)電路包括電源、單片機(jī)、外部時(shí)鐘震蕩電路、復(fù)位電路和外部接口電路。然后,要準(zhǔn)備好調(diào)試的工具。為了正確顯示時(shí)間,接下來還要確定顯示電路能否正常工作。在調(diào)試過程中,首先必須明確調(diào)試順序。筆者應(yīng)用的仿真軟件為Proteus。還有一種方式,即應(yīng)用仿真軟件搭建電路的軟件平臺(tái),再導(dǎo)入程序進(jìn)行仿真調(diào)試。在軟件調(diào)試
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1