红绿灯课程设计.doc

上传人:仙人指路1688 文档编号:2603305 上传时间:2023-02-20 格式:DOC 页数:8 大小:53KB
返回 下载 相关 举报
红绿灯课程设计.doc_第1页
第1页 / 共8页
红绿灯课程设计.doc_第2页
第2页 / 共8页
红绿灯课程设计.doc_第3页
第3页 / 共8页
红绿灯课程设计.doc_第4页
第4页 / 共8页
红绿灯课程设计.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《红绿灯课程设计.doc》由会员分享,可在线阅读,更多相关《红绿灯课程设计.doc(8页珍藏版)》请在三一办公上搜索。

1、硬件设计:硬件方案分析:此次课程设计我们使用芯片是8051,原因是8051片内有4k ROM,无须外接外存储器和373,更能体现“单片”的简练,而且它的性能价格比高,开发装置多,国内技术人员熟悉,芯片功能够用适用并可广泛选择等特点;用四个7段LED数码管显示倒计时,因为它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。用16个发光二极管,表示东西南北红黄绿灯,其中用四个蓝灯表示人行通道并且用四个按键控制灯。原理图如下:软件设计:资源分备:P1-字型口P3-控制口。 第一个数码控制口为p3.0、第二个数码控制口为P3.1、第三个数码控制口为P3.2、第四个数码控制口为p3.3。

2、(都是为1时亮)4位显示: 30H-33H 显示缓冲区 30H-第一组码管的十位31H-第一组数码管的个位32H- -第二组-数码管的十位33H-第二组数码管的个位P2、p0分别为东西南北红黄绿蓝灯按键1接p3.7按键2接p3.6按键3接p3.5按键4接p3.4程序流程图:东西绿灯亮,南北红灯亮,蓝灯闪。东西黄灯闪,南北红灯亮。东西红灯亮,南北黄灯闪烁是否有按键?是否有按键?开始东西红灯亮,蓝灯闪;南北绿灯亮。数码管显示,从30倒计至0数码管显示,从5倒计至0数码管显示,从30倒计至0数码管显示,从5倒计至0是否有按键?是否有按键?返回按键1按下-返回显示;按键2按下-东西南北黄灯亮,蓝灯闪。

3、数码管显示,从10倒计至0;按键3按下-东西南北红灯闪,按键4按下-东西南北绿灯闪,数码显示,从15倒计至0。按键1按下-返回显示;按键2按下-东西南北黄灯亮,蓝灯闪。数码管显示,从10倒计至0;按键3按下-东西南北红灯闪。按键4按下-东西南北绿灯闪,数码显示,从15倒计至0。按键1按下-返回显示;按键2按下-东西南北黄灯亮,蓝灯闪。数码管显示,从10倒计至0;按键3按下-东西南北红灯闪。按键4按下-东西南北绿灯闪,数码显示,从15倒计至0。按键1按下-返回显示;按键2按下-东西南北黄灯亮,蓝灯闪。数码管显示,从10倒计至0;按键3按下-东西南北红灯闪。按键4按下-东西南北绿灯闪,数码显示,从

4、15倒计至0。程序清单: zixing equ p1kongzhi equ p3hh1 equ 30hhh2 equ 31hhh3 equ 32hhh4 equ 33hmain:mov p2,#01111101b ;东边红灯亮、蓝灯闪,北边绿灯亮mov p0,#11101011b ;西边红灯亮、蓝灯闪,南边绿灯亮mov hh1, #3 mov hh2, #0 ; 数码管一显示,从30倒计时至0lcall shuma mov p2,#01111011b ;东西红灯亮mov p0,#11101101b ;南北黄灯灯闪mov hh3, #0 mov hh4, #5 ; 数码管二显示,从5倒计时到0l

