单片机课程设计报告模板
单片机应用技术课程设计报告模板

单片机应用技术课程设计实训报告专业:年级/班级:姓名:实训时间:实训地点:指导教师:一、实训题目:基于51单片机电子时钟设计二、实训目的:三、所用器件工作原理及控制方法:四、软硬件设计五、实训总结:附件:#include <reg52.h>#include <intrins.h> //有_nop_的头文件/***********变量定义*********************************************/#define uchar unsigned char#define uint unsigned intvoid shezhi_display(void);void led_display(uchar m);void zhengdian(void);void delay(void);void delayms(uchar ms);uchar time1s=0,time50ms; //定时1s计数器uchar time1f=0,time1x=0;uchar a,b,k,m,num=0;#define ledbit P0 //P0.0-P0.7--A~Gextern uchar code smg[]= {//共阳极0-9显示代码//-0-----1-----2-----3-----4-----5-----6-----7-----8---9--0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };sbit wx_0=P2^0;sbit wx_1=P2^1;sbit wx_2=P2^2;sbit wx_3=P2^3;sbit wx_4=P2^4; // 数码管位选sbit wx_5=P2^5;sbit zd=P1^4;sbit shezhi=P1^1;sbit jia=P1^2;sbit sub=P1^5;sbit yiwei=P1^0;void init () //对应定时器和外部中断1; {TMOD = 0x01; //T0T1方式控制 TH0=0x3c;TL0=0xb0; //计时50msEA=1; //开全局中断ET0=1; //开定时中断0TR0=1;}void delay(void) //延时函数,延时约0.6ms {unsigned char j;for(j=0;j<200;j++);}void delayms(uchar ms){uchar i;while(ms--)for(i=0;i<200;i++);}/*************** ******************************************* /函数名:led_display()/功能:数码管显示数据,驱动芯片74LS244/输入:dat ---8位数据/输出:无/说明:输入十进制数。
单片机课程设计_报告正文

目录1 课程设计概述 (1)1.1设计目的 (1)1.2设计内容和要求 (1)1.3设计思路 (1)1.4定时器控制门铃的系统设计 (1)1.5定时器控制门铃的功能要求 (2)1.6定时器控制门铃的系统的基本构成及原理 (2)2 硬件开发平台 (3)3 软件开发平台 (4)4 硬件电路的设计 (5)4.1系统硬件总电路构成及原理 (5)4.2主控制部分――AT89C51单片机简介 (5)4.3其它器件 (7)4.4定时器控制门铃系统原理图 (8)4.5设计的连线图 (9)4.6硬件资源及其分配 (9)4.7运行步骤 (9)4.8检测与调试 (10)5 程序设计 (12)5.1流程图 (12)5.2关键源代码 (13)6 运行结果 (14)结论 (15)参考文献 (16)1 课程设计概述1.1设计目的1.通过单片机课程设计,熟练掌握C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2.通过定时器控制门铃声响的系统设计,掌握定时/计数器的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。
1.2设计内容和要求内容:设计一个能够控制门铃声响的模拟系统。
要求:当按下开关SP1,单片机产生“叮咚”声从P3.0端口输出到喇叭。
具体实施如下:(1)按以上要求制定设计方案,并绘制出系统工作框图,绘制程序流程图;(2)按要求设计单片机的外围电路,给出电路原理图;(3)单片机仿真器、电路板、电源等硬件正确可靠地连接;(4)利用仿真器、单片机及电路板进行程序设计与调试;1.3 设计思路1.针对本课题的设计任务,进行分析得到:本次设计是利用单片机实现对扬声器发声的,控制采用按钮操作,AT89C51单片机进行控制,最后使扬声器发出“叮咚”声音。
2.绘制电路原理图,编写程序,并进行仿真,基本实现扬声器发“叮咚”声音出功能。
1.4定时器控制门铃的系统设计通过编写程序,实现对输出频率的控制,来扬声器的管理。
单片机课程设计模板

