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

正文內(nèi)容

基于51單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷課程設(shè)計(jì)(已修改)

2025-03-20 04:56 本頁(yè)面
 

【正文】 基于 51 單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷 基于 51 單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷 一. 實(shí)驗(yàn)要求 運(yùn)用單片機(jī)及相關(guān)外設(shè)實(shí)現(xiàn)以下功能: 1) 萬(wàn)年歷及時(shí)鐘顯示 2) 時(shí)間日期可調(diào) 3) 可對(duì)時(shí)間進(jìn)行整點(diǎn)報(bào)時(shí)和隨機(jī)報(bào)時(shí) 二. 方案分析 根據(jù)實(shí)驗(yàn)要求,選用 STC 公司的 8051 系列, STC12C5A16S2 增強(qiáng)型 51單片機(jī)。此單片機(jī)功能強(qiáng)大,具有片內(nèi) EEPROM、 1T 分頻系數(shù)、片內(nèi) ADC 轉(zhuǎn)換器等較為實(shí)用功能,故選用此款。 實(shí)驗(yàn)中,對(duì)日期和時(shí)間進(jìn)行顯示,顯示的字符數(shù)較多,故選用 12864LCD屏幕。該屏幕操作較為便捷,外圍電路相對(duì)簡(jiǎn)單,實(shí)用性較強(qiáng)。 為了實(shí)現(xiàn)要求中的時(shí)間日期可調(diào),故按鍵是 不可缺少的,所以使用了較多的按鍵。一方面,單片機(jī)的 I/O口較為充足;另一方面,按鍵較多,選擇的余地較大,方便編程控制。 實(shí)驗(yàn)中,并未要求對(duì)時(shí)間和日期進(jìn)行保存和掉電續(xù)運(yùn)行,所以并未添加 EEPROM 和DS12C887RTC芯片。實(shí)際上,對(duì)萬(wàn)年歷來(lái)說(shuō),這是較為重要的,但為了方便實(shí)現(xiàn)和編程的簡(jiǎn)單,此處并未添加,而是使用單片機(jī)的定時(shí)器控制時(shí)間,精度有差別。且上電默認(rèn)時(shí)間為20210101 09:00:00 之后需要手動(dòng)調(diào)整為正確時(shí)間。 要求中的語(yǔ)音報(bào)時(shí)功能,這里選用 ISD1760 芯片的模塊來(lái)幫助實(shí)現(xiàn)。此模塊通過(guò) 軟件模擬 SPI 協(xié)議控制。先將所需要的聲音片段錄入芯片的 EEPROM 區(qū)域,之后讀出各段聲音的地址段,然后在程序中定義出相應(yīng)地址予以控制播放哪一聲音片段。 三. 電路硬件設(shè)計(jì) 實(shí)際效果圖 四. 程序代碼部分 基于 51 單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷 ifndef _MAIN_H define _MAIN_H include include include include include include include include include include extern unsigned int count。 extern unsigned int key_time[8]。 extern unsigned char key_new。 extern unsigned char key_old。 extern unsigned char stop_flag。 extern unsigned char key_follow[8]。 extern unsigned int key_num[8]。 sbit BEEP=P3^7。 sbit ISD_SS=P0^7。 sbit ISD_MISO=P0^4。 sbit ISD_MOSI=P0^5。 sbit ISD_SCLK=P0^6。 extern unsigned char date_show[]。 extern unsigned char time_show[]。 extern unsigned char sec。 extern unsigned char min。 extern unsigned char hour。 extern unsigned char day。 extern unsigned char month。 extern unsigned char year_f。 extern unsigned char year_l。 extern unsigned char leap_year_flag。 基于 51 單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷 extern unsigned char update_flag。 extern unsigned char adjust_flag。 extern unsigned char key。 unsigned char report()。 endif include unsigned int count=0。 unsigned int key_num[8]=0。 unsigned char key_new=0。 unsigned char key_old=0。 unsigned char stop_flag=0。 unsigned char key_follow[8]=0。 unsigned char sec=1。 unsigned char min=0。 unsigned char hour=9。 unsigned char day=1。 unsigned char month=1。 unsigned char year_f=20。 unsigned char year_l=14。 unsigned char leap_year_flag=0。 unsigned char date_show[]=20210101。 unsigned char time_show[]=09:00:00。 unsigned char update_flag=1。 unsigned char key=0。 unsigned char adjust_flag=0。 unsigned char adjust_pos=0。 unsigned char report_flag=0。 void main() { unsigned char i。 P2=0XFF。 BEEP=0。 init()。 initinal()。 //調(diào)用 LCD字庫(kù)初始化程序 TMOD=0x01。 //使用定時(shí)器 T0 基于 51 單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷 TH0=(655361000)/256。 //定時(shí)器高八位賦初值 TL0=(655361000)%256。 //定時(shí)器低八位賦初值 */ EA=1。 //開(kāi)中斷總允許 ET0=1。 //允許 T0中斷 TR0=1。 //啟動(dòng)定時(shí)器 T0 while(1) { if(update_flag) { lcd_pos(1,0)。 for(i=0。i10。i++) write_dat(date_show[i])。 lcd_pos(2,4)。 for(i=0。i8。i++) write_dat(time_show[i])。 update_flag=0。 } if(key!=keyscan_nor()) { key=keyscan_nor()。 if(key==8amp。amp。!adjust_flag) adjust_flag=1。 if(keyamp。amp。adjust_flag) { if(key==1) { adjust_pos++。 if(adjust_pos==14) adjust_pos=0。 } else if(key==2) { if(!adjust_pos) adjust_pos=13。 else adjust_pos。 } else if(key==6) { if(!adjust_pos) sec++。 else if(adjust_pos==1) 基于 51 單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷 sec=sec+10。 else if(adjust_pos==2) min++。 else if(adjust_pos==3) min=min+10。 else if(adjust_pos==4) hour++。 else if(adjust_pos==5) hour=hour+10。 else if(adjust_pos==6) day++。 else if(adjust_pos==7) day=day+10。 else if(adjust_pos==8) month++。 else if(adjust_pos==9) month=month+10。 else if(adjust_pos==10) year_l++。 else if(adjust_pos==11) year_l=year_l+10。 else if(adjust_pos==12) year_f++。 else if(adjust_pos==13) year_f=year_f+10。 } else if(key==7) { if(!adjust_pos) sec。 else if(adjust_pos==1) sec=sec10。 else if(adjust_pos==2) min。 else if(adjust_pos==3) min=min10。 else if(adjust_pos==4) hour。 else if(adjust_pos==5) hour=hour10。 else if(adjust_pos==6) day。 else if(adjust_pos==7) day=day10。 基于 51 單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷 else if(adjust_pos==8) month。 else if(adjust_pos==9) month=month10。 else if(adjust_pos==10) year_l。 else if(adjust_pos==11) year_l=year_l10。 else if(adjust_pos==12) year_f。 else if(adjust_pos==13) year_f=year_f10。 } else if(key==3) adjust_flag=0。 if(key==6||key==7) { if(sec=80) sec=0。 if(min=80) min=0。 if(hour=40) hour=0。 if(month30) month=1。 if(day50) day=0。 if(year_f=120) year_f=0。 if(year_l=120) year_l=0。 } } } if(key==3) report_flag=1。 if(report_flag) { clrram()。 Dingwei(2,1)。 lcd_mesg(REPORTING!!!)。 report()。 clrram()。 基于 51 單片機(jī)控制的語(yǔ)音報(bào)時(shí)萬(wàn)年歷 } } } void time0() interrupt 1 { static unsigned char timer=0。 TH0=(6553650000)/256。 //定時(shí)器高八位賦初值 TL0=(6553650000)%256。 //定時(shí)器低八位賦初值 timer++。 if(timer==20) { sec++。 time_show[6]=sec/10+48。 time_show[7]=sec%10+48。 if(sec=60) { sec=0。 min++。 time_show[6]=sec/10+48。 time_show[7]=sec%10+48。 time_show[3]=min/10+48。 time_show[4]=min%10+48。 } if(min=60) { min=0。 hour++。 time_show[3]=min/10+48。 time_show[4]=min%10+48。 time_show[0]=hour/10+48。 time_show[1]=hour%10+48。 } if(hour=24) { hour=0。 day++。 time_show[0]=hour/10+48。 time_show[1]=hour%10+48。 date_show[8]=day/10+48。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1