2

回答

win10通讯端口为什么有黄色感叹号啊,试了很多次还是有c?​

e92eff0b334f4918 2020-11-21 阅读:16

2

回答

#include <reg51.h> #define uchar unsigned char #define uint  unsigned int uchar data DirectVal[4];                                        //秒显示的变量 uchar data DefaultVal_DX=60;                          //东西数默认 uchar data DefaultVal_NB=90;                        //南北默认值 uchar data setTime_DX=60;                //设置东西方向的时间 uchar data setTime_NB=90;                //设置南北方向的时间 int n; uchar data CountCount1; sbit  k4=P3^1;                //禁止 sbit  k1=P3^5;                //时间加 sbit  k2=P3^6;                //时间减 sbit  k3=P3^7;     //切换方向 sbit  SPEAKER = P3^2; sbit RED_NB=P2^6;                //南北红灯标志 sbit YELLOW_NB=P2^5;        //南北黄灯标志 sbit GREEN_NB=P2^4;     //南北绿灯标志 sbit RED_DX=P2^3;                //东西红灯标志 sbit YELLOW_DX=P2^2;        //东西黄灯标志 sbit GREEN_DX=P2^1;                //东西绿灯标志                 bit set=0;                                //调时方向切换键标志 =1时,南北,=0时,东西 bit dx_nb=0;                        //东西南北控制位 bit Shanshuo=0;                        //闪烁标志位 uchar code TABLE[11]={        //共阴极字型码         0x3f  //--0         0x06  //--1         0x5b  //--2         0x4f  //--3         0x66  //--4         0x6d  //--5         0x7d  //--6         0x07  //--7         0x7f  //--8         0x6f  //--9         0x00   //--NULL }; void key();                                        //按键扫描子程序 void SegmentDisplay();                                //显示子程序 void Buzzer(); void delaylms(int ms)                //延时子程序 {         uint jk;         for(j=0;j<ms;j++)                        //延时ms            for(k=0;k<124;k++);                //大约1毫秒的延时 } /@@*定时器0初始化*/ void Timer0Init(){         TMOD |= 0X01;         TH0 = 0X4B;         TL0 = 0XFC;         ET0 = 1;         EA = 1;         TR0 = 1; } /@@*定时器1初始化*/ void Timer1Init(){         TMOD |= 0X10;         TH1 = 0X4B;         TL1 = 0XFC;         ET1 = 1;         EA = 1;         TR1 = 1; } /@@*主程序*/ void main() {         Timer0Init();         Timer1Init();         TR1 = 0;         P2=0Xc3;                                        // 默认东西绿灯,南北红灯灯      DefaultVal_NB=DefaultVal_DX+5; //设置南北通行时间比东西多5秒         while(1)                        {                          key();                 SegmentDisplay();         }        } /@@*按键扫描子程序*/ void key(void){         if(k1!=1)        {                 delaylms(10);                 if(k1!=1){                   TR0=0;                         Shanshuo=0;                         P2=0x00;                         TR1=0;                         if(set==0)//设置键按下                                 setTime_DX++;//南北加1                         else                                 setTime_NB++;//东西加1                         if(setTime_NB==100)                                 setTime_NB=1;                         if(        setTime_DX==100)                                 setTime_DX=1;//加到100置1                         DefaultVal_NB=setTime_NB ;//设置的数值赋给东西南北                         DefaultVal_DX=setTime_DX;                                          do        {                                 SegmentDisplay();                         }while(k1!=1);//松手检测                 }         }         if(k2!=1)        {                                                        //当K2(时间减)按键按下时                 delaylms(10);                 if(k2!=1){                          TR0=0;                         Shanshuo=0;                         P2=0x00;                         TR1=0;                         if(set==0)                                 setTime_DX--;                         else                                 setTime_NB--;                         if(setTime_NB==0)                                 setTime_NB=99;                                if(        setTime_DX==0 )                                 setTime_DX=99;                         DefaultVal_NB=setTime_NB ;                         DefaultVal_DX=setTime_DX;                   do{                                          SegmentDisplay();                         }                         while(k2!=1);                 }         }         if(k3!=1) {                 delaylms(10);                 if(k3!=1){                                             TR0=0;                         set=!set;                         TR1=0;                         dx_nb=set;                         do{                                 SegmentDisplay();                         }                                                        while(k3!=1);                 }         }                if(k4!=1){                 delaylms(10);                 if(k4!=1){                         TR0=0;                         P2=0x00;                         RED_DX=1;                         RED_NB=1;                         TR1=0;                         DefaultVal_DX=30;                         DefaultVal_NB=30;                         TR0 = 1;                         do{                                 SegmentDisplay();                                 SPEAKER = !SPEAKER;                                 if((DefaultVal_DX == 0)&&(DefaultVal_NB==0)){                                         SPEAKER = 1;                                 }                         }                                while(k4!=1);                 }         } } /@@*数码管显示程序*/ void SegmentDisplay(void) {                        DirectVal[1]=DefaultVal_NB/10;                 // 东西秒十位         DirectVal[2]=DefaultVal_NB%10;                 // 东西秒个位         DirectVal[3]=DefaultVal_DX/10;                 // 南北秒十位         DirectVal[0]=DefaultVal_DX%10;                 // 南北秒个位                        P1=0xff;         P0=0x00;         P1=0xfe;         P0=TABLE[DirectVal[1]];                delaylms(1);         P1=0xff;         P0=0x00;                                                            P1=0xfd;         P0=TABLE[DirectVal[2]];         delaylms(1);         P1=0xff;         P0=0x00;         P1=0Xfb;         P0=TABLE[DirectVal[3]];         delaylms(1);         P1=0xff;         P0=0x00;         P1=0Xf7;         P0=TABLE[DirectVal[0]];         delaylms(1); } void time0(void) interrupt 1 using 1 {         TH0=0X4b;         TL0=0Xfc;         TR0=1;         Count++;         if(Count==10){                 if((DefaultVal_NB<=5)&&(dx_nb==0)&&(Shanshuo==1)){//东西黄灯闪                                        GREEN_DX=0;                         YELLOW_DX=0;                 }                                                             if((DefaultVal_DX<=5)&&(dx_nb==1)&&(Shanshuo==1)){//南北黄灯闪                                        GREEN_NB=0;                         YELLOW_NB=0;                 }                }                if(Count==20){                 Count=0;                 DefaultVal_DX--;                                                //东西时间减1                 DefaultVal_NB--;                                                //南北时间减1                 if((DefaultVal_NB<=5)&&(dx_nb==0)&&(Shanshuo==1)){//东西黄灯闪                                        GREEN_DX=0;                         YELLOW_DX=1;                 }                                                             if((DefaultVal_DX<=5)&&(dx_nb==1)&&(Shanshuo==1)){//南北黄灯闪                                        GREEN_NB=0;                         YELLOW_NB=1;                 }                                                                                 if(DefaultVal_DX==0&&DefaultVal_NB==5){//当东西倒计时到0时,重置5秒,用于黄灯闪烁时间                            DefaultVal_DX=5;                         Shanshuo=1;                 }                 if(DefaultVal_NB==0&&DefaultVal_DX==5){//当南北倒计时到0时,重置5秒,用于黄灯闪烁时间                            DefaultVal_NB=5;                         Shanshuo=1;                 }                 if(dx_nb==0&&DefaultVal_NB==0){//当黄灯闪烁时间倒计时到0时,                         P2=0x00;//重置东西南背方向的红绿灯                         GREEN_NB=1;                         RED_DX=1;                         dx_nb=!dx_nb;                         Shanshuo=0;                         DefaultVal_NB=setTime_NB;        //重赋南北方向的起始值                         DefaultVal_DX=setTime_NB+5;//重赋东西方向的起始值                 }                                if(dx_nb==1&&DefaultVal_DX==0){        //当黄灯闪烁时间到                         P2=0X00;                                        //重置东西南北的红绿灯状态                         GREEN_DX=1;                                //东西绿灯亮                         RED_NB=1;                                        //南北红灯亮                         dx_nb=!dx_nb;                         Shanshuo=0;                         DefaultVal_DX=setTime_DX;                        //重赋东西方向的起始值                         DefaultVal_NB=setTime_DX+5;                //重赋南北方向的起始值                 }         }        } void time1(void) interrupt 3{         TH1=0X4b;         TL1=0Xfc;         Count1++;         if(Count1==10)         {                 YELLOW_NB=0;//南北黄灯灭                 YELLOW_DX=0;//东西黄灯灭         }         if(Count1==20){                 Count1=0;                 YELLOW_NB=1;//南北黄灯亮                 YELLOW_DX=1;//东西黄灯亮         }        }