单片机接口设计课程报告班级:姓名:学号:指导老师:一、设计题目:彩灯控制器二、设计要求:1.花型种类不少于四种,花型自拟;2.可用键控制彩灯按预设的花型进行变换;3.可用键控制分别用快/慢两种节拍实现花型变换。
本机地址为00H,当接到上位机发的00H时,则回发00H当接到上位机发的AAH时,则将预设花型代号发出当收到55H时,则后面的数据为新的花型三、设计整体思路:彩灯控制器可分为彩灯部分、单片机、脉冲震荡部分、复位电路、按键等。
所使用的单片机型号为80C51,80C51提供了32位I/O接口、2个16位定时器/计数器、1个全双工串行口和5个中断源来供用户使用。
同时设置了脉冲电路,为系统提供稳定频率波,也使各单片机之间的时钟信号能够同步。
复位电路所提供的复位功能是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H 单元开始执行程序。
同时,复位操作也使单片机内相应的寄存器复位到初始值。
按键是由P3.4、P3.5 两个I/O口连接,在无按键按下时,P3.4、P3.5均为高电平,当有按键按下,相应的口为低电平。
四、原理图:五、程序模块(流程图):主流程图:花型1流程图:开始中断初始化选择快慢节拍花型循环变换结束花型二流程图:花型三流程图:花型四流程图:六、心得体会:在这次单片机课程设计中遇到了很多的难题,因为以前没有接触过C语言的单片机,但是在老师和同学的帮助下,以及自己通过查找一些资料,顺利的解决了遇到的问题,完成了老师布置的要求。
通过本次课程设计也时我对单片机的一些有关的知识有了更进一步的了解,单片机是一门实践性很强的课程,它必须和其它的芯片一起才能最大可能的发挥出它的各种各样的功能。
所以就需要我们的知识面要广,这样在设计过程中才能有效的解决问题。
由于我们所用的是C语言编程,所以会遇到一些问题,但通过不断的查找资料和尝试最终还是解决了问题。
本次课程设计也锻炼了我们的实践能力,通过编写程序,我们能够把所学的知识很好地应用到实际中去,从而学以致用,能够设计一些生活中很小的系统。
单片机课程设计报告范例

单片机课程设计示例交通灯控制系统设计一、总体设计1、设计要求:交通灯的任务要求为:模拟十字路口的交通灯的亮、灭及闪烁基本工作原理:根据交通灯的亮灭情况,可以分为四种状态,利用定时计数器每20秒产生一次中断,每产生一次中断后由是否有特殊情况决定交通灯的状态变换。
2、硬件和软件功能的划分本课题要求实现的功能比较简单。
由单片机的定时/计数器产生八分之一秒的定时时间,通过软件的方式实现20秒的定时时间。
交通灯的亮灭由8255A控制,PA口控制东西向,PB口控制南北向。
3、交通灯状态划分十字路口交通灯如下图所示,将12个交通灯进行编号这12个交通灯共有四个状态:状态1(S1):东西红灯(4、10)亮,南北绿灯(3、9)亮状态2(S2):南北绿灯(3、9)灭,黄灯(2、8)闪烁,东西仍为红灯(4、10)亮状态3(S3):南北红灯(1、7)亮,东西绿灯(6、12)亮状态4(S4):东西绿灯(6、12)灭,黄灯(5、11)闪烁,南北仍为红灯(1、7)亮当东西向(或南北向)有特殊情况,开关K0为低电平则应使交通灯处于S3(东西绿灯、南北),开关K1为低电平则应使交通灯处于S1(南北向绿灯、东西向红灯),当K0、K1均为低电平则取消特殊情况,返回正常显示情况。
二、硬件设计根据总体设计要求,确定系统扩展与功能接口,设计出系统的电路原理图。
1、系统扩展最小系统,由8031、地址锁存器和程序存储器组成。
根据课题要求,在此基础上进行扩展。
地址锁存器选74LS373,程序程序器选2764(8K),尽管本系统程序不长,但考虑以后扩展方便,选用2764。
考虑到交通灯数量比较多,控制信号比较多,对单片机的I/O口进行扩展,使用通用I/O接口芯片8255A来对单片机I/O口进行扩展。
2、功能接口所谓接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。
本课题只要求显示接口。
显示设备为2位七段数码管。
要使用七段数码管可以利用8031的串行口、可以利用可编程并行I/O扩展芯片8155或8255。
单片机课程设计报告排版

