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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4171|回復: 24
收起左側

自己編寫的交通燈程序有錯。求助大神。!

  [復制鏈接]
ID:145582 發表于 2016-11-1 21:57 | 顯示全部樓層 |閱讀模式
本人萌新一枚,剛剛開始學習單片機,前段時間突發奇想想用單片做一個交通燈
控制程序,在網上查找很多相關內容后終于自己寫好程序了,也沒有編譯錯誤。但是,
實際運行時卻達不到自己所預想的那樣,所以想請教各位大神幫忙看看我寫的程序哪出錯了。
以下是我所寫的程序。順便把所使用的單片機構造圖發給大家以便查看。
0.png 0.png

電路圖.pdf (58.17 KB, 下載次數: 7)
回復

使用道具 舉報

ID:61002 發表于 2016-11-2 08:36 | 顯示全部樓層
這里是你定義的uchar num,num1,shi_we,shi_ns,ge_we,ge_ns;
uint xianshi_we,xianshi_ns;
這里是你使用的  if(num1==1200)
你定義的uchar類型,數據最大到255,再加就變0,不會出現大于1200的數
回復

使用道具 舉報

ID:111634 發表于 2016-11-2 12:14 | 顯示全部樓層
本帖最后由 zl2168 于 2016-11-2 12:16 編輯

實例29  模擬交通燈


電路設計   


程序設計   


Keil調試   


Proteus仿真   


Proteus仿真一下,確認有效。
實例29 模擬交通燈.rar (35.12 KB, 下載次數: 13)
回復

使用道具 舉報

ID:111634 發表于 2016-11-2 12:17 | 顯示全部樓層
實例30  帶限行時間顯示的模擬交通燈


Proteus仿真一下,確認有效。
實例30 帶限行時間顯示模擬交通燈.rar (40.64 KB, 下載次數: 4)
回復

使用道具 舉報

ID:145682 發表于 2016-11-2 12:47 | 顯示全部樓層
好厲害的樣子
回復

使用道具 舉報

ID:145582 發表于 2016-11-2 13:27 | 顯示全部樓層
謝謝大家了,昨天我又請教了一下同學,經過我們的反復檢查調試已經成功解決問題了。/**************************************************
實驗名:交通燈設計
實驗內容:利用中斷,定時/計數器,數碼管和led燈進行交通燈的設計
*************************************************/                                                          
                                    #include <reg52.h>
                                #define uint unsigned int
                                   #define uchar unsigned char
                                   sbit wei1=P2^4;           //定義位選 0
                                   sbit wei2=P2^5;           //1
                                   sbit wei3=P2^6;           //2
                                   sbit wei4=P2^7;           //3
                                   sbit green_we=P1^2;        //定義交通燈 綠東西
                                   sbit green_ns=P1^3;        //定義交通燈 綠南北
                                   sbit red_we=P1^0;        //定義交通燈 紅東西
                                   sbit red_ns=P1^1;        //定義交通燈 紅南北
                                   sbit yellow_we=P1^4;        //定義交通燈 黃東西
                                   sbit yellow_ns=P1^5;        //定義交通燈 黃南北
                                   uchar num,num1,shi_we,shi_ns,ge_we,ge_ns;
                                   uint xianshi_we,xianshi_ns;
                                   uchar code table[]={
                                   0x3f,0x06,0x5b,0x4f,0x66,
                                   0x6d,0x7d,0x07,0x7f,0x6f}; //定義數值0,1,2...9
                                   void delayms(uint xsm) //延時程序
                                   {
                                   uint i,j;
                                   for(i=xsm;i>0;i--)
                                   for(j=110;j>0;j--);
                                   }
                                   void display(uchar shi_we,uchar ge_we,uchar shi_ns,uchar ge_ns)         //定義數碼管動態掃描函數
                                   {
                                   wei1=1;
                                   wei2=0;
                                   wei3=0;
                                   wei4=0;
                                   P0=table[shi_we];
                                   delayms(5);
                                   wei1=0;
                                   wei2=1;
                                   wei3=0;
                                   wei4=0;
                                   P0=table[ge_we];
                                   delayms(5);
                                   wei1=0;
                                   wei2=0;
                                   wei3=1;
                                   wei4=0;
                                   P0=table[shi_ns];
                                   delayms(5);
                                   wei1=0;
                                   wei2=0;
                                   wei3=0;
                                   wei4=1;
                                   P0=table[ge_ns];
                                   delayms(5);
                                   }
                                   void main()
                                   {
                                   num=0;
                                   num1=0;
                                   xianshi_we=19;
                                   xianshi_ns=19;
                                   shi_we=1;
                                   ge_we=9;
                                   shi_ns=1;
                                   ge_ns=9;
                                   TMOD=0x01;                                  //設置定時器0和計數器1為工作方式1
                                   TH0=(65536-46080)/256;          //設置初值
                                   TL0=(65536-46080)%256;
                                   EA=1;                                          //開總中斷
                                   ET0=1;                                          //開定時器0中斷
                                   TR0=1;                                          //啟動定時器0
                                   P1=0xff;           //led燈全滅
                                   P1=0xf6;   //定義東西亮紅燈,南北亮綠燈;
                                   while(1)
                                   {
                                        display(shi_we,ge_we,shi_ns,ge_ns);
                                          if(num1==17)
                                        {
                                        P1=0xde; //定義東西亮紅燈,南北亮黃燈;
                                        }
                                if(num1==19)
                                        {
                                        P1=0xf9; //定義東西亮綠燈,南北亮紅燈;
                                        xianshi_we=19;
                                xianshi_ns=19;
                                        }
                                if(num1==36)
                                        {
                                        P1=0xed; //定義東西亮黃燈,南北亮紅燈;
                                        }
                                if(num1==39)
                                        {
                                        num1=0;
                                        xianshi_we=19;
                                xianshi_ns=19;
                                        P1=0xf6; //定義東西亮紅燈,南北亮綠燈;
                                        }
                                   }
                                   }
                                   void T0_time()interrupt 1
                                   {
                                        TH0=(65536-46080)/256;
                                        TL0=(65536-46080)%256;
                                        num++;
                                        if(num%20==0)
                                        {
                                     num=0; num1++;
                                         xianshi_we--;
                                            xianshi_ns--;
                                         shi_we=xianshi_we/10;
                                         ge_we=xianshi_we%10;
                                         shi_ns=xianshi_ns/10;
                                         ge_ns=xianshi_ns%10;
                                         }
                                   }
