单片机课程设计-罗太坚
- 格式:doc
- 大小:258.50 KB
- 文档页数:13
武汉理⼯⼤学单⽚机课程设计-2⽬录摘要 (1)Abstract (2)1设计原理与⽅法 (3)1.1 硬件设计原理 (3)1.2 程序的结构化设计⽅法 (4)2 硬件电路及其说明 (6)2.1 显⽰电路单元 (6)2.1.1 74HC573资料 (6)2.1.2 数码管显⽰电路 (7)2.1.3显⽰电路原理图及其说明 (8)2.2 矩阵键盘单元 (9)2.2.1矩阵键盘的原理与检测⽅式 (9)2.2.2 矩阵键盘电路部分及其说明 (10)2.3 单⽚机最⼩系统及外围电路 (9)2.3.1 MAX232资料 (11)2.3.2 RS232接⼝ (12)2.3.3 STC89C52 (13)2.3.4 复位电路 (15)2.3.5 振荡电路 (15)2.3.6 串⼝电路 (16)2.3.7 最⼩系统原理图 (17)3仿真软件介绍 (18)3.1程序设计软件Protel (18)3.2程序编写软件Keil (18)3.3程序仿真软件Proteus (18)4 仿真电路测试 (19)5 实物图及其调试 (20)6 ⼩结与体会 (22)7 参考⽂献 (23)附录1:C语⾔源程序 (24)附录2:元件清单 (34)附录3:单⽚机实习⽇记 (35)摘要单⽚计算机即单⽚微型计算机。
由RAM ,ROM,CPU构成,定时,计数和多种接⼝于⼀体的微控制器。
它体积⼩,成本低,功能强,⼴泛应⽤于智能产业和⼯业⾃动化上。
⽽51系列单⽚机是各单⽚机中最为典型和最有代表性的⼀种。
这次课程设计通过对它的学习,应⽤,从⽽达到学习、设计、开发软、硬的能⼒。
本次课程设计包括STC89S52单⽚机最⼩系统包括复位和时钟电路及供电系统、4×4矩阵键盘、独⽴6个8段LED数码管显⽰电路。
利⽤相关设计软件进⾏原理图设计即利⽤Keil软件编程以及Proteus软件仿真来巩固单⽚机应⽤、模拟电路、数字电路课程及学会各种⼯程软件的使⽤。
关键字:单⽚机最⼩系统矩阵键盘 LED显⽰ABSTRACTSingle chip computer is the single chip computer. By RAM, ROM, CPU constitute, time, count and multiple interface in the integration of micro controller. Its small size, low cost, the function is strong, widely used in intelligent industry and industrial automation. And 51 series microcontroller is the most typical and various microcontroller most representative one. This curriculum design through to its study, application, thus achieved the study, design, development, soft and hard ability.The curriculum design, including STC89S52MCU minimum system ( including a reset and clock circuit and power supply system ),4 x4 matrix keyboard, the independent 6 LED digital tube display circuit . Using circuit design software schematic design, using Keil software and Protues software simulation, we consolidate the MCU application, analog circuit, digital circuit course and learn all kinds of engineering software use.Key Words:MCU minimum system matrix keyboard LED digital tube display1设计原理与⽅法1.1 硬件设计原理本次课程设计是基于MCS-52单⽚机的扩展设计,利⽤52单⽚机为核⼼,根据课程设计的要求先编写程序并在开发板上进⾏调试,调试成功之后再进⼀步设计硬件电路,最后将硬件电路和编写的程序结合实现要求的功能,并不断检错调试,最后达到设计⽬的。
华南师范⼤学单⽚机课程实验报告和程序单⽚机实验报告华南师范⼤学姓名:学号:专业:通信⼯程班级:09通信8班数字量输⼊输出实验⼀、实验⽬的1.熟悉教学板电路及其结构。
2.掌握利⽤µVision C51 软件编辑、调试(包括仿真调试、单步调试)、运⾏单⽚机程序的步骤和⽅法,掌握利⽤STC-ISP V39软件和下载线将程序写⼊单⽚机的⽅法。
3.通过实验熟悉51单⽚机的并⾏I/O⼝,并掌握它们的应⽤。
4.掌握矩阵键盘、LED动态显⽰的⼯作原理。
⼆、实验设备PC机⼀台、实验教学板⼀块。
三、实验准备1.阅读实验讲义附录⼀、实验教学板电路图和附录⼆、µVision软件使⽤说明2.按实验题⽬要求设计好硬件电路,画出电路原理图,设计出相应程序,并给程序加上较详细的注释。
四、实验内容1.实验线路如附图所⽰,51单⽚机的P0⼝输出接8个发光⼆极管的阴极,P2.4经NPN 三极管9011控制发光管的阳极。
P3⼝⽀持⼀个8位⾏列式键盘,其中P3.4~P3.7供键盘扫描输出,P3.2、P3.3作键盘扫描输⼊。
实验要求:编程实现键盘对发光⼆极管的控制,每按⼀个按键,使对应的⼆极管点亮。
2.51单⽚机P0⼝输出同时接4个数码管的阴极,P2.0~P2.3,经NPN三极管9011接数码管的阳极,该端⼝⽤于分别控制相应数码管的导通。
实验要求:编程实现对任意按键动作的次数进⾏计数(最⼤99次),同时将计数值实时显⽰。
五、实验步骤1.将实验板与PC机通过COM⼝连接。
启动PC机,进⼊µVision软件环境,选择建⽴新⼯程⽂件,即可开始输⼊源程序。
2.完成汇编、编译、连接,若有错误,则修改源程序,直⾄编译、连接通过为⽌。
3.接上实验板上的电源。
3.运⾏“STC-ISP V39.EXE”,将程序代码下载到实验板的单⽚机中。
操作的顺序是:1)选择单⽚机(MCU TYPE)型号。
如:“STC89C51RC”要与实验板上所装单⽚机的型号⼀⾄。
设计课题:多路抢答器学院:电气与信息工程学院专业班级:09级电气工程及其自动化学生姓名:卢航20090710713有问题联系QQ:327182862,希望能一起进步^_^ 日期:2012-6-23目录1.任务及设计要求 (2)2.分析和性能分析 (2)3.器件的选择和硬件设计 (3)4.软件设计和流程图 (6)1)总体流程图 (7)2)抢答器模块流程图 (8)3)北京时间模块流程图 (9)5.样机仿真调试和目标程序的联机调试 (11)6.性能测试 (11)7.程序 (11)1)延时函数void delay1ms(unsigned int time) (9)2)PWM发声函数void buzzer1000Hz()等 (10)3)键盘扫描函数unsigned char keyscan(void) (11)4)数码管扫函数display(unsigned char duan,unsigned char wei) (13)5)抢答函数void qiangda() (14)6)主函数void main(void) (17)7)中断函数void TimerInterrupt() interrupt (19)8.产品使用说明书 (20)9.心得体会 (22)10.参考文献,教师评语 (25)一、任务及设计要求1、任务设计并制作一个多路抢答器,在满足抢答器基本功能要求的同时具有显示和调节北京时间的功能。
2、要求1)设计一多路数字抢答器2)设置一个系统清除和抢答控制开关,该开关由主持人控制3)抢答器具有锁存与显示功能。
选手按动按扭,锁存相应的编号,并在LED 数码管或LCD上显示,同时系统报警。
优先抢答选手的编号一直保持到主持人将系统信号清除为止4)抢答器具有定时抢答功能。
当主持人启动‚开始‛键后,计时器进行计时,同时绿灯亮(可蜂鸣器替代或显示对应标志)。
参赛选手在设定时间内进行抢答,抢答有效,定时器停止工作,绿灯灭,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止,如果定时时间已到,无人抢答,本次抢答无效,系统报警。
“纵横关联”的单片机课程一体化教学设计第一篇:“纵横关联”的单片机课程一体化教学设计2013年度宁波技师学院论文评选活动参评论文单片机课程的纵横关联一体化教学作者姓名:毛宏光刘福祥单片机课程的纵横关联一体化教学毛宏光刘福祥(宁波技师学院电气系,浙江宁波)[摘要] 针对技工院校先实理论后实习的教学模式,教学效果不理想的问题,提出了一种被笔者称为“纵横关联教学体系”新的教学体系。
该体系融合了项目式教学法,理实一体化教学法,学习迁移法等的优势,具有一定的参考价值。
[关键字]单片机关联迁移一体化0、引言单片机是维修电工和电气工程专业学生的一门核心课程,具有很强的实践性与综合性,其最终教学目标是让学生具有利用自己所掌握的知识解决实际工程问题的能力。
由于技工院校学生本身在理论基础和学习习惯上的不足,采用传统的先理论后实习的教学模式很难实现这个最终目标,教学效果往往很不理想。
笔者所在电气系从2008年开始在学校领导支持下开始单片机课程理实一体化教学探索。
经过几年的努力,形成了以“学习迁移理论”为核心指导思想的独具特色的“纵横关联”的一体化教学模式。
近几年的教学实践证明,学生比较容易接受这种教学模式,并且取得了很好的教学效果。
1、目前常见的教学体系电气专业的传统教学体系以理论学习为中心,理论教学和实习教学分别进行,而且由多位教师指导,容易造成理论教学与技能训练脱节,不利于理论指导实践,不利于用实践验证理论,也不利于有效地利用教学时间。
学生参加工作后。
往往觉得学校所学与实际工作相差甚远,学校教学较空泛、职业实用性和现场适应性较差[1]。
课程设臵和教学过程中,有一定的纵向联系却很少有课程之间的横向联系。
造成学生的知识结构不合理,缺乏全面的、系统的解决问题的能力。
2、纵横关联教学法体系的提出与实施针对传统教学体系的弊端,为了更好的培养技工人才,笔者就教学体系谈谈一些不成熟的想法。
1、以《国家职业技能鉴定标准》和用人单位的需要出发,明确专业培养目标,以培养目标统领课程编制。
广西大学行健文理学院单片机应用综合实验报告题目:基于STC89S52单片机开发板的功能设计与应用学部:理工学部班级:电气092班姓名:学号: 0938170214指导教师:撰写日期: 2012年4月目录第一章课程设计要求及功能说明 (1)1.1课程设计要求 (1)1.2课程设计电路及功能说明 (2)第二章程序设计及结果分析 (3)2.1程序设计思想 (3)2.2调试析及问题解答 (3)单片机综合应用实验设计总结 (6)第一章课程设计要求及功能说明1.1课程设计要求用四位数码管实现分计时,显示分秒,可以任意设置时间。
1.2课程设计电路及功能说明1.2.1设计电路(见下图)1.2.2功能说明本作品四位数码管显示分计时,显示分秒;四位数码管显示分倒计时,显示分秒。
四个独立按键(S1、S2、S3、S4)进行功能控制。
S1为功能转换按键,按下一次为倒计时功能,按下两次为计时功能。
S2、S3为计时与倒计时设置时间按键,S2每按下一次秒加1,S3每按下一次秒减一,S4为计时与倒计时开始于暂停按键。
另有蜂鸣器报警,设置时间时,每按下一次功能按键,蜂鸣器响一次;倒计时功能下,当计时少于10秒时,蜂鸣器报警。
电路原理图:第二章程序设计及结果分析2.1程序设计思想计时器的基本功能是计时与倒计时,由按键控制计时与倒计时功能的切换以及计时、倒计时的计数初值,数码管予以显示。
通过程序把按键输入的命令给程序中修改时间函数,函数对按键做出反应并判断,进行功能的转换,计数初值的修改以及启停,利用中断进行高精度计时与倒计时,。
当按键输入不正确时,函数不做任何反应,保持计时倒计时的正常进行以及保证功能的稳定性。
2.2调试结果分析及问题解答由于是利用开发板进行的程序设计,没有涉及到硬件的制作,所以在此测试硬件不在赘述。
程序的编辑在Keil uVision4中进行,当编辑好后,我们可以运行链接一下,有错误必须修改,如程序格式错误、语法错误、括号不匹配等,一般的语法错误还是很容易排除的,关键难的是找出逻辑错误,我们可以进入软件提供的DEBUG选项来调试,可以单步运行也可以设置中断点,由此我们可以看出程序运行的步骤和过程,也可以看到左边框的REGISTER 选项有个寄存器在运行中值得变化情况,以便我们分析程序运行的具体情况,一般调试没错误我们就可以把程序编译生成16进制文件,由下载软件下载到单片机中验证,如没有得到想到的结果,继续修改程序,继续下载,直到调试到正确的结果为止。
《单片机原理与应用》课程设计教学大纲分组名单:(组号对应于课程设计号码,迟到、早退者每次从最终得分扣除5分,旷课一次扣除15分,旷课两次课程设计分数记0分)课程编号:学分: 2 分时间:1 周适应专业:单片机与嵌入式系统开课学期:第3学期一、课程设计的性质与目的本课程是电工电子类专业课程体系的重要组成部分,也是一门重要的实践性课程,本课程设计是单片机原理与接口技术课程理论与实践教学内容的综合应用。
在技术知识方面,进行本课程设计的目的如下:1.进一步熟悉和掌握单片机的结构及工作原理。
2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。
4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
在实践过程中,还要注重培养学生的自学能力、动手能力及分析解决问题的能力,让他们能自主地学习。
在实践方面,进行本课程设计的目的如下:1.自学能力的培养:通过本课程的教学,要培养和提高学生对所学知识进行整理、概括、消化吸收的能力,以及围绕课堂教学内容,阅读参考书籍和资料,自我扩充知识领域的能力。
2.动手能力的培养:通过实验教学手段,注重培养和提高学生的能手能力。
3.分析能力的培养:在学生实验的过程中,注重启发式引导,培养学生独立思考、自行解决问题的能力。
4.创新能力的培养:在课程设计和实验过程中,鼓励学生以不同方案或方法实现。
结合各专业的实际要求,鼓励学生设计新的实验电路、实验方法,允许学生自拟课题,充分发挥学生的主观能动性,培养和提高学生的创新能力。
二、课程设计的基本要求a) 原理图设计1.详细的元件清单,原理图设计要符合项目的工作原理,连线正确,端口有标号。
2.图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。
江西财经大学职业技术学院单片机课程设计报告目录一、摘要 (2)二、设计任务 .···································································· 4 三、总体方案设计与论证...........................................................4 1、液晶显示模块. (4)2、实时时间计算模块 (5)3、实时环境温度采集模块 (5)4、报警模块 (6)5、设置模块..............................................................6 四、总体方案组成框图..........................................................7 五、系统硬件设计............................................................. 8 1、LCD 显示模块..........................................................8 2、实时时间计算模块......................................................12 3、实时环境温度检测模块................................................. 16 4、报警模块............................................................. 21 5、设置模块............................................................. 22 六、系统软件设计 (23)七、系统硬件电路设计........................................................ 24 八、系统硬件PROTEUS 仿真原理图............................................ 25 九、系统硬件仿真运行情况图.................................................. 26 1、显示欢迎界面......................................................... 26 2、显示实时时间..........................................................26 3、显示当前温度. (27)4、时间设置 (27)5、最高报警温度设置 (28)6、闹钟时间设置 (28)7、超温 (29)8、闹钟时间到 (29)附录一:实物图 (30)附录二: PCB 图 (32)附录三:源程序代码 (33)附录四:参考文献 (62)摘要单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。
课程设计任务书课程名称:微机原理与接口技术题目:5802109009型单片机系统的设计学院:机电工程学院系:机械工程系专业:机械设计制造及其自动化班级:机制094学号: 5802109009学生姓名:何祥波起讫日期: 6.13———6.22 指导教师:董增文系分管主任:审核日期:说明1、课程设计任务书由指导教师填写,并经学院审定后下达给学生。
2、进度表是课程设计工作检查的主要依据。
3、学生根据指导教师下达的任务书,独立完成课程设计。
4、本任务书在课程设计完成后,与说明书、电路原理图和程序清单等资料一并上交指导教师,作为课程设计的主要档案资料。
一、课程设计的要求和内容(包括原始数据、技术要求、工作要求)单片机系统在各行各业自动控制领域的应用越来越广泛。
《微机原理与接口技术》课程设计实践教学环节要求同学们针对实际需求,灵活应用所学知识,独立进3、此次课程设计采用分级评分,具体操作如下:评分等级所含硬件模块及功能要求评价细则及格,中硬件模块:a,b,c.功能要求:(1),(2)完成所要求电路设计、软件设计,正确为中完成所要求电路设计、软件设计,仍须修改为及格所要求电路设计仍有多于三处错误,软件逻辑流程错误为不及格发现为抄袭,设计与任务定义表不匹配的一律不及格中,良好硬件模块:a,b,c,d或a,b,c,e.功能要求:(1)(2)(3)(4)或(1)(2)(3)(5)完成所要求电路设计、软件设计,正确为良好完成所要求电路设计、软件设计,仍须修改为中所要求电路设计仍有多于五处错误,软件逻辑流程错误为不及格发现为抄袭,设计与任务定义表不匹配的一律不及格优硬件模块:a,b,c,d,e.功能要求:完成所要求电路设计、软件设计,正确为优秀完成所要求电路设计、软件设计,仍须修改为良好所要求电路设计仍有多于六处错误,软件逻辑流程错误为不及格发现为抄袭,设计与任务定义表不匹配的一律不及格要求在WAVE软件下汇编通过(提交的程序清单中包括程序机器码),并对程序进行功能和含义进行详细注解,对自己任务的要点予以标记,使用规范格式打印。
单片机应用系统课程设计方解石单片机应用系统课程设计方解石一、电路设计1、电源电路实现电路电源的设计,采用“桥式”的电源电路,使用2节电池构成电源,并通过直流-直流转换器,获得一节5V电源电压,并将电源线与主控单片机连接。
2、主控单片机采用芯片AT89C51单片机,它是51系列单片机的一种,具有8K 字的可编程(EPROM)存储空间,片内复位电路,三种中断源,加上多种常用的I/O口,可以运行具有控制功能的强大的指令集,同时它的体积小,功耗低,工作环境友好,使它在消费电子设备、工业控制系统中应用较多。
3、传感器接口用于连接传感器,该部分采用两路Digital-I/O,用来检测使用者的身份码,连接检测芯片中的按键。
4、主机接口用于连接与主机的数据交换,该部分采用RS-232接口,用来接收与发送信息,实现控制与主机的数据交互。
5、光电耦合接口用于连接外部设备,该部分采用光电耦合器,用来检测两端电压差大于一定阈值时,触发信号。
二、程序设计1、编程语言程序采用C语言进行编写,可以利用C程序编写的功能较大,因此将程序中主要使用C语言进行编程。
2、程序结构设计程序分为5部分:(1)初始化:完成硬件设备的初始化,定义变量,确定程序的运行模式;(2)外部设备检测:完成外部设备的检测,检测到信号触发后,开启身份验证;(3)身份验证:对使用者输入的身份码进行验证,若验证正确,则向主机发送认证信号,反之则发送错误信号;(4)主机检测:检测主机的反馈信号,若信号正确,则启动数据传输步骤;(5)数据传输:将程序收到的反馈信号与设备的详细信息发送给主机。
三、安全考虑1、由于系统中需要处理的数据可能包含敏感信息,为保证系统安全,需要采用加密技术对数据进行加密,防止数据被窃取;2、在外部设备检测步骤中,采用光电耦合器作为外部设备的接口,在检测信号触发后,使用者需要输入身份码,以验证使用者的身份,以确保数据的安全;3、由于数据的传输可能存在安全隐患,因此,在数据传输步骤中,也需要同样采用合理的加密技术,以保证数据的安全性。
《单片机原理与应用》课程设计报告题目:多功能电子钟姓名:学号:学院:机械与电子工程专业: 电子信息工程班级: 1420601Z指导教师:李跃忠一、设计任务及要求时钟按键不超过4个,上电后可进行正常走时,能够显示时、分、秒,走时误差每天不能超过5秒。
要求具有切换显示,可以显示年、月、日以及对应星期。
时钟应具备调时功能,并有对应调时位的闪烁提示。
时钟要求具有秒表功能和闹钟功能,秒表误差要求不超过1ms,闹钟要求能够准点报时并自动解除。
二、设计思路及规划时钟采用8位数码管动态译码显示,用独立键盘做为功能键。
上电后时钟能够正常运行,此时按下K2按键数码管切换显示年、月、日,稍作延时后显示对应星期,再次延时后将自动切换至时、分、秒的时钟显示;日期的切换显示不影响时钟的正常走时。
按下K1按键进入调时功能,此时K1为调时切换键,K2为调时按键,调时过程中时钟暂停运行。
按下K3按键进入闹钟设定功能,K3为时、分切换键,K2为设定键;闹钟设定的过程中不影响时钟的正常走时。
按下K4按键进入秒表功能,按下K2开始计数,再次按下K2为停止计数,此时若按下K4则可清除当前的计数,若按下K2则延续计数,当数值清零后,可重复上述步骤也可以按K4退出秒表功能;秒表功能不影响时钟的正常走时。
三、硬件电路图四、程序流程图1、主函数流程图2、时钟中断和秒表计数中断流程图3、调时以及闹钟设定流程图五、程序源代码#include<reg51.h>unsigned char WeiXuan[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; unsignedcharDuanXuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77, 0x7c,0x39,0x5e,0x79,0x71,0x00,0x40,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0 xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1,0x80}; //0~F以及消隐和显示"—" unsigned char a,b,c,d,e,f,h,a1,k,k1,c2,d2,a3,b3,c3,d3;unsigned int g;sbit FM=P1^0;sbit T=P1^1;sbit Tz=P3^2;sbit NY=P1^1;sbit NZTZ=P3^3;sbit NZ=P1^2;sbit js=P1^1;sbit JS=P1^3;void Xians(char a,char b);void SSSM();void SSSM1();void SSSM2();void SSSM3();void main(){unsigned int i,j,i1=0,j1=0,i2,j2,i3;IP=0x03; //设置中断优先级EA=1; //中断总开关EX0=1; //外部中断0允许位IT0=0; //外部中断0为低电平触发EX1=1; //外部中断1允许位IT1=0; //外部中断1为低电平触发ET0=1; //定时器、计数器0允许位TMOD=0x11; //设定定时器、计数器0、1的工作方式为方式1 TH0=(65536-50000)/256; //定时器、计数器装载初值50ms TL0=(65536-50000)%256;ET1=1; //定时器、计数器1允许位TH1=(65536-10000)/256; //定时器、计数器装载初值10ms TL1=(65536-10000)%256;TR0=1; // 启动定时计数器0TR1=0; //关闭定时计数器1a=b=c=d=0;c2=1;d2=0;e=f=1;g=2000;h=6;a1=17;FM=0; //蜂鸣器NY=1; //年月日NZ=1; //闹钟JS=1; //计数while(1){if(d==d2&&c==c2) //检测是否到达定时时间NZ=0;if(NZ==0) //用于定时提醒{for (i2=1;i2>0;i2--){for (j2=38;j2>0;j2--){for(i3=130;i3>0;i3--);}}for (i2=1;i2>0;i2--){for (j2=38;j2>0;j2--){FM=~FM;for(i3=100;i3>0;i3--);}}}if(NY==0){i=11000;while(i--);if(NY==0){for(i=100;i>0;i--)for(j=5;j>0;j--)SSSM1();for(i=100;i>0;i--)for(j=5;j>0;j--)SSSM2();}}if(JS==0) //计时部分{i=11000;while(i--);if(JS==0) {i1=1;}}while(i1){if(js==0){i=11000;while(i--);if(js==0&&j1==0) {TR1=1;j1=1; i=11000;while(i--);}if(js==0&&j1==1) {TR1=0;j1=2; i=11000;while(i--);}if(js==0&&j1==2) {TR1=1;j1=1; i=11000;while(i--);}}if(JS==0){i=11000;while(i--);if(JS==0&&j1==2) {a3=b3=c3=d3=0;j1=0;i=11000;while(i--);}if(JS==0&&j1==0) {j1=0;i1=0;}}SSSM3();//计时部分}SSSM();}}void Xians(char a,char b) //用于动态显示下的位选、段选以及消隐{ unsigned char i=100;P2=WeiXuan[a];P0=DuanXuan[b];while(i--); //不精确延时0.1ms,用于改善数码管亮度P0=DuanXuan[16]; //用于动态显示的消隐}void SSSM() //用于时间的实时扫描显示{Xians(0,d/10);Xians(1,d%10);Xians(2,a1);Xians(3,c/10);Xians(4,c%10);Xians(5,a1);Xians(6,b/10);Xians(7,b%10);}void SSSM1() //用于年月日的实时扫描显示{Xians(0,g/1000);Xians(1,g%1000/100);Xians(2,g%100/10);Xians(3,g%10+18);Xians(4,f/10);Xians(5,f%10+18);Xians(6,e/10);Xians(7,e%10);}void SSSM2() //用星期的实时扫描显示{Xians(0,16);Xians(1,16);Xians(2,16);Xians(3,16);Xians(4,16);Xians(5,16);Xians(6,0);Xians(7,h);}void SSSM3(){Xians(0,d3/10);Xians(1,d3%10+18);Xians(2,c3/10);Xians(3,c3%10+18);Xians(4,b3/10);Xians(5,b3%10+18);Xians(6,a3/10);Xians(7,a3%10);}void DSQJSQ0 (void) interrupt 1 //实时中断{TH0=(65536-50000)/256; //计数重装TL0=(65536-50000)%256;a++;if(a==10) {a1=16;}if(a==20) {a1=17;b++;a=0;FM=~FM;}if(b==60) {c++;b=0;NZ=1;} //秒if(c==60) {d++;c=0;} //分if(d==24) {e++;h++;d=0;} //时if(h==8) {h=0;}if((g%4==0&&g%100!=0)||(g%100==0&&g%400==0)) // 闰年年月日{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){f++;e=1;}}else {if(f==2) {if(e==30){f++;e=1;}}else {if(e==31){f++;e=1;}}}}else //非闰年年月日{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){f++;e=1;}}else {if(f==2) {if(e==29){f++;e=1;}}else {if(e==31){f++;e=1;}}}}if(f==13) {g++;f=1;}}void JSZD(void) interrupt 3{TH1=(65536-10000)/256; //计数重装TL1=(65536-10000)%256;a3++;if(a3==100) {b3++;a3=0;}if(b3==60) {c3++;b3=0;}if(c3==60) {d3++;c3=0;}}void TIAOSHI (void) interrupt 0{unsigned int i,j;i=10000;while(i--);a1=17;k=0;while(k==0) //秒调时循环{unsigned char b1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) b=b+1;}if(b==60)b=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,d/10);Xians(1,d%10);Xians(2,a1);Xians(3,c/10);Xians(4,c%10);Xians(5,a1);Xians(6,b1);Xians(7,b1);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) b=b+1;}if(b==60)b=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM();}}while(k==1) //分调时循环{unsigned char c1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) c=c+1;}if(c==60)c=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,d/10);Xians(1,d%10);Xians(2,a1);Xians(3,c1);Xians(4,c1);Xians(5,a1);Xians(6,b/10);Xians(7,b%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) c=c+1;}if(c==60)c=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM();}}while(k==2) //时调时循环{unsigned char d1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) d=d+1;}if(d==24)d=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,d1);Xians(1,d1);Xians(2,a1);Xians(3,c/10);Xians(4,c%10);Xians(5,a1);Xians(6,b/10);Xians(7,b%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) d=d+1;}if(d==24)d=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM();}}while(k==3) //年调时循环{unsigned char g1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) g=g+1;}if(g==2101)g=2000;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,g1);Xians(1,g1);Xians(2,g1);Xians(3,g1+18);Xians(4,f/10);Xians(5,f%10+18);Xians(6,e/10);Xians(7,e%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) g=g+1;}if(g==2101)g=2000;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM1();}}while(k==4) //月调时循环{unsigned char f1=16;i=100;{ if(T==0){ j=11000;while(j--);if(T==0) f=f+1;}if(f==13)f=1;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,g/1000);Xians(1,g%1000/100);Xians(2,g%100/10);Xians(3,g%10+18);Xians(4,f1);Xians(5,f1+18);Xians(6,e/10);Xians(7,e%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) f=f+1;}if(f==13)f=1;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM1();}}while(k==5) //日调时循环{unsigned char e1=16;i=100;{ if(T==0){ j=11000;while(j--);if(T==0){e=e+1;if((g%4==0&&g%100!=0)||(g%100==0&&g%400==0)) // 闰年{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){e=1;}}else {if(f==2) {if(e==30){e=1;}}else {if(e==31){e=1;}}}}else //非闰年{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){e=1;}}else {if(f==2) {if(e==29){e=1;}}else {if(e==31){e=1;}}}}}}if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,g/1000);Xians(1,g%1000/100);Xians(2,g%100/10);Xians(3,g%10+18);Xians(4,f/10);Xians(5,f%10+18);Xians(6,e1);Xians(7,e1);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0){e=e+1;if((g%4==0&&g%100!=0)||(g%100==0&&g%400==0)) // 闰年{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){e=1;}}else {if(f==2) {if(e==30){e=1;}}else {if(e==31){e=1;}}}}else //非闰年{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){e=1;}}else {if(f==2) {if(e==29){e=1;}}else {if(e==31){e=1;}}}}}}if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM1();}}while(k==6) //星期调时循环{unsigned char h1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) h=h+1;}if(h==8)h=1;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,h1);Xians(1,h1);Xians(2,h1);Xians(3,h1);Xians(4,h1);Xians(5,h1);Xians(6,h1);Xians(7,h1);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) h=h+1;}if(h==8)h=1;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM2();}}}void NZDSSZ (void) interrupt 2 {unsigned int i,j;i=10000;while(i--);a1=17;k1=0;while(k1==0) //分设定循环{i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) c2=c2+1;}if(c2==60)c2=0;if(NZTZ==0){ j=11000;while(j--);if(NZTZ==0) k1=k1+1;}Xians(0,16);Xians(1,16);Xians(2,16);Xians(3,d2/10);Xians(4,d2%10);Xians(5,17);Xians(6,16);Xians(7,16);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) c2=c2+1;}if(c2==60)c2=0;if(NZTZ==0){ j=11000;while(j--);if(NZTZ==0) k1=k1+1;}Xians(0,16);Xians(1,16);Xians(2,16);Xians(3,d2/10);Xians(4,d2%10);Xians(6,c2/10);Xians(7,c2%10);}}while(k1==1) //时设定循环{i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) d2=d2+1;}if(d2==24)d2=0;if(NZTZ==0){ j=11000;while(j--);if(NZTZ==0) k1=k1+1;}Xians(0,16);Xians(1,16);Xians(2,16);Xians(3,16);Xians(4,16);Xians(5,17);Xians(6,c2/10);Xians(7,c2%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) d2=d2+1;}if(d2==24)d2=0;if(NZTZ==0){ j=11000;while(j--);if(NZTZ==0) k1=k1+1;}Xians(0,16);Xians(2,16);Xians(3,d2/10);Xians(4,d2%10);Xians(5,17);Xians(6,c2/10);Xians(7,c2%10);}}}。
交通灯课程设计1、项目名称十字路口交通信号灯控制系统2、选题背景2.1课题背景由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益加深等。
日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。
随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。
2.2交通灯的历史1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯--煤气交通信号灯,这是城市街道的第一盏信号灯。
1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。
稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。
随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。
它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。
中国最早的马路红绿灯,是于1928年出现在上海的英租界。
3、单片机简介3.1单片机的发展历程单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
在MCS-51系列单片机中,有两个子系列:51子系列和52子系列。
每个子系列有诺干中型号。
51系列有8051、8751和8031三个型号,后来经过改进产生了80C51、87C51、80C31三个型号;52系列有5021、8752 、8032三个型号,改进后的型号是80c52/87c52 、80c32 。
改进后的型号更加省电。
52系列比对应的51系列增加了定时器T2并将内部程序存贮器增加到8KB。
Inter公司停止生产MCS-51系列单片机之后将生产权转让给了许多其他公司,于是出现了许多与Mcs-51兼容的单片机。
现在生产MCS-51兼容单片机的公司对其进行了不同程度的改进和提高。
我们现在使用比较的多的是AT89C51/AT89S51等。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。
3.2单片机的特点:(1)性价比高,开发周期短,易于产品化;(2)集成度高,可靠性好,抗干扰性强;(3)功能完善,接口多样;(4)低功耗、低电压。
一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V ;(5)总线多样,易于扩展。
单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。
外部总线增加了I2C及SPI等串行总线方式,可根据需要进行并行或者串行扩展。
3.3AT89C51单片机简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM —FlashProgrammableandErasableReadOnlyMemory )的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
4、设计基本要求和步骤十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
4.1基本要求本系统需要采用MSC-51系列单片机AT89C5 1作为中心器件来设计交通灯控制器,实现以下功能:(1)初始东西绿灯亮,南北红灯亮,东西方向通车。
(2)能手动粗调红绿灯时间,但红绿灯相差的时间为黄灯亮的时间。
初始设定延时25s,东西路口绿灯熄灭,黄灯亮5s。
(3)黄灯亮完后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。
4.2设计步骤利用Proteus7. 8SP3仿真软件按下列要求绘制仿真实例分别设置南北方向上红绿黄灯,红灯由P2.6口控制,黄灯由P2.5口控制,绿灯由P2.4口控制,南北时间由两个数码管控制。
数码管1的位由P3.1控制,数码管2的位由P3.0控制,数码管段由P0口控制。
设置东西方向上红绿黄灯,红灯由P2.3口控制,黄灯由P2.2口控制,绿灯由P2.1口控制,东西时间也由两个数码管控制。
数码管3的位由P3.3控制,数码管4的位由P3.4控制,数码管段也是由P0口控制。
P3.7为交通灯的总启动开关,P3.2为中断开关,P1.0为红绿灯时间增加按钮,P1.1为红绿灯时间减小按钮。
P1.7为中断后重新启动按钮。
4.3程序流程图4.4原理图图1 仿真原理图5实验用到的相关软件和元件清单(1)Protues7.8,keiluvision4(2)AT89C51单片机、红绿黄LED灯各2个、数码管4个、74LS373 6程序源代码ORG 0000HLJMP MAINORG 0003HLJMP INT00ORG 0030HMAIN: MOV R3,#20K1: MOV A, P3ANL A,#80HCJNE A,#00H,K1JNB P3.7, FF: SETB EX0SETB EASETB IT1MOV P2, #0C4HMOV R0, #20MOV R1, #25SJMP KKSTART: MOV TMOD, #01H MOV TH0, #3CHMOV TL0, #0B0HCLR TF0SETB TR0DJNZ R3, DISMOV R3, #20CJNE R6,#0,KFDEC R5DJNZ R4, DISSJMP KKKF: DEC R4DJNZ R5, DISKK: MOV A, P2 CJNE A,#99H,D1MOV P2, #0A9HMOV R4, #5MOV R6,#1SJMP STARTD1: CJNE A,#0A9H,D2 MOV P2, #0C3HMOV 0FFH,R1MOV R4,0FFHMOV 0FFH,R0MOV R5,0FFHMOV R6,#1AJMP STARTD2: CJNE A, #0C3H,D3MOV P2,#0C4HMOV R5,#5MOV R6,#0AJMP STARTD3: CJNE A,#0C4H,DIS MOV P2, #99HMOV 0FFH, R0MOV R4,0FFHMOV 0FFH,R1MOV R5,0FFHMOV R6,#0AJMP STARTDIS: MOV A,R4LCALL EECLR P3.0SETB P3.3LCALL FFCLR P3.3SETB P3.4LCALL EFMOV A,R5LCALL EECLR P3.4SETB P3.1LCALL FFCLR P3.1SETB P3.0LCALL EFJNB TF0,RW1AJMP STARTRW1: JNB P1.0,JW1JNB P1.1,JW2JNB TF0,DISAJMP START JW1: LCALL DELAYINC R4INC R5LCALL DELAYJNB P1.0,JW1AJMP STARTJW2: LCALL DELAYDEC R4DEC R5LCALL DELAYJNB P1.1,JW2AJMP STARTEE: MOV B,#10DIV ABRETFF: LCALL SEG7MOV P0,ALCALL DELAYRETEF: MOV A,BLCALL SEG7MOV P0,ALCALL DELAYRETDELAY: MOV R7, #20DELAY2: MOV R2,#248DJNZ R2,$DJNZ R7,DELAY2RETSEG7: INC AMOVC A,@A+PC;RETDB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H ,0C6H,0A1H,86H,8EH INT00: MOV A,P2MOV P2,#0C9HJB P1.7,$MOV P2,ARETIEND7、仿真结果分析应用上面程序,得到如下仿真结果:图2 初始时间设置为25秒时南北通车时的仿真图图3 初始时间设置为25秒时南北黄灯亮时的仿真图图4 初始时间设置为25秒时东西通车时的仿真图图5 初始时间设置为25秒时东西黄灯亮时的仿真图图6 初始时间粗调增加到55秒时南北通车时的仿真图图7 初始时间粗调减少到9秒时南北通车时的仿真图图8 事故发生后按下中断按钮图9 事故处理后解除中断通过以上图形可知,本系统基本符合我们日常生活中队交通灯的要求,大致能起到指挥交通的作用,但是也存在很多问题,例如,本系统只能粗略调节红绿灯的初始时间,并不能做到准确调节,而且本系统在调节方面,红绿黄灯只能同时调整,而不能调整任意一种灯,所以还需要很大的改进才能达到真正现实生活中交通灯的要求。
8、心得体会通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决现实问题的能力。
使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为一名合格的应用型人才打下良好的基础。
综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更深层次的理解和认识。
在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流得到解决。
还有交通灯是我们生活中非常常见的一种东西,对于我们学以致用的这种能力得到了很好锻炼。
通过这次的实训既提高了我的认识能力也提高了我的自学能力,这在我的今后的学习生活工作打下了基础。