找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1671|回复: 3
收起左侧

单片机定时多组时间程序问题

[复制链接]
ID:837970 发表于 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
回复

使用道具 举报

ID:180919 发表于 2020-11-23 09:10 | 显示全部楼层
EA=1; //开总中断ET0=1; //开定时器 0 中断TR0=1;
whule(1)
文字错了:while(1)
回复

使用道具 举报

ID:837970 发表于 2020-11-23 10:42 | 显示全部楼层
changhz 发表于 2020-11-23 09:10
EA=1; //开总中断ET0=1; //开定时器 0 中断TR0=1;
whule(1)
文字错了:while(1)

不好意思,原来的程序这里是没问题的,当初发帖的时候,调整格式输入有错误
回复

使用道具 举报

ID:846569 发表于 2020-11-23 11:12 | 显示全部楼层
说一下自己认为的可能情况,你可以先试一下这个蜂鸣器正极接VCC负极接单片机IO,单单输出低电平是否能响。另外既然已经用了三极管了还是建议LED与蜂鸣器并联。
我这个答案的原因是因为实际情况下蜂鸣器分为两种,有源蜂鸣器和无源蜂鸣器,有源蜂鸣器直流电即可工作,无源蜂鸣器需要方波(或者简单的说交流电)导通,可以百度查一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表