久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1297|回復: 3
打印 上一主題 下一主題
收起左側

單片機串行控制led亮,程序沒有報錯,但是Proteus仿真不了,采用的是鍵盤掃,求大看看

[復制鏈接]
跳轉到指定樓層
樓主

求大佬幫忙,看一下,數據傳輸還是掃描問題
甲機子的程序:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit k1=P1^0;
  5. sbit k2=P1^1;
  6. sbit k3=P1^2;
  7. unsigned char keyval;
  8. uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};


  9. void delay(uint xms)
  10. {
  11.         uint x,y;
  12.         for(x=xms;x>0;x--)
  13.          for(y=110;y>0;y--);
  14. }
  15. void key_scan(void)
  16. {
  17.         P1=0xff;
  18.         if((P1&0x0f)!=0x0f)
  19.         {
  20.                 delay(10);
  21.                 if(k1==0)
  22.                         keyval=1;
  23.                 if(k2==0)
  24.                         keyval=2;
  25.                 if(k3==0)
  26.                         keyval=3;
  27.         }
  28. }
  29.         void Putc_to_SerialPort(uchar c)
  30. {
  31.         SBUF=c;
  32.         while(TI==0);
  33.         TI=0;
  34. }
  35. void main()
  36. {
  37.         P0=0x00;
  38.         SCON=0x50;        
  39.         TMOD=0x20;        
  40.         PCON=0x00;        
  41.         TL1=0xfd;                          
  42.         TI=RI=0;      
  43.         TR1=1;
  44.         IE=0x90;      
  45.         keyval=0;
  46.         while(1)
  47.         {
  48.                 key_scan();
  49.                 delay(100);
  50.                 switch(keyval)
  51.                         {
  52.                                 case 1:    Putc_to_SerialPort('X'); break;
  53.                                 case 2:    Putc_to_SerialPort('A');break;
  54.                                 case 3:    Putc_to_SerialPort('B');break;
  55.                        
  56.                         }
  57.                 }
  58.         }
  59. void Serial_INT() interrupt    4
  60. {
  61.         if(RI)
  62.         {
  63.                 RI=0;
  64.                 if(SBUF>=0&&SBUF<=9)
  65.                 {
  66.                         P0=DSY_CODE[SBUF];
  67.                 }
  68.                        
  69.                 else
  70.                 {
  71.                         P0=0x00;
  72.                 }
  73.                        
  74.         }
  75. }
復制代碼


乙機的程序:

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit K2=P1^7;
uchar NumX=-1;
void DelayMS(uint ms)
{
        uchar i;
        while(ms--)
        {
                for(i=0;i<120;i++);
        }
               
}
void main()
{
        LED1=LED2=1;
        SCON=0x50;         
        TMOD=0x20;        
        TH1=0xfd;           
        TL1=0xfd;
        PCON=0x00;         
        RI=TI=0;
        TR1=1;
        IE=0x90;
        while(1)
        {
                DelayMS(100);
                if(K2==0)
                {
                        while(K2==0);
                        NumX=++NumX;  
                        SBUF=NumX;
                        if(NumX==10)
                        {
                                NumX=-1;
                        }
                        while(TI==0);
                        TI=0;
                }
        }
}
void Serial_INT() interrupt 4
{
        if(RI)      
        {
                RI=0;
                switch(SBUF)
                {
                             
                        case 'X':  LED1=0;LED2=1;break;   
                        case 'A':  LED2=0;LED1=1;break;   
                        case 'B':  LED1=LED2=0;            
                }
        }
}
麻煩大佬看下
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2021-12-11 07:52 | 只看該作者

  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. //sbit k1=P1^0;
  5. //sbit k2=P1^1;
  6. //sbit k3=P1^2;
  7. unsigned char keyval;
  8. uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  9. void delay(uint xms)
  10. {
  11.         uint x,y;
  12.         for(x=xms;x>0;x--)
  13.                 for(y=110;y>0;y--);
  14. }
  15. void key_scan(void)
  16. {
  17.         if((P1&0x07)!=0x07)
  18.         {
  19.                 delay(10);
  20.                 if((P1&0x07)!=0x07)
  21.                 {
  22.                         switch(P1&0x07)
  23.                         {
  24.                                 case 0x06: keyval=1; break;
  25.                                 case 0x05: keyval=2; break;
  26.                                 case 0x03: keyval=3; break;
  27.                         }
  28.                         while(!((P1&0x07)!=0x07));
  29.                 }
  30.         }
  31. }

  32. void Putc_to_SerialPort(uchar c)
  33. {
  34.         SBUF=c;
  35.         while(TI==0);
  36.         TI=0;
  37. }

  38. void main()
  39. {
  40.         P0=0x00;
  41.         SCON=0x50;        
  42.         TMOD=0x20;        
  43.         PCON=0x00;        
  44.         TL1=0xfd;
  45.         TH1=0xfd;     
  46.         TR1=1;
  47.         IE=0x90;      
  48.         keyval=0;
  49.         while(1)
  50.         {
  51.                 key_scan();
  52.                 switch(keyval)
  53.                 {
  54.                         case 1: Putc_to_SerialPort('X');keyval=0;break;
  55.                         case 2: Putc_to_SerialPort('A');keyval=0;break;
  56.                         case 3: Putc_to_SerialPort('B');keyval=0;break;
  57.                 }
  58.         }
  59. }

  60. void Serial_INT() interrupt 4
  61. {
  62.         if(RI)
  63.         {
  64.                 RI=0;
  65.                 P0=DSY_CODE[SBUF];
  66.         }
  67. }
