• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

求串口控制流水灯程序

唯爱小姑娘 2016-11-23 浏览量:1420
刚学习串口,开发板自带的程序没啥卵用,求 大神帮忙写个程序,学习学习。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • #include<reg52.h>
    #define uchar unsigned char
    #define uint unsigned int

    volatile uchar a;

    uchar i;

    uchar code SEG[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳数码管

    uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //流水灯

    void delay_ms(uint xms)
    {
    uint i,j;
    for(i=xms;i>0;i--)
    for(j=110;j>0;j--);
    }

    void init()//串口初始化
    {
    TMOD=0X20;//T1工作在方式2及自动重装
    TH1=0XFD;//波特率9600
    TL1=0XFD;
    TR1=1;
    // SCON=0X50; //SCON=0X50也可以写成SM0=0;SM1=1;
    SM0=0;
    SM1=1;
    REN=1;
    ES=1; //启动串口中断
    EA=1;
    }

    void display(uchar z)
    {
    P2=0xff;
    P1=SEG[z];
    }
    void main()
    {
    init();
    while(1)
    {
    if(RI==1)
    RI=0;
    }
    }

    void ser() interrupt 4
    {
    a=SBUF;
    display(a);
    if(a==6)
    {
    for(i=0;i<8;i++)
    {
    P1=tab[i];
    delay_ms(200);
    }
    P1=0xff;
    }

    }


    您玩看看,輸入0x06時會啟動流水燈,輸出數碼管,但我沒驗證過唷,您可嘗試驗證並修改

    • 发布于 2016-11-23
    • 举报
    • 评论 9
    • 0
    • 0
唯爱小姑娘 回复了 MOP:前辈,我用的是开发板,硬件怎么连,还有我的数码管和我的流水灯是在一个端口您弄了俩个端口 回复
唯爱小姑娘 回复了 MOP:您定义P2口有什么含义啊 回复
MOP 回复了 唯爱小姑娘:他這個範例是P1接LED,P2接數碼管,有疑慮的話可以先Comment掉 回复
MOP 回复了 唯爱小姑娘:更正,他這個範例是P1接LED和數碼管,P2沒有作用,因為他也沒有電路圖,有疑慮的話可以先Comment掉 回复
MOP 回复了 唯爱小姑娘:我在想他P2應該是當作他的數碼管Vcc,然後P1拉低那個Bit時後,對應的Segment導通點亮,如果您電路Vcc或者共陰極的數碼管拉到地,那只要一個P1,剛剛看太快^^ 回复
MOP 回复了 唯爱小姑娘:如果都不是直接接Vcc或者GND,那就是位選的方式,P2=0xff表示8個位數的數碼管都啟用,在依照P1的設置點亮對應的Segment,也稱作段選,我看了一下有段選/位選分開的(P1/P2),也有一起的(P1)接線到74573的方式,看看哪裡還有問題的^^ 回复
MOP 回复了 唯爱小姑娘:可以的話也把您的板子原理圖上傳上來,或者仿真的電路圖,不是每塊開發板都一樣 回复
唯爱小姑娘 回复了 MOP:谢谢您的答复 回复
唯爱小姑娘 回复了 MOP:我得到我想要的啦 回复

其他答案 数量:3
  • 串口控制??是要上位机发指令控制么
    • 发布于2016-11-23
    • 举报
    • 评论 2
    • 0
    • 0
唯爱小姑娘 回复了 fighter :不是就是简单的开发板直接用串口中断,控制灯,或者数码管神魔的 回复
唯爱小姑娘 回复了 fighter :不是串口通信 回复

  • 之前买过开发板 有串口控制流水灯的程序 
    • 发布于2016-11-24
    • 举报
    • 评论 1
    • 0
    • 0
唯爱小姑娘 回复了 guyuemao :我这个开发板没有 回复

  • 不建议求程序哦  给你一个思路  用串口发一个数据 先正确接收  然后 根据数据实现一个流水灯左移或者右移。要学着把各个模块代码集成使用起来
    • 发布于2016-11-24
    • 举报
    • 评论 4
    • 0
    • 0
唯爱小姑娘 回复了 Eagleson :发送失败怎么办,奕哥 回复
唯爱小姑娘 回复了 Eagleson :发送成功啦怎么和小灯练习起来啊 回复
MOP 回复了 唯爱小姑娘 :上面回覆一下唷,不知道您現階況如何,還有如果您自己寫的UART能動了,參考中斷的那部分程式碼即可,只是在中斷開始依序點亮LED,移位也是一個方法,總之就是有變化 回复
Eagleson 回复了 唯爱小姑娘 :你使用接收到字节 作为一个判断条件 比如控制灯的闪烁 流水 心形 都可以啦 代码里面加入流水灯功能 回复

相关问题

问题达人换一批

求串口控制流水灯程序