5、call shuma2 mov p2,#11010111b ;东边绿灯亮,北边红灯亮、蓝灯闪。mov p0,#10111110b ;西边绿灯亮,南边红灯亮、蓝灯闪。mov hh1, #3mov hh2, #0 ;数码管一显示,从30倒计时到0lcall shuma1mov p2,#10110111b ;东西黄灯灯闪mov p0,#11011110b ;南北红灯亮mov hh3, #0mov hh4, #5 ; 数码管二显示,从5倒计时到0lcall shuma4ljmp mainshuma: star: cpl p2.4 ;取反 cpl p0.7 ;取反 mov r6, #5 ;廷时 stt2

6、:mov r5, #100 stt1: lcall xianshi ;查表 djnz r5, stt1djnz r6, stt2lcall ccc ; 跳用按键程序zhou: dec hh2 ;第一组数码管的个位减1mov a, hh2 ;把hh2送到a中cjne a, #0ffh, star ;比较a是否为0,不为0继续显示。 mov hh2, #9 ;为0时,第一组数码管个置9 dec hh1 ;第一组数码十位减1 mov a, hh1 ;把hh1送到a中 cjne a, #0ffh, star ;比较a是否为0,不为0继续显示 ret shuma1: star1: cpl p2.0 ;取

7、反 cpl p0.3 ;取反 mov r6, #5stt4:mov r5, #100stt3: lcall xianshidjnz r5, stt3djnz r6, stt4lcall ccczhou1: dec hh2mov a, hh2cjne a, #0ffh, star1 mov hh2, #9 dec hh1 mov a, hh1 cjne a, #0ffh, star1 retshuma2: star2: cpl p2.2 cpl p0.1 mov r6, #5stt6:mov r5, #100stt5: lcall xianshi1djnz r5, stt5djnz r6, st

8、t6lcall ccczhou2: dec hh4mov a, hh4cjne a, #0ffh, star2 mov hh4, #9 dec hh3 mov a, hh3 cjne a, #0ffh, star2 ret shuma3: star3: cpl p2.5 cpl p2.1 cpl p0.6 cpl p0.2 mov r6, #5stt8:mov r5, #100stt7: lcall xianshi1djnz r5, stt7djnz r6, stt8lcall ccczhou3: dec hh4mov a, hh4cjne a, #0ffh, star3 mov hh4, #

9、9 dec hh3 mov a, hh3 cjne a, #0ffh, star3 ret shuma4: star4: cpl p2.6 cpl p0.5 mov r6, #5st1:mov r5, #100st2: lcall xianshi1djnz r5, st2djnz r6, st1lcall ccczhou4: dec hh4mov a, hh4cjne a, #0ffh, star4 mov hh4, #9 dec hh3 mov a, hh3 cjne a, #0ffh, star4 ret shuma5: star5: cpl p2.4 cpl p2.0 cpl p0.7

10、cpl p0.3 mov r6, #5st3:mov r5, #100st4: lcall xianshi1djnz r5, st4djnz r6, st3lcall ccczhou5: dec hh4mov a, hh4cjne a, #0ffh, star5 mov hh4, #9 dec hh3 mov a, hh3 cjne a, #0ffh, star5 ret xianshi: mov a, hh1 mov dptr, #tab movc a, a+dptr mov zixing, a mov kongzhi, #00000001b lcall delay mov a, hh2 m

11、ov dptr, #tab movc a, a+dptr mov zixing, a mov kongzhi, #00000010b lcall delay retxianshi1: mov a, hh3 mov dptr, #tab movc a, a+dptr mov zixing, a mov kongzhi, #00000100b lcall delay mov a, hh4 mov dptr, #tab movc a, a+dptr mov zixing, a mov kongzhi, #00001000b lcall delay ret delay: mov r7, #250 de

12、l1: djnz r7, del1 ;250*2us=500us=0.5ms ret tab: db 40h,79h,24h,30h,19h,12h,02h,78h,00h,10htbb: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hccc: setb p3.4 ;判断 p3.4是否有键按下jnb p3.4, aaa ;有键按下,跳用子程序aaasetb p3.5 ;判断 p3.5是否有键按下jnb p3.5, bbb ;有键按下,跳用子程序bbbsetb p3.6 ;判断p3.6是否有键按下jnb p3.6, www ;有键按下,跳用子程序w

