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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

proteus仿真沒問題,實物就沒問題嗎?

[復制鏈接]
跳轉到指定樓層
樓主
ID:350902 發表于 2020-3-20 15:38 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
我做了一個八路搶答器,proteus仿真時一點問題都沒有。但是實物做出來后一點都不正確。甚至連開始都開始不了。是我設計有問題還是什么啊,有沒有大神指點下。下附代碼和圖片
#include <reg51.h>
#include <intrins.h>
#include <stdlib.h>

sbit k0 = P0^0; //二位數碼管第一位選擇腳
sbit k2 = P0^2; //二位數碼管第二位選擇腳
sbit k4 = P0^4;


//P2端口 數碼管段選
//P1端口 八位選手搶答
sbit start = P3^7;//開始搶答按鈕連接管腳
sbit end = P3^5;         //結束搶答按鈕連接管腳
sbit beep=P3^3;//蜂鳴器連接管腳



unsigned char duanxuan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管段碼:0123456789

unsigned char qd_num=0;        //搶答選手號
unsigned char qd_time=0;        //搶答倒計時間
unsigned char timeout_num=0;        //定時器產生中斷次數

unsigned char work_status = 0;        //工作狀態,下面幾個為工作狀態定義的宏
#define START_QD_STATUS 0
#define WAIT_QD_STATUS 1
#define ACK_QD_STATUS 2

/*******延時2ms函數*******/
void delay2ms(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=4;b>0;b--)
        for(a=248;a>0;a--);
}
/*******延時10ms函數*******/
void delay10ms(void)
{
    unsigned char a,b,i;
    for(a=5;a>0;a--)
    for(b=4;b>0;b--)
    for(i=248;i>0;i--);
}
/******延時50ms函數,參數num為延時多少個50ms******/
void delay50ms(unsigned int num)   //誤差 0us
{
    unsigned char a,b;
        unsigned char i=0;

        for(i=0; i<num; i++)
        {
    for(b=173;b>0;b--)
        for(a=143;a>0;a--);
        }
}

