wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術(shù)學(xué)習(xí)與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

基于AVR單片機的上下課自動打鈴系統(tǒng)的實現(xiàn)(放出原理圖+程序原碼)

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年10月29日   【字體:
昨晚花一晚上把這些資料整理了一下,全部發(fā)出來了。
由于補課沒有鈴。3月份做了這個東西,已實際使用,穩(wěn)定運行一個學(xué)期。
上運行圖:

 

硬件如下:AVR ATmega16單片機,開發(fā)板(用到上面的:繼電器、LED走馬燈、兩個按鈕)、門鈴、LED若干、16Mhz無源晶振。
 
硬件照片:
開發(fā)板:
AVR單片機:
晶振:

 

——————————好了 照片曬完了,下面開始正文——————————
原理圖如下:
好吧我的能耐真大,這電路圖不是用什么CAD專業(yè)軟件畫的,而是用Windows畫 圖板用鼠標一筆一劃畫的。。。所以效果不是很好,湊合著看吧,知道個大概就行了。(開發(fā)板上肯定還有其他資源,電路圖中的資源也不止開發(fā)板上的。這個電路 圖是本系統(tǒng)的原理圖而不是開發(fā)板的全部電路圖,畫的只是和本系統(tǒng)有關(guān)的東西,開發(fā)板上其他無關(guān)的就不畫了,也不需要畫)
簡單說明下:
L1~L8對應(yīng)開發(fā)板上的8LEDD2~D6對應(yīng)上面運行圖上的那5個紅色“上課指示燈”;D1為一盞綠色的LED(運行圖上注意點看,用透明膠包住的那個綠色LED),用于監(jiān)視程序是否在運行(晶振是否起振,是否死機);K1 K2用于選擇上午下午(上午有早讀,下午沒有)。繼電器不用說了,控制門鈴開關(guān)用。
下面放出源程序。(剛剛我已在程序中加入了很多注釋了,后面還是要做下解析):
————源程序(本程序版權(quán)歸李彥鋒所有)————
#define  uchar unsigned char
#define  uint  unsigned int
#define  ulong unsigned long int
volatile uint nowtime;//計時變量。然后下面的幾個變量是一些邏輯控制的
volatile uint ledmode;
volatile uint shangkeledmode;
volatile uint shangkeledtime;
volatile uint class;//上下課邏輯,上課為1,下課為0,見主函數(shù)

#include <iom16v.h>
#include <macros.h>

void port_init(void)
{
DDRB=0xFF;
PORTB=0x00;
DDRC=0xFF;
DDRA=0XFF;
DDRD|=0XF0;
//初始化IO口
}


void timer0_init(void)
{

TCCR0 = 0x00;
TCNT0 = 0x06;
OCR0  = 0xFA;
TCCR0 = 0x03;
//初始化timer0
}
//timer0本系統(tǒng)中用于控制上下課指示燈閃爍
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
tm0rsf();//別看漏
TCNT0 = 0x06;
}

//TIMER1 initialize - prescale:256
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 1Sec
// actual value:  1.000Sec (0.0%)

void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0x0B; //setup
TCNT1L = 0xDC;
OCR1AH = 0xF4;
OCR1AL = 0x24;
OCR1BH = 0xF4;
OCR1BL = 0x24;
ICR1H  = 0xF4;
ICR1L  = 0x24;
TCCR1A = 0x00;
TCCR1B = 0x04; //start Timer
//初始化timer1
}

//timer1本系統(tǒng)中用于上課時間和下課時間計時

#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
void timer1_ovf_isr(void)
{
tm1rsf();//哈哈可能有人漏看了這里,回調(diào)函數(shù)執(zhí)行另一個函數(shù),這樣程序看起來更整潔,這是我的編程習(xí)慣^v^

TCNT1H = 0x0B;
TCNT1L = 0xDC; //重載高低值

//timer1回調(diào)函數(shù)
}


void init_devices(void)
{
CLI();
port_init();
timer0_init();
timer1_init();
MCUCR = 0x00;
GICR  = 0x00;
TIMSK = 0x05;
SEI();
}


void delay(uint ms) //這個就不用說了 死循環(huán)延遲
{
    uint i,j;
    for(i=0;i<ms;i++)
            {
                    for (j=0;j<2300;j++);
                }
}

