C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟
学 号:
班 级: 自动化10班
姓 名: 张
指导老师: 胡
2012.12
单片机核心板实验要求
流水灯实验
实验目的:
简单I/O引脚的输出
掌握软件延时编程方法
简单按键输入捕获判断
完成功能要求
开机是点亮12发光二极管,闪烁三下
按照顺时针循环依次点亮发光二极管
通过按键将发光二极管的显示改为顺逆时针方式
定时器或实时时钟实验
实验目的
数码管动态显示技术
定时器的应用
按键功能定义
完成功能要求
通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。
实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。
上述二个功能至少完成一种功能。
双机通信实验
实验目的
UART 串行通信接口技术应用
完成功能要求
用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。
交通灯实验
实验目的
按键、数码管、发光二极管综合应用编程技术
数据存储于EEPROM的技术(也可以不使用)
定时中断技术
按键中断技术
完成功能要求
对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。
设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。
紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。
实验一 流水灯实验
一、实验目的
1)简单I/O引脚的输出
2)掌握软件延时编程方法
3)简单按键输入捕获判断
二、实验实现的功能
1)开机是点亮12发光二极管,闪烁三下
2)按照顺时针循环依次点亮发光二极管
3)通过按键将发光二极管的显示改为顺逆时针方式
三、系统硬件设计
1)如单片机核心板所示的硬件电路。
四、系统软件设计
设计思路:
1)定义数组使得调用数组可以使led灯能够顺时针和逆时针显示;
2)将按键的输入端全部置零,做单独按键使用;
3)利用“while”循环使得数码管可以闪烁三下;
4)利用“for”循环使得小灯能够依次点亮一个周期;
5)将以上思想汇总,编程,实现功能。程序详见附录。
五、实验过程中遇到的问题及解决方法
1)刚开始不知道怎样只设置一个管脚(如P0^0),查阅相关资料后知道表示方法,并学会了用“sbit”语句定义,方便多了。
2)对于C语言的很多东西都不知道,语句的用法也不清楚,重新看了C语言,用到什么看什么很快就懂了。
3)主程序中没有用延时程序和死循环导致led不能点亮,请教同学以后才知道。
4)对于按键只是不了解,看书又很模糊,看了网上“KINGST工作室”也就是“手把手教你学单片机”的视频后很清楚明了,之后好多东西也是从上边学到,就不再赘述了。
指导老师签字:
日期:
实验二 定时器或实时时钟实验
一、实验目的
1)数码管动态显示技术
2)定时器的应用
3)按键功能定义
二、实验实现的功能
1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。
2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。
上述二个功能至少完成一种功能。
三、系统硬件设计
1)如单片机核心开发板所示的硬件电路。
四、系统软件设计
设计思路:
1)做的是秒表定时器的实验;
2)利用中断技术实现利用单片机定时器完成计时功能;
3)定时器1计时中断程序每隔0.001s中断一次并当作一个计数,则1000次中断为 1秒,然后十进制进位即可;
4)在程序开始计数器不工作时设定一个值,当计数器工作时将时间与设定时间比较,如果想等,计数器停止工作,小灯闪烁三下;
5)将以上思想汇总,编程,实现功能。程序详见附录。
五、实验过程中遇到的问题及解决方法
1)最开始的时钟和秒表都没有用计时器和中断,但是也达到了实验要求,最后又改用始终计时器,浪费了很多时间。
2)不知道怎么使数码管显示不同数字,从网上学到用动态扫描来显示。
3)认真学习了中断技术并运用之后,切实意识到中断技术是单片机的核心技术,数码管显示也变得简单和稳定了。
4)子程序中的参数传递不出来,在网上搜索以后知道了全局变量和局部变量,并知道了“void”的作用。
5)运用“!”符号后不用再麻烦的写“key==0”,很实用
指导老师签字: