最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

單片機(jī)學(xué)習(xí)——數(shù)碼管的動(dòng)態(tài)顯示(自用)

2023-03-13 20:01 作者:huabi_fxz  | 我要投稿

基礎(chǔ)知識(shí):靜態(tài)和動(dòng)態(tài)的區(qū)別

一般來說,靜態(tài)是由一個(gè)P0口控制多個(gè)com口,所以顯示的都是P0端輸出的內(nèi)容


如果要實(shí)現(xiàn)不同com口輸出不同的數(shù)值,則分別用不同的IO口控制輸入

這樣的方法占用了多個(gè)IO口資源,為了解決這個(gè)問題,引入了動(dòng)態(tài)顯示,即所有com口由一個(gè)P0口控制,既能顯示不同的數(shù)值又能節(jié)省IO口資源。

動(dòng)態(tài)顯示的實(shí)質(zhì)就是輪流點(diǎn)亮單個(gè)數(shù)碼管實(shí)現(xiàn)多位數(shù)碼管整體顯示的效果。

訓(xùn)練目標(biāo):

在8位數(shù)碼管中,前面四位顯示年份“2018”,后面四位顯示“--月份”,從一月份開始,每隔一段時(shí)間增加一個(gè)月,到十二月之后又從一月開始遞增。

軟件部分:

#include "reg52.h"

unsigned char yue=1;

?

unsigned char code SMG_duanma[18]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,

0x82,0xf8,0x80,0x90,0x88,0x80,

0xc6,0xc0,0x86,0x8e,0xbf,0x7f};//(0-9? A-F? -? .)


void InitHC138(unsigned char n)

{

?switch(n) //選擇工作的鎖存器

?{

?case 4:

?P2=(P2 & 0x1f) | 0x80; ? //0x1f為00011111

?break; ? ? ? //&是為了給前三項(xiàng)清零

?case 5: ? ? ? //|為了輸入二進(jìn)制數(shù)

?P2=(P2 & 0x1f) | 0xa0;

?break;

?case 6:

?P2=(P2 & 0x1f) | 0xc0;

?break;

?case 7:

?P2=(P2 & 0x1f) | 0xe0;

?break;

?}

}


void DisplaySMG_Bit(unsigned char value,unsigned char pos)//點(diǎn)亮的數(shù)值與位置

?{

? ?InitHC138(6); //選擇控制位置的寄存器

? ?P0=0x01<<pos; //調(diào)整亮的位置

? ?InitHC138(7); //選擇控制數(shù)字的寄存器

? ?P0=value; //選擇輸入的數(shù)字(數(shù)字由16位段碼控制)


? }


void delaySMG(unsigned int t)

? {

? while(t--);

? }//數(shù)碼管顯示專用的delay函數(shù)


void Display_Dynamic() ?

? {

? DisplaySMG_Bit(SMG_duanma[2],0);

? delaySMG(500);

? DisplaySMG_Bit(SMG_duanma[0],1);

? delaySMG(500);

? DisplaySMG_Bit(SMG_duanma[1],2);

? delaySMG(500);

? DisplaySMG_Bit(SMG_duanma[8],3);

? delaySMG(500);


? DisplaySMG_Bit(SMG_duanma[16],4);

? delaySMG(500);

? DisplaySMG_Bit(SMG_duanma[16],5); ? //以上為固定輸入

? delaySMG(500);


? DisplaySMG_Bit(SMG_duanma[yue/10],6);

? delaySMG(500);

? DisplaySMG_Bit(SMG_duanma[yue%10],7);

? delaySMG(500);


} //對(duì)各個(gè)位置數(shù)碼管的輸入分別實(shí)現(xiàn)動(dòng)態(tài)控制


void delay(unsigned char t)

{

?while(t--);

?Display_Dynamic(); //還不懂為什么要在delay函數(shù)里添加動(dòng)態(tài)顯示函數(shù)

}


void main()

{

while(1)

{

?Display_Dynamic();

?yue++;

?if(yue>12)

?{

?yue=1;

?}

?delay(100);

}

}

相比靜態(tài),main函數(shù)中多了一個(gè)控制兩位顯示月份的for循環(huán)



單片機(jī)學(xué)習(xí)——數(shù)碼管的動(dòng)態(tài)顯示(自用)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
大新县| 霍林郭勒市| 鞍山市| 湟源县| 华亭县| 雅安市| 囊谦县| 会同县| 漠河县| 锦州市| 秦安县| 汕尾市| 鸡东县| 五台县| 昌江| 东平县| 黎城县| 姚安县| 卢氏县| 永济市| 张家界市| 廊坊市| 枝江市| 大厂| 襄樊市| 东安县| 灵川县| 阿城市| 渝中区| 香港| 承德县| 长沙县| 泾川县| 柞水县| 稷山县| 板桥市| 定襄县| 泾川县| 普宁市| 措勤县| 奎屯市|