4.1.數(shù)碼管顯示原理
數(shù)碼管的顯示原理是由多個(gè)發(fā)光的二極管共陰極或者共陽(yáng)極組成的成“8”字形的顯示器件。數(shù)碼管通過(guò)不同的組合可用來(lái)顯示數(shù)字0~9、字符A ~ F及小數(shù)點(diǎn)“.”。數(shù)碼管的工作原理是通過(guò)控制外部的I/O端口進(jìn)行驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,使用不同的段碼從而形成字符顯示出我們要的數(shù)字。數(shù)碼管實(shí)際上是由七個(gè)發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母A、B、C、D、E、F、G、DP來(lái)表示。
當(dāng)數(shù)碼管特定的引腳加上高電平后,這些特定的發(fā)光二極管就會(huì)發(fā)亮,以形成我們眼睛看到的字樣了。如:在一個(gè)共陰極數(shù)碼管上顯示一個(gè)“8”字,那么就對(duì)A、B、C、D、E、F、G對(duì)應(yīng)的引腳置高電平。發(fā)光二極管的陽(yáng)極共同連接至電源的正極稱為共陽(yáng)極數(shù)碼管,這種類型的數(shù)碼管點(diǎn)亮需要對(duì)引腳置低電平;發(fā)光二極管的陰極共同連接到電源的負(fù)極稱為共陰極數(shù)碼管,點(diǎn)亮共陰極數(shù)碼管需要對(duì)相應(yīng)的引腳置高電平。常用LED數(shù)碼管顯示的數(shù)字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
圖4-1 數(shù)碼管模型圖
共陽(yáng)極數(shù)碼管的8個(gè)發(fā)光二極管的陽(yáng)極(二極管正端)連接在一起。通常,公共陽(yáng)極接高電平(一般接電源),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。
共陰極數(shù)碼管的8個(gè)發(fā)光二極管的陰極(二極管負(fù)端)連接在一起。通常,公共陰極接低電平(一般接地),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為高電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。
4.2.數(shù)碼管原理圖與實(shí)物圖
如果數(shù)碼管可以顯示多位數(shù)字,如我們的電壓電流表所示。那么除了控制段碼來(lái)選擇要顯示的內(nèi)容,還要選擇位碼來(lái)控制某一個(gè)數(shù)碼管的亮滅。
圖4-2 電壓電流表三位數(shù)碼管
數(shù)碼管的原理圖如下,可以看出除了上述的段碼引腳之外,還有COM1、COM2、COM3的位碼引腳,三個(gè)位碼引腳分別控制三個(gè)數(shù)碼管的亮滅情況,且低電平有效。
圖4-3 三位數(shù)碼管原理圖
4.3.數(shù)碼管驅(qū)動(dòng)顯示
驅(qū)動(dòng)顯示數(shù)碼管的思路是:先將A、B、C、D、E、F、G所代表的引腳從低到高編號(hào),列出數(shù)碼要顯示數(shù)字的段碼值。比如要顯示數(shù)字5,則段碼值為0x6d,二進(jìn)制表示為01101101,這說(shuō)明G置1,F(xiàn)置1,E置0,D置1,C置1,B置0,A置1,最高位則是DP的值。將要顯示的數(shù)字以段碼值的方式儲(chǔ)存在數(shù)組里以供調(diào)用,可以簡(jiǎn)化程序。
接著以循環(huán)的方式結(jié)合switch語(yǔ)句對(duì)A、B、C、D、E、F、G的亮滅情況進(jìn)行單獨(dú)計(jì)算,先將段碼值確定后再進(jìn)行位碼的選擇,可以避免因單片機(jī)執(zhí)行程序的時(shí)間而造成顯示效果的不足。
具體程序如下,將所有與數(shù)碼管顯示相關(guān)的函數(shù)保存在新建的 Seg_Reg.c 文件
/* 共陰數(shù)碼管編碼表: 0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f 0 1 2 3 4 5 6 7 8 9 0xbf 0x86 0xdb 0xcf 0xe6 0xed 0xfd 0x87 0xff 0xef 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */ uint8_t Seg_Table[20] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef}; /*對(duì)段碼值進(jìn)行存儲(chǔ)*/ void Seg_Init(void) //查找原理圖對(duì)數(shù)碼管相關(guān)引腳進(jìn)行初始化 { __RCC_GPIOA_CLK_ENABLE();//打開(kāi)GPIOA的時(shí)鐘 __RCC_GPIOB_CLK_ENABLE();//打開(kāi)GPIOB的時(shí)鐘 __RCC_GPIOC_CLK_ENABLE();//打開(kāi)GPIOC的時(shí)鐘 GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pins = GPIO_PIN_0 | GPIO_PIN_4; //PA00,E;PA04,G GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.IT = GPIO_IT_NONE; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_Init(CW_GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pins = GPIO_PIN_6 | GPIO_PIN_4 | GPIO_PIN_2 | GPIO_PIN_0 | GPIO_PIN_3 | GPIO_PIN_7; //PB06,B;PB04,C;PB02,D;PB00,F;PB03,DP //PB07,COM1 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.IT = GPIO_IT_NONE; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_Init(CW_GPIOB, &GPIO_InitStruct); GPIO_InitStruct.Pins = GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2; //PC04,A; //PC03,COM2;PC02,COM3 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.IT = GPIO_IT_NONE; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_Init(CW_GPIOC, &GPIO_InitStruct); }
void Seg_Dis(uint8_t Pos,uint8_t Num) //Pos表示指定哪一個(gè)數(shù)碼管亮,Num表示要顯示的數(shù)字 { int i; uint8_t Dis_Value,Location; Location = Pos; Dis_Value = Seg_Table[Num]; for(i = 0; i < 8; i++) //通過(guò)循環(huán)確定每一個(gè)段碼引腳的亮滅情況 { switch(i) { /*將Dis_Value右移i位,再和0x01(00000001)相與消除其他位的影響,可以確定該位的寫(xiě)入值, 學(xué)員可以自己用一個(gè)實(shí)例比如0x6d(01101101)進(jìn)行分析*/ case 0: GPIO_WritePin(CW_GPIOC,GPIO_PIN_4,(Dis_Value >> i) & 0x01); //PC04,A break; case 1: GPIO_WritePin(CW_GPIOB,GPIO_PIN_6,(Dis_Value >> i) & 0x01); //PB06,B break; case 2: GPIO_WritePin(CW_GPIOB,GPIO_PIN_4,(Dis_Value >> i) & 0x01); //PB04,C break; case 3: GPIO_WritePin(CW_GPIOB,GPIO_PIN_2,(Dis_Value >> i) & 0x01); //PB02,D break; case 4: GPIO_WritePin(CW_GPIOA,GPIO_PIN_0,(Dis_Value >> i) & 0x01); //PA00,E break; case 5: GPIO_WritePin(CW_GPIOB,GPIO_PIN_0,(Dis_Value >> i) & 0x01); //PB00,F break; case 6: GPIO_WritePin(CW_GPIOA,GPIO_PIN_4,(Dis_Value >> i) & 0x01); //PA04,G break; case 7: GPIO_WritePin(CW_GPIOB,GPIO_PIN_3,(Dis_Value >> i) & 0x01); //PB03,DP break; default: break; } } switch(Location) //確定段碼后再選擇位碼 { case 0: GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_RESET); //PB07,COM1 GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_SET); //PC03,COM2 GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_SET); //PC02,COM3 break; case 1: GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_SET); //PB07,COM1 GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_RESET); //PC03,COM2 GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_SET); //PC02,COM3 break; case 2: GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_SET); //PB07,COM1 GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_SET); //PC03,COM2 GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_RESET); //PC02,COM3 break; default: break; } }在主函數(shù)里調(diào)用Seg_Dis函數(shù)即可在對(duì)應(yīng)位置顯示相應(yīng)數(shù)字(別忘了初始化),各位學(xué)員熟練之后可以通過(guò)define定義每個(gè)引腳的寫(xiě)入,使代碼更加簡(jiǎn)潔美觀。 程序下載接線如圖4-4所示:
圖4-4 電壓電流表程序下載接線
4.4.實(shí)驗(yàn)效果
最終的實(shí)驗(yàn)效果如下圖所示:
圖4-5 數(shù)碼管顯示實(shí)驗(yàn)效果
審核編輯:劉清
-
發(fā)光二極管
+關(guān)注
關(guān)注
13文章
1211瀏覽量
66921 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1888瀏覽量
91881 -
驅(qū)動(dòng)電路
+關(guān)注
關(guān)注
155文章
1558瀏覽量
109239 -
限流電阻
+關(guān)注
關(guān)注
2文章
85瀏覽量
17388 -
電壓電流表
+關(guān)注
關(guān)注
0文章
25瀏覽量
2145 -
CW32
+關(guān)注
關(guān)注
1文章
232瀏覽量
978
原文標(biāo)題:CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)三:數(shù)碼管顯示數(shù)字
文章出處:【微信號(hào):武漢芯源半導(dǎo)體,微信公眾號(hào):武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
CW32數(shù)字電壓電流表-產(chǎn)品硬件設(shè)計(jì)要點(diǎn)

CW32數(shù)字電壓電流表軟件教程(五):ADC采樣及顯示

CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)三:數(shù)碼管顯示數(shù)字

數(shù)字電流表的設(shè)計(jì)
數(shù)碼管顯示電壓電路圖大全(六款數(shù)碼管顯示電壓電路原理圖詳解)

CW32數(shù)字電壓電流表-產(chǎn)品制作注意事項(xiàng)

CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)四:數(shù)碼管動(dòng)態(tài)顯示

CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)五:ADC采樣及顯示

CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)七:基本數(shù)據(jù)處理算法(均值濾波)
CW32數(shù)字電壓電流表軟件進(jìn)階教程-1.電壓電流同時(shí)顯示

CW32數(shù)字電壓電流表軟件進(jìn)階教程-2.電壓電流值做均值濾波
CW32數(shù)字電壓電流表軟件進(jìn)階教程-3.電壓電流標(biāo)定

基于CW32F003E4P7的數(shù)字電壓電流表產(chǎn)品方案

評(píng)論