<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)VR單片機的高精度頻率調節器設計

基于A(yíng)VR單片機的高精度頻率調節器設計

作者: 時(shí)間:2013-10-24 來(lái)源:網(wǎng)絡(luò ) 收藏

  3 輸入設備與輸出設備

  3.1 鍵盤(pán)輸入設備與相應軟件

  本設計采用了4×4鍵盤(pán)作為頻率輸入設備。由于按鍵個(gè)數少,只有16個(gè),需要表示從1Hz — 10MHz的廣泛頻率,故在軟件設計中采用了掃描方式。將端口A(yíng)的8根I/O引腳全部作為掃描鍵盤(pán)使用。鍵盤(pán)定義除了0——9共10個(gè)數字之外,還定義了“退格”鍵、“全刪”鍵、“輸入”鍵、“+1Hz”鍵和“-1Hz”鍵,這樣就可以極大地方便用戶(hù)隨時(shí)修改頻率和微調頻率。讀入用戶(hù)輸入的頻率值時(shí),采用了延時(shí)防抖抗干擾的軟件程序。掃描變量的初始值設置為0xFE,以低電平0依次變化實(shí)現掃描。本單片機鍵盤(pán)掃描的C代碼如下所示:

  sccode=0xFE;/*every scan initiative value,11111110*/

  while(sccode!=0xEF)/*sccode is not 11101111,follow;or return 0*/

  {

  PORTA=sccode;/*send scan code 11111110 to portA*/

  PORTA=sccode;/*send scan code 11111110 to portA*/

  if((PINA0xF0)!=0xF0)/*read portA,if high 4 bits are not 1111,key pressed in this line*/

  {

  recode=(PINA0xF0)|0x0F;/*portA high 4 bits reserved,low 4 bits are 1111*/

  while((PINA0xF0)!=0xF0)

  {};

  /*read portA,if portA high 4 bits are not 1111,key pressed,

  if key pressed,we must wait,wait for key released*/

  return((~sccode)+(~recode));/*return row+column*/

  }

  else

  {

  sccode=(sccode1)|0x01;

  /*scan code left shift 1 bit, add 1 to right,11111101*/

  }

  }

  最終返回的掃描結果包括按鍵所在的行值和列值。判斷步驟是:先將端口A(yíng)的高4比特記錄在掃描變量recode中,低4比特置為1111。再次讀入端口A(yíng)的高4比特,由此判斷按鍵是否松開(kāi)。用戶(hù)還未松開(kāi)按鍵時(shí),高4比特當中有低電平0存在,此時(shí)只能循環(huán)等待。只有當用戶(hù)松開(kāi)按鍵之后,才將高4比特與低4比特進(jìn)行按位反操作,并復合形成最終返回的掃描結果。如果沒(méi)有檢測到有按鍵按下,則將掃描變量sccode向左移位1比特,繼續進(jìn)行下一次掃描。

  3.2 液晶顯示模塊

  用戶(hù)在多次進(jìn)行輸入頻率以及“+1Hz”和“-1Hz”微調后,專(zhuān)注于觀(guān)察信號輸出對下一級電路的影響,往往忘了目前系統的輸出頻率。這樣導致在精確測試中要求微調時(shí)也不知該向高調整還是向低調整。為了告知用戶(hù)系統所處的當前頻率,我們擴展了液晶顯示模塊,實(shí)現了當前頻率在液晶顯示模塊上實(shí)時(shí)顯示。液晶顯示模塊占用了單片機Atmega16L的PD0-PD7作為數據接口,采用了單片機的PB0-PB4作為控制端口。圖3給出了液晶顯示模塊與控制器電路設計電路圖。

  PB0引腳選擇液晶顯示模塊的數據存儲器或指令存貯器,PB1引腳表明此次操作是讀液晶顯示模塊還是寫(xiě)液晶顯示模塊,PB2則構成上升沿與下降沿完成讀寫(xiě)時(shí)序。PB3負責選中液晶顯示模塊的左半部分,PB4負責選中右半部分,通常PB3與PB4都置為1。需要注意的是,在數據或指令準備好了之后,再讓PB2進(jìn)行電平變化,否則讀寫(xiě)會(huì )出錯。

  本設計借助單片機Atmega16L的大容量程序存貯器,將英文字母和若干漢字的字型點(diǎn)陣作為數組存入單片機的程序存貯器中。需要顯示某字符時(shí)直接調用數組,從而簡(jiǎn)化了設計,實(shí)現了英文、漢字以及圖形的顯示。本設計顯示界面友好,操作可控性強。
基于A(yíng)VR單片機的高精度頻率調節器設計
圖3 液晶顯示模塊與控制器電路設計

  4 結論

  為了方便現代化工業(yè)生產(chǎn)與精確的頻率測試,我們設計了基于的高精度。在本設計中,可以使用小鍵盤(pán)上的“+1Hz”鍵和“-1Hz”鍵,方便地進(jìn)行頻率精確到1Hz的調節。此體積小而功能強,由Atmel公司的Atmega16L作控制核心,用戶(hù)可隨時(shí)調整系統輸出頻率。采用了4×4鍵盤(pán)輸入用戶(hù)設定的頻率值,占位小而效率高,編制程序讓AVR單片機掃描即可得到頻率,省去了專(zhuān)用鍵盤(pán)接口芯片8279。液晶顯示模塊可實(shí)時(shí)顯示當前頻率,顯示界面友好,操作可控性強。本系統可以產(chǎn)生方波和正弦波。

  本設計的硬件與軟件均已經(jīng)應用在某頻率測試生產(chǎn)線(xiàn)中。工業(yè)生產(chǎn)與測試使用表明,本設計簡(jiǎn)化了頻率調節過(guò)程,用戶(hù)使用方便,具有節電、低成本、抗干擾能力強、精度高速度快的特點(diǎn)。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>