单片机原理及应用课程设计交通灯管理电路设计_第1页
单片机原理及应用课程设计交通灯管理电路设计_第2页
单片机原理及应用课程设计交通灯管理电路设计_第3页
单片机原理及应用课程设计交通灯管理电路设计_第4页
单片机原理及应用课程设计交通灯管理电路设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计课 程 单片机原理及应用课程设计 题 目 交通灯管理电路设计 院 系 电子科学学院 专业班级 学生姓名 学生学号 指导教师 2011年3月 18 日课程设计任务书课程 单片机原理及应用课程设计题目 交通灯管理电路设计 专业班级 姓名 学号 一、设计目的:训练学生综合运用己学课程的基本知识,独立进行单片机应用技术开发工作,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。二、设计要求:1. 应用mcs-51单片机设计交通灯管理电路;2. 该系统要求显示50s倒计时时间,当计到需交换红绿灯前10s,路口均显示黄灯;3. 硬件设计根据设计的任务选定合适的单片机,根据控制对象设计接

2、口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程;4. 软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;5. 原理图设计根据所确定的设计电路,利用protel等有关工具软件绘制电路原理图、pcb板图、提供元器件清单三、参考资料:1 单片微型计算机与接口技术,李群芳、黄建编著,电子工业出版社;2 单片机原理及应用,张毅刚编著,高等教育出版社;3 51系列单片机及c51程序设计,王建校,杨建国等编著,科学出版社;4 单片机原理及接口技术,李朝青编著,北京航空航天大学出版社;完成期限 2011.3.142011.3.18 指导教师 专业负责

3、人 2011年 3 月 13 日电路图设计:单片机最小系统、lcd显示、时钟和按键电路电路原理:(1) lcd1602:2*16显示,16个引脚(4个接正负,1个偏压,3个控制和8个数据接口与单片机连接)(2) ds1302:8个引脚,内部有时钟功能,单线传输数据,2个控制接口,外接32.768khz晶振。(3) lm339:14个引脚,在负端接基准电压,正端接输入电压,输出端上拉电阻。当输入大于基准时,输出高电平,输入小于基准时输出低电平。(4) 74ls11:3与门芯片,14个引脚。(5) vs1838b:红外接收器,接收波长950nm的波长,对接收的红外光要进行脉冲调制,使其频率在38k

4、hz。程序设计:lcm_rs bit p3.7 ;/定义接口lcm_rw bit p3.6lcm_e bit p3.5lcm_data equ p1 ;数据接口t_rst bit p3.0 ;实时时钟复位线引脚t_clk bit p3.1 ;实时时钟时钟线引脚t_io bit p3.4 ;实时时钟数据线引脚second equ 30hminute equ 31hhour equ 32hcishu equ 40hjian equ p2org 0000h ;从0000h处开始sjmp main ;跳转到main处org 0003h ;外部0中断ljmp jianweiorg 000bhljmp l

5、p2org 0060h ;主程序从0030h处开始main:mov sp,#70h ;堆栈指针指向70hmov jian,#0fhmov p0,#0fhnopnoplcall initial ;调用启动lcm子程序进行初始化lcall cls ;调用清除lcm子程序mov a,#80h ;向a送立即数80h设定显示地址为第一行第一列lcall write_rs ;调用写指令到lcm子程序mov dptr,#line1 ;将第一行字符串的启始地址送如dptr中lcall disp ;调用显示字符串到lcm子程序clr t_rstclr t_clkmov second,#00h ;初始时间设为12

6、:00:00mov minute,#00hmov hour,#01hlcall setds1302mov second,#00h ;初始时间设为12:00:00mov minute,#00hmov hour,#12hlcall get1302lcall display0mov r3,#25mov tmod,#01hmov th0,#70h ;置定时器初值(定时40ms)mov tl0,#00hsetb it0setb ex0setb et0setb tr0 ;启动定时器0setb eamov p0,#0fhnopnopl_p0:mov r4,#20 ;红外调制检测程序 lcall delay0

