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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2037|回復: 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

回復

使用道具 舉報

ID:690486 發表于 2020-3-18 22:02 | 顯示全部樓層
這個就是藍橋杯的原理圖,里面led和數碼管都是有鎖存器的
回復

使用道具 舉報

ID:328014 發表于 2020-3-18 22:08 | 顯示全部樓層

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

使用道具 舉報

ID:690486 發表于 2020-3-18 22:32 | 顯示全部樓層
j就是我操作數碼管的時候 led會全亮。。
回復

使用道具 舉報

ID:711223 發表于 2020-3-18 22:40 | 顯示全部樓層
頭文件里面有問題
回復

使用道具 舉報

ID:690486 發表于 2020-3-19 00:29 | 顯示全部樓層
config_h 發表于 2020-3-18 22:40
頭文件里面有問題

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

使用道具 舉報

ID:704640 發表于 2020-3-19 11:18 來自觸屏版 | 顯示全部樓層
檢查檢查是不是頭文件有包含重復
回復

使用道具 舉報

ID:690486 發表于 2020-3-19 18:02 | 顯示全部樓層
已經解決,在對譯碼器輸入端賦值的時候要整體賦值,不能單獨賦值
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品av一区二区三区 | 久久久久国产精品一区二区 | 国产乱码精品一区二区三区五月婷 | 欧美二区三区 | 亚洲成人久久久 | 国产1区2区在线观看 | 雨宫琴音一区二区在线 | 国产精品一区二区三区在线播放 | 在线黄色网| 91毛片网 | 99免费精品视频 | 久在线视频 | 亚洲在线视频 | 久久久久久亚洲精品 | 福利视频二区 | 日本精品一区二区三区四区 | 在线中文字幕日韩 | 99精品国产一区二区三区 | 人人干人人爽 | 欧美综合一区二区三区 | 国产精品毛片久久久久久 | 一区二区三区四区视频 | 色婷婷久久久亚洲一区二区三区 | 欧美在线视频a | 91 久久| 国产一区2区 | 美女黄网 | 国产精品国产a级 | 久久一本 | 999久久 | 精品国产乱码久久久久久88av | 一区二区福利视频 | 精品自拍视频在线观看 | 国产高清视频一区二区 | 青青草av网站 | 亚洲美乳中文字幕 | 国产精品久久久久久久久久久久午夜片 | 日韩精品一二三 | 日韩一区二区三区四区五区六区 | 亚洲激情av| 久久国内 |