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

正文內(nèi)容

基于51單片機控制的語音報時萬年歷課程設(shè)計(已修改)

2025-03-20 04:56 本頁面
 

【正文】 基于 51 單片機控制的語音報時萬年歷 基于 51 單片機控制的語音報時萬年歷 一. 實驗要求 運用單片機及相關(guān)外設(shè)實現(xiàn)以下功能: 1) 萬年歷及時鐘顯示 2) 時間日期可調(diào) 3) 可對時間進行整點報時和隨機報時 二. 方案分析 根據(jù)實驗要求,選用 STC 公司的 8051 系列, STC12C5A16S2 增強型 51單片機。此單片機功能強大,具有片內(nèi) EEPROM、 1T 分頻系數(shù)、片內(nèi) ADC 轉(zhuǎn)換器等較為實用功能,故選用此款。 實驗中,對日期和時間進行顯示,顯示的字符數(shù)較多,故選用 12864LCD屏幕。該屏幕操作較為便捷,外圍電路相對簡單,實用性較強。 為了實現(xiàn)要求中的時間日期可調(diào),故按鍵是 不可缺少的,所以使用了較多的按鍵。一方面,單片機的 I/O口較為充足;另一方面,按鍵較多,選擇的余地較大,方便編程控制。 實驗中,并未要求對時間和日期進行保存和掉電續(xù)運行,所以并未添加 EEPROM 和DS12C887RTC芯片。實際上,對萬年歷來說,這是較為重要的,但為了方便實現(xiàn)和編程的簡單,此處并未添加,而是使用單片機的定時器控制時間,精度有差別。且上電默認(rèn)時間為20210101 09:00:00 之后需要手動調(diào)整為正確時間。 要求中的語音報時功能,這里選用 ISD1760 芯片的模塊來幫助實現(xiàn)。此模塊通過 軟件模擬 SPI 協(xié)議控制。先將所需要的聲音片段錄入芯片的 EEPROM 區(qū)域,之后讀出各段聲音的地址段,然后在程序中定義出相應(yīng)地址予以控制播放哪一聲音片段。 三. 電路硬件設(shè)計 實際效果圖 四. 程序代碼部分 基于 51 單片機控制的語音報時萬年歷 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 單片機控制的語音報時萬年歷 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字庫初始化程序 TMOD=0x01。 //使用定時器 T0 基于 51 單片機控制的語音報時萬年歷 TH0=(655361000)/256。 //定時器高八位賦初值 TL0=(655361000)%256。 //定時器低八位賦初值 */ EA=1。 //開中斷總允許 ET0=1。 //允許 T0中斷 TR0=1。 //啟動定時器 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 單片機控制的語音報時萬年歷 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 單片機控制的語音報時萬年歷 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 單片機控制的語音報時萬年歷 } } } void time0() interrupt 1 { static unsigned char timer=0。 TH0=(6553650000)/256。 //定時器高八位賦初值 TL0=(6553650000)%256。 //定時器低八位賦初值 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。
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1