久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6835|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

用51單片機仿真花式流水燈的設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:664251 發(fā)表于 2019-12-15 13:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一、基本要求:
  使用8051,要求系統(tǒng)電路含有16個led燈和按鍵,按鍵控制燈的不同閃爍方式(跑馬燈),按鍵使用中斷方式,使用定時器T1方式1實現(xiàn)一個心跳燈,中斷方式,在Proteus上仿真實現(xiàn)。
二 、具體功能:

     1.選擇兩個I/O端口控制16個LED流水燈。
     2.設(shè)置四個按鍵K1~K4,按下K1跑馬燈,K2鴛鴦戲水,K3雙流水燈,K4則循環(huán)三種控制方式。
     3.跑馬燈:共16個LED逐次點亮,每隔10ms點亮一個LED,點亮10ms后關(guān)閉,然后繼續(xù)上次操作。
     4.鴛鴦戲水燈:第一次單數(shù)燈點亮,延時10ms,關(guān)閉,然后雙數(shù)燈點亮,延時10ms,關(guān)閉,然后繼續(xù)上次操作。
     5.雙流水燈:16個LED依次向中間點亮,間隔10ms,再依次向兩邊擴散點亮,間隔10ms,然后繼續(xù)上次操作。

三、控制電路介紹
16個發(fā)光二極管L1-L16分別接在單片機P0.0-P0.7,P2.0-P2.7。輸出“0”,發(fā)光二極管亮。

四、系統(tǒng)程序
#include "reg51.h"             //此文件中定義了單片機的一些特殊功能寄存器

typedef unsigned int u16;      //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;

sbit K1 = P1 ^0;//按鈕
sbit K2 = P1 ^1;
sbit K3 = P1 ^2;
sbit K4 = P1 ^3;
sbit XTD = P3 ^3;    //P3.3引腳作為心跳燈的控制信號
u8 mode = 0;//模式。0跑馬燈、1鴛鴦燈、2雙流水燈
u8 time = 0;//
u8 done = 0;
u8 time1 = 0;//
u8 times = 0;//計數(shù)
u8 flag = 0;//鴛鴦燈標志
void delay(u16 i)     // delay延時函數(shù)    i=1時,大約延時10us
{
    while (i--);
}

/*******************************************************************************
* 函 數(shù) 名         : Timer1Init
* 函數(shù)功能       : 定時器1初始化
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void Timer1Init() {
    TMOD |= 0X10;//選擇為定時器1模式,工作方式1,僅用TR1打開啟動。

    TH1 = 0XD8;    //給定時器賦初值,定時10ms
    TL1 = 0XF0;
    ET1 = 1;//打開定時器1中斷允許
    EA = 1;//打開總中斷
    TR1 = 1;//打開定時器
}

/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能     : 主函數(shù)
* 輸    入       : 無
* 輸    出        : 無
*******************************************************************************/
void main() {
    Timer1Init();  //定時器1初始化
    while (1) {
        if (!K1)//跑馬燈
        {
            mode = 0;
            times = 0;
            while (!K1);
        }
        if (!K2)//鴛鴦燈
        {
            mode = 1;
            times = 0;
            while (!K2);
        }
        if (!K3)//雙流水燈
        {
            mode = 2;
            times = 0;
            while (!K3);
        }
        if (!K4)//輪詢
        {

            while (!K4) {
                while (!done) mode = 0;
                done = 0;
                while (!done) mode = 1;
                done = 0;
                while (!done) mode = 2;
                done = 0;
            }
        }
    }
}

