单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机C#上位机+下位机各种程序(经典)

  [复制链接]
跳转到指定楼层
楼主
C#上位机源码

上位机程序与源码


单片机下位机源程序如下:
  1.                          #include<reg51.h>
  2. #include<intrins.h>                //因为要用到左右移函数,所以加入这个头文件       
  3. #define GPIO_DIG P0
  4. #define GPIO_LED P0                //将P2口另外取名为GPIO_LED
  5. #define GPIO_PLACE P2        //1111-1101
  6. bit cmdArrived = 0;   //命令到达标志,即接收到上位机下发的命令
  7. unsigned char cmdIndex;
  8. unsigned char n;
  9. unsigned int i;
  10. unsigned char code DIG_PLACE[8]={
  11. 0xfd,0xbf,0xfd,0xf7,0xef,0x7f,0xfd,0xfb};//学号16130712
  12. unsigned char code DIG_CODE[3]={
  13. 0x6d,0x5b,0x3f};
  14. //520的显示
  15. unsigned char DisplayData[8];//用来存放要显示的8位数的值
  16. sbit Beep =  P1^5 ;
  17. sbit LSA=P2^2;
  18. sbit LSB=P2^3;
  19. sbit LSC=P2^4;
  20. sbit RELAY = P1^4;  //定义继电器使用的IO口
  21. sbit K1    = P0^0;  //定义按键使用的IO口

  22. //520子程序
  23. void Delay10ms(unsigned int c)   //误差 0us
  24. {unsigned char a, b;
  25.     for (;c>0;c--)
  26.         {
  27.                 for (b=38;b>0;b--)
  28.                 {
  29.                         for (a=130;a>0;a--);
  30.                 }         
  31.         }      
  32. }
  33. void smg()
  34. {
  35.         unsigned char i = 0;

  36.         while(1)
  37.         {
  38.                 GPIO_DIG = ~DIG_CODE[i];
  39.                 i++;
  40.                 if(i == 3)
  41.                 {
  42.                         i = 0;
  43.                 }
  44.                 Delay10ms(50);
  45.         }                               
  46. }
  47. //0-7
  48. void DigDisplay()
  49. {
  50.         unsigned char i;
  51.         unsigned int j;
  52.         for(i=0;i<8;i++)
  53.         {switch(i)         //位选,选择点亮的数码管,
  54.                 {
  55.                         case(0):
  56.                                 LSA=0;LSB=0;LSC=0; break;//显示第0位
  57.                         case(1):
  58.                                 LSA=1;LSB=0;LSC=0; break;//显示第1位
  59.                         case(2):
  60.                                 LSA=0;LSB=1;LSC=0; break;//显示第2位
  61.                         case(3):
  62.                                 LSA=1;LSB=1;LSC=0; break;//显示第3位
  63.                         case(4):
  64.                                 LSA=0;LSB=0;LSC=1; break;//显示第4位
  65.                         case(5):
  66.                                 LSA=1;LSB=0;LSC=1; break;//显示第5位
  67.                         case(6):
  68.                                 LSA=0;LSB=1;LSC=1; break;//显示第6位
  69.                         case(7):
  70.                                 LSA=1;LSB=1;LSC=1; break;//显示第7位       
  71.                 }
  72.                 GPIO_DIG=DisplayData[i];//发送段码
  73.                 j=10;                                                 //扫描间隔时间设定
  74.                 while(j--);       
  75.                 GPIO_DIG=0x00;//消隐
  76.         }
  77.         }
  78. void dsmg()
  79. {
  80.         unsigned char i;
  81.         for(i=0;i<8;i++)
  82.         {
  83.                 DisplayData[i]=DIG_CODE[i];       
  84.         }
  85.         while(1)
  86.         {
  87.                 DigDisplay();
  88.         }                               
  89. }
  90. //SHANSHUO
  91.                           void shanshuo(void)
  92. {
  93.         unsigned char LED;

  94.         LED = 0xFE;

  95.         while(1)
  96.         {
  97.                 P0 = LED;

  98.                 Delay10ms(50);

  99.                 LED = _crol_(LED,1);
  100.         }
  101. }
  102. //
  103. void jidianqi()
  104. {
  105.         while(1)
  106.         {
  107.                 if(K1 == 0)        //如果按键按下
  108.                 {
  109.                         RELAY = 0; //继电器闭合
  110.                 }
  111.                 else
  112.                 {
  113.                         RELAY = 1;
  114.                 }
  115.         }
  116. }

  117. void UsartConfiguration()
  118. {
  119.         SCON=0X50;                        //设置为工作方式1
  120.         TMOD=0X20;                        //设置计数器工作方式2
  121.         PCON=0X80;                        //波特率加倍
  122.         TH1=0XF3;                                //计数器初始值设置,注意波特率是4800的
  123.         TL1=0XF3;
  124.         ES=1;                                                //打开接收中断
  125.         EA=1;                                                //打开总中断
  126.         TR1=1;                                        //打开计数器
  127. }

  128. void Usart() interrupt 4
  129. {
  130.        

  131.     if (RI)  //接收到字节
  132.     {                                                                                                                                                   
  133.                 cmdIndex = SBUF;
  134.                 RI = 0;  //清零接收中断标志位
  135.                 SBUF = cmdIndex;//将接收到的数据放入到发送寄存器
  136.                 cmdArrived = 1;  
  137.     }
  138.     if (TI)      //字节发送完
  139.     {  TI = 0;  //清零发送中断标志位
  140.     }
  141.                                          //清除发送完成标志位
  142. }
  143. void main()
  144. {
  145.         UsartConfiguration();
  146.         while(1)
  147.         {
  148.                 if(cmdArrived)                          //进入中断,接受完数据且使得cmdIndex = SBUF后才执行,假如SBUF=0x01
  149.                 {
  150.                 cmdArrived = 0;
  151.                         if(cmdIndex==0x33)       
  152.                         {                       
  153.                                         GPIO_LED=0x01;//0000 0010
  154.                                         while(1)
  155.                                         {
  156.                                         for(n=0;n<7;n++)                                                 //左移7次,这样子就会到达最左边
  157. ……………………

  158. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
所有作业.rar (4.15 MB, 下载次数: 155)


评分

参与人数 1黑币 +5 收起 理由
morghuils + 5

查看全部评分

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

使用道具 举报

沙发
DMC 发表于 2018-1-3 08:31 | 只看该作者
已下载 谢谢  胡老师是谁
回复

使用道具 举报

板凳
wuxishun 发表于 2018-1-3 18:46 来自手机 | 只看该作者
很好的资料,对学习中的我应该很有用
回复

使用道具 举报

地板
tianli38 发表于 2018-3-15 10:00 | 只看该作者
很好的资料,学习中;
回复

使用道具 举报

5#
tianli38 发表于 2018-3-15 10:01 | 只看该作者
很好的资料,学习中;
回复

使用道具 举报

6#
douhun 发表于 2018-4-4 11:01 | 只看该作者
在这里发布能得黑币吗,新手刚来的
回复

使用道具 举报

7#
fin 发表于 2018-7-11 09:15 | 只看该作者
谢谢,正在学习上位机
回复

使用道具 举报

8#
olivier 发表于 2018-7-17 13:42 | 只看该作者
感谢楼主,请问胡老师是谁
回复

使用道具 举报

9#
wo3788065521 发表于 2018-7-18 18:38 | 只看该作者
学习了
回复

使用道具 举报

10#
lzhiaohiua 发表于 2018-8-1 12:55 | 只看该作者

已下载 谢谢楼主的分享
回复

使用道具 举报

11#
无效楼层,该帖已经被删除
12#
qq35404085 发表于 2018-8-28 23:13 | 只看该作者
有没有易语言的啊
回复

使用道具 举报

13#
fcg99999999 发表于 2018-10-12 10:24 | 只看该作者
不错不错!
回复

使用道具 举报

14#
xuexi1980 发表于 2018-11-6 22:09 来自手机 | 只看该作者
学习学习学习
回复

使用道具 举报

15#
jasonyush 发表于 2018-12-15 22:42 | 只看该作者
正好需要 可以下载不了
回复

使用道具 举报

16#
663613431 发表于 2018-12-17 10:12 | 只看该作者
新手学习,多谢
回复

使用道具 举报

17#
showrock 发表于 2019-1-11 13:52 | 只看该作者
不错不错,支持一下了!
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机. 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

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