/******初始化定時器0******/
void InitTimer0(void)//50ms
{
    TMOD = 0x01;//定時器工作模式1
    TH0 = 0x3C;        //定時器裝值高8位
    TL0 = 0x0B0;//定時器裝值低8位
    EA = 1;                //使能總中斷
    ET0 = 1;        //使能定時器0中斷
    TR0 = 1;        //啟動定時器
}
/*******關閉定時器0*******/
void end_Timer0(void)
{
        ET0 = 0;//關閉定時器0中斷
    TR0 = 0;//停止定時器0
}
/*****初始化函數*****/
void init(void)
{
        k0 = 0;
        k2 = 0;
        k4 = 0;
       
        beep = 0;//上電時由于該腳為高,而為高時蜂鳴器會叫,故初始化為低
}
/*******等待開始搶答狀態*******/
void start_qd_status(void)
{
        if(start == 0)//檢測到開始搶答按鈕按下
        {
                work_status = WAIT_QD_STATUS;//工作狀態設置為等待答題狀態
                qd_num = 0;                        //回答選手號為0,等待選手按下
                qd_time = 9;                //9s搶答時間
                timeout_num=0;                //中斷次數清0
                InitTimer0();                //開啟定時器0
        }
}
/*******開始按鈕按下后,等待選手搶答狀態函數*******/
void wait_qd_status(void)
{
        if(qd_time == 0)//無人搶答,搶答時間已到
        {
                end_Timer0();//停止定時器0

                //蜂鳴器給出無人搶答警報
                beep = 1;        //蜂鳴器響
                delay50ms(20);
                beep = 0;

                work_status = START_QD_STATUS;//無人搶答后恢復原始狀態,設置工作狀態為開始搶答狀態
        }
        if(end == 0)//檢測到結束按鍵
        {
                end_Timer0();//停止定時器0
                qd_num = 0;//回答選手號為0
                qd_time = 0;//搶答時間清0
                work_status = START_QD_STATUS;//工作狀態置開始搶答狀態
        }

/********搶答成功********/
     if(P1!=0xff) //P1口電位發生變化,表示有按鍵按下
    {
        delay10ms();  //延時防抖      
      
         switch(P1)//檢測哪位選手按下搶答按鈕
        {
                case 0xfe://1號
                beep = 1;        //蜂鳴器響
                delay50ms(20);
                beep = 0;
                        qd_num = 1;//回答選手號為1
                        qd_time = 30;
                         timeout_num=0;                //中斷次數清0
                     InitTimer0();                //開啟定時器0

                        work_status = ACK_QD_STATUS;
                        break;
            case 0xfd://2號
                    beep = 1;        //蜂鳴器響
                      delay50ms(20);
                    beep = 0;
                        qd_num = 2;//回答選手號為2
                        qd_time = 30;
                         timeout_num=0;                //中斷次數清0
                      InitTimer0();                //開啟定時器0

                        work_status = ACK_QD_STATUS;
                        break;
                case 0xfb://3號
                    beep = 1;        //蜂鳴器響
                delay50ms(20);
                beep = 0;
                        qd_num = 3;//回答選手號為3
                        qd_time = 30;
                        timeout_num=0;                //中斷次數清0
                     InitTimer0();                //開啟定時器0
       
                        work_status = ACK_QD_STATUS;
                        break;
                case 0xf7://4號
                    beep = 1;        //蜂鳴器響
                delay50ms(20);
                beep = 0;
                        qd_num = 4;//回答選手號為4
                        qd_time = 30;
                        timeout_num=0;                //中斷次數清0
                    InitTimer0();                //開啟定時器0
       
                        work_status = ACK_QD_STATUS;
                        break;
                case 0xef://5號
                beep = 1;        //蜂鳴器響
                delay50ms(20);
                beep = 0;
                        qd_num = 5;//回答選手號為5
                        qd_time = 30;
                        timeout_num=0;                //中斷次數清0
                    InitTimer0();                //開啟定時器0
       
                        work_status = ACK_QD_STATUS;
                break;
                case 0xdf://6號
                    beep = 1;        //蜂鳴器響
                delay50ms(20);
                beep = 0;
                        qd_num = 6;//回答選手號為6
                        qd_time = 30;
                        timeout_num=0;                //中斷次數清0
                    InitTimer0();                //開啟定時器0
       
                        work_status = ACK_QD_STATUS;
                        break;
                case 0xbf://7號
                    beep = 1;        //蜂鳴器響
                delay50ms(20);
                beep = 0;
                        qd_num = 7;//回答選手號為7
                        qd_time = 30;
                        timeout_num=0;                //中斷次數清0
                    InitTimer0();                //開啟定時器0
               
                        work_status = ACK_QD_STATUS;
                        break;
                case 0x7f://8號
                    beep = 1;        //蜂鳴器響
                delay50ms(20);
                beep = 0;
                        qd_num = 8;//回答選手號為8
                        qd_time = 30;
                        timeout_num=0;                //中斷次數清0
                    InitTimer0();                //開啟定時器0

                        work_status = ACK_QD_STATUS;
                        break;
                default:
                        break;
        }
        }
}
/*******選手回答問題狀態*******/
void ack_qd_status()
{
        unsigned char i = 0;
        if(qd_time == 0)//答題超時
        {
                end_Timer0();//結束定時器0
                qd_num = 0;
                qd_time = 0;

                for(i=0;i<3;i++)//選手回答問題超時警報
                {
                        beep = 1;
                        delay50ms(5);
                        beep = 0;
                        delay50ms(5);
                }

                work_status = START_QD_STATUS;//設置工作狀態為開始搶答狀態
        }
        if(end == 0)//結束按鍵按下
        {
                end_Timer0();//結束定時器0
                qd_num = 0;
                qd_time = 0;
                work_status = START_QD_STATUS;//設置工作狀態為開始搶答狀態
        }
}

/******數碼管顯示函數
二位數碼管顯示倒計時時間
一位數碼管顯示搶答選手號******/
void display(unsigned char qd_time, unsigned char qd_num)
{
        P2 = duanxuan[qd_time/10];//顯示時間十位
        k0 = 1;                //打開第一位數碼管位選
        delay2ms();
        k0 = 0;

        P2 = duanxuan[qd_time%10];//顯示時間個位
        k2 = 1;                //打開第二位數碼管位選
        delay2ms();
        k2 = 0;

        P2 = duanxuan[qd_num%10];//顯示選手號
        k4 = 1;                //打開第三位數碼管位選
        delay2ms();
        k4 = 0;
}


