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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

仿真里將共陰型數碼管改成共陽型,直接這樣刪了連上去還是很混亂,有什么程序需要改嗎

[復制鏈接]
回帖獎勵 30 黑幣 回復本帖可獲得 30 黑幣獎勵! 每人限 2 次(中獎概率 50%)
跳轉到指定樓層
樓主
我看有人說加了三極管上去,我加
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define ON 0
  5. #define OFF 1
  6. sbit NS_G=P2^5; // 南北綠燈
  7. sbit NS_Y=P2^4; // 南北黃燈
  8. sbit NS_R=P2^3; // 南北紅燈

  9. sbit EW_G=P2^2; // 東西綠燈
  10. sbit EW_Y=P2^1; // 東西黃燈
  11. sbit EW_R=P2^0; // 東西紅燈

  12. sbit LED_D1=P3^7; // 南北方向數碼管位控制
  13. sbit LED_C1=P3^6; // 南北方向數碼管位控制

  14. sbit LED_B1=P3^1; // 東西方向數碼管為控制
  15. sbit LED_A1=P3^0; // 東西方向數碼管位控制

  16. sbit key1=P3^2;                                //開關位定義
  17. sbit key2=P3^3;

  18. /********* 倒計時賦初值 *************/
  19. uchar EWF=30,NSF=25,X=30,Y=25,Z=30,SHU=30;
  20. uchar count;
  21. void keyscan1()                //南北緊急制動按鍵函數
  22. {
  23.         if(!key1)
  24.         {
  25.                 while(!key1);                //松手檢測
  26.         }
  27. }
  28. void keyscan2()                //東西緊急制動按鍵函數
  29. {
  30.         if(!key2)
  31.         {
  32.                 while(!key2);                //松手檢測
  33.         }
  34. }
  35. void init(void)
  36.         {
  37.         TMOD=0x01;
  38.         TH0=(65536-40000)/256;
  39.         TL0=(65536-40000)%256;
  40.         EA=1;
  41.         ET0=1;
  42.         TR0=1;       
  43.         }
  44. void timer1(void) interrupt 1
  45.         {
  46.         TMOD=0x01;
  47.         TH0=(65536-40000)/256;
  48.         TL0=(65536-40000)%256;
  49.         EA=1;
  50.         ET0=1;
  51.         TR0=1;
  52.         count++;
  53.         if(count>29)
  54.                         {
  55.                         EWF--;
  56.                         NSF--;
  57.                         X--;
  58.                         Y--;
  59.                         Z--;
  60.                         SHU--;
  61.                         count=0;
  62.                         }

  63.         }

  64. /****************** 延時 **********************/
  65. void delay(uchar z)
  66.                 {
  67.                 uchar x,y;
  68.                 for(x=z;x>0;x--)
  69.                 for(y=110;y>0;y--);
  70.                 }

  71. /******************led 控制 *******************/
  72. unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 共陰極數碼管賦值
  73. void display1(uchar num1,uchar num2) //控制東西方向 led 顯示
  74. {
  75.         P0=table[num1];
  76.         LED_A1=ON;
  77.         delay(1);
  78.         LED_A1=OFF;

  79.         P0=table[num2];
  80.         LED_B1=ON;
  81.         delay(1);
  82.         LED_B1=OFF;

  83.         if(!key1)//南北緊急制動
  84.         {
  85.            while(1)
  86.                 {
  87.                         P0=0xc0;
  88.                         EW_G=EW_Y=OFF;
  89.                         NS_G=NS_Y=OFF;
  90.                         EW_R=NS_R=ON;                       
  91.                         keyscan1();
  92.                                 EW_R=NS_R=OFF;
  93.                                 EW_Y=NS_Y=OFF;
  94.                                 NS_G=ON;
  95.                                 EW_R=ON;
  96.                         break;
  97.                 }
  98.         }
  99. }
  100. void display2(uchar num3,uchar num4) // 控制南北方向 led 顯示
  101. {
  102.         P0=table[num3];
  103.         LED_C1=ON;
  104.         delay(1);
  105.         LED_C1=OFF;

  106.         P0=table[num4];
  107.         LED_D1=ON;
  108.         delay(1);
  109.         LED_D1=OFF;
  110. if(!key2)//東西緊急制動
  111.         {
  112.            while(1)
  113.                 {
  114.                         P0=0xc0;
  115.                         EW_G=EW_Y=OFF;
  116.                         NS_G=NS_Y=OFF;
  117.                         EW_R=NS_R=ON;                       
  118.                         keyscan2();
  119.                                 EW_R=NS_R=OFF;
  120.                                 EW_Y=NS_Y=OFF;
  121.                                 EW_G=ON;
  122.                                 NS_R=ON;
  123.                         break;
  124.                 }
  125.         }
  126. }

  127. void main()
  128. {
  129.         int i;
  130. /************ 初始狀態東西南北禁止通行 ************/
  131.         NS_R=ON; //南北方向紅燈打開
  132.         EW_R=ON; //東西方向紅燈打開
  133.         for(i=0;i<210;i++)
  134.                 {
  135.                 delay(10);
  136.                 }
  137.         NS_R=OFF;// 南北方向紅燈關閉
  138.         EW_R=OFF;// 東西方向紅燈關閉       
  139.        
  140. while(1)
  141. {
  142.                 /************** 狀態 1:東西紅燈 (30s), 南北綠燈 (25s)************/
  143.                 /**************** 狀態 2:東西紅燈 (30s), 南北黃燈 (5s)***************/
  144.                         while(1)
  145.                         {
  146.                                 init(); // 初始化計時器
  147.                
  148.                                 NS_G=ON; // 南北方向的綠燈打開
  149.                                 EW_R=ON; // 東西方向的紅燈打開
  150.                                 while(EWF!=0)
  151.                                 {
  152.                                         display1(EWF/10,EWF%10);// 東西方向紅燈 (25s)
  153.                                         display2(NSF/10,NSF%10);// 南北方向綠燈 (30s)
  154.                                         while(EWF==5)
  155.                                         {
  156.                                                 while(X!=0)
  157.                                                 {
  158.                                                 display1(EWF/10,EWF%10);// 東西方向紅燈 (5s)
  159.                                                 display2(X/10,X%10);// 南北方向黃燈 (5s)
  160.                                                 NS_G=OFF; // 南北方向的綠燈關閉
  161.                                                 NS_Y=ON; // 南北方向的黃燈打開
  162.                                                 }
  163.                                         }
  164.                                  }         
  165.                         EW_R=OFF; // 東西方向的紅燈關閉
  166.                         NS_G=OFF; // 南北方向的綠燈關閉
  167.                         NS_Y=OFF; // 南北方向的黃燈打開                
  168.                    EWF=30,NSF=25,X=30,Y=25,Z=30,SHU=30;// 重新賦值
  169. /**************** 狀態 3:東西綠燈 (25s), 南北紅燈 (30s)**************/
  170. /*************** 狀態 4:東西黃燈 (5s) , 南北紅燈 (30s)****************/
  171.                         while(1)
  172.                         {
  173.                                 init(); // 初始化計時器
  174.                
  175.                            NS_R=ON;// 南北方向的紅燈打開
  176.                                 EW_G=ON;// 東西方向的綠燈打開
  177.                                 while(Z!=0)
  178.                                 {
  179.                                         display2(Z/10,Z%10);// 南北方向紅燈 (25s)
  180.                                         display1(Y/10,Y%10);// 東西方向綠燈 (30s)
  181.                                         while(Z==5)
  182.                                         {
  183.                                                 while(SHU!=0)
  184.                                                 {
  185.                                                 display1(Z/10,Z%10);// 東西紅燈 (5s)
  186.                                                 display2(SHU/10,SHU%10);// 南北綠燈 (5s)
  187.                                                 EW_G=OFF; // 東西方向的綠燈關閉
  188.                                                 EW_Y=ON; // 東西方向的黃燈打開
  189.                                                 }
  190.                                         }
  191.                                  }
  192.                         NS_R=OFF; // 南北方向的紅燈關閉
  193.                         EW_G=OFF; // 東西方向的綠燈關閉
  194.                         EW_Y=OFF; // 東西方向的黃燈關閉
  195.                         EWF=30,NSF=25,X=30,Y=25,Z=30,SHU=30;// 重新賦值
  196.                         break;
  197.                         }
  198.                 }       
  199.          }
  200. }