qiuqiu 2020-11-20 阅读:26

3

回答

如题,求教数码管显示接线的显示码是什么?

mingming 2020-11-20 阅读:30

3

回答

1.freeRTOS可以一次挂起所有任务吗? 2.在一个界面下,如果不需要所有任务都运行,大家是怎么处理的?

大伟 2020-11-20 阅读:22

0

回答
depmod使用时出现short read 单片机综合应用

在编译驱动模块的时候使用depmod出现了short read的提示,但是也没有报错和其他提示 捕获.JPG (11.51 KB 下载次数: 0) 下载附件 前天 21:05 上传

万里追牛 2020-11-20 阅读:15

0

回答

是不是第一次必须用他专用烧写器写入isp固件后才能使用isp下载?还是芯片买回来直接可以用串口isp下载

yhj416606438 2020-11-20 阅读:23

5

回答

是否可以用二极管接两路信号,然后再接到单片机uart上面,2个设备不会同时发送数据

yhj416606438 2020-11-20 阅读:32

0

回答

哪位知道STVD中输出路径在哪儿设置吗

电子大拿 2020-11-19 阅读:25

5

回答

做一个设计求指导,就是想在单片机上用摁键编辑信息可以在单片机上显示,并且能发送到电脑上,还能收到电脑的的信息。