/******主函數******/
void main()
{
        init();//初始化

        while(1)
        {
                switch(work_status)//工作狀態判斷
                {
                        case START_QD_STATUS://開始搶答狀態
                                start_qd_status();
                                break;
                        case WAIT_QD_STATUS://等待選手搶答狀態
                                wait_qd_status();
                                break;
                        case ACK_QD_STATUS://選手回答狀態
                                ack_qd_status();
                                break;
                        default:
                                break;
                }
                display(qd_time, qd_num);//數碼管顯示
        }
}

/******定時器0中斷處理函數******/
void Timer0Interrupt(void) interrupt 1
{
        timeout_num++;
    TH0 = 0x3C;
    TL0 = 0x0B0;

        if(timeout_num==20)
        {
                timeout_num=0;
                qd_time--;
        }
}

mmexport1584689896029.jpg (502.38 KB, 下載次數: 74)

mmexport1584689896029.jpg

mmexport1584689890316.jpg (410.26 KB, 下載次數: 74)

mmexport1584689890316.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:350902 發表于 2020-3-20 18:34 來自手機 | 只看該作者
已解決
回復

使用道具 舉報

板凳
ID:874220 發表于 2021-1-6 12:28 | 只看該作者

您好,我遇到了和您一樣的問題,我想向您請教您是如何成功的
回復

使用道具 舉報

地板
ID:681584 發表于 2021-1-6 16:05 | 只看該作者

只要proteus仿真沒問題,實物就肯定沒問題
回復

使用道具 舉報

5#
ID:874315 發表于 2021-1-6 16:07 | 只看該作者
一般只要線路沒錯,仿真沒問題實物就沒問題
回復

使用道具 舉報

6#
ID:874348 發表于 2021-1-6 16:36 | 只看該作者
仿真沒問題實物就沒問題
回復

使用道具 舉報

7#
ID:751072 發表于 2021-1-6 16:58 | 只看該作者
正常情況下你的仿真和實物電路一直,應該不會有問題,但是考慮實際的情況,例如焊接工藝,元器件性能的參差不齊,可能導致結果與仿真不符的現象很常見的
回復

使用道具 舉報

8#
ID:873502 發表于 2021-1-9 00:17 | 只看該作者
只要proteus仿真沒問題,實物就應該是沒問題的
回復

使用道具 舉報

9#
ID:781556 發表于 2021-1-9 22:21 | 只看該作者
仿真并不能夠替代實物現場測試,尤其是環境因素
回復

使用道具 舉報

10#
ID:420836 發表于 2021-1-9 23:37 | 只看該作者
如果配置正確,則仿真可能與實際設計非常接近。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人一区二区三区 | 精品中文字幕在线观看 | 色爱综合网 | 性国产丰满麻豆videosex | 欧美成人在线影院 | 亚洲精品一二区 | 久久综合狠狠综合久久综合88 | 国产精品成人一区二区 | 九一国产精品 | 久久99精品久久久久久 | 黄色在线免费观看视频 | 视频一区二区三区中文字幕 | 免费一看一级毛片 | 日韩免费视频一区二区 | 91在线看片| 成在线人视频免费视频 | 精品国产一区二区三区久久久久久 | 99这里只有精品视频 | 亚洲精品久久久久久久久久久久久 | 99re国产视频 | 毛片一级黄色 | 美女天天干天天操 | 国内精品一区二区 | 国产在线成人 | 国产人久久人人人人爽 | 日一区二区三区 | 国产日韩久久 | 一区二区免费看 | 久久久久久中文字幕 | 小早川怜子xxxxaⅴ在线 | 欧美日韩成人影院 | av一区二区三区四区 | 日韩在线中文字幕 | 国产午夜精品福利 | 狠狠婷婷综合久久久久久妖精 | www.欧美视频 | 欧美福利网站 | 免费网站国产 | 91视频在线 | 成人免费在线视频 | 国产一区二区久久 |