7、 djnz r4,l_p0 mov r4,#30l_p1:mov r5,#12l_p2:mul ab mul ab djnz r5,l_p2 clr p0.7 mov r5,#6l_p02:mul ab mul ab djnz r5,l_p02 setb p0.7 djnz r4,l_p1 jnb p0.4,l_p3 cpl p0.0l_p3:jnb p0.5,l_p4 cpl p0.0 cpl p0.1l_p4:jnb p0.6,l_p0 cpl p0.1 sjmp l_p0 lp2: mov th0,#070h ;重新置定时器初值 mov tl0,#00h djnz r3,lp1 ;未到1

8、 s继续循环 retilp1: lcall get1302 ;每过1s从ds1302读取一次时间 lcall display0 ;显示 mov r3,#25 retiinitial: ;启动lcm子程序mov lcm_data,#01hacall write_rsmov lcm_data,#38hacall write_rsmov lcm_data,#0chacall write_rsmov lcm_data,#06hretwrite_rs: ;写指令到lcm子程序clr lcm_eclr lcm_rsclr lcm_rwsetb lcm_emov lcm_data,alcall delay1

9、retwrite_data: ;写数据到lcm子程序clr lcm_esetb lcm_rsclr lcm_rwsetb lcm_emov lcm_data,alcall delay1retcls:mov a,#01h ;清除lcm子程序lcall write_rsretdisp:push acc ;将a的内容压栈disp_loop: clr a ;a清零movc a,a+dptr ;查表将字符串内容送入ajz end_disp ;若查到的内容为0则终止查表lcall write_data ;调用写数据到lcm子程序inc dptr ;dptr加1指向下一个对象sjmp disp_loop ;

10、跳转到disp_loop循环执行end_disp: pop acc ;弹出压栈内容至aretdelay1: push psw mov r7,#20d1: mov r6,#248d2: djnz r6,$ djnz r7,d1 pop pswret;数码显示子程序display0: mov dptr,#time;*;显示秒 mov a,#0cfh lcall write_rs mov a,second anl a,#0fh movc a,a+dptr lcall write_data mov a,#0ceh lcall write_rs mov a,second swap a anl a,#0f

11、h movc a,a+dptr lcall write_data mov a,#0cdh lcall write_rs mov a,#0b0h lcall write_data;*;显示分 mov a,#0cch lcall write_rs mov a,minute anl a,#0fh movc a,a+dptr lcall write_data mov a,#0cbh lcall write_rs mov a,minute swap a anl a,#0fh movc a,a+dptr lcall write_data mov a,#0cah lcall write_rs mov a,#

12、0b0h lcall write_data;*;显示小时 mov a,#0c9h lcall write_rs mov a,hour anl a,#0fh movc a,a+dptr lcall write_data mov a,#0c8h lcall write_rs mov a,hour swap a anl a,#0fh movc a,a+dptr lcall write_data ret;-;设置ds1302初始时间,并启动计时setds1302: clr t_rst nop clr t_clk nop setb t_rst nop mov b,#8eh ;写控制命令字 lcall i

13、nputbyte mov b,#00h ;写保护关闭 lcall inputbyte setb t_clk nop clr t_rst mov r0,#second ;内存中的时间首地址 mov r1,#80h ;ds1302中的时间首地址 mov r7,#3 ;字节数setloop: clr t_rst nop clr t_clk nop setb t_rst nop mov b,r1 ;写命令字 lcall inputbyte mov a,r0 ;设置时间 mov b,a lcall inputbyte inc r0 inc r1 inc r1 setb t_clk nop clr t_r

14、st nop djnz r7,setloop clr t_rst nop clr t_clk nop setb t_rst nop mov b,#8ch lcall inputbyte mov b,#80h ;开写保护 lcall inputbyte setb t_clk nop clr t_rst nop ret;-;从ds1302读取时间get1302: mov r0,#second mov r1,#81h ;ds1302中读时间的首地址 mov r7,#3getloop: clr t_rst nop clr t_clk nop setb t_rst nop mov b,r1 lcall

15、inputbyte ;写命令字 lcall outputbyte ;读时间 mov r0,a ;将从ds1302中读取的时间从内存中保存 inc r0 ;修改地址指针 inc r1 inc r1 setb t_clk nop clr t_rst nop djnz r7,getloop ret;-;向ds1302写一个字节inputbyte: mov r6,#8inputloop: mov a,b rrc a mov b,a mov t_io,c setb t_clk nop nop nop clr t_clk djnz r6,inputloop ret;-;从ds1302读一个字节output