单片机课程设计报告排版一、教学目标本课程旨在让学生掌握单片机的基本原理、编程方法和应用技巧。
通过本课程的学习,学生将能够:1.理解单片机的基本结构和工作原理;2.掌握单片机的编程语言和编程方法;3.学会使用单片机进行简单应用的开发;4.培养动手实践能力和团队协作精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.单片机的基本原理:包括单片机的结构、工作原理和性能特点;2.单片机编程:包括编程语言、编程方法和编程技巧;3.单片机应用:包括常见应用案例分析和实践操作。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学,包括:1.讲授法:用于讲解单片机的基本原理和编程方法;2.案例分析法:通过分析典型应用案例,使学生更好地理解单片机的应用;3.实验法:通过动手实践,让学生熟练掌握单片机的编程和应用技巧。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习资料;2.参考书:提供相关领域的参考书籍,丰富学生的知识体系;3.多媒体资料:制作精美的PPT和教学视频,提高学生的学习兴趣;4.实验设备:提供充足的实验设备,保证学生动手实践的机会。
五、教学评估本课程的评估方式将采用多元化、全过程的评价体系,以确保评估的客观性和公正性。
评估主要包括以下几个方面:1.平时表现:包括课堂参与度、提问回答、团队协作等,占总评的30%;2.作业:包括课后练习和实验报告,占总评的20%;3.考试成绩:包括期中和期末考试,占总评的50%。
六、教学安排本课程的教学安排将根据课程内容和学生的实际情况进行合理规划。
教学进度将保持紧凑,确保在有限的时间内完成教学任务。
具体安排如下:1.上课时间:每周一到周五,每天2课时;2.上课地点:实验室和理论教室;3.教学进度:按照教材和教学大纲进行安排,确保每个章节都有足够的学时进行讲解和实践;4.实践活动:每个章节结束后,安排一次实验实践,让学生动手操作,巩固理论知识。
单片机课程设计实习报告(共6篇)

