1、下载程序,实现系统在线仿真。实现系统与 PC机的通讯,实现与PC机资源共享。参考电路如下 四 系统硬件设计 (1)循环灯及按键控制循环灯电路设计利用单片机的P0.0-P0.7作为发光二极管的输出口,外接上拉电阻RP1。P1.4-P1.7作为按键输出口,通过程序利用按键来实现彩灯的不同点亮方式。 (2)四位数码LED显示.通过编程通过P0.0-P0.7端口输出显示的段孔,外界上拉电阻。P2.0-P2.3作为数码管的位孔输出口。 电路原理图见附表一五 系统软件设计1主程序 图3主程序流程图 2各项子程序 循环灯(从左到右流水灯)#include intrins.h#define uchar uns
2、igned char#define uint unsigned intvoid DelayMS(uint x) uchar i; while(x-) for(i=120;i0;i-); void main() P1 = 0xFE; while(1) P1 = _crol_(P1,1); DelayMS(150);四位数码显示(30秒倒计时)#include #define uint unsigned int #define uchar unsigned char uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
3、; sbit qian=P20; sbit bai=P21; sbit shi=P22; sbit ge=P23; sbit k1=P14 ; sbit s1=P24; sbit s2=P25; sbit s3=P26; sbit s4=P27; sbit speak=P37; uchar num=99,num1,num2=29,num3; void delayms(uint xms) uint i,j; for(i=xms;i-) for(j=110;jj-); void display(uchar shu) uchar s,g; s=shu/10; g=shu%10; shi=0; P0=
4、tables; delayms(5); shi=1; ge=0; P0=tableg; ge=1;void display1(uchar shu) uchar q,b; q=shu/10; b=shu%10; qian=0; P0=tableq; qian=1; bai=0; P0=tableb; bai=1; void init() TMOD=0x01; TH0=(65536-5000)/256; TL0=(65536-5000)%256; EA=1; TR0=1; ET0=1; EX0=1; IT0=1; init(); if(k1=0) while(1) display(num); di
5、splay1(num2); if(num=0&num2=1&num3=0); void t0_time() interrupt 1 num1+; if(num1=2) num1=0; num-; if(num=0) num=99; num2-; if(num2=-1) num2=29; num3+; if(num3=24) num3=0;void exter() interrupt 0 if(s1=0) delayms(5); if(s1=0) TR0=TR0; if(TR0=0) if(s2=0) delayms(5); if(s2=0) num1+; if(num1=31) num1=0;
6、 if(s3=0) if(s3=0) num1-; if(num1=-1) num1=30; if(s4=0) if(s4=0) num1=30; 交通灯 #include sbit w1=P00; sbit w2=P01; sbit w3=P02; sbit w4=P03; sbit nb_g=P16; sbit nb_r=P15; sbit nb_y=P17; sbit dx_g=P11; sbit dx_r=P12; sbit dx_y=P10; uchar num=29,num1; uint type=1; uchar code table=0xfc,0x60,0xda,0xf2,0x
7、66,0xb6,0xbe,0xe0,0xfe,0xe6; void delay(uint x) for(i=x; w1=0; P2=tables; delay(5); w1=1; w2=0; P2=tableg; w2=1; w3=0; w3=1; w4=0; w4=1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; display1(num); num1+; if(num1=20) num1=0; if(type=1) nb_g=0;nb_r=1;nb_y=1; dx_g=1;dx_r=0;dx_y=1; if(num=4) nb_g=1;nb_
8、y=0; dx_g=1; if(num=3) nb_g=1; if(num=2) if(num=1) if(num=0) if(num=-1) num=29; nb_g=1;nb_r=0; dx_g=0;dx_r=1; type=2; if(type=2) if(num=4) dx_g=1;dx_y=0; if(num=3) nb_g=1; if(num=2) if(num=1) if(num=0) if(num=-1) num=29; nb_g=0; type=1; 按键功能(键盘控制循环灯) uchar t; for(t=0;t 4; k = 0; while(Key_State != 0
9、) k+; Key_State = 1; switch(k) case 1: if(P0 = 0x00) P0 = 0xff; P0 DelayMS(200); break; case 2: P0 = 0xf0; case 3: P0 = 0x0f; case 4: 六 实习总结、体会单片机课程设计实训 ,真是让我们受益匪浅,学到了很多东西,不管怎么样,先感谢学校给我的这么多机会.真正的学到了东西. 此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力.因为以前做过关于焊接的电工实习,所以很顺利;可到了编程时就出现了很大的障碍,先开始的显示时钟还算顺利,本来还以为编程会很简单的,等到实
10、际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思维的前提.其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了. 系统以AT89S51 为核心部件,利用软件编程,通过键盘控制实现功能,能实现本设计题目的基本要求和发挥部分。尽量做到硬件电路简单稳定,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。 我们将各个部分的程序编好后怎么都连不起来,出不了预期的效果.对于硬件在编程过程中PCB板的接触又是一个头疼的问题,在进行编译的时候,数码显示管上什么都没有,按一下旁边与之相连的元器件时就有显示了,所以也花费
11、了好多时间在PCB板的重新焊接上,最后在全组人竭尽全力,老师的精心指导下,程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期两周的单片机课程设计没有浪费,我们从中学到了很多知识.,也让我们对单片机有了更深一步的了解.虽然最后结果是出来了,可这与老师的精心指导是分不开的,他引导我们的思路,本来一窍不通的我们经过老师的点拨基本上通了,所以在次感谢各位老师的辛勤指导,老师您辛苦了!七 参考文献1李朝青单片机原理及接口技术北京:北京航空航天大学出版社,1998;2李朝青. PC机及单片机数据通信技术.北京航空航天大学出版社,2000;3李军 51系列单片机 高级实例开发指南北京航空航天大学出版社,2004;4全国大学生电子设计竞赛组委会全国大学生电子设计竞赛获奖作品选编(2003)北京:北京理工大学出版社,2005;5张文峥,李先亮,张其善,等. IrDA红外通信在导航仪中的应用. 电子技术应用.2000,10:45-47.附件1单片机实习最小系统原理总图附件2 实习材料清单附件3实习工作进展及完成记录表
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1