日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

輕松學PIC之數(shù)碼管

出處:陳雙君 發(fā)布于:2011-08-29 15:57:27

  大家好, 通過前一期的學習, 我們已經(jīng)對ICD2 仿真燒寫器和增強型PIC 實驗板的使用方法及學習方式有所了解與熟悉,學會了如何用單片機來控制發(fā)光管、繼電器、蜂鳴器、按鍵等資源,體會到了學習板的易用性與易學性,特別是當自己次動手編程點亮一個發(fā)光管時,相信對于初學者來說,一定很興奮,很有成就感吧!現(xiàn)在我們就趁熱打鐵,再向上跨一步,一起來學習一下數(shù)碼管的工作原理及使用方法,這一期實驗將會更具生動性。

  說到七段數(shù)碼管,它在家電及工業(yè)控制中有著很廣泛的應用, 例如用來顯示溫度、數(shù)量、重量、日期、時間等,具有顯示醒目、直觀的優(yōu)點。在一般的人機對話中,輸入器件一般都是以按鍵為主,但輸出器件則以數(shù)碼管或LCD 為主。數(shù)碼管作為一種應用十分普遍的顯示器件,可以在各種各樣的設備上見到,如圖1 所示就是某數(shù)字表頭顯示時候的效果圖。它很適合用在對價格、亮度等條件比較敏感,同時基本上只要求顯示數(shù)字量的時候,所以在數(shù)據(jù)顯示,定時控制等場合用得很多。常見的數(shù)碼管實物如圖2 所示。

圖1 數(shù)碼管顯示效果圖

圖1 數(shù)碼管顯示效果圖

圖2 數(shù)碼管實物圖
圖2 數(shù)碼管實物圖

  首先,我們先對相關理論知識進行一番了解。

  我們可以看到圖1中有8 位數(shù)碼管,那么這些數(shù)碼管是怎樣來顯示1,2,3,4……數(shù)字的呢?

  別著急,我們一起慢慢來學。

  數(shù)碼管實際上是由7 個發(fā)光管組成“8”字形構(gòu)成的, 加上小數(shù)點就是8 個。這些段分別由字母a,b,c,d,e,f,g,dp來表示。當數(shù)碼管特定的段加上電壓后,這些特定的段就會發(fā)亮,以形成我們眼睛看到的字樣了。如:

  顯示一個“2”字,那么應當是a 亮、b 亮、g 亮、e 亮、d 亮、f 不亮、c 不亮、dp 不亮。

  7 段數(shù)碼管的段排列和內(nèi)結(jié)構(gòu)見圖3。

圖3 數(shù)碼管結(jié)構(gòu)圖

圖3 數(shù)碼管結(jié)構(gòu)圖

  由于驅(qū)動方式的差異,也就是對應在各個顯示段是低電平還是高電平點亮,數(shù)碼管又分成兩種類型,即共陽極和共陰極數(shù)碼管。所謂“共陽極”是指8 個LED 的陽極連接在一起組成公共端;同理“共陰極”則是8 個LED 的陰極連接在一起組成公共端。

  其內(nèi)部LED 的連接方式可以參考圖4。

圖4 數(shù)碼管內(nèi)部結(jié)構(gòu)圖

  雖然通過上文原理的介紹,對數(shù)碼管的工作原理已經(jīng)了解,但當我們拿到一個數(shù)碼管時要正確地應用它還是一時不知如何下手,比如我們現(xiàn)在要求數(shù)碼管顯示“5”,應該怎么辦呢?首先我們需要明白一個事情,數(shù)碼管是不認識“5”的,當然也不認識其他數(shù)字,所以千萬別說,“給數(shù)碼管寫個“5”就行了”。數(shù)字只是種符號,對人來說是這樣的,對單片機而言也是,單片機只是通過LED 把內(nèi)部的結(jié)果用我們約定的方式顯示出來而已,這個“約定”

  就是數(shù)字該如何在LED 上顯示的方法。比如我們需要顯示的數(shù)字為0 到9,如圖5 所示。

圖5 顯示數(shù)字效果圖

  假設我們使用共陰極數(shù)碼管,那么我們就對照圖3 和圖4 來看看“5”是如何顯示出來的。首先對數(shù)碼管而言,我們要想顯示數(shù)字“5”,我們可以發(fā)現(xiàn)有如下一些段是需要點亮的,即A、C、D、F、G。

  知道了這些段需要點亮后,現(xiàn)在我們再來看一下增強型PIC 實驗板上數(shù)碼管的控制電路,因為我們需要將軟件和硬件相結(jié)合進行考慮如何來編程。

  圖6 中的A,B,C,D,E,F,G,DP 分別與單片機的RC 口相連,用來控制顯示數(shù)字的形狀。Q3、Q4、Q5、Q6、Q7、Q8 這6 個三極管是用來片選數(shù)碼管,用來打開或關閉某一路數(shù)碼管,RA1、RA0、RA3、RA2、RA5、RA4 分別接在單片機的RA 口上,通過控制這些三極管的基極電平來打開或關閉數(shù)碼管的顯示,即起到“使能”作用。如S1 端為低電平,則允許相應的數(shù)碼管顯示,顯示的字形則由RC 口所決定。

圖6 數(shù)碼管電路原理圖

圖6 數(shù)碼管電路原理圖

  我們可以列出表1 這樣的段碼對應關系表,表中為數(shù)字“5”共陰段碼。

表1 數(shù)碼管顯示數(shù)字“5”的段碼表

表1 數(shù)碼管顯示數(shù)字“5”的段碼表

  參照上面的過程,我們又可以列出共陰和共陽數(shù)碼管0~9 十個數(shù)字的段碼表,如表2 所示,在不改變硬件對應關系的前提下,段碼表可以通用。