力洪 2020-11-19 阅读:39

6

回答
sprintf函数输出小数点问题 单片机综合应用

用sprintf函数输出浮点数,小数点出现空格

电子大拿 2020-11-19 阅读:22

0

回答

有没有开源算法可以用,移植到stm32f429里面,用adc录制一段声音,然后处理成变调不变速播放,用dac输出

yhj416606438 2020-11-19 阅读:18

1

回答

NE555外接的电阻与电容该如何确定?比如2脚与地之间、5脚与地之间、7脚与6脚(2脚)之间的电阻...。先谢过大家。

4c49a4cca4b9bb4b 2020-11-18 阅读:33

3

回答

#include<reg51.h> #include<intrins.h> void Delay(unsigned char a) { unsigned char i; while(--a)     {      for(i=0;i<125;i++);     } } void main(void) {        unsigned char bi;        while(1)        {         b=0xfe;         for(i=0;i<8;i++)          {           P1=b;           Delay(250);           b=_crol_(b1);           }        } } #include <reg51.h> void delay1ms() {      TH1=(65536-1000)/256;          TL1=(65536-1000)%256;          TR1=1;          while(!TF1);          TF1=0; } void main() {   unsigned char code led[]={0xff0x990x000x000x000x810xc30xe7};   unsigned char i;   unsigned int lie;   TMOD=0x10;   while(1) {        i=0x01;            for(lie=0;lie<8;lie++)             {                 P0=i;                 P3=led[lie];                 delay1ms();                 i<<=1;            }         } }

力洪 2020-11-18 阅读:29

1

回答

