单片机C语言应用100例的错误和不足(第二版)王东峰

书买回来10来天了,看的不多,今天下午看P88的实例21:用for语句设计鸣笛报警程序

首先声明,自己不是用的protues仿真,自己搭了一个小的电路图,其实就是一个最小系统,然后直接用杜邦线引出P37,接一个蜂鸣器,按照书中给出的程序写进单片机,接上蜂鸣器,但是却不叫,琢磨过后,想想可能是直接用普通的IO口形式电流太小,是uA级的,设置为强推挽的形式后可以了,蜂鸣器叽叽哇哇的叫了起来,可能在proteus里,只是考虑了电压,没有考虑电流是否能达到要求。仿真毕竟只是仿真,实际动手制作才是王道

补充:就这一个小小的例子,竟然话费了我一个下午的时间,因为刚开始的时候手上没有蜂鸣器,想着既然是高低电平切换,用一个小的LED灯替换一下也行,就是这个错误让我折磨了我一下午。因为用小LED灯的时候,会发现小灯至始至终都是亮着的,因为程序中的delay1600()和delay800()分别只有0.6ms和1.2ms,这个时间太短了,所以小LED灯还没来得及灭就立马点亮了,这个过程肉眼看不出来,以后千万不能随便来进行替换电路了,奶奶的。这本书依然是值得看得

以下为勘误(说明,我用的单片机型号是STC12C5A32S2,不是AT89C51,头文件用的是"STC12C5A32S2.H"):

1. P164表7-2 串行口的4种工作方式,其中方式2应该是9位异步收发

2.P173实例52-1中,在sbit p=PSW^0;后面添加代码sbit TB8=0x9b;否则编译时可能会出现TB8的错误提示

3.P198实例62的程序书上没有,光盘里的ex62.c跟实例63的程序一样,坑爹啊!!!

4.P223例67,按照给的原理图在进行实物连接时是不正确的,图中LCD1602的VSS和VEE接地,实物连接时,应该接一个10K电位器,VEE接电位器的中间脚,另外一个脚接地,第三个脚不能接电源,否则显示不出来!!!另外那个10k电阻排可以不接,直接把IO口接1602的D0~D7即可。

5.P228实例68的程序是光盘上的ex67,程序中显示部分缺少3行,分别是:

void DisplayHour()子函数中WriteData(digit[i]);后加  WriteAddress(0x45);

void DisplayMinute()子函数中WriteData(digit[i]);后加WriteAddress(0x48);

void DisplaySecond()子函数中WriteData(digit[i]);后加WriteAddress(0x4b);

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值