找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2503|回复: 2
打印 上一主题 下一主题
收起左侧

单片机与pc串口实验

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-21 23:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5. sbit D=P1^0;
  6. //========
  7. uchar code as[]=" Receving Data:\0";
  8. uchar a=0x30,b;
  9. //=========
  10. void init(void)
  11. {
  12. TMOD=0x20;
  13. TH1=0xfd;
  14. TL1=0xfd;
  15. SCON=0x50;
  16. TR1=1;
  17. ES=1;
  18. EA=1;
  19. }
  20. //=========
  21. void delay(uint k)
  22. {
  23. uint i,j;
  24. for(i=0;i<k;i++){
  25. for(j=0;j<121;j++)
  26. {;}}
  27. }
  28. //==========
  29. void main(void)
  30. {uchar i;
  31. init();
  32. while(1)
  33. {
  34. D=1;P0=SEG7[(a-0x30)/10];D=0;P2=0x7f;delay(2);
  35. D=1;P0=SEG7[(a-0x30)%10];D=0;P2=0xbf;delay(2);
  36. if(RI)
  37. {
  38. RI=0;i=0;
  39. while(as[i]!='\0'){SBUF=as[i];while(!TI);TI=0;i++;}   
  40. SBUF=b;while(!TI);TI=0;
  41. EA=1;
  42.         }
  43. }
  44. }
  45. //=========
  46. void serial_serve(void) interrupt 4
  47. {
  48. a=SBUF;
  49. b=a;
  50. EA=0;
  51. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:72519 发表于 2015-1-21 23:18 | 只看该作者
再来一个复杂点的
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. //======================
  5. uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  6. uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};
  7. sbit D=P3^7;
  8. //====================
  9. sbit D0=P1^0;
  10. sbit D1=P1^1;
  11. sbit D2=P1^2;
  12. sbit D3=P1^3;
  13. sbit D4=P1^4;
  14. sbit D5=P1^5;
  15. sbit D6=P1^6;
  16. sbit D7=P1^7;
  17. #define ON 0
  18. #define OFF 1
  19. uchar a[2];
  20. uchar cnt;
  21. bit outflag;
  22. //================
  23. void delay(uint k)
  24. {
  25. uint i,j;
  26. for(i=0;i<k;i++){
  27. for(j=0;j<121;j++)
  28. {;}}
  29. }
  30. //============
  31. void init(void)
  32. {
  33. TMOD=0x20;
  34. TH1=0xfd;
  35. TL1=0xfd;
  36. SCON=0x50;
  37. TR1=1;
  38. ES=1;
  39. EA=1;
  40. }
  41. //==============
  42. void main(void)
  43. {
  44. init();
  45. while(1)
  46. {
  47. D=1;P0=SEG7[a[0]];D=0;P2=ACT[1];delay(2);
  48. D=1;P0=SEG7[a[1]];D=0;P2=ACT[0];delay(2);
  49. if(outflag==1)
  50. {
  51. switch(a[0])
  52. {
  53. case 1:if(a[1]==1)D0=ON;else D0=OFF;break;
  54. case 2:if(a[1]==1)D1=ON;else D1=OFF;break;
  55. case 3:if(a[1]==1)D2=ON;else D2=OFF;break;
  56. case 4:if(a[1]==1)D3=ON;else D3=OFF;break;
  57. case 5:if(a[1]==1)D4=ON;else D4=OFF;break;
  58. case 6:if(a[1]==1)D5=ON;else D5=OFF;break;
  59. case 7:if(a[1]==1)D6=ON;else D6=OFF;break;
  60. case 8:if(a[1]==1)D7=ON;else D7=OFF;break;
  61. default:break;
  62. }
  63. outflag=0;
  64.      }
  65.   }
  66. }
  67. //==============
  68. void serial_serve(void) interrupt 4
  69. {
  70. uchar temp;
  71. RI=0;
  72. EA=0;
  73. temp=SBUF;
  74. switch(cnt)
  75. {
  76. case 0:if(temp=='#')cnt=1;else outflag=0;break;
  77. case 1:if((temp>0x30)&&(temp<0x39)){a[0]=temp-0x30;cnt=2;}
  78. else outflag=0;break;
  79. case 2:if(temp=='(')cnt=3;
  80. else outflag=0;break;
  81. case 3:if((temp>=0x30)&&(temp<=0x38)){a[1]=temp-0x30;cnt=4;}
  82. else outflag=0;break;
  83. case 4:if(temp==')'){cnt=0;outflag=1;}
  84. else outflag=0;break;
  85. default:break;
  86. }
  87. EA=1;
  88. }
复制代码
回复

使用道具 举报

板凳
ID:189897 发表于 2017-4-16 19:05 | 只看该作者
请问这个后来实现的效果截图有吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表