復制代碼
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit LED1=P1^0;
  5. sbit LED2=P1^1;
  6. sbit K2=P1^7;
  7. uchar NumX=-1;

  8. void DelayMS(uint ms)
  9. {
  10.         uchar i;
  11.         while(ms--)
  12.         {
  13.                 for(i=0;i<120;i++);
  14.         }
  15. }

  16. void main()
  17. {
  18.         SCON=0x50;         
  19.         TMOD=0x20;        
  20.         TH1=0xfd;           
  21.         TL1=0xfd;
  22.         PCON=0x00;         
  23.         TR1=1;
  24.         IE=0x90;
  25.         while(1)
  26.         {
  27.                 if(K2==0)
  28.                 {
  29.                         DelayMS(10);
  30.                         if(K2==0)
  31.                         {
  32.                                 NumX=++NumX%10;  
  33.                                 SBUF=NumX;
  34.                                 while(TI==0);
  35.                                 TI=0;
  36.                                 while(K2==0);
  37.                         }
  38.                 }
  39.         }
  40. }

  41. void Serial_INT() interrupt 4
  42. {
  43.         RI=0;
  44.         switch(SBUF)
  45.         {       
  46.                 case 'X':  LED1=0;LED2=1;break;
  47.                 case 'A':  LED2=0;LED1=1;break;
  48.                 case 'B':  LED1=LED2=0;  break;
  49.         }
  50. }
復制代碼




回復

使用道具 舉報

板凳
ID:983158 發表于 2021-12-11 11:23 | 只看該作者
謝謝大佬改進,我去試試
回復

使用道具 舉報

地板
ID:908826 發表于 2021-12-11 14:34 | 只看該作者
行哎你,整多機通訊?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品美女久久久久aⅴ国产馆 | 国产精品视频一区二区三区四区国 | 国产成人免费视频网站视频社区 | 亚洲精品综合一区二区 | 一区精品在线观看 | 午夜小视频在线播放 | 99热精品久久 | 草久久免费视频 | 欧美日韩最新 | 欧美日韩a| 久久久久九九九九 | 国产成人99久久亚洲综合精品 | 中文字幕亚洲区一区二 | 91视频亚洲| 亚洲天堂久久 | 婷婷丁香综合网 | 91在线精品一区二区 | 殴美一级片| 免费成人高清在线视频 | 精品一区二区久久久久久久网站 | www.蜜桃av| 国产精品美女久久久久久久网站 | 中文字幕亚洲一区 | 青青草网 | 国产日韩精品一区二区三区 | 欧美色综合一区二区三区 | 欧美福利视频 | 日本免费一区二区三区 | 福利片在线| 亚洲一区网站 | 二区三区视频 | 国产高清在线精品 | 亚洲www.| 国产女人叫床高潮大片免费 | av免费网址 | 亚洲vs天堂 | 欧美精品久久久久久久久老牛影院 | 日本精品一区二区 | 精品无码三级在线观看视频 | 成人区一区二区三区 | 福利视频一区二区 |