表2 共陰、共陽數(shù)碼管段碼表

表2 共陰、共陽數(shù)碼管段碼表

  現(xiàn)在我們已經(jīng)了解了整個顯示過程,所以我們也就有了寫程序的思路:程序中應該有一個變量,每隔一定時間在0~9 之間變化,然后按照這個數(shù)據(jù)去查找段碼表,把查到的數(shù)據(jù)送到RC 口,段碼值我們參照表2 中共陽這一項。

  我們使用MPLab IDE 軟件來進行C 語言編程,它是我們的編程環(huán)境,同時我們可以通過使用ICD2仿真燒寫器和增強型PIC 實驗板連接進行程序的仿真調(diào)試和燒寫步驟,具體的操作步驟,我們已經(jīng)在前幾期做了詳細的說明和介紹,在此就不再重復,讀者可以參閱以前的文章或直接登陸我們的網(wǎng)站查看資料。前面,我們已經(jīng)對硬件原理和軟件編寫思路進行了了解,現(xiàn)在我們可以輸入程序代碼進行調(diào)試了。我們在MPLab IDE 軟件中新建工程,加入源程序代碼,同時進行芯片型號的選擇和配置位的設置,我們實驗所用的芯片型號為PIC16F877A。上面理論說了一大堆,現(xiàn)在我們可以從這里開始動手了。本來6 個數(shù)碼管可以各自顯示不同數(shù)字,RA口動態(tài)掃描,每個瞬間只有一個管顯示,視覺上感到是6 位數(shù)。作為初次實驗,我們的任務是要讓六個數(shù)碼管同時顯示數(shù)字“0”~“9”字樣,時間間隔為1 秒。

  #include<pic.h>

  const unsigned char display_numb[10]={0x

  c0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0

  x90};

  void delay_1ms(void)

  {

  unsigned int n;

  for(n=0;n<50;n++)

  {

  NOP();

  }

  }

  void delay_ms(unsigned int time)

  {

  for(;time>0;time--)

  {

  delay_1ms();

  }

  }

  void main(void)

  {

  TRISC=0X00;

  TRISA=0X00;

  while(1)

  {

  PORTC=display_numb[0];

  PORTA=0X00;

  delay_ms(1000);

  PORTC=display_numb[1];

  delay_ms(1000);

  PORTC=display_numb[2];

  delay_ms(1000);

  PORTC=display_numb[3];

  delay_ms(1000);

  PORTC=display_numb[4];

  delay_ms(1000);

  PORTC=display_numb[5];

  delay_ms(1000);

  PORTC=display_numb[6];

  delay_ms(1000);

  PORTC=display_numb[7];

  delay_ms(1000);

  PORTC=display_numb[8];

  delay_ms(1000);

  PORTC=display_numb[9];

  }

  }

  程序代碼輸入后,讀者可以使用仿真模塊或直接燒入編譯好的HEX 文件來進行驗證,前者模式可以單步執(zhí)行,同時監(jiān)控程序變量在運行過程中的變化;后者直接燒入HEX 文件,實驗板直接脫機運行。

  輸入了這么長一段程序后,作為初學者一定對有些語句會有點疑問,下面我們就來一起結(jié)合實際,看一下一些關鍵程序語句的作用。

  #include<pic.h> 語句用來加載PIC 庫文件,數(shù)組display_numb 用來定義數(shù)字“0”~“9” 的字形碼,也就是我們的表2 中所羅列的內(nèi)容。voiddelay_1ms(void) 是延時1ms 的函數(shù),void delay_ms(unsigned int time) 是延時X 毫秒的函數(shù),具體為多少毫秒由形參time 變量決定,如我們執(zhí)行函數(shù) delay_ms(1000); 即表示為延時1000 毫秒= 延時1 秒的時間。語句“TRISC=0X00;” 用來設置RC 口的輸入、輸出狀態(tài),在此我們設置為輸出;語句“TRISA=0X00;”用來設置RA 口的輸入、輸出狀態(tài),在此我們設置為輸出。while(1) 是死循環(huán)語句,即周而復始地執(zhí)行{ } 內(nèi)的語句體,如我們現(xiàn)在的程序中的作用即是不停地執(zhí)行 delay_ms(x);PORTC=display_numb[x]; 這兩類語句,即給RC口送一個字形碼,延時1 秒鐘后,又給RC 口賦予一個新的字形碼,在我們從實驗結(jié)果上看來就是數(shù)碼管在不停地顯示6 個相同的“0”~“9”這些數(shù)字。留給讀者設計,將一個6 位十進制數(shù)字(如201006)顯示出來的程序。

  數(shù)碼管的原理與使用,我們暫講到這里,接下來幾期,我們將繼續(xù)一起學習增強型PIC 實驗板的其他各部分資源的原理與使用,使你對單片機應用的各方面知識都有所入門與提高。增強型PIC 實驗板系統(tǒng)資源豐富,可做實驗有:6 位LED 數(shù)碼管、8 路LED、直控鍵盤、蜂鳴器喇叭、繼電器試驗、I2C 總線接口、SPI 總線接口、160X 液晶、128X64液晶、紅外接收頭接口、步進電機驅(qū)動接口、AD模/ 數(shù)轉(zhuǎn)換接口、串行時鐘芯片DS1302、溫度傳感器DS18B20 接口、RS232 串口通訊、外擴展接口以便外接更多的實驗資源。

關鍵詞:輕松學PIC之數(shù)碼管數(shù)碼管PIC

版權(quán)與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權(quán)利。

PIC單片機中的佼佼者PIC16F628A掉電后數(shù)據(jù)不丟失!
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術客服:

0571-85317607

網(wǎng)站技術支持

13606545031

客服在線時間周一至周五
9:00-17:30

關注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!