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

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

規(guī)范編程——走馬燈

作者:寒竹子   來源:用戶上傳   點(diǎn)擊數(shù):  更新時(shí)間:2014年05月18日   【字體:

 此程序是基于51i單片機(jī)開發(fā)板上面寫的,如需要移植到自己的電路上,修改相應(yīng)的端口即可,開發(fā)板完整的電路圖下載:  點(diǎn)這里  

/**

  ***************************************************************************
  * @file    :  led.h
  * @author  :  xr
  * @date    :  2014年5月15日10:33:21
  * @brief   :  LED頭文件
  ***************************************************************************
  * @ttention
  * 實(shí)驗(yàn)平臺(tái) :  51開發(fā)板
  *
  *
  ***************************************************************************
  */
#ifndef _LED_H_
#define _LED_H_
 
#include <reg52.h>
 
/* 138譯碼器配置及LED數(shù)據(jù)口配置 */
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
 
#define LED_DB P0
 
void ConfigHC138( void );
void LED_Scan( void );
 
#endif /* _LED_H_ */
 
/*************************************************END OF FILE******************/
 
/**
  ***************************************************************************
  * @file    :  led.c
  * @author  :  xr
  * @date    :  2014年5月15日10:33:21
  * @brief   :  LED功能文件
  ***************************************************************************
  * @ttention
  *     實(shí)驗(yàn)平臺(tái) :  Kingst51開發(fā)板
  *     單片機(jī)   :  STC89C52RC MCU
  *     晶振頻率 :  11.0592 MHZ
  ***************************************************************************
  */
#include "led.h"
 
/* 定義跑馬燈數(shù)組 */
unsigned char code LedTable[] = {
                                    0xE0,    // 11100000
                                    0xC1,    // 11000001
                                    0x83,    // 10000011
                                    0x07,    // 00000111
                                    0x0E,    // 00001110
                                    0x1C,    // 00011100
                                    0x38,    // 00111000
                                    0x70     // 11100000
                                  };
 
 
/**
  * @brief   :  138譯碼器配置
  * @param   :  無
  * @retval  :  無
  */
void ConfigHC138( void )
{
    /* 配置138譯碼器選擇LEDS6 */
    ADDR3 = 1;
    ENLED = 0;                 /* 選擇U3 */
    
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;                 /* 選擇LEDS6 */
}
 
/**
  * @brief  :  Led小燈掃描
  * @param  :  無
  * @retval :  無
  */
void LED_Scan( void )
{
    static unsigned char j = 0;
    LED_DB = 0xFF;              /* 消隱 */
    
    LED_DB = LedTable[j++];    /* 送入要求的數(shù)據(jù)到LED顯示數(shù)據(jù)口 */
    j &= 0x07;                 /* 到8歸零 */
}
 
/*******************************************END OF FILE***********/
 
/**
  ***********************************************************************
  * @file    :  main.c
  * @author  :  xr
  * @date    :  2014年5月15日10:27:27
  * @version :  V1.2.3
  * @brief   :  跑馬燈  
  ***********************************************************************
  * @attention
  *     實(shí)驗(yàn)平臺(tái) :  Kingst51開發(fā)板
  *     單片機(jī)   :  STC89C52RC MCU
  *     晶振頻率 :  11.0592 MHZ
  ***********************************************************************
  */
#include <reg52.h>
#include "led.h"
 
/* 定義系統(tǒng)時(shí)鐘 */
#define SYS_XTAL (11059200/12)
 
/* 定時(shí)器T0高低字節(jié)重載值 */
unsigned char thr0, tlr0;
 
/* 200ms到標(biāo)志 */
bit flag200ms = 0;
 
/***********************Local function defines***************************/
 
void ConfigTimer0(unsigned int xms);
 
/************************************************************************/
 
 
/**
  * @brief   :  主函數(shù)
  * @param   :  無
  * @retval  :  無
  */
void main(void)
{
    ConfigHC138();                      /* 配置HC138譯碼器選擇LED小燈 */
    ConfigTimer0(4);                    /* 定時(shí)器T0配置定時(shí)4ms */
    
    while (1)
    {
        if ( flag200ms )
        {
            flag200ms = 0;
            LED_Scan();                    /* 掃描LED小燈 */
        }
    }
}
 
/**
  * @brief  :  配置定時(shí)器T0
  * @param  :  無
  * @retval :  無
  */
void ConfigTimer0(unsigned int xms)
{
    unsigned long tmp;
    
    tmp = (SYS_XTAL * xms) / 1000;   /* 定時(shí)xms需要的計(jì)數(shù)值 */
    tmp = 65536 - tmp + 13;               /* 定時(shí)xms需要裝入的初值 */
    thr0 = (unsigned char)(tmp >> 8);
    tlr0 = (unsigned char)tmp;
    
    TMOD &= 0xF0;                    /* 清零T0控制位 */
    TMOD |= 0x01;                    /* 設(shè)定T0工作方式1 */
    TH0  = thr0;
    TL0  = tlr0;
    ET0  = 1;                        /* 開定時(shí)器0中斷 */
    TR0  = 1;                        /* 開啟定時(shí)器T0 */
    
    EA   = 1;                        /* 開總中斷 */
}
 
/**
  * @brief  :  定時(shí)器T0中斷服務(wù)函數(shù)
  * @param  :  無
  * @retval :  無
  */
void Timer0_ISP() interrupt 1
{
    static unsigned int counter = 0;   /* 計(jì)數(shù)器 */
    
    TH0 = thr0;
    TL0 = tlr0;
    
    counter++;
    
    if ( counter >= 50 )
    {
        counter = 0;
        flag200ms = 1;                 /* 置位200ms標(biāo)志位 */
    }
}
 
/******************************************************END OF FILE********/
關(guān)閉窗口
主站蜘蛛池模板: www中文字幕| 亚洲男人天堂av | 影音先锋在线视频 | 美女久久久久久 | 性猛交xxxx富婆老太婆 | 亚洲成人av在线 | 在线观看的av网站 | 福利视频1000 | 99精品视频免费观看 | 国产三级在线免费观看 | 午夜久久久久久 | 福利视频二区 | 成人午夜又粗又硬又大 | 久久久久久网站 | 欧美成人一级片 | av中文网 | 日本一级淫片色费放 | 亚洲黄色小视频 | 中国第一毛片 | 成av人片一区二区三区久久 | 狠狠艹狠狠干 | 国产精品免费在线 | 国产乡下妇女三片 | 香蕉视频色 | 亚洲一区二区在线视频 | 欧美国产日韩一区二区 | 激情综合网五月 | 国产黄a三级三级三级看三级男男 | 午夜国产在线 | 在线看片a | 久久久久久久成人 | 国产三级黄色 | 国产成人精品毛片 | 国产成人一区二区 | 亚洲福利影院 | 性大毛片视频 | 黄色网址在线免费观看 | 丁香六月婷婷 | av福利网站 | 午夜婷婷| 国产不卡在线视频 |