whhjdz

    1. 关于串口发送数码管显示的问题 9/10408 单片机 2010-02-20
      多谢多谢
    2. 谢谢
    3. 关于串口发送数码管显示的问题 9/10408 单片机 2010-02-18
      不好意思,显示子函数的注释部分没修改,不影响程序的运行:congratulate:
    4. 关于串口发送数码管显示的问题 9/10408 单片机 2010-02-18
      楼上所说正解呀,后来想了在群里面,得一师傅指点,基本达到了要求,现将程序发上 /*********************  (C) COPYRIGHT 2010  ************** * 文件名称: 串口.c * 程序作者: whhjdz(QQ:595279970 ,Email:whhjdz@163.com) * 程序版本: V1.0 * 编制日期: 02-17-2010 * 功能描述: PC串口与单片机通讯实验:8位数码管显示来自电脑发送的数字 * 编译器:Keil C uVision3 * 芯片:STC89C52,12M晶振 * 注意:  P0 -- 数码管段显示    P2 --  数码管位选 *                                         *********************************************************/ #include                 //头文件 #define        uchar        unsigned char        //定义变量 #define        uint        unsigned int #define LED P0 uchar bb,ss,sg; uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};        //0~F字模 void delay(uint z)          //延时子函数 {         uint x,y;         for(x=z;x>0;x--)           for(y=110;y>0;y--); } void display(uint j)          //显示子函数 { uchar b,c,d,e,f,g,h,i;///(A)串口数据 if(j!=0xff) { if(bb==1) { b=j; } if(bb==2) { c=j; } if(bb==3) { d=j; } if(bb==4) { e=j; } if(bb==5) { f=j; } if(bb==6) { g=j; } if(bb==7) { h=j; } if(bb==8) { bb=0; i=j; } } else bb=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;         P0=table;         P2=0x7f;                  //第一个数码管点亮并显示数的百位         delay(2);         P0=table[c];                   P2=0xbf;                  //第二个数码管点亮并显示数的十位         delay(2);                 P0=table[d];         P2=0xdf;                 //第二个数码管点亮并显示数的个位         delay(2);           P0=table[e];         P2=0xef;                  //第一个数码管点亮并显示数的百位         delay(2);         P0=table[f];                   P2=0xf7;                  //第二个数码管点亮并显示数的十位         delay(2);         P0=table[g];         P2=0xfb;                 //第二个数码管点亮并显示数的个位         delay(2);         P0=table[h];         P2=0xfd;                  //第一个数码管点亮并显示数的百位         delay(2);         P0=table;                   P2=0xfe;                  //第二个数码管点亮并显示数的十位         delay(2); } void        Init_Uart(void)                 //定时器初始化(设置波特率) {         TMOD = 0x20;         TH1 = 0xFD;         TL1 = 0xFD;         TR1 = 1;         SCON = 0x50;         PCON = 0;         EA = 1; } void main(void) {         uint j = 0;         Init_Uart();         while(1)                 {                                              if(RI==1)                                   {                                 bb++;                                 RI = 0;                                                    j = SBUF;                                   }                         else  display(j);                                        } }
    5. 关于串口发送数码管显示的问题 9/10408 单片机 2010-02-17
      将显示程序改了一下,能显示三位了,但最大只能显示到255,对应的十六进制是FF void display(uint i)          //显示子函数 {         uchar sb,ss,sg;         sb=i/100;                         //分离数的百位         ss=i%100/10;                 //分离数的十位         sg=i%10;                     //分离数的个位                         P0=table[sb];         P2=0x7f;                  //第一个数码管点亮并显示数的百位         delay(2);         P0=table[ss];                   P2=0xbf;                  //第二个数码管点亮并显示数的十位         delay(2);         P0=table[sg];         P2=0xdf;                 //第二个数码管点亮并显示数的个位         delay(2); }
    6. 关于串口发送数码管显示的问题 9/10408 单片机 2010-02-17
      /*********************  (C) COPYRIGHT 2010  ************** * 文件名称: 串口.c * 程序作者: whhjdz(QQ:595279970 ,Email:whhjdz@163.com) * 程序版本: V1.0 * 编制日期: 02-17-2010 * 功能描述: PC串口与单片机通讯实验 * 编译器:Keil C uVision3 * 芯片:STC89C52,12M晶振 * 注意:  P0 -- 数码管段显示    P2 --  数码管位选 *                                         *********************************************************/ #include                 //头文件 #define        uchar        unsigned char        //定义变量 #define        uint        unsigned int uchar ss,sg; uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};        //0~F字模 void delay(uint z)          //延时子函数 {         uint x,y;         for(x=z;x>0;x--)           for(y=110;y>0;y--); } void display(uint i)          //显示子函数 {         uchar ss,sg;         ss=i/16;                 //分离数的十位         sg=i%16;                 //分离数的个位         P0=table[ss];         P2=0x7f;                  //第一个数码管点亮并显示数的十位         delay(2);         P0=table[sg];                   P2=0xbf;                  //第二个数码管点亮并显示数的个位         delay(2); } void        Init_Uart(void)                 //定时器初始化(设置波特率) {         TMOD = 0x20;         TH1 = 0xFD;         TL1 = 0xFD;         TR1 = 1;         SCON = 0x50;         PCON = 0;         EA = 1; } void main(void) {         uint i = 0;         Init_Uart();         while(1)                 {                                              if(RI==1)                           {                         RI = 0;                         i = SBUF;                         }                         else  display(i);                                        } }
    7. 谢谢了!
    8. 用AT89S51制作可修改密码的密码锁 87/28088 51单片机 2010-02-17
      谢谢!
    9. 哥们刚做好的光控继电器 17/6350 DIY/开源硬件专区 2010-02-16
      不错
    10. 单片机语言C51应用实战集锦 59/24024 51单片机 2010-02-16
      谢谢
    11. 51单片机C语言应用程序设计实例精讲 920/281861 51单片机 2010-02-16
      谢谢楼主
    12. 谢谢
    13. 单片机万年历制作全部资料 247/127620 单片机 2010-02-16
      xiexie
    14. 谢谢
    15. 公布四字LED点阵屏全部资料 165/44973 单片机 2010-02-16
      谢谢分享
    16. 谢谢
    17. 单片机做的智能台灯 29/8845 单片机 2010-02-15
      谢谢

最近访客

< 1/1 >

统计信息

已有87人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:17

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言