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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5358|回復: 8
收起左側

基于TM1637的數碼管控制

[復制鏈接]
ID:305552 發表于 2018-4-10 22:59 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#include<intrins.h>
sbit SCL=P1^2;
sbit SDA=P1^3;
unsigned char t,shi,ge,bai,dadt;
unsigned char code xsbcdbuf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
/*************************************************************************

********************
LCD WRITE 模式 連續寫入數據
*************************************************************************/  
/*********************************************************

*IIC_delay

*******************************************************/

void init()
{
    TMOD=0X01;
    TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
    ET0=1;
    EA=1;
    TR0=1;
}

void IIC_delay(void)
{
    unsigned char i;
    for(i=0;i<20;i++) _nop_();
}

/*********************************************************
*
啟動IIC
*********************************************************/

void start_IIC(void)

{
    SCL=1; //給芯片發送開始信號
    SDA=1;
    IIC_delay();
    SDA=0;
    IIC_delay();
    SCL=0; //開始信號傳送完
    IIC_delay();
}

/*******************************************************
*
停止IIC
*******************************************************/
void stop_IIC(void)
{
    SCL=0;
    IIC_delay();
    SDA=0;
    IIC_delay();
    SCL=1;
    IIC_delay();
    SDA=1;
}

void ack_IIC()
{
    SCL=0;
    _nop_();_nop_();_nop_();
    while(SDA);
    SCL=1;
    _nop_();_nop_();_nop_();
    SCL=0;
}

/*******************************************************
*
寫一個字節數據
*******************************************************/

void WriteByte(unsigned char WriteData)
{
    unsigned char i;
    for(i=0;i<8;i++)//開始傳送8位數據,每循環一次傳送一位數據
    {
        SCL=0;
        IIC_delay();
        WriteData=WriteData>>1;
        SDA=CY;
        IIC_delay();
        SCL=1;
        IIC_delay();
    }
//8位數據傳送完
    ack_IIC(); //判斷芯片發過來的ACK應答信號
}
/*******************************************************

/************************************************
寫一字節數據到LEDSROM
**************************************************/

void write_LEDSROM(unsigned char addr,unsigned char WData)
{
    start_IIC(); //調用開始信號
    WriteByte(addr); //寫起始地址命令(0C0H),地址00H單元。
    WriteByte(WData);//給顯示寄存器寫顯示數據,值可根據實參改變
    stop_IIC(); //調用結束信號,一個字節命令發送完畢,可以發送下一個命令
}
/************************************************
/************************************************
*
分開寫數據到LED
**************************************************/
void xsled(void)
{
    SDA=1;
    SCL=1;
    start_IIC(); //調用開始信號
    WriteByte(0x44);//寫命令40H(數據設置)
    stop_IIC(); //調用結束信號,一個字節命令發送完畢,可以發送下一個命令
    write_LEDSROM(0xC0,0x00); //第一個數碼管
    write_LEDSROM(0xC1,xsbcdbuf[bai]);  //第二個數碼管
    write_LEDSROM(0xC2,xsbcdbuf[shi]); //第三個數碼管
    write_LEDSROM(0xC3,xsbcdbuf[ge]);//第四個數碼管
    IIC_delay();
    start_IIC(); //調用開始信號
    WriteByte(0x8a); //送開屏命令,(8BH),亮度可以根據低三位調節。//顯示亮度
    stop_IIC(); //調用結束信號,一個字節命令發送完畢,可以發送下一個命令
}

void jisuan()
{     
    bai=dadt/100;
    shi=dadt/10%10;
    ge=dadt%10;
}

void main()
{
    //P1=0xff;
    init();
     while(1)
    {
        jisuan();
        xsled();
        if(t==20)
        {
            t=0;
            dadt++;
            if(dadt==1000)
            {
                dadt=0;
            }
        }
    }
}

void T0_time() interrupt 1
{
    TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
    t++;
}  

回復

使用道具 舉報

ID:61349 發表于 2018-7-28 03:22 | 顯示全部樓層
程序測試順利通過,采用的寫 SRAM 數據固定地址模式
回復

使用道具 舉報

ID:91580 發表于 2018-9-17 14:40 | 顯示全部樓層
我也測試通過,感謝樓主!
回復

使用道具 舉報

ID:404720 發表于 2018-11-24 22:11 | 顯示全部樓層
請問為什么只能到255好像,應該改哪里才能到9999
回復

使用道具 舉報

ID:358930 發表于 2018-11-25 03:15 來自手機 | 顯示全部樓層
zhengaohui 發表于 2018-11-24 22:11
請問為什么只能到255好像,應該改哪里才能到9999

unsigned uint t,shi,ge,bai,dadt;定意就是最大255這樣改下就大了,大約65536能夠吧。不能大,慢慢思考吧。
回復

使用道具 舉報

ID:358930 發表于 2018-11-25 08:58 | 顯示全部樓層
其實我開始的時候學單片也是這樣,不想去看那些不相干的定義,總想著主程序編譯通過才是王道,其實真正能寫的人不多,也沒精力每個器件都自己寫驅動,借下別人的也沒啥問題,但問題來了,讀懂別人的程序成了最大的問題,所以閱讀理解才是學習路上成功的天梯,直通創造的核心。古人云:熟讀唐詩三百首,(不說啦)。寫程序還是一件嚴謹的事嗎。當我學會說話,才可能歌唱,當我讀懂別人,才可能創造超越…………
回復

使用道具 舉報

ID:404720 發表于 2018-11-25 10:14 | 顯示全部樓層
冰冰潔潔 發表于 2018-11-25 08:58
其實我開始的時候學單片也是這樣,不想去看那些不相干的定義,總想著主程序編譯通過才是王道,其實真正能寫 ...

很有見解!!同
回復

使用道具 舉報

ID:16255 發表于 2018-11-25 14:13 | 顯示全部樓層
冰冰潔潔 發表于 2018-11-25 08:58
其實我開始的時候學單片也是這樣,不想去看那些不相干的定義,總想著主程序編譯通過才是王道,其實真正能寫 ...

受教了,謝謝
回復

使用道具 舉報

ID:424598 發表于 2018-11-26 22:25 來自手機 | 顯示全部樓層
代碼不錯。看能不能和我的紅外定時器結合
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品福利视频 | 欧区一欧区二欧区三免费 | 亚洲欧美日韩一区 | 日本视频在线 | 国产馆| 日韩在线免费视频 | 日韩精品一区二区三区中文在线 | av性色全交蜜桃成熟时 | 欧美日韩不卡合集视频 | 久久三区 | 国产人成精品一区二区三 | 91视频一区 | 久久久.com | 日日夜夜操天天干 | 国产视频一区二区 | 国产激情一区二区三区 | 精品久草 | 国产亚洲一区二区在线观看 | 成人在线视频免费观看 | 亚洲欧美国产毛片在线 | 成人av网站在线观看 | 九九热免费视频在线观看 | 久久久久国产一区二区三区不卡 | 久久久久一区二区三区四区 | 亚洲一区二区三区在线视频 | 婷婷福利视频导航 | 一级免费视频 | 精品一区视频 | 亚洲www啪成人一区二区麻豆 | 国产一区二区精华 | 6080亚洲精品一区二区 | 91视频在线| 91天堂| 欧美一级网站 | 亚洲精品在线看 | 久草资源在线视频 | 99久久中文字幕三级久久日本 | 91社区视频 | 91高清视频在线观看 | 九九综合九九 | 久久久久国产精品一区二区 |