找回密码
 立即注册

QQ登录

只需一步,快速开始

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

MT10单色上位机恒流源程序

[复制链接]
跳转到指定楼层
楼主
MT10-单色上位机恒流

单片机源程序如下:
  1. #include <STC12C5A60S2.H>
  2. #include <intrins.h>
  3. #include"zimo.h"
  4. #include"yinpin.h"
  5. #include"flash.h"
  6. #include"hanshu.h"
  7. uchar data rxcnt=0;
  8. /*************************************************************************/
  9. void main()
  10. {                     initial595();
  11.                                 initial5952();
  12.                                 timer0init();
  13.                                 out=1;
  14.                                 menu=0;
  15.                                 amenu=1;                       
  16.                                 bb=1;   
  17.                           while(1)
  18.                    {          
  19.                                 huxi();       
  20.                                 zhu2();
  21.                            }          
  22. }
  23.   
  24. /******************************************************************************/

  25. /**************************************************************************/


  26.   void print1() interrupt 3
  27. {  
  28.   if(out==1)
  29.    {
  30.                                 TR1=0;                //关闭定时器1
  31.                                 TH1=(65536-2500)/256;  //定时  time = F63C ;104.1us
  32.                                 TL1=(65536-2500)%256;
  33.                                 if(num>=(amenu-1))
  34.                                         num=0;
  35.                                 else
  36.                                         num++;
  37.                                 if(b[num]<c[num])
  38.                                 {b[num]++;}                                                                                               
  39.                                 if(b[num]>c[num])
  40.                                 {b[num]--;}                                                                       
  41.                                 if(b[num]>8)
  42.                                 {b[num]=8;}                
  43.                                                              
  44.         switch(yp)
  45.         {         
  46.                 case 1:        send_data2(~tuku2[b[num]]);
  47.                         if(amenu<=2){}                               
  48.                                 else delay(50);
  49.                                 break;  
  50.                 case 2:        send_data2(~tuku1[b[num]]);
  51.                                 if(amenu<=2){}                                                               
  52.                                 else delay(50);
  53.                                 break;
  54.                 case 3:        send_data2(~tuku3[b[num]]);
  55.                                 if(amenu<=2){}                               
  56.                                 else delay(50);                               
  57.                                 default:break;
  58.     }
  59.   }               
  60. if(out==2||out==3)       
  61. {                        uchar i;                               
  62.                         static uchar layer=0;     
  63.                       for (i=0;i<8;i++)
  64.                        {
  65.                         buffer[i]=~display[layer][i];
  66.                        }
  67.                                 xiansi1();                                                                                                                                         
  68.                                     cheng=(0x01<<layer);                          
  69.                                     DS2 = ~cheng&0x01; //发送最低位         
  70.                                         SH_CP2 = 1;
  71.                                         SH_CP2 = 0;                 //移位寄存器移位
  72.                                         ST_CP=1;       
  73.                                     ST_CP=0;       
  74.                                         ST_CP2=1;       
  75.                                     ST_CP2=0;
  76.                                
  77.                                 if (layer<7)
  78.                                 layer++;
  79.                         else
  80.                         layer=0;      
  81.                                     TH1=0xfe;
  82.                                     TL1=0xfe;
  83.                                         delay(2);
  84.                                         key_amenu_scan();       
  85.                                         key_menu_scan();
  86.                                         key_out_scan();
  87.                                 if(out==4||out==1)
  88.                                     {IAP_CONTR=0x20;}                                                         
  89.                                              
  90. }
  91.                                     TR1=1;//启动定时器1
  92. }       
  93. /***************************************************************************/

  94.   void UART1_Int(void) interrupt 4  
  95. {           uchar j,temp=0;
  96.          
  97.   if (RI == 1)  
  98.   {                 sa=0;
  99.                                 RI = 0;  
  100.                                     ES = 0;             //串口1中断
  101.                                 rxcnt++;                         //前面有一个地址码0xf2,要去掉,>=2时才能接收数据          
  102.                   if(rxcnt>=2&&rxcnt<=9)
  103.                {                          
  104.                     temp=SBUF;           
  105.                          for(j=0;j<8;j++)
  106.                           { if(temp&(0x01<<j))
  107.                                     display[j][rxcnt-2]|=0x80;
  108.                                         else
  109.                                     display[j][rxcnt-2]&=~0x80;     
  110.                            }           
  111.                 }                                    
  112.                   if(rxcnt>=10&&rxcnt<=17)
  113.                {    temp=SBUF;                               
  114.                              for(j=0;j<8;j++)
  115.                                   {
  116.                                     if(temp&(0x01<<j))
  117.                                         display[j][rxcnt-10]|=0x40;
  118.                                         else
  119.                                          display[j][rxcnt-10]&=~0x40;      
  120.                           }           
  121.                }
  122.                   if(rxcnt>=18&&rxcnt<=25)
  123.                {                        
  124.                                 temp=SBUF;  
  125.                                  for(j=0;j<8;j++)
  126.                                   {
  127.                                     if(temp&(0x01<<j))
  128.                                         display[j][rxcnt-18]|=0x20;
  129.                                         else
  130.                                         display[j][rxcnt-18]&=~0x20;   
  131.                                   }           
  132.                                }
  133.                           if(rxcnt>=26&&rxcnt<=33)
  134.                       {                        
  135.                                 temp=SBUF;
  136.                                  for(j=0;j<8;j++)
  137.                                   {
  138.                                     if(temp&(0x01<<j))
  139.                                         display[j][rxcnt-26]|=0x10;
  140.                                         else
  141.                                         display[j][rxcnt-26]&=~0x10;     
  142.                                    }           
  143.                       }
  144.                           if(rxcnt>=34&&rxcnt<=41)
  145.                       {                        
  146.                                 temp=SBUF;
  147.                                   for(j=0;j<8;j++)
  148.                                   {
  149.                                     if(temp&(0x01<<j))
  150.                                         display[j][rxcnt-34]|=0x08;
  151.                                         else
  152.                                         display[j][rxcnt-34]&=~0x08;     
  153.                                    }           
  154.                        }
  155.                           if(rxcnt>=42&&rxcnt<=49)
  156.                       {                        
  157.                                 temp=SBUF;
  158.                                   for(j=0;j<8;j++)
  159.                                   {                            
  160.                                     if(temp&(0x01<<j))
  161.                                         display[j][rxcnt-42]|=0x04;
  162.                                         else
  163.                                         display[j][rxcnt-42]&=~0x04;
  164.                                    }
  165.                           }           
  166.                      
  167.                           if(rxcnt>=50&&rxcnt<=57)
  168.                       {                        
  169.                                 temp=SBUF;
  170.                                     for(j=0;j<8;j++)
  171.                                    {
  172.                                     if(temp&(0x01<<j))
  173.                                         display[j][rxcnt-50]|=0x02;
  174.                                         else
  175.                                         display[j][rxcnt-50]&=~0x02;      
  176.                                    }           
  177.                        }
  178.                           if(rxcnt>=58&&rxcnt<=65)
  179.                       {                        
  180.                                 temp=SBUF;
  181.                                     for(j=0;j<8;j++)
  182.                                    {
  183.                                    if(temp&(0x01<<j))
  184.                                         display[j][rxcnt-58]|=0x01;
  185.                                    else
  186.                                         display[j][rxcnt-58]&=~0x01;  
  187.                                    }           
  188. ……………………

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

所有资料51hei提供下载:
MT10-单色上位机恒流.zip (240.26 KB, 下载次数: 11)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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