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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機左右流水燈與數碼管動態顯示C程序

作者:徐冉   來源:本站原創   點擊數:  更新時間:2014年03月24日   【字體:

本程序所用的原理圖下載: 點這里 ,單片機芯片使用的stc89c52;找到相應部分即可.這是一整個單片機開發板的電路圖其他的忽略.以下是通過測試的源代碼:

/*
*功能:用定時器0實現定時200毫秒流水燈,
*    同時用定時器1實現動態顯示654321,
*    且蜂鳴器發聲;
*日期:2014-03-24
*作者:徐冉
*注意事項:若打開兩個定時器時,必須使用兩個定時器,
*     否則兩個定時器都不工作!!!
**/
/**********AT89C52-RC 51hei單片機實驗板**************/
/*************51hei-開發板*********************/
#include <reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit wela = P2^7;  //數碼管位聲明
sbit dula = P2^6; //數碼管段選聲明
sbit FM = P2^3;//蜂鳴器聲明
uchar counter = 0, counter1 = 0, j = 0, flag = 0, flag1 = 0;
uchar num = 6, num1 = 0;
//數碼管段選編碼
uchar code table_du [] = {  
          0x3F,  //"0"
                   0x06,  //"1"
                   0x5B,  //"2"
                   0x4F,  //"3"
                   0x66,  //"4"
                   0x6D,  //"5"
                   0x7D,  //"6"
                   0x07,  //"7"
                   0x7F,  //"8"
                   0x6F,  //"9"
                   0x77,  //"A"
                   0x7C,  //"B"
                   0x39,  //"C"
                   0x5E,  //"D"
                   0x79,  //"E"
                   0x71,  //"F"
                   0x76,  //"H"
                   0x38,  //"L"
                   0x37,  //"n"
                   0x3E,  //"u"
                   0x73,  //"P"
                   0x5C,  //"o"
                   0x40,  //"-"
                   0x00,  //熄滅
                   0x00  //自定義
       };
//數碼管位選編碼
uchar code table_we[] = {
       0xfe,
       0xfd,
       0xfb,
       0xf7,
       0xef,
       0xdf
       };
void init();
void display();
void main()
{
 
 init();
 while(1)
 {
   if(counter1 == 30)
   {
    counter1 = 0;
   display();
   num--;
   num1++;
   if(num == 0)
   {
    num = 6;
   }
   if(num1 == 6)
   {
    num1 = 0;
    }
   }
  
   if(counter == 200)//定時到4秒后,流水燈向右流動
   {     
    counter = 0;//counter清零,
   //關閉定時器0
   TR0 = 0;
   //ET0 = 0;
   flag = 1; //標志變量置1后,定時器重新初始化
   TH0 = 0xB8; //定時器0定時20毫秒
   TL0 = 0x00;
   TR0 = 1;   //重新打開定時器0
   //ET0 = 1;
   j = 0;
   }
 }
}
//定時器初始化程序
void init()
{
 //定時器0和定時器1初始化函數
 TMOD = 0x11;//定義定時器1和0在工作方式1下
 TH0 = 0xB8; //定時器0定時20毫秒
 TL0 = 0x00;
 TH1 = 0xFC; //定時器1定時20毫秒
 TL1 = 0x67;
 TR0 = 1;   //打開定時器0
 TR1 = 1;   //打開定時器1
 EA = 1; //打開總中斷
 ET0 = 1;  //打開定時器0中斷
 ET1 = 1;  //打開定時器1中斷
}
//數碼管顯示子程序
void display()
{
 dula = 1;
 P0 = table_du[num];
 dula = 0;
 P0 = 0xff;
 wela = 1;
 P0 = table_we[num1];
 wela = 0;
 dula = 1;
 P0 = table_du[num];
 dula = 0;
 P0 = 0xff;
 wela = 1;
 P0 = table_we[num1];
 wela = 0;
 
 dula = 1;
 P0 = table_du[num];
 dula = 0;
 P0 = 0xff;
 wela = 1;
 P0 = table_we[num1];
 wela = 0;
 
 dula = 1;
 P0 = table_du[num];
 dula = 0;
 P0 = 0xff;
 wela = 1;
 P0 = table_we[num1];
 wela = 0;
 
 dula = 1;
 P0 = table_du[num];
 dula = 0;
 P0 = 0xff;
 wela = 1;
 P0 = table_we[num1];
 wela = 0;
 
 dula = 1;
 P0 = table_du[num];
 dula = 0;
 P0 = 0xff;
 wela = 1;
 P0 = table_we[num1];
 wela = 0;
 
}
//中斷定時器0
void int_time0() interrupt 1
{
  TH0 = 0xB8;
  TL0 = 0x00;
  counter++;
  if(flag == 0)
  {
   if(counter % 10 == 0)//定時200毫秒
   {
    P1 = ~(1 << j++);//流水燈左移流動
    if(j == 8)
    {
     j = 0;
    }
   }
   }
   else
   {
    if(counter % 5 == 0)
   {
    //counter = 0;
     //流水燈右移流動
     P1 = ~(0x80 >> j++);
    FM = ~FM;
    if(j == 8)
    j = 0;
   }
   }
 
 
}
//中斷定時器1
void int_time1() interrupt 3
{
   TH1 = 0xFC;
  TL1 = 0x67;
  counter1++;
 
}
 

 

關閉窗口

相關文章

主站蜘蛛池模板: 香蕉超碰 | 成人午夜电影在线观看 | 亚洲国产成人精品在线 | 国产亚洲一区二区三区在线观看 | 亚洲人成人一区二区在线观看 | 91精品在线播放 | 可以看黄的视频 | 色男人的天堂 | 在线观看精品视频网站 | 成人av高清在线观看 | 在线免费观看亚洲 | 日韩av成人在线 | 国产视频中文字幕 | 全部免费毛片在线播放网站 | 在线观看免费av网站 | 久久精品国产一区 | 国产精品久久久久久影院8一贰佰 | 国产97久久 | 亚洲人成人一区二区在线观看 | 国产欧美精品 | 国产高清在线精品 | 可以在线观看av的网站 | 国产欧美日韩精品一区二区三区 | www.youjizz.com日韩 | 日韩国产欧美在线观看 | 国产精品永久 | 午夜a√| 亚洲国产精品激情在线观看 | 二区三区视频 | 欧美精品一区在线发布 | 亚洲欧美一区二区三区视频 | 颜色网站在线观看 | 草久久免费视频 | 日本一道本视频 | 久久不射电影网 | 欧美一二精品 | 免费观看a级毛片在线播放 黄网站免费入口 | 国产美女网站 | 日韩在线xx | 一区影视| 一区二区三区不卡视频 |