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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1053|回復: 1
打印 上一主題 下一主題
收起左側

基于stc51 4位LED的基礎顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:593265 發表于 2019-7-31 18:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//Descriptions:                數碼管實驗       

#define MAIN_Fosc                11059200L        //定義主時鐘
#include        "15W4KxxS4.H"


#define  uint unsigned int  
#define  uchar unsigned char  
sbit s3=P5^4;
uchar code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar  disbuf[4]={0,0,0,0};

uchar code LED_0F[] =
{// 0         1          2           3        4         5          6           7        8         9          A           b        C    d          E    F    -
        0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf
};

/**********************
引腳別名定義
***********************/

sbit TM1637_DIO = P2^0;                                //串行數據輸入
sbit TM1637_CLK  = P2^1;                        //時鐘脈沖信號——上升沿有效

// 全局變量
//uchar LED[8];                //用于LED的8位顯示緩存
uchar NumDis[24]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0X6F,\
                          0x77,0x7C,0x39,0x5E,0x79,0x71,\
                          0x08,0x48,0x49,\
                          0x76,0x38,0x0E,0x50,0x37};//0123456789ABCDEF一二三HLJRS

#define TM1637_DIO_IN()     {P2M0 = 0;        P2M1 = 0;        }     //設置TM1637_DIO引腳為準雙向口(輸入)
#define TM1637_DIO_OUT()    {P2M0 = 0x01;        P2M1 = 0;}    //設置TM1637_DIO引腳為輸出口
#define TM1637_READ_DIO     TM1637_DIO == 1             //讀取TM1637_DIO口的狀態

/**************************************
功能描述:延時函數
入口參數:uint x ,該值為1時,延時1ms
返回值:無
***************************************/
void delay_ms(uint x)
{  
        uint j,i;   
        for(j=0;j<x;j++)   
        {   
                for(i=0;i<1100;i++);   
        }  
}

/**************************************
功能描述:延時函數
入口參數:uint x ,該值為1時,延時us
返回值:無
***************************************/
void delay_us(uint n)                  
{
        uint j,i;   
        for(j=0;j<n;j++)   
        {   
                for(i=0;i<7;i++);   
        }
}

/**************************************
功能描述:TM1637開始函數
入口參數:無
返回值:無
***************************************/
void TM1637_Start(void)
{
        TM1637_DIO_OUT();
  TM1637_CLK = 1;
        TM1637_DIO = 1;
        delay_us(2);
        TM1637_DIO = 0;
}

/**************************************
功能描述:TM1637應答函數
入口參數:無
返回值:無
***************************************/
void TM1637_Ack(void)
{
        TM1637_DIO_IN();
  TM1637_CLK = 0;
        delay_us(5);  //在第8個時鐘下降沿之后延時5us,開始判斷ACK信號
        while(TM1637_READ_DIO);
        TM1637_CLK = 1;
        delay_us(2);
        TM1637_CLK = 0;
}


/**************************************
功能描述:TM1637停止函數
入口參數:無
返回值:無
***************************************/
void TM1637_Stop(void)
{
        TM1637_DIO_OUT();
        TM1637_CLK = 0;
        delay_us(2);
        TM1637_DIO = 0;
        delay_us(2);
        TM1637_CLK = 1;
        delay_us(2);
        TM1637_DIO = 1;
}

/**************************************
功能描述:向TM1637寫一個字節
入口參數:uchar oneByte
返回值:無
***************************************/
void TM1637_WriteByte(uchar oneByte)
{
  uchar i;
        TM1637_DIO_OUT();
        for(i=0;i<8;i++)
        {
         TM1637_CLK = 0;
                if(oneByte&0x01)    //低位在前
                {
                        TM1637_DIO = 1;
                }
                else
                {
                        TM1637_DIO = 0;
                }
                delay_us(3);
                oneByte=oneByte>>1;
                TM1637_CLK = 1;
                delay_us(3);
        }
}

