1、 单片机原理及应用 课程设计报告 班级 学号 姓名 设计任务 1:交通灯 一、设计要求: 假设一个十字路口为东西南北走向,以红、绿、黄色 4 组 12 个 发光二极管表示交通信号灯, 用数码管显示秒倒计时时间。初始状态 为东西红灯,南北绿灯,倒计时从 30 秒开始;25 秒后,即倒计时到 5 秒时,南北绿灯灭,黄灯闪;5 秒后,即计时到 0 时,改为东西绿 灯亮,南北红灯亮,重新开始倒计时。 二、选用的器件: 控制器采用 Atmel 公司的 AT89C51 单片机,交通灯直接采用 Protues 提供的 TRAFFIC LIGHTS。两个路口分别采用红色和蓝色的 数码管作为倒计时的显示使用。另
2、有排阻(RESPACK-8) 、晶振、电 容、电阻等。 使用单片机的 P0 口作为倒计时数码管的段码输出。 P2.0P2.2 控 制南北方向的三个交通灯,P2.3P2.5 控制东西方向的交通灯。 采用单片机内部提供的计时器定时器 0 进行计时。 三、电路图(见下页) : 四、程序: #include #define uchar unsigned char #define uint unsigned int uchar n=0,temp=0; uchar code segcode0=0x5b,0x06,0x3f,0x5b,0x06,0x3f,0x5b,0x06,0x3f; uchar code
3、segcode1=0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f; void delay(x) while(x-); void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; n+; temp=temp%61; if(n=20) temp+; n=0; if(temp28) if(temp=54) P2=0x14; if(temp=55)P2=0x04; if(temp=56) P2=0x14; if(temp=57) P2=0x04; if(temp=58
4、) P2=0x14; if(temp=59) P2=0x14; main() uint i=0; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1) P1_0=0; P1_1=1; P0=segcode0temp/10; delay(3000); P1_0=1; P1_1=0; P0=segcode1temp%10; delay(3000); P1_1=1; 五、设计心得: 在设计中因为数码管是分时点亮的开始的时候在延时时间上出 了一点问题,数码管有闪烁, 后来缩小了片选的延
5、时时间问题得到解 决。基本的设计思想是使用单片机的定时器计算出 1s 的时间,然后 60s 的循环。前 25s 点亮相应路口的灯,2530s 因为黄灯需要闪烁所 以每秒进行单独的控制以保证器闪烁。后 3060s 切换路口控制方式 相同。通过这次的设计,体会学会了级联型数码管的控制,进一步熟 悉了数码管段码的算法。使用 C 语言编写程序更加的方便和便于理 解。 通过这次课程设计我发现单片机原理应用行很强,只有老师的讲解不行, 只 看也不中,只有自己动手去做才会发现自己确实有太多的不足,许多的原理,程 序看似简单,真正去做才知道知识并没有自己想象的那样扎实。从而懂得了理论 与实际相结合是很重要的,
6、只有理论知识是远远不够的,只有把所学的理论知识 与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的 实际动手能力和独立思考的能力。树立了对自己工作能力的信心,相信会对今后 的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会 到了在创造过程中探索的艰难和成功时的喜悦。 设计任务 2:数字电压计 一、设计要求: 设计一个数字电压计,用滑动变阻器模拟电压信号的输入,用 ADC0808 实现 A/D 转换,用 LED 数码管显示当前的电压值。 二、选用的器件: 选用 AT89C51 做控制器,ADC0808 作为 AD 转换器,显示器使 用的 7SEG-MPX4-CC-BLUE 共阴极 4 级联蓝色数码管。信号源采用 滑动变阻器(POT-HG),另有晶振、电阻、电容、按键开关等。 因为单片机的 P0 口作为数码管的段码输出所以加入了排阻 (RESPACK-8)作为拉电阻使用。 ADC0808