這是修改過的程序,已經在板子上實際檢驗過了,沒大問題,基本能實現所預想的那樣。剩下的就是添加外部中斷以解決緊急情況了。再次感謝大家了
回復

使用道具 舉報

ID:140371 發表于 2016-11-2 14:31 | 顯示全部樓層
num,num1這變量應為int 型態 , TMOD=0x51;好像有誤吧  應是TMOD=0x11;   
回復

使用道具 舉報

ID:145827 發表于 2016-11-2 22:39 | 顯示全部樓層
我先仔細看看,再回復你哈
回復

使用道具 舉報

ID:145827 發表于 2016-11-2 22:39 | 顯示全部樓層
確實有點錯誤啊
回復

使用道具 舉報

ID:145627 發表于 2016-11-3 08:31 | 顯示全部樓層
現在仿真軟件上試驗一下
回復

使用道具 舉報

ID:145628 發表于 2016-11-3 08:37 | 顯示全部樓層
在proteus上試試
回復

使用道具 舉報

ID:111634 發表于 2016-11-3 10:06 | 顯示全部樓層
對照正確的案例和程序,仔細分析。
回復

使用道具 舉報

ID:145907 發表于 2016-11-3 13:24 | 顯示全部樓層
看不懂。。
回復

使用道具 舉報

ID:145929 發表于 2016-11-3 15:33 | 顯示全部樓層
我們也在做交通燈,但和你的比起來要簡易很多
回復

使用道具 舉報

ID:146201 發表于 2016-11-5 08:53 | 顯示全部樓層
這里是你定義的uchar num,num1,shi_we,shi_ns,ge_we,ge_ns;
回復

使用道具 舉報

ID:146244 發表于 2016-11-5 14:08 | 顯示全部樓層
哪里出錯了哇
回復

使用道具 舉報

ID:145582 發表于 2016-11-6 09:51 | 顯示全部樓層

已經解決了,你可以看我后面重新發的程序。之前的那個程序錯誤很多,計數器用法用錯了,沒有加脈沖信號,還有我把NUM1定義為unsigned char,它是8位的最多只能表示256個數字,用int 16位才能表示1000+以上的數
回復

使用道具 舉報

ID:146380 發表于 2016-11-6 10:43 | 顯示全部樓層
我幫你仔細看看哈別急
回復

使用道具 舉報

ID:146381 發表于 2016-11-6 11:23 | 顯示全部樓層
超出數據類型的范圍,則會溢出。
回復

使用道具 舉報

ID:146274 發表于 2016-11-6 17:10 | 顯示全部樓層
看不懂
回復

使用道具 舉報

ID:146465 發表于 2016-11-6 18:40 | 顯示全部樓層
問題解決了嗎
回復

使用道具 舉報

ID:145582 發表于 2016-11-6 21:21 | 顯示全部樓層

已經解決了
回復

使用道具 舉報

ID:145582 發表于 2016-11-6 21:22 | 顯示全部樓層
這個小孩很會玩 發表于 2016-11-6 11:23
超出數據類型的范圍,則會溢出。

謝謝,后面我也發現這個問題了
回復

使用道具 舉報

ID:146588 發表于 2016-11-7 13:18 | 顯示全部樓層
好像不難,你再認真看一遍  應該可以發現其中的難題的,祝你好運
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品热视频| 国产免费一区 | 欧美一区二 | 四虎最新视频 | 日韩精品久久 | 欧美日本韩国一区二区 | 国产精品毛片久久久久久 | 污书屋| 国产成人高清成人av片在线看 | 欧美综合视频在线 | 日本a视频 | 日韩精品免费在线观看 | 小h片免费观看久久久久 | 精品熟人一区二区三区四区 | 国产黄视频在线播放 | 完全免费av在线 | 免费精品| 亚洲天堂av在线 | 色婷婷av一区二区三区软件 | 国产亚洲欧美在线视频 | 久久精品男人的天堂 | 久久爆操 | 国产美女在线观看 | 一区二区在线 | 99精品国产一区二区三区 | 欧美一级毛片久久99精品蜜桃 | 日本在线免费看最新的电影 | 9久久精品 | 伊人色综合久久天天五月婷 | 日韩久久精品 | 午夜激情在线视频 | 欧美成人精品激情在线观看 | 国产精品亚洲成在人线 | 欧美一区永久视频免费观看 | 精品一区二区三区四区 | 精品国产一区二区 | 国产色婷婷精品综合在线播放 | 久久久99精品免费观看 | 国产目拍亚洲精品99久久精品 | 激情一区 | 视频一区中文字幕 |