16、byte: clr a clr c mov r6,#8outputloop: nop nop mov c,t_io rrc a setb t_clk nop nop nop clr t_clk djnz r6,outputloop retjianwei:clr et0 ;查询是否按键lcall delaymov jian,#0fehjnb p2.7,key14jnb p2.6,key13jnb p2.5,key12jnb p2.4,key11mov jian,#11111101bjnb p2.7,key24jnb p2.6,key23jnb p2.5,key22jnb p2.4,key21mo

17、v jian,#11111011bjnb p2.7,key34jnb p2.6,key33jnb p2.5,key32jnb p2.4,key31mov jian,#11110111bjnb p2.7,key44jnb p2.6,key43jnb p2.5,key42jnb p2.4,key41mov jian,#0f0hjb p0.2, k1clr p0.0sjmp k2k1:jb p0.3, k2clr p0.1k2:setb et0retikey11:ljmp key111key12:ljmp key112key13:ljmp key113key14:ljmp key114key21:l

18、jmp key221key22:ljmp key222key23:ljmp key223key24:ljmp key224key31:ljmp key331key32:ljmp key332key33:ljmp key333key34:ljmp key334key41:ljmp key441key42:ljmp key442key43:ljmp key443key44:ljmp key444key114: ;键位功能设计mov r2,#07hmov cishu,r2mov jian,#0f0hretikey224:cpl p0.0mov jian,#0f0hretikey334:cpl p0.

19、1mov jian,#0f0hretikey444:key441:mov r3,#00hmov r2,cishudec r2mov cishu,r2djnz r2,a5lcall a6mov jian,#0f0hretikey442:key443:key111:mov r3,#01hmov r2,cishudec r2mov cishu,r2djnz r2,a5lcall a6mov jian,#0f0hretikey112:mov r3,#02hmov r2,cishudec r2mov cishu,r2djnz r2,a5lcall a6mov jian,#0f0hretikey113:m

20、ov r3,#03hmov r2,cishudec r2mov cishu,r2djnz r2,a5lcall a6mov jian,#0f0hretia5:ljmp aa5key221:mov r3,#04hmov r2,cishudec r2mov cishu,r2djnz r2,a5lcall a6mov jian,#0f0hretikey222:mov r3,#05hmov r2,cishudec r2mov cishu,r2djnz r2,a5lcall a6mov jian,#0f0hretikey223:mov r3,#06hmov r2,cishudec r2mov cishu

21、,r2djnz r2,a5lcall a6mov jian,#0f0hretikey331:mov r3,#07hmov r2,cishudec r2mov cishu,r2djnz r2,a5lcall a6mov jian,#0f0hretikey332:mov r3,#08hmov r2,cishudec r2mov cishu,r2djnz r2,aa5lcall a6mov jian,#0f0hretikey333:mov r3,#09hmov r2,cishudec r2mov cishu,r2djnz r2,aa5lcall a6mov jian,#0f0hretia6: mov

22、 dptr,#time mov a,#0cfh lcall write_rs mov a,r3 movc a,a+dptr lcall write_data mov a,r3 add a,second mov second,a lcall delay1 lcall setds1302 lcall get1302 lcall display0 setb et0 retaa5: djnz r2,a4 mov dptr,#time mov a,#0ceh lcall write_rs mov a,r3 movc a,a+dptr lcall write_data mov b,#10h mov a,r

23、3 mul ab mov second,a mov jian,#0f0h retia4: djnz r2,a3 mov dptr,#time mov a,#0cch lcall write_rs mov a,r3 movc a,a+dptr lcall write_data mov a,r3 add a,minute mov minute,a mov jian,#0f0h retia3: djnz r2,a2 mov dptr,#time mov a,#0cbh lcall write_rs mov a,r3 movc a,a+dptr lcall write_data mov b,#10h mov a,r3 mul ab mov minute,a mov jian,#0f0h retia2: djnz r2,a1 mov dptr,#time mov a,#0c9h lcall write_rs mov a,r3 movc a,a+dptr lcall write_data mov a,r3 add a,hour mov hou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论