BAIDU_CLB_fillSlot%28%22202496%22%29%3B  uchar R_word;  uchar ACK_Flag;   uchar read_buffer_iic[16];   uchar write_buffer_iic[16];void Start(void)     {      TSDA_IO_OUT();       TSCL_IO_OUT();             TSDA=1;       TSCL=1;delay_us(10);       TSDA=0;delay_us(10);            TSCL=0;             delay_us(10);     }void Stop(void)     {       TSDA_IO_OUT();       TSCL_IO_OUT();             TSDA=0;             TSCL=0;delay_us(10);                 TSCL=1;delay_us(10);             TSDA=1;                   }void Send_Byte(uchar Byte)     {       uint i;       TSDA_IO_OUT();       TSCL_IO_OUT();           TSCL=0;             delay_us(10);       for (i=0;i<8;i++)       {                                  if(Byte & 0x80)               {TSDA=1;}         else               {TSDA=0;}         Byte = Byte << 1;                                              delay_us(10);             TSCL=1;                 delay_us(10);             TSCL=0;                 delay_us(10);       }             }void ACK(void)     {             TSCL_IO_OUT();       TSDA_IO_IN();           TSDA=1;             TSCL=1;delay_us(5);                          ACK_Flag = 0;             if((RTSDA ))            ACK_Flag = 1;         TSCL=0;       delay_us(10);    }void ACK_0(void)     {       TSCL_IO_OUT();       TSDA_IO_OUT();             TSDA=0;             TSCL=0;                                         delay_us(10);             TSCL=1;               delay_us(10);             TSCL=0;           delay_us(10);     }void NOACK(void)     {       TSCL_IO_OUT();       TSDA_IO_OUT();             TSDA=1;               TSCL=0;                     delay_us(10);             TSCL=1;                 delay_us(10);             TSCL=0;               delay_us(10);     }void Receive_Byte(void)     {       uint j;       R_word = 0x00;       TSDA_IO_IN();             TSCL_IO_OUT();             delay_us(10);       for(j=0;j<8;j++)       {                 R_word = R_word << 1;             TSCL=0;                     delay_us(10);                                       if((RTSDA))                    R_word+=1;                 delay_us(10);                         TSCL=1;                     delay_us(10);                            }     } void  I2C_75_write(uchar W_addruchar dat)     {               delay_us(10);         Start();         Send_Byte(0x90);          ACK();         Send_Byte(W_addr);         ACK();                  Send_Byte(dat);         ACK();         Stop();             } void I2C_75_Read(uint R_addruchar n)     {         uchar i=0;         Start();         Send_Byte(0x90);         ACK();         Send_Byte(R_addr);          ACK();         Start();         Send_Byte(0x91);                      ACK();         Receive_Byte();               ACK_0();                 read_buffer_iic[0] = R_word ;                        Receive_Byte();ACK_0();                 read_buffer_iic[1] = R_word ;                   NOACK();               Stop();    }     //读取温度并处理数据void readTEMP(void)      {  I2C_75_write(0x010x00);   I2C_75_Read(02);     delay_us(10);        tempH=read_buffer_iic[0];   if((tempH&0x80)==0x80)        {         tempH-=0x01;         tempH=~tempH;         zhengfuflag=1;       }   //temp= read_buffer_iic[0] + (uint)(read_buffer_iic[1]*0.0625*0.0625);   temprd= (float)tempH+ (float)(((read_buffer_iic[1]>>4)&0x0f)*0.0625);   if(zhengfuflag==1){floattohex(0-temprd);}//??  

韩梅梅 2020-11-17 阅读:23

3

回答

ministm32板子大字体显示:现在换了4.3寸的,24*24的字体太小了,想换32*32或者更大的,看了很多帖子,也换了很多方法去制作字库,可是一直显示不出来

奋发图强 2020-11-17 阅读:16

2

回答

这两个模块在功能上有哪些区别,是否可以替换

yhj416606438 2020-11-17 阅读:18

5

回答
超声波悬浮是什么原理 单片机综合应用

用两个超声波发射头相互发射信号,把水滴放在中间水滴能悬浮是什么原理

yhj416606438 2020-11-14 阅读:85

3

回答

#include "stm32f10x.h" #define  periph_base         (unsigned int)0x40000000 #define  APB2periph_base       periph_base +0x10000 #define  AHPperiph_base                periph_base +0x20000 #define  RCC_base          AHPperiph_base+0x1000 #define  GPIOB_base                     APB2periph_base+0x0C00 #define  RCC_APB2ENR                    *(unsigned int*)(RCC_base+0x18) #define GPIOB_CRL                            *(unsigned int*)(RCC_base+0x00) #define GPIOB_CRH                            *(unsigned int*)(RCC_base+0x04) #define GPIOB_ODR                            *(unsigned int*)(RCC_base+0x0C) int main() {     RCC_APB2ENR |=(1<<3);  //使能时钟     GPIOB_CRL |=((1)<<(4*5));  //端口配置低寄存器     GPIOB_ODR  &=~(1<<5);   //配置端口输出寄存器     } void SystemInit(void) {     } 有没有老哥知道,我这个程序为什么点不亮LED0(PB5)

chunyang 2020-11-13 阅读:24

9

回答

用单片机外设读电平,一定需要需要加中断吗?

sjsjling 2020-11-13 阅读:58

4

回答
三极管导通时压降怎么计算 单片机综合应用

当三极管饱和导通时,ce脚的电压是0.6v左右,还是在0.1伏以下,ce电流会对ce电压影响多大

yhj416606438 2020-11-13 阅读:74
  • 帮助人数
  • 0
  • 获得赞数
  • 0
  • 一周积分
  • 0

每日任务

提问一次
100IC币
回答一次
30IC币

问题达人换一批

本月问答IC币兑换

排名
用户名
问答积分
可兑换IC币
1
46
1000
2
28
0
5
4
0
6
4
0
8
2
0
10
2
0
< 1 >