单片机系统设计实训报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机系统设计实训报告专业:生产过程自动化
目录
一.实验目的: (3)
二.实验要求: (3)
三.实验基本原理: (4)
四.实验设计分析: (4)
1.设计思想: (4)
五.实验要求实现: (6)
1. 电路设计: (6)
2.主流程图: (7)
3.4x4键盘行列式键盘原理电路图: (8)
4. 显示模块 (9)
五.总电路设计如下 (9)
六.程序 (11)
七.实验心得 (21)
一.实验目的:
1.熟悉单片机定时器的编程方法。
2.灵活运用单片机C语言程序中的字符串、数组、指针。3.熟悉数码显示、LCM1602液晶显示器、YJD12864液晶显示器的编程方法。
4.熟悉掌握4x4矩阵键盘的C语言编程。
二.实验要求:
1:用4×4矩阵键盘组成0-f数字键及。
2:可以自行设定或删除8位密码,
3:用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示PASS,若密码显示错误时,显示ERR.
4:自由发挥其他功能.
5:要求有单片机硬件系统框图,电路原理图,软件流程图。
三.实验基本原理:
这个密码锁的功能是使用矩阵键盘中的十六个键输入密码0到F还有,输入的同时在八位数码管上显示用户所输入的密码,未输入的位置用横杆填补表述未输入。当输入的密码超出设置的位数时,数据溢出,清零。
用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示pass,若密码不正确,则显示err;模拟密码锁,密码固化到ROM 不能通过按键输入更改。
四.实验设计分析:
1.设计思想:
1. 本系统采用单片机AT89S51作为核心元件的一款具有本机开锁,加锁,修改密码和错误
2.报警的电子密码锁。
3. 电子密码锁的原理是:从键盘输入一组密码,CPU把该密码和设置密码比较,对则将锁打开,错则要求重新输入,并记录错误次数,如果三次错误,则被强制锁定并报警。
初步设计思路如下:
1.输入密码用矩形键盘,数字键,字母键。
2.LED数码管显示输入密码,但是只是输出显示符号8 。
采用动态扫描输出。
3. 输入密码错误时显示ERR,密码正确时显示PASS。
软件的设计主要包括矩形键盘键值的读取、LED动态扫描输出程序、密码判断程序。
电子密码锁工作的主要过程是LED数码管显示密码啊。通过键盘输入密码,按下确认键后判断密码的正确性,正确显示PASS,错误显示ERR。
程序将分为主程序和中断服务子程序。主程序负责键盘键值读取,密码判断和开锁,中断服务子程序主要是负责LED 数码管显示。
根据程序功能,程序主要分为以下几部分:
1.键盘键值读取程序
键盘键值读取程序包括键盘扫描、消除抖动、键译码等内容。按键的识别主要有两种方法:行反转法和行扫描法。因为键盘为机械开关,容易引入抖动。为了消除抖动干扰,在程序中要加入消除抖动的部分。
2)LED数码显示程序
LED数码显示器是一种应用很普遍的显示器。程序主要负责把要显示的数字或字母对应的显示码送到相应的LED显示管。有多位需要同时显示时,可以采用动态刷新的方法,就
可以得到稳定的输出。循环显示8个数码管,可以实现稳定的数字显示。中断服务程序只负责数据的输出显示,主程序根据所处的状态修正显示数据。
3)密码判断程序
密码判断程序放在主程序中,有按键时读取,当确定键按下时作出判断。在程序中设置6字节的空间存放设定的密码和8字节存放键盘输入的数据。根据读取的键盘数据和预先设定的密码逐位比较就可以判断输入密码的正确性。
2.密码显示与开锁
当密码输出时候,显示屏上逐步显示密码,逐一显示。
4.密码错误报警
当用户键入正确密码并按下“确认”键时,屏幕清零会显示PASS。当用户键入错误密码按下“确认”时,屏幕清零会显示ERR。
五.实验要求实现:
1.电路设计:
2.主流程图:
3.4x4键盘行列式键盘原理电路图:
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N 条行线和M条列线,即可组成具有N×M个按键的键盘。本设计发射部分采用4x4键盘,接收部分采用4x4键盘。键盘扫描时,首先由I/O口低四位输出高电平,高四位输出低电平,假若有键按下,那么在I/O口低四位即可读出低电平,接着延时消抖,再具体判断是何键按下。
4.显示模块
五.总电路设计如下
六.程序
#include
#define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换
#define KeyPort P1
sbit LATCH1=P2^2;//定义锁存使能端口段锁存
sbit LATCH2=P2^3;// 位锁存
unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0 x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
unsigned char TempData[8]; //存储显示值的全局变量unsigned char code password[8]={1,2,3,4,5,6,7,8};