void tm0rsf()//控制上課指示燈閃爍的函數(shù),不喜歡寫在回調(diào)函數(shù)里,這樣程序看起來更工整。。。
{

if(class==1)//是否上下課,上課就閃,下課就不閃。
{
shangkeledtime++;
    if (shangkeledtime==150)//150ms閃一下。其他自己看吧。。。。
    {
        shangkeledtime=0;
            if(shangkeledmode==1) //開燈,相應(yīng)IO輸出高電平
            {
                PORTA|=0X54;
                    PORTC|=0x02;
                        PORTD|=0x20;
                    shangkeledmode=0;
            }
            else //關(guān)燈,相應(yīng)IO輸出低電平(接地)
            {
                PORTA&=0X03;
                    PORTC&=0xFC;
                        PORTD&=0XDF;
                shangkeledmode=1;//邏輯自己看吧。。。。
            }
    }
}
else
{
    PORTA&=0X03;
        PORTC&=0xFC;
        PORTD&=0XDF;
}
}

void tm1rsf()//timer1回調(diào)函數(shù)執(zhí)行的函數(shù)
{
nowtime++;//計時變量自增
if(ledmode==1)//嗯這個就是控制D0 LED閃爍的了,主要就是看timer1是不是在走。
{
    ledmode=0;
        PORTA|=0x01;
}
else
{
    ledmode=1;
        PORTA&=0XFE;
}

}

void ring()//響鈴函數(shù),控制繼電器的。。(PC7輸出高電平)
{
PORTC=0xFF;//因為PC口只有用到一個PC7所以不管這么多懶得算了直接全部輸出高電位
delay(300);
PORTC=0x00;
delay(8300);
PORTC=0xFF;
delay(300);
PORTC=0x00;
delay(8300);
}
uchar key_press()//檢測K1K2是否按下。。
{
    uchar j;
    DDRD|=0X0F;
        PORTD|=0X0F;
        
        DDRD&=0XF0;
        
        j=PIND;
        j=j&0X0F;
        if(j==0X0F)
        {
          return 0;
        }
        else
        {
         return 1;
        }
        
}

uchar key_scan()//檢測是K1還是K2按下。。
{
    uchar key;
    delay(10);
        if(key_press())
        {
        key=PIND;
        key&=0X0F;
        switch(key)
        {
           case 0X0E:
               key=1;
                   break;
           case 0X0D:
               key=2;
                   break;
           default:        
               key=0;               
        }
          while(key_press());
        }
        else
        {
          key=16;
        }
        return key;
}

void main()//好了主函數(shù)開始了。。。
{
    uchar i,j;
        uint k,mode;
        uint ledmode;
init_devices();//初始化IO。。上面有。

k=0;
ledmode=1;//邏輯自己看,不用解釋。。。

        while(k==0) //注意了 這一段是上電后等待按下K1K2的。
        {
          if(ledmode==1)//上電后LED走馬燈在那狂閃(按下之前)
          {
              PORTB=0XF0;delay(80);
                  ledmode=0;
          }
          else{PORTB=0X0F;delay(80);ledmode=1;}
          i=key_press();
          if(i)
          {//判斷按的哪個
             j=key_scan();
                 if (j==1)
                 {mode=1;k=1;}
                 if (j==2)
                 {mode=2;k=1;}
          }
        }
        
        
if (mode==1)//如果按的K1,也就是早上用,有早讀的
{
        uint overzaodu;
        uint canoverzaodu;
        overzaodu=0;
        canoverzaodu=0;
    PORTB=0XF3;//早讀上課時跑馬LED亮上面2盞(亮上面。。代表上午^v^)
        nowtime=0;
        class=1;
while(canoverzaodu==0)
{
        if (class==1)
    {
                    if (nowtime==1200)//先上20分鐘的早讀
                        {
                                class=0;
                                nowtime=0;
                                overzaodu++;
                                ring();//早讀下課打鈴
                        }
    }
        else
        {

                    if (nowtime==300)//早讀休息5分鐘,接下來自己看吧
                        {
                           
                                
                                class=1;
                                nowtime=0;
                                overzaodu++;
                            ring();
                                ring();
                                PORTC=0xFF;
                                delay(300);
                                PORTC=0x00;
                        }
        }
        if (overzaodu==1)
        
        {
            PORTB=0XF1;//早讀下課,LED多亮一盞
        }
        if (overzaodu==2)
        {
        canoverzaodu=1;
        PORTB=0XF0;//早讀結(jié)束,LED亮完上面4盞。。
        }//然后跳出早讀while,進入到下面正常上課while--上課40分鐘,下課10分鐘,上課,下課…………無限循環(huán)。。。
}
}

if (mode==2)//按下K2,也就是下午用的
{
    PORTB=0X0F;
        class=1;//邏輯,上課為1下課為0
                            ring();
                                ring();
                                PORTC=0xFF;
                                delay(300);
                                PORTC=0x00;//這都是打鈴用的。。上課比較吵,要打5遍。(一個ring打兩遍,兩個ring后直接在這里控制IO再打一遍)
}

nowtime=0;

while(1)//正常上課while,這里就不解釋太多了,邏輯和上面早讀的差不多的

{


     if (class==1)
    {
                    if (nowtime==2400)//是否夠40分鐘
                        {
                                class=0;
                                nowtime=0;//計時變量清零
                                ring();//打鈴,下課打2遍就好了(一個ring兩遍,具體看上面ring函數(shù))
                        }
    }
        else
        {
                    if (nowtime==600)
                        {
                           
                                
                                class=1;
                                nowtime=0;
                            ring();
                                ring();
                                PORTC=0xFF;
                                delay(300);
                                PORTC=0x00;//上課打5遍鈴,其他就不解釋這么多了,邏輯一樣的自己看就行。
                        }
        }
}
}
————源程序(本程序版權(quán)歸李彥鋒所有)————
再簡單說下吧,程序中的邏輯就不說了。
1.點亮L1~L8PB0~PB7輸出低電平(接地),因為那頭接的是VCC +5V的正電壓。
2.PC7輸出高電位,繼電器BC導(dǎo)通,接通門鈴,就響了。
3.D1~D6我是直接把LED的正負接在IO口上的,所以輸出電位的時候一高一低。其實可以IO口上全接正然后統(tǒng)一接地,但是這樣麻煩,反正有足夠的IO口,就這么干了。
附:最早是用內(nèi)部時鐘,然后后來跑不準,折騰了我一個星期,后來才發(fā)現(xiàn)是內(nèi)部時鐘的問題,上了個晶振,解決問題。。。
好了就說到這里,結(jié)束。
關(guān)閉窗口