復制代碼

了變成了常亮,應該要怎么做呢

I~C}G4S{O9$`BIK(JK_SI3C.png (85.94 KB, 下載次數: 43)

I~C}G4S{O9$`BIK(JK_SI3C.png

T8JP0IO54H75)}XK)QP_7)H.png (82.5 KB, 下載次數: 64)

T8JP0IO54H75)}XK)QP_7)H.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:609524 發表于 2021-12-13 21:03 | 只看該作者
數組里面的值要改
回復

使用道具 舉報

板凳
ID:752974 發表于 2021-12-15 08:42 | 只看該作者
初學者用仿真軟件學習單片機是很好的途徑,但是在設計電路時一定要按實際使用情況周密考慮電路的組成,不然易產生誤導。就樓主的兩個仿真電路,在實際使用中肯定是不行,就是段和位的驅動必須考慮好。
回復

使用道具 舉報

地板
ID:863590 發表于 2021-12-15 10:41 | 只看該作者
munuc_w 發表于 2021-12-15 08:42
初學者用仿真軟件學習單片機是很好的途徑,但是在設計電路時一定要按實際使用情況周密考慮電路的組成,不然 ...

好的謝謝你…
回復

使用道具 舉報

5#
ID:863590 發表于 2021-12-15 10:41 | 只看該作者
楊天想 發表于 2021-12-13 21:03
數組里面的值要改