/*******************************************************************************
* 函 數(shù) 名         : void Timer1() interrupt 3
* 函數(shù)功能       : 定時器0中斷函數(shù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void Timer1() interrupt 3 {
    TH1 = 0XD8;    //給定時器賦初值,定時10ms
    TL1 = 0XF0;
    if (time1 < 60) {
        time1++;
    } else {
        time1 = 0;
        XTD = ~XTD;
    }
    if (time < 30)//300ms
    {
        time++;
    } else {
        time = 0;

        if (times < 17)
            times++;
        else{
            times = 0;
            done = 1;
        }
        switch (mode) {
            case 0: //跑馬燈
                if ((times > 0) && (times < 9)) {
                    P0 = ~(1 << (times - 1));
                    P2 = 0xff;
                }
                if ((times > 8) && (times < 17)) {
                    P2 = ~(1 << (times - 9));
                    P0 = 0xff;
                }
                if ((times == 0) || (times == 17)) {
                    P0 = 0xff;
                    P2 = 0xff;
                }
                break;
            case 1://鴛鴦燈
                if ((times > 0) && (times < 5)) {
                    P0 = ~(1 << (2 * times - 2));
                    P2 = 0xff;
                }
                if ((times > 4) && (times < 9)) {
                    P2 = ~(1 << (2 * (times - 4) - 2));
                    P0 = 0xff;
                }
                if ((times > 9) && (times < 14)) {
                    P0 = ~(1 << (2 * (times - 9) - 1));
                    P2 = 0xff;
                }
                if ((times > 13) && (times < 18)) {
                    P2 = ~(1 << (2 * (times - 13) - 1));
                    P0 = 0xff;
                }
                if ((times == 0) || (times == 9)) {
                    P0 = 0xff;
                    P2 = 0xff;
                }
                break;
            case 2://雙流水燈
                if ((times > 0) && (times < 9)) {
                    P0 = ~(1 << (times - 1));
                    P2 = ~(0x80 >> (times - 1));
                }
                if ((times > 9) && (times < 18)) {
                    P2 = ~(1 << (times - 9));
                    P0 = ~(0x80 >> (times - 9));
                }
                if (times == 0) {
                    P0 = 0xff;
                    P2 = 0xff;
                }
        }
    }
}
//void Timer0Init()   //定時器0初始化
//{
// TMOD|=0X10;       //選擇為定時器1模式,工作方式1,僅用TR1打開啟動。
// TH0=0XFC;      //系統(tǒng)為=采用33MHZ晶振,分頻系數(shù)為12,則定時脈沖周期為0.363636……us
// TL0=0X18;       //1ms=2750*0.363636……us則給定時器賦初值655536-2750=62786=F542H,定時1ms
//
// EA=1;              //打開總中斷   
// ET0=1;         //打開定時器1中斷允許
// TF0=1;        //打開定時器1溢出標志位,產(chǎn)生溢出后,會向CPU申請中斷
// TR0=1;          //打開定時器
//         
//}

//void timer0() interrupt 0        //定時器1中斷函數(shù)
//{   
// TH0=0XFC;               //由于方式1不會自動重裝,因此要在溢出后重裝
// TL0=0X18;
// XTD=~XTD;
// delay(20000);
//}

圖片1.png (53.79 KB, 下載次數(shù): 82)

proteus仿真圖

proteus仿真圖

圖片2.png (44.18 KB, 下載次數(shù): 86)

圖片2.png

圖片3.png (15.66 KB, 下載次數(shù): 77)

圖片3.png

圖片4.png (22.91 KB, 下載次數(shù): 92)

圖片4.png

圖片5.png (21.42 KB, 下載次數(shù): 78)

圖片5.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:760624 發(fā)表于 2020-5-26 13:38 | 只看該作者
我按照你這圖還有程序打的為什么燈不會亮呢
回復(fù)

使用道具 舉報

板凳
ID:766655 發(fā)表于 2020-6-1 17:24 | 只看該作者
味子橙的歡喜 發(fā)表于 2020-5-26 13:38
我按照你這圖還有程序打的為什么燈不會亮呢

你把總線換一下就可以 了
回復(fù)

使用道具 舉報

地板
ID:995527 發(fā)表于 2021-12-22 10:15 來自觸屏版 | 只看該作者
樓主 可以私發(fā)程序嗎 我打出來很多錯誤
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人一区二免费视频软件 | 成人午夜毛片 | 色综合一区二区 | 国产在线一区二区 | 在线视频一区二区 | av一级久久 | 亚洲人成在线播放 | 亚洲在线观看视频 | 成人av激情 | 先锋资源吧 | 91在线视频播放 | 色爱综合网 | 国产伦精品一区二区三区精品视频 | 免费精品视频在线观看 | 精品欧美激情精品一区 | 日本一区二区高清不卡 | 亚洲一区二区三区视频 | 亚洲啊v在线 | 男女国产视频 | 久在线精品视频 | 午夜欧美一区二区三区在线播放 | 国产精品久久久久久久久久 | 久久久噜噜噜久久中文字幕色伊伊 | a免费观看 | 超碰人人艹 | 黄色免费在线观看网址 | 国产精品久久久久久久久图文区 | 国产高清视频 | 国产成人精品午夜视频免费 | 91在线观看免费视频 | 一区二区三区国产精品 | 韩国主播午夜大尺度福利 | 91资源在线 | 亚洲最大的黄色网址 | 91文字幕巨乱亚洲香蕉 | 久久精品中文字幕 | 久久夜夜| 91精品国产91久久久久久吃药 | 日韩精品一区二区三区视频播放 | 欧美激情综合色综合啪啪五月 | av一区二区在线观看 |