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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2378|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

萬(wàn)能的網(wǎng)友,求助下這個(gè)怎么把共陽(yáng)改成共陰

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  1. #include<reg51.H>                                         // 對(duì)單片機(jī)的口進(jìn)行了定義
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code a[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//段碼組合,共陽(yáng)極
  5. uchar code b[4]={0x01,0x02,0x04,0x08}; //位碼組合         
  6. uchar code c[4]={0xcc,0xd4,0x78,0xb8};/*P1 綠紅、黃紅、紅綠、紅黃*/
  7.                   
  8. //12MHz                          
  9. //*************************************************************************************
  10. uchar NB=25,DX=30,NBG=25,DXG=15,H=5;                         /*數(shù)碼管顯示值設(shè)置*/
  11. uchar  i,k=0,cnt=0,j=0;

  12. sbit K0=P3^4;                           /*支干道通行*/
  13. sbit K1=P3^5;                           /*主干道通行*/
  14. sbit K4=P3^6;                           /*返回*/
  15. sbit K3=P3^2;                        /*設(shè)置時(shí)間*/
  16. sbit K2=P3^3;                        /*緊急剎車*/

  17. void delay(uchar t);                /*定義延時(shí)程序*/
  18. void key();                                /*定義鍵盤程序*/
  19. void display();                        /*定義顯示程序*/
  20. void settime();                /*定義時(shí)間設(shè)置顯示程序*/
  21. //*************************程序初始*********************************************
  22. void init(void)
  23. {
  24.         TMOD=0x01;                          /*使用定時(shí)器0模式一*/
  25.         TH0=0x3c;                          /*(65536-5000)/256*/
  26.         TL0=0xb0;                          /*(65536-5000)%256*/
  27.         IT0=1;                                  //開(kāi)中斷
  28.         ET0=1;
  29.         TR0=1;
  30.         EA=1;
  31.         EX0=1;
  32.         EX1=1;
  33.         P1=c[k];                                  //開(kāi)啟交通燈
  34. }
  35. //*************************中斷0處理程序***************************************
  36. void int0(void) interrupt 0                 //        通行時(shí)間設(shè)置
  37. {         
  38.   EA=0;
  39.   P1=0xd8;                                /*紅燈全亮*/
  40.   
  41. for(;;)
  42.         {
  43.            settime();

  44.                    if(K1==0)                                          /*P3^6=0設(shè)置主干道通行時(shí)間*/
  45.            {  
  46.           delay(40);
  47.           if(K1==0)
  48.                   {
  49.              while(!K1)
  50.              {settime();}
  51.                                  DXG++;                                /*主干道通行時(shí)間加1*/
  52.              if(DXG==100)
  53.              DXG=0;                        
  54.           }
  55.            }
  56.          
  57.                    if(K0==0)                                                         /*P3^5=0設(shè)置支干道通行時(shí)間*/
  58.            {  
  59.              delay(40);
  60.              if(K0==0)
  61.                      {
  62.                while(!K0)
  63.                {settime();}
  64.                            NBG++;                                                /*支干道通行時(shí)間加1*/
  65.                if(NBG==100)
  66.                NBG=0;               
  67.              }
  68.            }
  69.          
  70.            if(K4==0)                                                           /*P3^7=0返回*/
  71.        {  
  72.                 delay(40);        
  73.                     if(K4==0)
  74.                     {
  75.                        while(!K4)
  76.                            {
  77.                            }
  78.                            k=0;P1=c[k];
  79.                            NB=NBG,DX=NBG+H;        
  80.                        display();
  81.                            EA=1;
  82.                         
  83.                    break;
  84.                     }                       
  85.        }
  86.     }
  87. }


  88. //***********************************中斷1處理程序********************
  89. void int1(void) interrupt 2                                         //緊急情況
  90. {                                                                                          
  91.                                                          /*東西南北紅燈亮*/
  92.         EA=0;                                                                        
  93.         TR0=!TR0;                                                            /*停止計(jì)數(shù)*/

  94.         for(;;)                                                                   /*主支干道顯示全為0*/
  95.         {         
  96.                 P1=0xd8,
  97.                 P0=a[0];
  98.            P2=b[0];
  99.            delay(20);
  100.            
  101.             P2=b[1];
  102.            delay(20);

  103.            P2=b[2];
  104.            delay(20);

  105.            P2=b[3];
  106.            delay(20);
  107.    

  108.            if(K4==0)                                                   /*返回*/
  109.         {
  110.                  delay(20);
  111.                 EA=1;
  112.                   
  113.                 P1=c[k];                                          /*返回緊急前狀態(tài)開(kāi)始計(jì)數(shù)*/
  114.                 TR0=!TR0;                                                /*重啟計(jì)數(shù)*/
  115.                 break;                                                           
  116.                 }
  117.         }
  118. }
  119. void time1(void) interrupt 1                                                /*交通燈控制程序*/
  120. {
  121.         TH0=0x3c;                                                                                /*定時(shí)50ms*/
  122.         TL0=0xb0;                                                                                         
  123.         cnt++;
  124.         
  125.         if(cnt>=20)                                                                                  /*每20*50ms=1s自減一*/
  126.         {
  127.                 NB--;
  128.                 DX--;
  129.                 cnt=0;
  130.                 if(NB==0||DX==0)
  131.                 {
  132.                         k++;
  133.                         if(k>3)                                                                        /*k取0,1,2,3*/
  134.                         k=0;
  135.                         switch(k)
  136.                         {        
  137.                                 case 0:NB=NBG,DX=NBG+H;j=0;P1=c[k];break;          /*主干道通行顯示綠紅*/
  138.                             case 1:NB=H;j=1;P1=c[k];break;                                           /*主干道黃燈閃爍*/
  139.                                 case 2:NB=DXG+H,DX=DXG;j=0;P1=c[k];break;          /*支干道通行顯示紅綠*/
  140.                                 case 3:DX=H;j=2;P1=c[k];break;                                           /*支干道黃燈閃爍*/
  141.                         }
  142.                 }                 
  143.         }
  144. }
  145. void delay(uchar t)                         //延時(shí)程序延時(shí)0.1*nms   
  146. {
  147.   uchar i;
  148.   do
  149.    {
  150.      for(i=0;i<20;i++)
  151.      ;;;
  152.    } while(t--);
  153. }
  154. void settime()
  155. {
  156.            P2=b[0],P0=a[(NBG+H)%10];        /*顯示主干道通行時(shí)間         */
  157.        delay(20);
  158.                   
  159.            P2=b[1],P0=a[(NBG+H)/10];        
  160.            delay(20);
  161.                   
  162.            P2=b[2],P0=a[(DXG+H)%10];                /*顯示支干道通行時(shí)間*/
  163.            delay(20);
  164.                   
  165.        P2=b[3],P0=a[(DXG+H)/10];        
  166.            delay(20);
  167. }
  168. void  key()                                //鍵盤程序用KO K1模擬一道有車一道無(wú)車
  169. {
  170.             if(K1==0)                                           /*主干道有車支干道無(wú)車*/
  171.     {  
  172.        delay(40);
  173.        if(K1==0)                        
  174.        {
  175.           while(!K1)
  176.           {  
  177.                                  display();
  178.           }
  179.              k=0,P1=c[k];cnt=0;
  180.           NB=NBG, DX=NBG+H;
  181.          display();
  182.        }
  183.     }
  184.            if(K0==0)                                            /*支干道有車主干道無(wú)車*/
  185.     {  
  186.        delay(40);
  187.        if(K0==0)
  188.        {
  189.           while(!K0)
  190.           {
  191.            display();
  192.           }
  193.                 k=2,P1=c[k];cnt=0;
  194.           NB=DXG+H,DX=DXG;
  195.                    display();
  196.            }
  197.         }
  198. }
  199. void display()                                                        //顯示程序
  200.         {
  201.                 P2=b[0],P0=a[NB%10];                           /*由k的不同值進(jìn)入確定顯示數(shù)值*/
  202.                 delay(20);
  203.         
  204.                 P2=b[1],P0=a[NB/10];
  205.                 delay(20);
  206.         
  207.                 P2=b[2],P0=a[DX%10];
  208.                 delay(20);
  209.                                                    
  210.                 P2=b[3],P0=a[DX/10];
  211.                 delay(20);
  212.         }
  213. void main(void)
  214. {                //主程序
  215.         init();
  216.         
  217.         for(;;)
  218.         {
  219.           display();
  220.           key();
  221.          
  222.           //黃燈閃爍程序
  223.           while(j==1)                                                                                        /*主干道黃燈閃爍*/
  224.        {                                                                                                               
  225.                      P1=0xdc;                                                                        /*給黃燈一高電平黃燈滅*/                  
  226.                          for(i=83;i>0;i--){display();}                                                /*執(zhí)行for循環(huán)延時(shí)*/                        
  227.                          P1=c[k];                                                                        /*再給黃燈一低電平黃燈亮*/
  228.                          for(i=83;i>0;i--){display();}
  229.                 }
  230.         while(j==2)
  231.          {                                                                                    /*支干道黃燈閃爍*/
  232.                     
  233.                          P1=0xf8;
  234.                          for(i=83;i>0;i--){display();}
  235.                          P1=c[k];
  236.                          for(i=83;i>0;i--){display();}
  237.                  }                                                                          
  238.           }
  239.         }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1034262 發(fā)表于 2022-12-24 15:29 | 只看該作者
輸出到IO時(shí)取反即可。
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2022-12-24 17:22 | 只看該作者
軟件都是基于硬件條件編寫的,你不上硬件電路圖,就你這個(gè)極不成熟的代碼,根本無(wú)法給出合理建議。
回復(fù)

使用道具 舉報(bào)

地板
ID:417460 發(fā)表于 2022-12-26 18:25 | 只看該作者
段碼輸出做取反操作
回復(fù)

使用道具 舉報(bào)

5#
ID:879348 發(fā)表于 2022-12-27 08:20 | 只看該作者
所有數(shù)據(jù)取反,所有驅(qū)動(dòng)反相,直接改好給你不可能的吧,誰(shuí)那么有空呢
回復(fù)

使用道具 舉報(bào)

6#
ID:965189 發(fā)表于 2022-12-27 09:38 | 只看該作者
硬件決定陰陽(yáng),如果硬件不變,只改變軟件是不行的。
回復(fù)

使用道具 舉報(bào)

7#
ID:77589 發(fā)表于 2022-12-27 10:25 | 只看該作者
把所有顯示相關(guān)輸出的數(shù)據(jù)都按位取反
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 性色av一区二区三区 | 久草视频网站 | 欧美午夜一区二区三区免费大片 | 成人免费视频一区 | 亚洲精品视频在线 | 91高清在线视频 | 亚洲欧美在线观看 | 色噜噜亚洲男人的天堂 | 91精品国产91久久久久久最新 | 日本a v在线播放 | 久久久久精 | 久久精品影视 | 亚洲综合视频 | 精品网站999www | 精品国产18久久久久久二百 | 日日骚av| 亚洲一区二区三区四区五区中文 | 久久精品这里 | 久久久一区二区三区 | 精品久久久久香蕉网 | 日韩一区二区免费视频 | 日韩欧美国产一区二区三区 | 天堂网av在线| 五月综合激情网 | 精品久久久久久久久久久久久久久久久 | 精品91久久| 中文福利视频 | 91亚洲精品久久久电影 | 久久久久久久久久毛片 | 久草色播| 欧美a∨ | 精品一区二区三区在线观看国产 | 一区二区av在线 | 中文字幕在线免费视频 | 日韩一区二区在线观看视频 | 九九热久久免费视频 | 日韩视频在线观看中文字幕 | 亚洲欧美日韩中文在线 | 亚洲天堂日韩精品 | 亚洲国产精品一区二区第一页 | 欧美极品视频在线观看 |