相關(guān)文章

在线视频一区二区三区四区| 午夜av在线免费观看| 亚洲影院在线播放| 日本精品一区在线| 日韩.欧美.亚洲| 欧美在线观看视频| 欧美videossexotv100| 亚洲欧洲精品天堂一级| 麻豆视频一区二区| 精品视频网站| 主播大秀视频在线观看一区二区| 可以在线观看的av| xxxx黑人da| 中文字幕av高清| 精品视频一二三区| xxxxx99| 少妇黄色一级片| 色综合久久av| 成人女保姆的销魂服务| 欧美精品亚州精品| 亚洲精品v欧美精品v日韩精品| 亚洲线精品一区二区三区| 成人一级片网址| 国产精品毛片在线| 五月婷婷六月综合| 操欧美女人视频| av亚洲一区二区三区| 欧美肥老妇视频| 五月天激情开心网| 亚洲狼人综合| 久久亚洲国产成人亚| 中文字幕在线网址| 欧美日韩综合一区二区| 中文字幕精品久久久| 亚洲色图38p| 免费视频爱爱太爽了| 日韩激情久久| 精品久久一区二区三区蜜桃| 国产乱肥老妇国产一区二| 欧美乱大交xxxxx另类电影| 精品乱码亚洲一区二区不卡| 欧美日韩国产另类不卡| 黄色精品在线看| 亚洲精品高清在线观看| 久久九九影视网| 26uuu亚洲| 国产一区二区影院| 久久99热狠狠色一区二区| 国产一区二区三区四区老人| av亚洲免费| 精品精品国产毛片在线看| 亚洲男人在线| 国产成人免费9x9x人网站视频| 国产偷倩在线播放| 在线观看中文字幕的网站| 成年人视频免费在线观看| 九草视频在线观看| 成人福利视频导航| 1024在线视频| 性综艺节目av在线播放| 交换国产精品视频一区| jizz国产| 蜜臀在线观看| 羞羞视频网站在线观看| 亚洲kkk444kkk在线观看| 欧美13~18sex性hd| 超碰96在线| 一区 二区 三区| 你懂的在线播放| 日韩一二三四| 91官网在线| 最新黄网在线观看| 黑人极品ⅴideos精品欧美棵| av在线下载| av资源在线| 午夜精品成人av| 北岛玲精品视频在线观看| 日本一区二区三区播放| 女一区二区三区| 999精品视频| 激情丁香综合| 日韩av不卡在线观看| 久草资源在线观看| 夜级特黄日本大片_在线| 二区三区四区高清视频在线观看| 99热国产在线中文| 在线最新版中文在线| 91伊人久久| 精品无人区一区二区| 日本大胆欧美| 欧美日韩四区| 麻豆成人在线观看| 99久久免费精品高清特色大片| 成人性生交大片免费| 欧美国产精品专区| 天涯成人国产亚洲精品一区av| 91久久线看在观草草青青| 91麻豆精品国产自产在线观看一区 | 天堂久久av| 国模吧精品视频| 欧美日韩专区| 国内精品自线一区二区三区视频| 91丨九色丨尤物| 一区二区免费看| 欧美日韩精品一区二区| 亚洲三级黄色在线观看| 97婷婷大伊香蕉精品视频| 亚洲www视频| 伊人色综合影院| jizz欧美激情18| 最近中文字幕免费视频| 欧美不卡视频在线观看| 男人天堂网在线视频| 66av国产| 亚洲人av在线| 欧美成人ⅴideosxxxxx| 美女亚洲一区| 日韩在线观看一区二区| 久久久久久久久久久久久久久99| 亚洲电影一区二区三区| 精品va天堂亚洲国产| 韩日欧美一区二区| 久久精品日产第一区二区三区乱码| 国产精品videossex国产高清| av地址在线观看| 日韩污视频在线观看| 无码精品人妻一区二区| 丁香婷婷激情| 超碰97免费在线| 日韩av影院| 青青国产91久久久久久| 最新久久zyz资源站| 欧美一级在线观看| 7777精品久久久久久| 日日骚一区二区网站| 红桃视频一区二区三区免费| 日本少妇激情舌吻| 欧美女人天堂| 在线视频三区| 久久精品国产亚洲5555| 久久午夜电影| 亚洲精选在线视频| 亚洲偷欧美偷国内偷| 亚洲一区二区日本| 每日在线更新av| 在线观看黄网址| 天天综合网天天综合| 久草在线资源视频在线观看| 精品久久福利| 久久久噜噜噜| 亚洲五码中文字幕| 久久精品视频网站| 日本电影一区二区三区| 久草免费资源站| 久草视频在线免费| www.五月色.com| 性爽视频在线| 亚洲乱码久久| 亚洲成人一区二区| 欧美华人在线视频| 日韩人妻一区二区三区蜜桃视频| 亚洲AV无码片久久精品| 天堂av2024| 国产黄色在线| 伊人久久大香线蕉综合网蜜芽| 国产成人av一区| 91精品国产日韩91久久久久久| 国产黑人绿帽在线第一区| 欧美变态另类刺激| 亚洲第一网站在线观看| 毛片av免费观看| 成人国产综合| 国精产品一区一区三区mba桃花| 欧美中文字幕一二三区视频| 国产成人一区二| 中文字幕在线综合| 在线观看视频二区| 在线看小视频| 日韩影视在线观看| 国产视频一区在线观看| 色琪琪综合男人的天堂aⅴ视频| 日韩欧美在线观看强乱免费| 91狠狠综合久久久久久| 国产成人亚洲欧美电影| 老牛影视精品| 日本一不卡视频| 欧美人牲a欧美精品| 春色成人在线视频| 国产精品麻豆入口| 亚洲欧美日韩成人网| free性欧美| 久久一区视频| 日韩欧美二区三区| 欧美成ee人免费视频| 日韩精品一区二区三区在线视频| 人人干人人插| 亚洲一区有码| 99久久免费视频.com| 自拍偷拍亚洲在线| 国内少妇毛片视频| 中文字幕免费在线看| 未来日记在线观看| 欧美.www| 欧美调教femdomvk| 99久久精品无码一区二区毛片 | 国产精品综合久久| 亚洲国产精品99久久| 日韩av图片| 久久国产精品波多野结衣av| 国产九一视频| 在线看成人短视频| 一二三区精品福利视频| 欧美又大粗又爽又黄大片视频| 91激情视频在线| 免费国产羞羞网站视频| av网址在线看| 九九**精品视频免费播放| 精品成人免费观看| 中文字幕在线观看一区二区三区| 欧美精品二区三区| 天堂中文在线8| 欧美日韩三级电影在线| 欧美美女bb生活片| 亚州欧美一区三区三区在线| 六月丁香在线视频| 免费一级在线观看| 午夜激情在线观看| 亚洲电影在线| 日韩欧美一区在线观看| 日韩精品不卡| 91porny九色| 在线免费av导航| 国产在线播放一区三区四| 亚洲人成网站在线| 国产精品第8页| 亚洲最大成人网站| 先锋av影院| 成人看的羞羞网站| 欧美中文字幕一区二区三区亚洲| 欧美性大战久久久久| 真实的国产乱xxxx在线91| 超碰在线免费公开| 国产成人自拍高清视频在线免费播放| 日韩在线视频网站| 色姑娘综合天天| 啪啪免费网站| 精品国产一区二区三区av片| 欧美日韩激情在线| 丁香六月激情网| 性xxxx搡xxxxx搡欧美| 亚洲精品伊人| 亚洲成人自拍偷拍| 日韩在线第一区| 国产精品久久婷婷| 日韩精品影院| 一区二区中文视频| 福利视频久久| 无码久久精品国产亚洲av影片| 欧美午夜大胆人体| 久久毛片高清国产| 91免费看片在线| 国产美女激情视频| 久操av在线| 欧美国产精品v| 成人91免费视频| 一区二区视频免费| 亚洲精品粉嫩美女一区| 一区二区欧美国产| 亚洲成人第一| 性18欧美另类| 狠狠做深爱婷婷综合一区| 欧美一区日韩一区| 亚洲性生活网站| 日日摸夜夜爽人人添av| 狠色狠色综合久久| 色偷偷噜噜噜亚洲男人| 香蕉视频久久久| 美女毛片在线看| av电影一区二区| 97超级碰碰| 国产按摩一区二区三区| 日本在线成人| 欧美一区二区三区在线观看 | 日韩av成人在线| 欧美精品久久久久性色| 18video性欧美19sex高清| 亚洲天堂网中文字| 日韩视频专区| 久久综合香蕉| 午夜久久福利| 欧美成人一二三| 成人三级视频在线观看| 日本高清在线观看视频| 亚洲天堂av一区| 影音先锋亚洲视频| 欧美精品另类| 在线观看亚洲| 久久久女人电视剧免费播放下载| 日韩在线观看视频一区二区| 久久电影网站| 一本一本大道香蕉久在线精品| 91视频 -- 69xx| 播九公社成人综合网站| 免费观看久久久4p| 亚洲va国产va天堂va久久| 国产伦理一区二区| 日韩欧美ww| 日韩中文字幕欧美| 久久久久久视频| 欧美极品免费| 91精品一区二区三区在线观看| 在线观看你懂的视频| 久草在线青青草| 一色桃子久久精品亚洲| 欧美乱做爰xxxⅹ久久久| 9自拍视频在线观看| 国产美女av一区二区三区| 成人av免费看| 日本少妇毛茸茸高潮| 国产精品久久免费视频 | 久久丝袜美腿综合| 一区二区91美女张开腿让人桶| 韩国三级电影在线观看婷婷| 天堂av在线一区| 91麻豆桃色免费看| 日本xxxxxwwwww| 极品中文字幕一区| 国产精品视频大全| 人妻一区二区三区免费| 欧美日本一区| 成人在线视频福利| 亚洲色图欧美视频| 亚洲久久在线| 国产日韩二区| 天堂在线免费视频| 国产高清不卡二三区| 日本精品二区| 成人亚洲在线观看| 久久久精品综合| 亚洲精品电影网站| 亚洲熟女毛茸茸| 精品国产亚洲一区二区在线观看| 精品五月天久久| 国产在线视频在线观看| 色老板在线视频一区二区| 久久精品国产电影| 国产一卡二卡三卡| 欧美精品黄色| 91久久嫩草影院一区二区| 欧美乱妇高清无乱码免费| 久久成人免费日本黄色| 91香蕉视频网址| eeuss在线观看| 亚洲国产成人91porn| 黄色在线免费播放| 精品国产第一福利网站| 日韩精品久久久久| 亚洲av无码乱码国产精品fc2| 久久精品高清| 成人激情视频网| 你懂的在线观看视频| 久久久99精品免费观看不卡| 日本新janpanese乱熟| 久草中文在线观看| 亚洲成av人乱码色午夜| 国产一级视频在线播放| 国产精品嫩模av在线| 成人在线视频网站| 色的视频在线观看免费播放| 2020国产精品| 亚洲午夜激情影院| 色是在线视频| 中文欧美日本在线资源| www.污视频| 精品一区二区三区视频| 国产aaa免费视频| 日本一级理论片在线大全| 日韩电影在线观看中文字幕| 在线免费看91| 久久国产综合精品| 久久久久免费看黄a片app| 亚洲第一图区| 伊人久久免费视频| 高潮一区二区三区乱码| 久久精品久久综合| 黄色片一级视频| 操人在线观看| 久久中文字幕视频| 欧美成人高清手机在线视频| 久久久午夜精品理论片中文字幕| av亚洲天堂网| 色狠狠一区二区三区| 国产精品欧美在线| 先锋影音资源999| 在线观看欧美精品| 久久久久久久久久久久久久av| 亚洲精品九九| 中国丰满熟妇xxxx性| 波多野结衣久久| 精品少妇v888av|