欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5519|回復(fù): 8
收起左側(cè)

基于TM1637的數(shù)碼管控制

[復(fù)制鏈接]
ID:305552 發(fā)表于 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 模式 連續(xù)寫入數(shù)據(jù)
*************************************************************************/  
/*********************************************************

*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_();
}

/*********************************************************
*
啟動(dòng)IIC
*********************************************************/

void start_IIC(void)

{
    SCL=1; //給芯片發(fā)送開始信號(hào)
    SDA=1;
    IIC_delay();
    SDA=0;
    IIC_delay();
    SCL=0; //開始信號(hào)傳送完
    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;
}

/*******************************************************
*
寫一個(gè)字節(jié)數(shù)據(jù)
*******************************************************/

void WriteByte(unsigned char WriteData)
{
    unsigned char i;
    for(i=0;i<8;i++)//開始傳送8位數(shù)據(jù),每循環(huán)一次傳送一位數(shù)據(jù)
    {
        SCL=0;
        IIC_delay();
        WriteData=WriteData>>1;
        SDA=CY;
        IIC_delay();
        SCL=1;
        IIC_delay();
    }
//8位數(shù)據(jù)傳送完
    ack_IIC(); //判斷芯片發(fā)過(guò)來(lái)的ACK應(yīng)答信號(hào)
}
/*******************************************************

/************************************************
寫一字節(jié)數(shù)據(jù)到LEDSROM
**************************************************/

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

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++;
}  

回復(fù)

使用道具 舉報(bào)

ID:61349 發(fā)表于 2018-7-28 03:22 | 顯示全部樓層
程序測(cè)試順利通過(guò),采用的寫 SRAM 數(shù)據(jù)固定地址模式
回復(fù)

使用道具 舉報(bào)

ID:91580 發(fā)表于 2018-9-17 14:40 | 顯示全部樓層
我也測(cè)試通過(guò),感謝樓主!
回復(fù)

使用道具 舉報(bào)

ID:404720 發(fā)表于 2018-11-24 22:11 | 顯示全部樓層
請(qǐng)問(wèn)為什么只能到255好像,應(yīng)該改哪里才能到9999
回復(fù)

使用道具 舉報(bào)

ID:358930 發(fā)表于 2018-11-25 03:15 來(lái)自觸屏版 | 顯示全部樓層
zhengaohui 發(fā)表于 2018-11-24 22:11
請(qǐng)問(wèn)為什么只能到255好像,應(yīng)該改哪里才能到9999

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

使用道具 舉報(bào)

ID:358930 發(fā)表于 2018-11-25 08:58 | 顯示全部樓層
其實(shí)我開始的時(shí)候?qū)W單片也是這樣,不想去看那些不相干的定義,總想著主程序編譯通過(guò)才是王道,其實(shí)真正能寫的人不多,也沒(méi)精力每個(gè)器件都自己寫驅(qū)動(dòng),借下別人的也沒(méi)啥問(wèn)題,但問(wèn)題來(lái)了,讀懂別人的程序成了最大的問(wèn)題,所以閱讀理解才是學(xué)習(xí)路上成功的天梯,直通創(chuàng)造的核心。古人云:熟讀唐詩(shī)三百首,(不說(shuō)啦)。寫程序還是一件嚴(yán)謹(jǐn)?shù)氖聠。?dāng)我學(xué)會(huì)說(shuō)話,才可能歌唱,當(dāng)我讀懂別人,才可能創(chuàng)造超越…………
回復(fù)

使用道具 舉報(bào)

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

很有見解!!同
回復(fù)

使用道具 舉報(bào)

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

受教了,謝謝
回復(fù)

使用道具 舉報(bào)

ID:424598 發(fā)表于 2018-11-26 22:25 來(lái)自觸屏版 | 顯示全部樓層
代碼不錯(cuò)?茨懿荒芎臀业募t外定時(shí)器結(jié)合
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表