13、wwsetb p3.7 ;判断3.7是否有键按下jnb p3.7, qqq ;有键按下,跳用子程序qqqretaaa:mov p2 ,#11011101b ;东西南北绿灯闪烁。 mov p0 ,#10111011b mov hh3, #1 mov hh4, #5 ;数码显示从15倒计至0。 lcall shuma3 setb p3.5 ;有键按下,跳用子程序bbb jnb p3.5, bbb ;有键按下,跳用子程序bbb ljmp mainbbb: mov p2, #01110111b mov p0, #11101110b mov p2, #11111111b mov p0, #1111111

14、1bsetb p3.7 ;判断3.7是否有键按下jnb p3.7, qqq ;有键按下,跳用子程序qqqljmp bbb www: mov p2,#10101010b mov p0,#01010101b mov hh3, #1 mov hh4, #0 lcall shuma5 setb p3.5 ;判断 p3.5是否有键按下 jnb p3.5, bbb ;有键按下,跳用子程序bbb ljmp mainqqq: ljmp main ;返回初始状态 end调试:1输入源程序输入源程序时,以西文方式输入字母和符号,且中文注释前要加分号。2) 对源程序进行汇编和纠错 在汇编过程出现了许多问题,比如,语

15、法错误、目标越界、程序名重复等,根据汇编提供的错误信息通过对照书本或请教老师逐条纠正错误,直至汇编信息提示“错误(0)”、“汇编结束”。3) 确定调试方案 我们采用的是单步运行的方法,把程序输入单片机中,观察仿真结果。4) 调试程序我们在设计过程中出现了许多的问题。比如,灯亮正确但数码管没有显示,问题出现在显示数码程序,分析原因可能是由于字型口接入错误,重新布线之后数码管显示成功。通过反复调试,发现并排除软件与硬件存在的各类问题,最终取得成功。 操作说明:输入程序运行,当没有键按下时东西南北的红黄绿蓝灯按流程循环进行,数码管分红蓝两组,第一个和第三个状态用红数码管显示从三十倒计至零,第二和第四

16、个状态用蓝数码管显示从五倒计至零。当有键按下时:按键1按下-返回初始状态;按键2按下-东西南北黄灯亮,蓝灯闪。数码管显示,从10倒计至0;按键3按下-东西南北红灯闪。按键4按下-东西南北绿灯闪,数码显示,从15倒计至0。注:当按键1按下时,按键2、3、4按下可以进行,同时当按键2、3、4按下时也可以由按键1返回;当按键3按下时,按按键2、4无效,它不能返回,只有当按键1按下时才能返回显示;按按键2时,按按键4可以进行反过来按按键4,按按键2也可以进行,它们通过数码显示倒计完毕之后自动返回显示。 总结:本次课程设计充分发挥了我们的想象空间,锻炼了我们的思维和运用能力。从选题到制作完毕,都需要我们

17、充分考虑。如何选题,选什么题好呢?对于我们初学者来说,总感觉到眼高手低,想实现的功能多一点可又不能不想到其是否可行,通过我们共同讨论最终决定设计红绿灯。设计过程中,主要是软件方面花的精力较多,由于是第一次接触,只能边学边运用,好多东西还不太理解, 老师教都是些基础的的东西而且比较分散。在设计时需要我们从我们所学到的东西中组合起来运用,而且还要懂得如何模仿别人的东西并且从中提起自己想要的东西运用到自己的设计当中。有的东西看得懂可是运用起来就不会那么容易,在编写时经常出现错误,通过请教老师和上网查资料不断的思考、不断的尝试,从中找出原因得到教训并且不断的改善,最终取得成功。这次课程设计,不仅对我们所学知识的巩固,而且丰富了我们的课余生活,激发了我们对单片机学习的热情。从中我发觉对单片机的了解很少,学习单片机是一个艰难且漫长的历程,在今后的学习当中,只能靠自己努力去研究、探索了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号