欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 兩個單片機程序結合起來就不對? [打印本頁]

作者: cdw123    時間: 2020-3-18 21:59
標題: 兩個單片機程序結合起來就不對?
我有一個問題:我想讓第一個led燈亮且數碼管動態掃描顯示,可是把這兩個程序結合起來就不對,它們單個運行的時候是正確的,但是當把他們同時運行的時候就出現問題?我不知道是不是我鎖存器那塊操作不正確,請大神幫幫我。

單片機源程序如下:
1.#include "head.h"
void main()
{
        init();
        model=1;
        time=50;
        ZKB=20;
        //Timer_On();
        Select_Show(0);
        LED_On(1);
        while(1)
        {
                //LED_On(1);
                /*if(time)
                {
                        LED_On(1);
                }
                else
                {
                        LED_Off();
                        Timer_Off();
                }*/
                DIG_Show();
        }
}
2.*******************************************
頭文件head.h
***********************************************/
#ifndef HEAD_H
#define HEAD_H
/*******************************/
//包含的頭文件
#include <reg52.h>
#include <intrins.h>
#include "delay.h"
/*******************************/
//宏定義
#define uchar unsigned char
#define uint unsigned int
/*******************************/
//74LS138譯碼器
sbit LSA=P2^5;
sbit LSB=P2^6;
sbit LSC=P2^7;
extern void LS138(uchar i);//選擇譯碼器輸出
/*******************************/
//定時器
extern uint ZKB;//占空比單位:%
extern bit PWM;
extern uchar flag;
extern uint counter0;
extern uint counter1;
extern uchar counter_time;
extern uchar time;
extern void Timer0_init();//定時器0初始化設置
extern void Timer_On();//定時器開啟
extern void Timer_Off();//定時器關閉
/*******************************/
//LED
extern void LED_On(uchar i);//LED亮
extern void LED_Off();//LED滅
/*******************************/
//初始化函數
extern void init();
/*******************************/
//數碼管
extern uchar model;
extern uchar DIG_BUFFER[8];
extern uchar code DIG[16];
extern void DIG_Show();//數碼管顯示
extern void Select_DIG(uchar i);//選擇數碼管
extern void Select_Show(uchar i);//選擇數碼管顯示模式 0倒計時 1溫度
/*******************************/
//鍵盤
extern void KeyScan();//鍵盤掃描函數
#endif

3********************************************
head.c
***********************************************
#include "head.h"
/*******************************/
//74LS138譯碼器
void LS138(uchar i)//選擇譯碼器輸出
{
        switch(i)
        {
                case 0:LSA=0;LSB=0;LSC=0;break;
                case 4:LSA=0;LSB=0;LSC=1;break;
                case 5:LSA=1;LSB=0;LSC=1;break;
                case 6:LSA=0;LSB=1;LSC=1;break;
                case 7:LSA=1;LSB=1;LSC=1;break;
        }
}
/*******************************/
//定時器
uint ZKB;//占空比單位:%
bit PWM=0;
uchar flag;
uint counter0=0;
uint counter1=0;
uchar counter_time=0;
uchar time=0;
void Timer0_init()//定時器0初始化設置
{
        TH0=(65536-1)/256;
        TL0=(65536-1)%256;
        ET0=1;//開定時器0中斷
}
void Timer0() interrupt 1
{
        TH0=(65536-1)/256;
        TL0=(65536-1)%256;
        counter0++;
        counter1++;
        if(counter0<(ZKB*10))
        {
                PWM=1;
        }
        else if((counter0>=(ZKB*10))&&(counter0<1000))
        {
                PWM=0;
        }
        else
        {
                counter0=0;
        }
        if(counter1>50000)
        {
                counter1=0;
                time--;
        }
}

void Timer_On()//定時器開啟
{
        TMOD=0x01;
        Timer0_init();
        EA=1;
        TR0=1;
}
void Timer_Off()//定時器關閉
{
        EA=0;
        ET0=0;
        TR0=0;
        counter0=0;
        counter1=0;
        counter_time=0;
        PWM=0;
}
/*******************************/
//LED
void LED_On(uchar i)//LED亮
{
        
        switch(i)
        {
                case 1:P0=0xfe;break;
                case 2:P0=0xfd;break;
                case 3:P0=0xfb;break;
        }
        LS138(4);
        LS138(0);
}
void LED_Off()//LED滅
{
        LS138(4);
        P0=0xff;
        LS138(0);
}
/*******************************/
//初始化函數
void init()
{
        LS138(4);
        P0=0xff;
        LS138(0);
        //關閉蜂鳴器、繼電器等無關外設
        LS138(5);
        P0=0x00;
        LS138(0);
        //數碼管熄滅
        /*LS138(6);
        DIG_COM(8);
        P0=0xff;
        LS138(7);
        P0=0xff;*/
}
/*******************************/
//數碼管
uchar model;
uchar code DIG[16]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,
                    0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
uchar DIG_BUFFER[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//數碼管緩存
void Select_DIG(uchar i)//選擇數碼管
{
        
        switch(i)
        {
                case 0:P0=0x01;break;
                case 1:P0=0x02;break;
                case 2:P0=0x04;break;
                case 3:P0=0x08;break;
                case 4:P0=0x10;break;
                case 5:P0=0x20;break;
                case 6:P0=0x40;break;
                case 7:P0=0x80;break;
        }
        LS138(6);
        LS138(0);
}
void DIG_Show()//數碼管顯示
{
        uchar x;
        for(x=0;x<8;x++)
        {
                Select_DIG(x);
                P0=0xff;
                P0=DIG_BUFFER[x];
                LS138(7);
                //while(counter1<1000);
                LS138(0);
                Delay1ms();
        }
}
void Select_Show(uchar i)//選擇數碼管顯示模式 0倒計時 1溫度
{
        switch(i)
        {
                case 0:
                DIG_BUFFER[0]=0xbf;
                DIG_BUFFER[1]=DIG[model];
                DIG_BUFFER[2]=0xbf;
                DIG_BUFFER[3]=0xff;
                DIG_BUFFER[4]=DIG[time/1000];
                DIG_BUFFER[5]=DIG[(time%1000)/100];
                DIG_BUFFER[6]=DIG[(time%100)/10];
                DIG_BUFFER[7]=DIG[time%10];
                break;
        }
}

全新升級版CT107S V1.5 原理圖 【彩版】.pdf

165.66 KB, 下載次數: 6


作者: cdw123    時間: 2020-3-18 22:02
這個就是藍橋杯的原理圖,里面led和數碼管都是有鎖存器的
作者: 51hei團團    時間: 2020-3-18 22:08

單片機程序合并教程:http://www.raoushi.com/bbs/dpj-157117-1.html
作者: cdw123    時間: 2020-3-18 22:32
j就是我操作數碼管的時候 led會全亮。。
作者: config_h    時間: 2020-3-18 22:40
頭文件里面有問題
作者: cdw123    時間: 2020-3-19 00:29
config_h 發表于 2020-3-18 22:40
頭文件里面有問題

請問具體問題在哪塊呢?我現在有點懵了
作者: chenyucy72    時間: 2020-3-19 11:18
檢查檢查是不是頭文件有包含重復
作者: cdw123    時間: 2020-3-19 18:02
已經解決,在對譯碼器輸入端賦值的時候要整體賦值,不能單獨賦值




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1