找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于單片機(jī)實驗仿真的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1137320 發(fā)表于 2024-11-23 10:34 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

這個仿真實驗代碼調(diào)試了很久也沒有做出來,大佬能否提供一些具體思路

626573587c0cca2bc26a55a94a90d808.png (225.79 KB, 下載次數(shù): 0)

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

使用道具 舉報

沙發(fā)
ID:161164 發(fā)表于 2024-11-24 09:14 | 只看該作者
有問題請描述問題,預(yù)計表現(xiàn),實際表現(xiàn),提供代碼,報錯信息
回復(fù)

使用道具 舉報

板凳
ID:420836 發(fā)表于 2024-11-24 09:28 | 只看該作者
您有可供驗證的測試代碼嗎?
回復(fù)

使用道具 舉報

地板
ID:1137320 發(fā)表于 2024-11-24 10:57 | 只看該作者
#include <reg51.h>

sbit CLK= P3^1;
sbit EOC = P3^0;
sbit CS = P2^7;
sbit WRR = P3^6;
sbit RDD = P3^7;

unsigned char code SegmentTable[] =
{
    0xC0, // 0
    0xf9, // 1
    0xa4, // 2
    0xb0, // 3
    0x99, // 4
    0x92, // 5
    0x82, // 6
    0xf8, // 7
    0x80, // 8
    0x90  // 9
};
void delay(unsigned int ms)
{
    unsigned int i, j;
    for (i = 0; i < ms; i++) {
        for (j = 0; j < 120; j++);  // 調(diào)整 120 的值以改變延時長度
    }
}

void Timer0_Init() {
    TMOD = 0x01;     // 定時器0,模式1(16位定時模式)
    TH0 = 0xFC;      // 設(shè)置初值高位
    TL0 = 0x18;      // 設(shè)置初值低位
    ET0 = 1;         // 允許定時器0中斷
    EA = 1;          // 開啟總中斷
    TR0 = 1;         // 啟動定時器0
}

void Timer0_ISR() interrupt 1 {
    TH0 = 0xFC;      // 重置初值高位
    TL0 = 0x18;      // 重置初值低位
    P3 ^= 0x02;   // 翻轉(zhuǎn)P3.1電平(高->低或低->高)
}

void ADC_START()
{   
         CS = 0;
         WRR = 0;
         delay(1);    // 穩(wěn)定信號
         CS = 0;   
     WRR = 1;    //與非讓START為低電平,不觸發(fā)
         delay(1);  
}

unsigned char ADC_GET()
{
        while (EOC == 0); // 等待 EOC = 1,表示轉(zhuǎn)換完成
        delay(5);
        RDD = 0;
        CS = 0;
        delay(5);
        return P0;       // 返回采樣結(jié)果
}

void main()
{
        unsigned int Result;
        unsigned char digits[3];
        unsigned char i;
        unsigned char position[]={0x02,0x04,0x08};

    Timer0_Init();   // 初始化定時器
    CS = 1;   
    WRR = 1;
        while (1)
        {
                 ADC_START();
                 Result = ADC_GET();
                 RDD = 1;
                 CS = 0;
                 Result = Result*100/51;       
                 digits[0] = Result/100;                           //最高位
             digits[1] = Result%100/10;
              digits[2] = Result%100%10;    // 小數(shù)部分
                 for(i = 0;i<3;i++)
                 {
                        P2 = position[i];
                        P1 = SegmentTable[digits[i]];       
                        if(i == 0)
                        {
                                P1 = P1 -0x80;       
                        }       
                        delay(1);
                        P2 = 0x00;

                 }                                                  
    }
}


現(xiàn)在已經(jīng)實現(xiàn)功能了,但是數(shù)碼管會閃爍
而且delay函數(shù)沒法往下調(diào)了,j到119甚至就顯示不出來了
回復(fù)

使用道具 舉報

5#
ID:92781 發(fā)表于 2024-11-24 11:29 | 只看該作者
共陽數(shù)碼管的四個公共端,供電不足,AT89C52的拉電流有400微安,又加了限流電阻,根本驅(qū)動不了數(shù)碼管,com1-com4用三極管驅(qū)動試試吧
回復(fù)

使用道具 舉報

6#
ID:92781 發(fā)表于 2024-11-24 11:32 | 只看該作者
不想用三極管,也可以吧r12-r15四個限流電阻改為上拉電阻
回復(fù)

使用道具 舉報

7#
ID:92781 發(fā)表于 2024-11-24 11:42 | 只看該作者
本帖最后由 jjy1039 于 2024-11-25 08:53 編輯

你那種是限流,改用上拉提高驅(qū)動能力就行了

上拉.jpg (4.3 KB, 下載次數(shù): 0)

上拉.jpg
回復(fù)

使用道具 舉報

8#
ID:961114 發(fā)表于 2024-11-25 09:21 | 只看該作者
你用AI8051U  兼容的  直接USB仿真,排產(chǎn)故障更簡單
回復(fù)

使用道具 舉報

9#
ID:619259 發(fā)表于 2024-11-25 09:45 | 只看該作者
數(shù)碼管動態(tài)顯示會受A/D芯片轉(zhuǎn)換時間的影響,出現(xiàn)閃爍,建議數(shù)碼管用定時器掃描方式。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表