两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1.余暉效應(yīng)

流水燈如果在流速太快的基礎(chǔ)上再加速,那么我們看到的則是一排燈都在亮著,這就叫人眼的余暉效應(yīng)。同理,我們想讓多個(gè)數(shù)碼管同時(shí)亮,那么就要讓三八譯碼器的IO0~IO5每個(gè)輸出引腳輪流快速切換出低電平,需要顯示什么數(shù)字再由P0的8個(gè)IO端口控制。

這里提供了一段代碼供大家調(diào)試玩玩,用實(shí)驗(yàn)現(xiàn)象領(lǐng)悟余暉效應(yīng)。

#include <reg52.h> 
sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;
sbit ENLED = P1^4;
sbit ADDR3 = P1^3;

void main()
{  
    unsigned char i=1;
    unsigned int x;
    ADDR3 = 1;//使能三八譯碼器
    ENLED = 0;// 
  
    P0=0xC0;  //讓6個(gè)數(shù)碼管都顯示0
    while(1)
    {  
        switch(i)
        {
            case 1: ADDR2 = 0;ADDR1 = 0;ADDR0 = 0;break;//讓IO0輸出低電平
            case 2: ADDR2 = 0;ADDR1 = 0;ADDR0 = 1;break;//讓IO1輸出低電平
            case 3: ADDR2 = 0;ADDR1 = 1;ADDR0 = 0;break;//讓IO2輸出低電平
            case 4: ADDR2 = 0;ADDR1 = 1;ADDR0 = 1;break;//讓IO3輸出低電平
            case 5: ADDR2 = 1;ADDR1 = 0;ADDR0 = 0;break;//讓IO4輸出低電平
            case 6: ADDR2 = 1;ADDR1 = 0;ADDR0 = 1;i=0;break;//讓IO5輸出低電平
        }
        i++;
        for(x=0;x<5000;x++);//這里是延時(shí),大家把5000不斷地改小到200,中間不斷地下載進(jìn)開發(fā)板來領(lǐng)悟余暉效應(yīng),
                            //其實(shí)我們做的只是讓三八譯碼器的不同IO輸出持續(xù)時(shí)間不同而已,然后就產(chǎn)生了不一樣的實(shí)驗(yàn)效果
    }              
}

 

2.題目

如果我們既要6個(gè)數(shù)碼管同時(shí)亮,還要使6個(gè)數(shù)碼管都同時(shí)間隔一秒地顯示0~F的狀態(tài)不停循環(huán),模擬圖像如下

EEEEEE     //持續(xù)一秒

FFFFFF     //持續(xù)一秒

000000    //持續(xù)一秒

……

請(qǐng)思考如何下手?

提示:軟件調(diào)試仿真出1秒內(nèi)所要執(zhí)行的內(nèi)容。

還有大家別傻乎乎加個(gè)“delay_ms(1000);”用來實(shí)現(xiàn)間隔1秒的數(shù)字自加,這樣做我們?cè)趺慈?shí)現(xiàn)IO0~IO5的快速切換出低電平呀。

請(qǐng)大家先自己思考嘗試動(dòng)手練練寫寫,實(shí)在沒頭緒再參考一下這些代碼,其實(shí)這跟無源蜂鳴器的間隔鳴叫的編程技巧是一樣的

#include <reg52.h> 
sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;
sbit ENLED = P1^4;
sbit ADDR3 = P1^3;

unsigned char code LedChar[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//數(shù)碼管狀態(tài)值初始化

void main()
{  
    unsigned int i,x;
    unsigned char sec;//定義一個(gè)一秒之后自增1的變量
    ADDR3 = 1;//使能三八譯碼器
    ENLED = 0;// 
  
    P0=0xC0;  //先讓所有數(shù)碼管顯示0
    while(1)
    {    
        for(x=0;x<28492;x++)//軟件調(diào)試得出這個(gè)循環(huán)耗時(shí)1秒
        { 
            switch(i)
            {
                case 0: ADDR2 = 0;ADDR1 = 0;ADDR0 = 0;i++;break;//讓IO0輸出低電平
                case 1: ADDR2 = 0;ADDR1 = 0;ADDR0 = 1;i++;break;//讓IO1輸出低電平
                case 2: ADDR2 = 0;ADDR1 = 1;ADDR0 = 0;i++;break;//讓IO2輸出低電平
                case 3: ADDR2 = 0;ADDR1 = 1;ADDR0 = 1;i++;break;//讓IO3輸出低電平
                case 4: ADDR2 = 1;ADDR1 = 0;ADDR0 = 0;i++;break;//讓IO4輸出低電平
                case 5: ADDR2 = 1;ADDR1 = 0;ADDR0 = 1;i=0;break;//讓IO5輸出低電平
            }   
        } 
        sec++;//一秒之后變量自加1
        if(sec>=16)sec=0;
        P0=LedChar[sec];//取數(shù)組元素中標(biāo)號(hào)為0~15的元素  
    }
}

我們把i放到了前面的case語句中自加,這樣閱讀起來更加快速明白switch語句是每條都要按順序輪流去執(zhí)行的意思(參考了宋老師的代碼)。還有大家別把i定義成unsigned char型,不然無論怎么修改x的值都調(diào)試不出for循環(huán)持續(xù)1秒。

學(xué)到這里需要大家進(jìn)一步學(xué)會(huì)自己分析整體代碼的系統(tǒng)結(jié)構(gòu)了。

點(diǎn)贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)