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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

兩個(gè)單片機(jī)程序結(jié)合起來(lái)就不對(duì)?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:690486 發(fā)表于 2020-3-18 21:59 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我有一個(gè)問(wèn)題:我想讓第一個(gè)led燈亮且數(shù)碼管動(dòng)態(tài)掃描顯示,可是把這兩個(gè)程序結(jié)合起來(lái)就不對(duì),它們單個(gè)運(yùn)行的時(shí)候是正確的,但是當(dāng)把他們同時(shí)運(yùn)行的時(shí)候就出現(xiàn)問(wèn)題?我不知道是不是我鎖存器那塊操作不正確,請(qǐng)大神幫幫我。

單片機(jī)源程序如下:
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);//選擇譯碼器輸出
/*******************************/
//定時(shí)器
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();//定時(shí)器0初始化設(shè)置
extern void Timer_On();//定時(shí)器開(kāi)啟
extern void Timer_Off();//定時(shí)器關(guān)閉
/*******************************/
//LED
extern void LED_On(uchar i);//LED亮
extern void LED_Off();//LED滅
/*******************************/
//初始化函數(shù)
extern void init();
/*******************************/
//數(shù)碼管
extern uchar model;
extern uchar DIG_BUFFER[8];
extern uchar code DIG[16];
extern void DIG_Show();//數(shù)碼管顯示
extern void Select_DIG(uchar i);//選擇數(shù)碼管
extern void Select_Show(uchar i);//選擇數(shù)碼管顯示模式 0倒計(jì)時(shí) 1溫度
/*******************************/
//鍵盤
extern void KeyScan();//鍵盤掃描函數(shù)
#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;
        }
}
/*******************************/
//定時(shí)器
uint ZKB;//占空比單位:%
bit PWM=0;
uchar flag;
uint counter0=0;
uint counter1=0;
uchar counter_time=0;
uchar time=0;
void Timer0_init()//定時(shí)器0初始化設(shè)置
{
        TH0=(65536-1)/256;
        TL0=(65536-1)%256;
        ET0=1;//開(kāi)定時(shí)器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()//定時(shí)器開(kāi)啟
{
        TMOD=0x01;
        Timer0_init();
        EA=1;
        TR0=1;
}
void Timer_Off()//定時(shí)器關(guān)閉
{
        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);
}
/*******************************/
//初始化函數(shù)
void init()
{
        LS138(4);
        P0=0xff;
        LS138(0);
        //關(guān)閉蜂鳴器、繼電器等無(wú)關(guān)外設(shè)
        LS138(5);
        P0=0x00;
        LS138(0);
        //數(shù)碼管熄滅
        /*LS138(6);
        DIG_COM(8);
        P0=0xff;
        LS138(7);
        P0=0xff;*/
}
/*******************************/
//數(shù)碼管
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};//數(shù)碼管緩存
void Select_DIG(uchar i)//選擇數(shù)碼管
{
        
        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()//數(shù)碼管顯示
{
        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)//選擇數(shù)碼管顯示模式 0倒計(jì)時(shí) 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;
        }
}

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

165.66 KB, 下載次數(shù): 6

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

使用道具 舉報(bào)

沙發(fā)
ID:690486 發(fā)表于 2020-3-18 22:02 | 只看該作者
這個(gè)就是藍(lán)橋杯的原理圖,里面led和數(shù)碼管都是有鎖存器的
回復(fù)

使用道具 舉報(bào)

板凳
ID:328014 發(fā)表于 2020-3-18 22:08 | 只看該作者

單片機(jī)程序合并教程:http://m.raoushi.com/bbs/dpj-157117-1.html
回復(fù)

使用道具 舉報(bào)

地板
ID:690486 發(fā)表于 2020-3-18 22:32 | 只看該作者
j就是我操作數(shù)碼管的時(shí)候 led會(huì)全亮。。
回復(fù)

使用道具 舉報(bào)

5#
ID:711223 發(fā)表于 2020-3-18 22:40 | 只看該作者
頭文件里面有問(wèn)題
回復(fù)

使用道具 舉報(bào)

6#
ID:690486 發(fā)表于 2020-3-19 00:29 | 只看該作者
config_h 發(fā)表于 2020-3-18 22:40
頭文件里面有問(wèn)題

請(qǐng)問(wèn)具體問(wèn)題在哪塊呢?我現(xiàn)在有點(diǎn)懵了
回復(fù)

使用道具 舉報(bào)

7#
ID:704640 發(fā)表于 2020-3-19 11:18 來(lái)自觸屏版 | 只看該作者
檢查檢查是不是頭文件有包含重復(fù)
回復(fù)

使用道具 舉報(bào)

8#
ID:690486 發(fā)表于 2020-3-19 18:02 | 只看該作者
已經(jīng)解決,在對(duì)譯碼器輸入端賦值的時(shí)候要整體賦值,不能單獨(dú)賦值
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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