嗯……
回復

使用道具 舉報

6#
ID:989612 發表于 2021-12-15 13:23 | 只看該作者
把數組里的共陰極的數都改成共陽極的數就可以了,然后仿真里的接電壓變成接地就行了吧

IMG_20211215_131847.jpg (3.18 MB, 下載次數: 54)

IMG_20211215_131847.jpg
回復

使用道具 舉報

7#
ID:407019 發表于 2021-12-15 15:26 | 只看該作者
看著下邊的兩個數碼管的 abcd網絡標號沒有添加                                                                                           此外建議添加使用HC138譯碼器  這樣IO口可以節約很多
回復

使用道具 舉報

8#
ID:979299 發表于 2021-12-16 12:33 | 只看該作者
04.#define ON 0   
05.#define OFF 1
把這里的0和1互換一下即可
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// CA共陽極數碼管賦值
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// CC共陰極數碼管賦值
回復

使用道具 舉報

9#
ID:992806 發表于 2021-12-16 15:42 | 只看該作者
檢查共陰數碼管的代碼是否改成了共陽數碼管的代碼,同時電路也需要一些改變。基本上就這些了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品视频99 | 成人午夜精品 | 精品国产91乱码一区二区三区 | 欧美一区二区久久 | 亚洲网站在线观看 | 久久精品 | 五月婷婷激情网 | 日韩一区二区三区视频 | 国产日产久久高清欧美一区 | 亚洲综合天堂网 | 久草网在线视频 | 日韩视频在线播放 | 最新中文字幕在线 | 日韩在线一区二区 | 亚洲国产中文字幕 | 日韩精品一区二区三区中文字幕 | 亚洲成人免费网址 | 网黄在线| 日韩欧美国产一区二区三区 | 日韩中文字幕视频 | 九九久久在线看 | 麻豆精品国产91久久久久久 | 国产美女在线观看 | 成人伊人 | 午夜av在线 | 国产精品99久久久久久大便 | 亚洲精品白浆高清久久久久久 | www.亚洲| 国产精品亚洲片在线播放 | 久草精品视频 | 伊人激情网 | 91精品国产91久久久久久吃药 | 新超碰97| 亚洲色图图片 | 亚洲欧美激情精品一区二区 | 久久久久久久久久久久久久av | 亚洲精品一区二区三区蜜桃久 | 国产精品免费一区二区三区四区 | 国产成人综合网 | 久草新在线| www日韩|