行布局,使其形成实际电路板的模样。这里要注意芯片不要集中摆放,否则会导致导线过于密集,芯片间可以放置电容电阻来隔开,这样布局也会显得美观。布局好之后就是布线,需要注意的是先设置导线的粗细,像电源线和地线要设置的粗一些,防止电流过大引起短路问题。布线之后,再看PCB图,有模有样的,很有成就感。第三周,由于时间关系,我们直接用标准的电路板来进行焊接元件。之前有过焊接收音机的经验,所以这个任务我们很愉快的就完成了,不过焊点还是不够美观。下面是最重要的环节了,编程。老师有给的示例程序,分别是交通灯和温度显示的部分程序,通过研究示例程序,我大概了解了单片机C语言编程风格和与普通C语言的不同之处。单片机C语言可以直接对CPU某些引脚
8
f中国石油大学(华东)本科课程设计报告
和寄存器赋值,这让我看到了汇编的影子。对老师给的交通灯程序,根据任务书的要求我对其添加了绿灯闪烁和红绿灯时间不同的功能。我的思路就是当绿灯计时到最后几秒时,让它隔一秒亮一次。绿灯计时结束后转向红灯计时,一开始我考虑要不要用两个计时器,后来发现,没必要,直接定义一个位变量,在位变量取0时对绿灯计时,取1时对红灯计时,这样就解决了红绿灯时间不同的问题。对于二极管的亮灭,电路图中MC1413驱动的二极管输入1表示亮,74LS11驱动的二极管输入0表示亮。对温度显示程序,我加了一个显示范围的转换和进制转换。因为ADS7816转换的数据是12位的,数据范围是04096,所以对他除以40,范围就大约是0100度,然后在转换成十进制显示在数码管上,一秒更新一次数据。做好两个功能,该考虑对它们进行合并了,因为最终是要将四个功能写在一个程序里。我的思路是在mai
函数里写一个while循环,在循环里面判断哪一个键按下了,相应执行哪一个功能。这其实不是一个好的方法,好的方法应该是用键盘中断,不过我也没再改,因为在最后测试的时候我发现效果也挺好的,唯一的缺点是在判断按键消除抖动的时候数码管是不显示东西的,所以在按键的时候数码管会闪烁。在设计定时时钟的时候,遇到一个困难,就是计时60秒后,就要对分钟数1。由于我是在定时时钟的子函数里面对分钟进行的加操作,当我定义的cou
t在定时中断里减为0时,在子函数里分钟数1,导致它在cou
t变为60之前持续1。解决它的办法是在定时中断里加1,这样就可以保证一分钟只加1了。最后做的是脉冲计数,按键按下相当于一个脉冲,这里我用到了键盘中断,r