单片机课程设计实习报告(共6篇)ok3w_ads(“s004”);ok3w_ads(“s005”);精选范文:单片机课程设计实习报告(共6篇)实训任务:一、实训目的和要求:(1)熟练掌握keil c51集成开发环境的使用方法(2)熟悉keil c51集成开发环境调试功能的使用和dp?单片机仿真器、编程器、实验仪三合一综合开发平台的使用。
(3)利用单片机的p1口作io口,学会利用p1口作为输入和输出口。
(4)了解掌握单片机芯片的烧写方法与步骤。
(5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。
(6)掌握利用protel 99 se绘制电路原理图及pcb图。
(7)了解pcb板的制作腐蚀过程。
二、实训器材:pc机(一台)pcb板(一块)520ω电阻(八只)10k电阻(一只)led发光二极管(八只)25v 10μf电容(一只)单片机ic座(一块)at89c51单片机芯片(一块)热转印机(一台)dp?单片机仿真器、编程器、实验仪三合一综合开发平台(一台)三、实训步骤:(2)将流水灯程序编写完整并使用tkstudy ice调试运行。
(4)打开电源,将编写好的程序运用tkstudy ice进行全速运行,看能否实现任务要求。
(6)制板。
首先利用protel 99 se画好原理图,根据原理图绘制pcb图,然后将绘制好的pcb布线图打印出来,经热转印机转印,将整个布线图印至pcb板上,最后将印有布线图的pcb板投入装有三氯化铁溶液的容器内进行腐蚀,待pcb 板上布线图外的铜全部后,将其取出,清洗干净。
(7)焊接。
将所给元器件根据原理图一一焊至pcb板相应位置。
(8)调试。
先把at89c51芯片插入ic座,再将+5v电源加到制作好的功能板电源接口上,观察功能演示的整个过程(看能否实现任务功能)。
(流水灯控制器原理图)四、流水灯控制器程序的主程序:org 0000hsjmp startorg 0030hstart: mov a,#0ffhmov r0,#1chmov r2,#12hclr cloop1: acall delaydjnz r0,loop2sjmp loop4loop2: mov p1,arlc ajnc loop3sjmp loop1loop3: acall delaymov p1,arrc ajnc loop1sjmp loop3loop4: acall delaydjnz r1,loop5sjmp loop6loop5: mov p1,arrc a[单片机课程设计实习报告(共6篇)]篇一:单片机实习报告课程设计专业综合实习总结专业班级:学生学号:学生姓名:指导教师:实习时间:机电工程学院目录1.实习目的和意义 21.1实习目的 (2)1.2实习意义 (2)2.实习内容 2 3. 硬件介绍 23.1 总原理图 (3)3.2 LED显示模块............................................................... 6 3.3 数码管显示模块............................................................ 7 3.4 键盘模块 (9)3.5 A/D转换模块............................................................... 10 3.6 D/A转换模块 (13)3.7 中断嵌套模块 (14)3.8 时钟日历芯片模块 (15)4. 程序流程图 174.1 LED显示模块……………………………………………………… 17 4.2 数码管显示模块…………………………………………………… 19 4.3 键盘模块……………………………………………………………21 4.4 A/D转换模块.................................................................. 23 4.5 D/A转换模块 (23)4.6 中断嵌套模块 (24)4.7 时钟日历芯片模块 (24)5. 实习心得体会………………………………………………… 26 附录:程序清单……………………………………………………271、实习目的和意义1.1 实习目的1、熟悉本专业自己设计的“单片机课程实习”电路板,领会、掌握该电路板的设计原理及硬件布局。
单片机课程设计报告模板

单片机技术及应用综合训练(设计报告)题目:姓名:学院:专业:班级:学号:指导教师:2014年5 月一、选题要求临床求助呼叫监护是传送临床信息的重要手段,病房呼叫系统是病人请求值班医生或护士进行诊断和护理的紧急呼叫工具,可将病人的请求快速传送给值班医生或护士,并在值班室的监控中心电脑上留下准确完整的记录,是提高医院和病室护理水平的必备设备之一。
呼叫系统的优劣直接关系到病员的安危,要求及时、准确、可靠、简便可行。
本呼叫系统基于Ateml89C52单片机,振荡电路的晶振采用12MHz,由控制核心AT89C52单片机、电源电路、振荡电路、复位电路、数码管解码芯片、病房选择和七段数码管等部分组成,系统框图如下:二、硬件电路设计工作原理为:电源电路为单片机以及其他模块提供5V电源。
晶振模块为单片机提供时钟标准,使系统各部分能协调工作。
复位电路模块为单片机系统提供复位功能。
单片机作为主控制器,根据输入信号对系统进行相应的控制。
病房一共为四个,从1号病房到4号病房病人的情况由重到轻,即1号病房的优先级最高,4号病房的优先级最低。
所以,当有两个病房一起呼叫时,优先级高的病房号显示;当低优先级的病房呼叫完毕后高优先级的病房呼叫,系统显示的号码改变;当优先级高的病房呼叫完毕后工作人员未复位的情况下,低优先级的病房呼叫无效。
另外,当有病房呼叫时蜂鸣器响直至复位。
此次设计的电路图如下:三、软件设计1、功能介绍:启动系统后,数码管显示0。
当有一个病人呼叫时,数码管显示相应病房号,同时蜂鸣器响起;当有多个病人同时呼叫时,数码管显示优先级高的病房号,同时蜂鸣器响起;当有一个病房呼叫后另一个病房呼叫,若后呼叫的病房优先级低,则数码管显示不变,若后呼叫的病房优先级高,则数码管显示后呼叫的病房号,两种情况下蜂鸣器都会叫,只是在有别的病房呼叫时有一点变音。
2、程序流程图:3、程序源代码:#include <reg51.h>#define uchar unsigned char sbit key4=P3^0;//定义按键位置sbit key3=P3^1;sbit key2=P3^2;sbit key1=P3^3;sbit reset=P3^4;//复位sbit BEEP=P1^7;//定义蜂鸣器端口uchar flag,i;void choice();void clean();void delay();void de();void ring();void main(){while(1){P3=0xff;reset=0;BEEP=0;flag=0;choice();delay();clean();}}void choice()//确定病人{ while(reset!=1&&flag==0) {if(key1==0){de();if(key1==0){P0=0X86;flag=1;}}else if(key2==0){de();if(key2==0&&key1!=0){P0=0Xdb;flag=1;}}else if(key3==0){de();if(key3==0&&key1!=0&&key2!=0){P0=0Xcf; flag=1;}}else if(key4==0){de();if(key4==0&&key1!=0&&key2!=0&&key3!=0){P0=0Xe6; flag=1;}}}}void clean() //RESET 为高的时候复位{if(reset==1){BEEP=0;P0=0x3f;}}void delay() //RESET为低的时候延时{while(!reset){ring();}}void ring(){for(i=0;reset==0;i++)//喇叭发声的时间循环{de();BEEP=!BEEP;if(key1==0||key2==0||key3==0)//第二次呼叫{if( P0==0X86)P0=0X86;else if(P0==0Xdb&&key1==0)P0=0X86;else if(P0==0Xcf&&key1==0)P0=0X86;else if(P0==0Xcf&&key1==1&&key2==0)P0=0Xdb;else if(P0==0Xe6&&key1==0)P0=0X86;else if(P0==0Xe6&&key1==1&&key2==0)P0=0Xdb;else if(P0==0Xe6&&key1==1&&key2==1&&key3==0)P0=0Xcf;}}}void de(){for(i=300;i>0;i--);}四、软硬件调试结果1、未通电:2、通电时:3、低优先级病房先呼叫:(蜂鸣器响)高优先级病房后呼叫:(蜂鸣器响)4、高优先级病房先呼叫:(蜂鸣器响)低优先级病房后呼叫:(蜂鸣器响)呼叫有效呼叫无效5、当有三个病房同时呼叫时:1号2号4号病房同时呼叫显示1五、总结本次实验程序参考网上,但下载时程序有误,经细心验证检查得已改正,这有助于我进一步对C语言的学习和掌握。
单片机课程设计报告模板

单片机课程设计报告模板单片机课程设计报告一、设计目的本次单片机课程设计旨在培养我们对单片机的基本认知和应用能力,通过对STC89C52单片机的学习和实践,提升我们的编程能力和创新思维,同时让我们深入了解单片机的工作原理和应用场景,为未来工作和学习打下坚实基础。
二、设计内容本次课程设计主要涵盖了单片机的基本原理、C语言编程以及电路设计。
我们以智能家居为例,设计了一个可以通过Wi-Fi连接到手机APP控制家电的智能开关系统。
1.单片机的选择我们选择STC89C52作为单片机的核心控制器,这是一款8位高性能单片机,拥有大容量闪存和SRAM存储器、多种定时器和计数器、16位定时器等重要功能,非常适合用于物联网控制和智能家居领域。
2.开发环境的搭建我们采用KEIL软件和PROTEUS电路仿真软件作为开发工具,为了让我们更加熟练地使用这两款软件,我们在课堂上进行了详细的讲解和实践操作,学习了单片机的汇编、C语言编程、调试和调试工具的使用。
3.电路设计为了实现智能家居的控制,我们需要搭建一个能够与单片机相互协作的电路。
我们选择了常见的继电器来控制家电设备的开和关。
具体的电路设计方案如下:①按键电路:在电路中加入按键触发模块,实现单片机中断、感应等功能。
②Wi-Fi WiFi模块:为了实现远程控制,我们使用了ESP8266模块和手机APP进行通讯。
③继电器模块:该模块内置独立的继电器驱动IC,设计电容保护电路和DIP开关控制当前继电器输出端口,保障免受电磁干扰和防止继电器共振。
4.软件设计本次课程设计的重点是编写单片机程序。
我们通过不断的实践和调试,成功编写了相应的程序,实现了以下功能:①通过Wi-Fi模块连接到手机APP,实现APP和单片机的通讯。
②实现对接ESP8266模块,并正确设置ESP8266模块的IP地址和端口号。
③通过单片机控制继电器模块,实现对家电的远程控制。
5.上位机程序设计上位机程序我们选择了Visual Studio C++作为开发工具,通过Socket编程实现了与单片机的通讯。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机系统课程设计报告专业:自动化学生姓名:学号:指导教师:完成日期:2011 年 3 月17 日目录1 设计任务和性能指标 (3)1.1设计任务.............................................................................. 错误!未定义书签。
2 设计方案 (4)2.1任务分析 (4)2.2方案设计 (4)3 系统硬件设计 (5)3.1时钟的电路设计 (5)3.2复位电路设计 (5)3.3灯控电路设计 (5)3.4倒计时电路设计 (6)3.5按键控制电路设计 (7)4 系统软件设计 (8)4.11秒定时 (8)4.2定时程序流程 (8)4.3交通灯的设计流程图 (9)4.4定时器0与中断响应 (10)5 仿真及性能分析 (10)5.1仿真结果图 (11)5.2仿真结果与分析 (12)6 心得体会 (13)参考文献 (14)附录1 系统原理图 (15)附录2 系统PCB图 .................................................................... 错误!未定义书签。
附录3 程序清单 (17)1.1设计任务利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
用红、绿、黄发光二极管作信号灯。
如图5.1所示。
设东西向为主干道,南北为支干道。
图5.1 交通灯示意图1. 基本要求(1) 主干道处于常允许通行的状态,支干道有车来时才允许通行。
主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。
(2) 主、支干道均有车时,两者交替允许通行,主干道每次放行30秒,支干道每次放行20秒,设立30秒、20秒计时、显示电路。
(3) 在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。
黄灯亮时,原红灯按1Hz 的频率闪烁。
(4) 要求主支干道通行时间及黄灯亮的时间均可在0~99秒内任意设置。
2. 选做(1) 可设置紧急按钮,在出现紧急情况时可由交警手动实现全路口车辆禁行而行人通行状态,即主干道和支干道均为红灯亮。
(2) 实现绿波带。
所谓‘绿波带’,是指在一定路段,只要按照规定时速,就能一路绿灯畅行无阻。
“绿波带”将根据道路车辆行驶的速度和路口间的距离,自动设置信号灯的点亮时间差,以保证车辆从遇到第一个绿灯开始,只要按照规定速度行驶,之后遇到的信号灯将全是绿灯。
南东2.1任务分析模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。
红、黄、绿交替闪亮,倒计数显示时间等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等。
2.2方案设计1.硬件方案根据设计的要求可知,系统的硬件原理框图如图5.2所示。
单片机键盘LED 显示三色指示灯图5.2 系统的硬件原理框图单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB 的FLASH ROM ,设计时无需外接程序存储器,为设计和调试带来极大的方便。
南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。
键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的IO 口不够用时,可以考虑扩展8255或8155满足系统的要求。
2. 软件方案根据设计要求,程序框图如图5.3所示。
软件可由汇编语言完成,也可由C 语言完成。
软件设计可以分为以下几个功能模块: 主程序:初始化及键盘监控。
计时程序模块:为定时器的中断服务子程序,完成0.1秒(或其他时间)和1秒的时间定时。
显示程序模块:完成12个发光二极管(实际上只需驱动6个)和4个LED 数码管的显示驱动。
键盘扫描程序模块:判断是否有键按下,并求取键号。
主程序流程图3 系统硬件设计3.1时钟电路设计如上图所示,采用内部时钟产生方式,在XTAL1 和XTAL2 两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自击震荡。
其发出的时钟脉冲直接送入片内定时控制部件。
3.2复位电路设计如上图所示,采用上电+按钮电平复位方式,当按下按钮时,RST 管脚高电平触发。
为保证复位可靠,RC 时间常数应大于两个机器周期,电容取33uf,电阻取200 欧。
3.3 灯控制电路设计如上图所示,交通灯状态显示电路由东西南北四个方向各三个LED 灯组成,分别显示四个方向上红、黄、绿三个状态,用以指示十字路口各方向车辆的行驶。
通过软件编程,可使路口交通变化情况为:南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30 秒、支干道每次通行时间为20 秒;在绿灯转为红灯时,要求黄灯先亮5 秒钟,才能变换运行车道;黄灯亮时每秒闪亮一次。
3.4 倒计时显示电路设计如上图所示,由两个个共阴极两位数码管来实现倒计时。
由于P0 口输出电流小,需外接上拉电阻,C1、C2 端接到P1 口的P1.0、P1.1、P1.2、P1.3 口用单片机来控制其片选。
3.5 按键控制电路设计如上图所示,开关控制由五个连接到单片机的控制按钮组成。
通过软件编程,按下K3 键电路进入外部中断0 响应,此时,可通过按键K1 和和K0 设置通行时间,每按一次K1 键南北通行时间增加一秒,而按下K0 键东西通行时间增加一秒,此时若按下K4 键东西南北的通行状况返回到初次设的状况(即南北通行),重新返回循环状态;按下按键K2,这是对紧急状况的控制,此时停止计数,东西方向和南北方向都不通行,如果K4 键按下,返回紧急状况的状态,并重启计数;按键K1 按下,控制南北方向通行;按键K0 按下,控制东西方向通行。
4 系统软件设计4.1 1S定时以在系统中要实现准确的1s定时。
采用89C51内部的定时/计数器T0,工作在方式1,定时时间计算公式为:zΣ(216-计数初值)×晶振周期x12或扛(2-6-计数初值)×机器周期其最大定时时间为131ms,离ls还差很远。
因此.把秒计时用硬件和软件计数相结合的方法实现。
即把定时器的定时时间定为125ms,这样计数溢出8次就可得到h.而8次计数可用软件方法实现。
为得到125ms定时,设计数初值为工,则有(216_X)x2=125 000从上式计算得到计数初值。
定时器定时采用中断方式完成.以便于通过中断服务程序进行溢出次数(每次125ms)的累计,计满8次即得到ls计时。
4.2 定时程序流程(1)To定时主程序流程定时主程序的主要功能是进行定时器,计数器的初始化编程,然后通过反复调用显示子程序的方法,等待125ms定时中断的到来。
(2)死定时中断服务程序流程中断服务程序的主要功能是进行计时操作。
程序先判断计数溢出是否满了8次。
不满8次表明还没达到最小计时单位秒.中断返回;如满8次则表明已达到最小计时单位秒.程序继续向下执行.进行计时操作。
4.3交通灯的设计流程图4.4定时器0 及中断响应5仿真与性能分析5.1仿真结果图5.2 仿真结果当交通灯上电复位后,数码管显示p。
当按下开始键k1后,南北方向开始亮绿灯,东西方向亮红灯。
显示器开始倒计时。
当按下结束键k2后,显示器重新显示p,并且南北东西的方向全灭。
6心得体会这次单片机课程设计历时三个星期的时间,在这三个星期里我们体验了从设计、画板、编程、焊板到调试的整个过程,让我们小小的体验了一次工程师的感觉。
起初我们先到图书馆和网上查阅了大量有关超声波测距仪的资料,然后开始设计我们自己的方案,为了设计精度要求和抱着学习新知识的想法,我们选择则了从没接触过的DS18B20和LCD1602液晶芯片,虽然我们并没把这两个芯片的应用原理研究的很透彻,但基本的应用编程是可以实现的,说实话整天抱着电脑查资料、看资料是一件很痛苦的事情,一天下来眼都花了,但每学会一点新知识还是挺高兴的,有的时候想要的资料查不到我们就向老师求助,他们都会毫无保留的帮助我们。
设计完电路以后我们便开始画PCB板,这是我们上学期学习的一门课程,趁着这次机会也让我们又将这部分只是复习了一下,并将其应用于实际,终于发现我们所学的知识和实际有点联系了,也对其产生了一点兴趣。
不过我们学得并不全面,只能说是引路用的,所以在实际当中我们还要再加深一下学习,这也是我们获得新知识的一个地方。
画板时需要注意的地方很多,比如封装要根据实际器件的尺寸来设计孔的大小,间距也要符合要求,布线时线宽与线距也有一定讲究,部件摆放要按一定规律等等。
这三周的时间说轻松也不轻松,说紧张却稍带着愉快的气氛,整个过程应该是充实的,时而惊喜,时而烦闷特别是最后调试阶段有一块调通了都会让我们高兴不已,当卡在某处时也确实是让人抓狂。
总之通过这次课设,我们不但复习了过去所学,并且学到了一些新东西。
更重要的是通过这一次切身实践,才使我们真正将理论与实际结合起来,并且遇到了很多实实在在的需要我们亲自解决的问题。
通过解决这些问题,我们处理实际问题的能力有了很大提高,积累了我们的实践经验,以便为以后打下牢固的基础。
而这些才是我们作为一名工科学生最宝贵的财富。
参考文献[1] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009.[2]胡汉才.单片机原理与接口技术[M].北京: 清华大学大学出版社,2004.1-505.[3] 邢国泉. LM35温度传感器的温度特性及其应用[J]. 医疗设备信息.2007,11,25-28.[4] 薛国红,赵修斌,卢艳娥等.零漂与增益控制对量化的影响分析[J].西安:空军工程大学,2008.[5] 马忠梅,刘滨等. 单片机C语言Windows环境编程宝典[M]. 北京: 北京航空航天大学出版社. 2003.附录3 程序清单#include<reg52.h>#define unit unsigned int#define uchar unsigned charuchar codea[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code b[4]={0xfe,0xfd,0xfb,0xf7};uchar code c[4]={0xcc,0xd4,0x78,0xb8};uchar NB=25,DX=30,NBG=25,DXG=15,H=5;uchar i,k=0,cnt=0,j=0;sbit K0=P3^5;sbit K1=P3^6;sbit K4=P3^7;sbit K3=P3^2;sbit K2=P3^3;void delay(uchar t);void key();void display();void settime();void init(void){TMOD=0x01;TH0=0x3c;TL0=0xb0;IT0=1;ET0=1;TR0=1;EA=1;EX0=1;EX1=1;P2=c[k];}void int0(void) interrupt 0{EA=1;P2=0xd8;for(;;){settime();if(K1==0){delay(40);if(K1==0){while(!K1){settime();}NBG++;if(NBG==100)NBG=0;}}if(K0==0){delay(40);if(K0==0){while(!K0){settime();}DXG++;if(DXG==100)DXG=0;}}if(K4==0){delay(40);if(K4==0){while(!K4){}k=0;P2=c[k];NB=NBG,DX=NBG+H; display();EA=1;break;}}}}void int1(void) interrupt 2 {EA=0;TR0=!TR0;for(;;){P2=0xdb,P0=a[0];P1=0xfe;delay(20);P1=0xfd;delay(20);P1=0xfb;delay(20);P1=0xf7;delay(20);if(K4==0){delay(20);EA=1;P2=c[k];TR0=!TR0;break;}}}void time1(void) interrupt 1{TH0=0x3c;TL0=0xb0;cnt++;if(cnt>=20){NB--;DX--;cnt=0;if(NB==0||DX==0){k++;if(k>3)k=0;switch(k){case 0:NB=NBG,DX=NBG+H;j=0;P2=c[k];break; case 1:NB=H;j=1;P2=c[k];break;case 2:NB=DXG+H,DX=DXG;j=0;P2=c[k];break; case 3:DX=H;j=2;P2=c[k];break;}}}}void delay(uchar t){uchar i;do{for(i=0;i<20;i++);;;}while(t--);}void settime(){P1=0xfe,P0=a[(NBG+H)%10]; delay(20);P1=0xfd,P0=a[(NBG+H)/10]; delay(20);P1=0xfb,P0=a[(DXG+H)%10]; delay(20);P1=0xf7,P0=a[(DXG+H)/10]; delay(20);}void key(){if(K1==0){delay(40);if(K1==0){while(!K1){display();}k=0,P2=c[k];cnt=0;NB=NBG,DX=NBG+H; display();}}if(K0==0){delay(40);if(K0==0)while(!K0==0){{display();}k=2,P2=c[k];cnt=0;NB=DXG+H,DX=DXG; display();}}}void display(){P1=0xfe,P0=a[NB%10]; delay(20);P1=0xfd,P0=a[NB/10]; delay(20);P1=0xfb,P0=a[DX%10]; delay(20);P1=0xf7,P0=a[DX/10]; delay(20);}void main(void){init();for(;;){display();key();while(j==1){P2=0xdc;for(i=83;i>0;i--){display();}P2=c[k];for(i=83;i>0;i--){display();}}while(j==2){P2=0xf8;for(i=83;i>0;i--) {display();}P2=c[k];for(i=83;i>0;i--) {display();}}}}。