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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

兩個單片機程序結合起來就不對?

[復制鏈接]
跳轉到指定樓層
樓主
ID:690486 發表于 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

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

使用道具 舉報

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

使用道具 舉報

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

單片機程序合并教程:http://www.raoushi.com/bbs/dpj-157117-1.html
回復

使用道具 舉報

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

使用道具 舉報

5#
ID:711223 發表于 2020-3-18 22:40 | 只看該作者
頭文件里面有問題
回復

使用道具 舉報

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

請問具體問題在哪塊呢?我現在有點懵了
回復

使用道具 舉報

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

使用道具 舉報

8#
ID:690486 發表于 2020-3-19 18:02 | 只看該作者
已經解決,在對譯碼器輸入端賦值的時候要整體賦值,不能單獨賦值
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表