【可直接使用】16位单片机大作业.doc
![【可直接使用】16位单片机大作业.doc](https://img.360docs.net/img6d/1crkza4m1k0adz7gpc2kxzhh1mr0dgyo-d1.webp)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院
《16位单片机应用》大作业
课程名称16位单片机应用
课程编号260717001
院(系)电子与信息工程学院
专业电子科学与技术
任课教师杨芳
班级2013142
姓名DANGDANG 学号 2013000
题目:十六位单片机----密码锁
一、设计目的及要求
运用C语言,MC9S12XS128的知识,对实现密码锁进行软件和硬件的设计和调试,掌握如何使用CodeWarrior来整合各种驱动模块,例如本实验运用到的键盘中断、LCD、PWM以及小灯模块,将这些模块整合在一起再通过算法实现硬件上的运行,达到密码锁的功能。
密码锁主要功能:
利用键盘中断、LCD、小灯、PWM模块,按下按键,在LCD可以显示对应值,并将其与预设密码进行比对。若正确,则LCD显示right,小灯由暗变亮;否则,LCD显示wrong,小灯一直保持流水灯状态,直至输入的密码正确。二、设计内容与实现过程
本次用到了相对还是比较多的模块,主要有SCI串口通信模块,LED显示模块,LCD显示模块,Timer定时器模块和中断模块,主要采用了定时器和中断的方式去控制整个系统的工作,能在超级终端以及LCD上实时显示时分秒的数据,主要是在Timer的样例程序中对当中的一些驱动以及主函数中数据的定义进行一定量的修改,来保证控制功能的实现。
具体功能和实现过程如下:
1、Main 函数
(1)全局变量定义
2、实验采用的模块
①LCD 显示模块
运行程序后,LCD上会显示“password: r/w: ”,在对应位置还会显示按下的键位对应的定义值。
②键盘中断模块
按下键位后,键值存入valve,调用KBDef函数,将valve键值转为定义值,存入num数组中。
③小灯显示模块
小灯为共阳极程序运行后,PORTB已在前面设置为输出,小灯会出现流水灯现象。
④PWM模块
Period为PWM周期所占时钟周期数,duty为PWM占空比所占的PWM周期数。此处不断增加占空比,实现小灯由暗变亮的显示。
三、小结
此次课程设计,我使用了键盘中断、LCD、小灯以及PWM模块,共四个模块,设计出了一个密码锁。在本次试验中,我不可避免的遇到一些问题:PWMSetting函数理解不够深入。程序中所用的PWM相关语句在之前做PWM 实验时已有接触,经过了解发现,period为PWM周期占时钟周期的个数,duty 为PWM占空比占PWM周期的个数,但对于PWMSetting函数的功能如何实现不太理解。
在这次实验中,我不断地发现问题、解决问题,将理论运用与实际,更好的把握了课本上学到的知识,进一步认识了软件和硬件,也大大提高了自己的动手能力,使我受益匪浅。
四、最后结果