/**************************************
功能描述:寫顯示寄存器
入口參數:無
返回值:無
***************************************/
void TM1637_NixieTubeDisplay(void)
{
        uchar i;
        TM1637_Start();
        TM1637_WriteByte(0x40);//40H顯示地址自加1模式
        TM1637_Ack();
        TM1637_Stop();
        TM1637_Start();
        TM1637_WriteByte(0xC0);  //設置首地址
        TM1637_Ack();
               
        for(i=0;i<6;i++)   //地址自加,不必每次都寫地址
        {
                TM1637_WriteByte(0xff);  //送數據
                TM1637_Ack();
        }
        TM1637_Stop();
        TM1637_Start();
        TM1637_WriteByte(0x8f);   //開顯示,最大亮度
        TM1637_Ack();
        TM1637_Stop();
}

/**************************************
功能描述:向指定地址顯示一個字節內容
入口參數:uchar ch,uchar p
返回值:無
***************************************/
void TM1637_NixieTubeDisplayChar(uchar ch,uchar p)//分別代表數碼管的位數以及所顯示的數字
{
        if(ch>23) ch=0;//防止數組越界
        TM1637_Start();
        TM1637_WriteByte(0x44);//0x44固定模式有利于控制顯示位,0x40則采用顯示地址自加模式這里不使用
        TM1637_Ack();
        TM1637_Stop();
        TM1637_Start();
       
        TM1637_WriteByte(0xC0+p);//0X00地址開始顯示
        TM1637_Ack();
               
        TM1637_WriteByte(NumDis[ch]);//顯示
        TM1637_Ack();               
}


/***********************
功能描述:主函數
入口參數:無
返回值:無
************************/
int main()
{
uint Distance=30;
uint Speed=10;
        uchar ch=0, p=0;
/////////////////////////////////////////////////
//注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為
//      高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用
//相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
//        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
/////////////////////////////////////////////////
        P0M1 = 0;        P0M0 = 0;        //設置P0.0~P0.7為準雙向口
        P1M1 = 0;        P1M0 = 0;        //設置P1.0~P1.7為準雙向口
        P2M0 = 0;        P2M1 = 0;        //設置P2.0~P2.7為準雙向口
        P3M1 = 0;        P3M0 = 0;        //設置P3.0~P3.7為準雙向口
        P4M1 = 0;        P4M0 = 0;        //設置P4.0~P4.7為準雙向口
        P5M1 = 0;        P5M0 = 0;        //設置P5.0~P5.7為準雙向口
       
  TM1637_NixieTubeDisplay();

        while(1)

        {               
                                        TM1637_NixieTubeDisplayChar(0,1);
                                        TM1637_NixieTubeDisplayChar(0,0);
                                                                                         TM1637_NixieTubeDisplayChar(Distance/10,2);
                                                                                    TM1637_NixieTubeDisplayChar(Distance%10,3);
                                                                                       
                                                                        if(s3==0)
                                                                                         {TM1637_NixieTubeDisplayChar(Speed/10,2);
                                                                                    TM1637_NixieTubeDisplayChar(Speed%10,3);
                                                                                        delay_ms(5000);
                                                                                         }
                                                                               
                     
                                 
                          }

         }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-7-31 23:36 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人在线免费 | 天天综合国产 | 国产精品久久久久久久免费大片 | 激情视频网站 | 超碰日本 | 一区二区三区在线电影 | 羞羞在线观看视频 | 久草在线青青草 | www视频在线观看 | 欧美精品在线一区 | 99久久国产免费 | 日韩在线免费电影 | 国产一区二区激情视频 | 一区二区三区四区毛片 | 久久久久久久久精 | 天天综合久久 | 日韩一区中文字幕 | 亚洲一区高清 | avtt国产| 国产精品视频导航 | 精品欧美一区二区精品久久久 | 免费成人在线网站 | 欧美日韩精品 | japanhd美女动| 亚洲视频中文字幕 | 国产目拍亚洲精品99久久精品 | 亚洲精品电影网在线观看 | 黄色大片免费播放 | 久久在线 | 中文字幕一区二区三区精彩视频 | 成人精品一区二区三区中文字幕 | 国产乱一区二区三区视频 | 色爱综合网 | 7777在线 | 国产精品自产av一区二区三区 | 亚洲成人精品 | 午夜免费福利电影 | 亚洲精品久久久久久久久久久 | 日韩欧美网| 欧美在线观看一区 | 91婷婷韩国欧美一区二区 |