标题: 单片机定时多组时间程序问题 [打印本页]

作者: HuTi123    时间: 2020-11-23 00:14
标题: 单片机定时多组时间程序问题
设计要求:
定时三组时间,时间到蜂鸣器响,同时LED灯亮;
现有单片机程序
#include <REGX51.H>
#define uint unsigned int
#define uchar unsigned char
uchar t;
uint num;
unsigned char numtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit FM=P0^0;
void delay(uint xms)
{uint i,j;for(i=xms;i>0;i--)
for(j=110;j>0;j--);}
void main()
{TMOD=0x01;
TH0=(65535-50000)/256;TL0=(65535-50000)%256;
EA=1; //开总中断ET0=1; //开定时器 0 中断TR0=1;
whule(1)
{ P2=0xfe; P1=numtab[num%10]; delay(5); P1=0; P2=0xfd; P1=numtab[(num/10)%10]; delay(5); P1=0;}}
void T0_time()interrupt  1
{TH0=(65535-50000)/256
TL0=(65535-50000)%256;t++;if(t==20)
{t=0;num++;
if(num==10)
{FM=!FM;delay(1000);
FM=1;
delay(1000);}
}}

附:
蜂鸣器仿真异常,端口有输出却无反应

希望有人可以帮忙指教一下,谢谢

qxlarge-dsc-C866B3147BB38913AC2679ECE65F74B6.png (167.93 KB, 下载次数: 73)

qxlarge-dsc-C866B3147BB38913AC2679ECE65F74B6.png

作者: changhz    时间: 2020-11-23 09:10
EA=1; //开总中断ET0=1; //开定时器 0 中断TR0=1;
whule(1)
文字错了:while(1)

作者: HuTi123    时间: 2020-11-23 10:42
changhz 发表于 2020-11-23 09:10
EA=1; //开总中断ET0=1; //开定时器 0 中断TR0=1;
whule(1)
文字错了:while(1)

不好意思,原来的程序这里是没问题的,当初发帖的时候,调整格式输入有错误
作者: HSY666NB    时间: 2020-11-23 11:12
说一下自己认为的可能情况,你可以先试一下这个蜂鸣器正极接VCC负极接单片机IO,单单输出低电平是否能响。另外既然已经用了三极管了还是建议LED与蜂鸣器并联。
我这个答案的原因是因为实际情况下蜂鸣器分为两种,有源蜂鸣器和无源蜂鸣器,有源蜂鸣器直流电即可工作,无源蜂鸣器需要方波(或者简单的说交流电)导通,可以百度查一下




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1