1
實(shí)驗(yàn)環(huán)境介紹
? 實(shí)驗(yàn)環(huán)境
本次實(shí)驗(yàn)是通過(guò)Proteus+MDK一起模擬完成的。Proteus模擬實(shí)際電路,MDK編譯代碼。Proteus版本是8.9,MDK版本是5.36。需要注意的是,Proteus需要安裝8.8以上版本,器件庫(kù)里面要支持STM32F401VE。
?實(shí)驗(yàn)?zāi)康?/strong>
通過(guò)定時(shí)器3TIM3,計(jì)數(shù),8位數(shù)碼管,一個(gè)3*4的鍵盤(pán)來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的可設(shè)置電子時(shí)鐘。
2
硬件電路
Proteus電路
? 主控:
STM32F401VE,Cotex-M4內(nèi)核,主頻最大84MHz,程序空間512KB,F(xiàn)LASH空間96KB。
? 時(shí)鐘:
沒(méi)有用外部晶振,因?yàn)镻roteus只支持一種時(shí)鐘樹(shù),所以這里采用內(nèi)部晶振,做實(shí)驗(yàn)夠了。
? 復(fù)位電路:
沒(méi)有配置相關(guān)外設(shè)電路,因?yàn)镻roteus默認(rèn)是有電壓的,默認(rèn)是復(fù)位的,畢竟是仿真軟件,主要是驗(yàn)證程序功能。
? IO說(shuō)明:
我們利用PD0PD7以及PC0PC7控制數(shù)碼管、PE0~PE6控制鍵盤(pán)輸入。
3
代碼概述
MDK代碼目錄結(jié)構(gòu)
? 代碼目錄概述:
USER文件夾:主要包含應(yīng)用函數(shù)的.C文件以及中斷函數(shù).C。
HARDWARE文件夾:主要包含底層硬件驅(qū)動(dòng)的.C文件。
CORE文件夾:主要包含STM32的啟動(dòng)的.S文件。
FWLIB文件夾:主要包含ST官方提供的標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng).C文件(不是HAL庫(kù)哦)。
? 代碼內(nèi)容概述:
↓↓↓ 按鍵識(shí)別代碼如下:
//判斷按鍵是否按下 u8 iskeyinput(void) { GPIOE->ODR=0x000f; if((KEYPORT&0x000f)==0x000f) return 0; else return 1; } //按鍵識(shí)別 u8 key_identify(void) { u8 linecode=0,rowcode=0; u8 i; u8 scancode=0x00ef; for(i=0;i<4;i++) { GPIOE->ODR=scancode; if((KEYPORT&0x000f)==0x000f) { rowcode++; scancode=scancode<<1|1; } else { if(line0==0)linecode=0; if(line1==0)linecode=3; if(line2==0)linecode=6; if(line3==0)linecode=9; break; } } return linecode+rowcode; } //等待按鍵松開(kāi) void wait_key_release(u8 x) { while(1) { GPIOE->ODR=0x000f; if(x==0)seg_disp2(); else seg_disp1(f); if((KEYPORT&0x000f)==0x000f) break; } } //按鍵掃描 u8 key_Scan(u8 x) { u8 keycode=0; if(iskeyinput()) { delay_us(100); if(iskeyinput()) { keycode=key_identify()+1; wait_key_release(x); } } return keycode; }
↓↓↓ 電子時(shí)鐘事件計(jì)時(shí)代碼如下:
void get_time(void) { if(bs>99) { bs=0;s++; if(s==60) { s=0;m++; if(m==60) { m=0;h++; if(h==24) {h = 0;} date[0]=h/10; date[1]=h%10; } date[2]=m/10; date[3]=m%10; } date[4]=s/10; date[5]=s%10; } date[6]=bs/10; date[7]=bs%10; }
4
實(shí)驗(yàn)結(jié)果展示
電子時(shí)鐘效果
設(shè)置效果
可以看到,電子時(shí)鐘能夠正常計(jì)時(shí)并且通過(guò)*號(hào)按鍵切換成設(shè)置狀態(tài),再通過(guò)#號(hào)按鍵切換成正常計(jì)時(shí)狀態(tài),至此可設(shè)置電子時(shí)鐘實(shí)驗(yàn)完成!!!
審核編輯:劉清
-
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1882瀏覽量
91237 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3251瀏覽量
115003 -
PROTEUS仿真
+關(guān)注
關(guān)注
28文章
308瀏覽量
35291 -
電子時(shí)鐘
+關(guān)注
關(guān)注
11文章
197瀏覽量
24550 -
STM32F401
+關(guān)注
關(guān)注
1文章
16瀏覽量
10501
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
用單片機(jī)實(shí)現(xiàn)電子時(shí)鐘設(shè)計(jì)方案
電子時(shí)鐘
如何實(shí)現(xiàn)用12864顯示一個(gè)漢字的電子時(shí)鐘
用STC89C52做一個(gè)簡(jiǎn)單電子時(shí)鐘
如何實(shí)現(xiàn)基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)?
電子時(shí)鐘設(shè)計(jì)電子時(shí)鐘程序相關(guān)資料下載
使用51單片機(jī)設(shè)計(jì)的電子時(shí)鐘程序資料免費(fèi)下載
![使用51單片機(jī)設(shè)計(jì)的<b class='flag-5'>電子時(shí)鐘</b>程序資料免費(fèi)下載](https://file.elecfans.com/web1/M00/7E/A4/pIYBAFwXHHCAHgezAAMqqG0zL5A294.png)
評(píng)論