当前位置:网站首页>##51单片机实验之简易验证码发生器
##51单片机实验之简易验证码发生器
2022-07-02 11:21:00 【肖肖的猪会飞】
嘿!!好久不见,各位
会想小猪嘛?
嗯…怎么不会呢?
ヾ(≧ ▽ ≦)ゝ
前言:
本文由自主学习所做的一个实验,可能有很多不足,请各位大佬指出!!
一,摘要
这次的综合实验报告顺应着实验课题给出的题目写的,课题内容是验证码发生器。主要是通过运用该学期所学的单片机中串口通信、液晶显示器LCD1602、串口中断系统、外部中断的相关内容实现一个从主机(在虚拟终端输入)向子机发送6位数字或者字母的验证码验证信息,通过子机接收后在LCD1602上显示出来。为了验证其是否接收准确,这里在主机端也设计一个LCD1602液晶显示器显示在虚拟终端发送的内容,以此来检验子机接收的是否正确。此实验简易模拟了数字通信中验证码的发送机制,以下就是实验的全部内容。
二,目的
通过该实验来完善这阶段的单片机所学,顺便做一个总结,主要是串口通信的内容,准备接触嵌入式,也就为下面的学习做准备。
三,功能说明
在虚拟终端输入一个6位的字母或数字或者数字字母的组合,主机的LCD1602液晶显示器的显示屏上显示该输入的数据,按下按键即可发送该数据给子机,在子机的LCD1602显示屏上显示该数据。从验证码发生器的角度看就是主机向子机发送验证码,子机收到的验证码可以和主机匹对,检验验证码是否一致。
各部分的功能说明:
(1)主机AT89C51和子机的AT89C51:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可以降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
(2)LCD1602液晶显示器:点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成。显示屏上64×16个显示单元与显示RAM区的1024字节相对应,每一字节的内容与显示屏上相应位置的亮暗对应。例如显示屏第一行的亮暗由RAM区的000H~00FH的16字节的内容决定,当(000H)=FFH时,屏幕左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,屏幕右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H…,(00EH)=00H,(00FH)=00H时,在屏幕的顶部显示一条由8条亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。lcd1602主要用于显示数字,字母,图形和一些自定义字符。由于其简单的显示控制和高性价比,它被广泛用于电子仪表,冰箱,空调,汽车电子仪表和其他设备。
(3)虚拟终端:共有4个接线端,其中RXD为数据接收端,TXD为数据发送端,RTS为请求发送信号,CTS为清除传送,是对RTS的响应信号。Proteus提供的虚拟终端相当于键盘和屏幕的双重功能,免去了上位机系统的仿真模型,使用户在用到单片机与上位机之间的串行通信时,直接由虚拟终端经RS-232模型与单片机之间异步发送和接收数据。这里只是利用了虚拟终端发送数据的功能。
四,硬件电路设计
用到的元器件名称:AT89C51、BUTTON、LM016L、POT
在该实验中就是利用AT89C51的I/O接口P2连接LCD1602显示器,从而将接收的数据显示在LCD1602显示屏上。主机的AT89C51上的RXD连接虚拟终端上的TXD,从而接收虚拟终端输入的数据,在主机上TXD连接子机上的RXD发送数据到子机。按键连接P3^2口,利用外部中断0控制。
五,程序设计
(1)这里首先要讲的是LCD1602文件,我们学习单片机的都知道,在学习这部分内容的时候,老师会给出相应的LCD1602头文件,其中的头文件是比较完善的。但是在这里,我们需要自己写入相应的内容,因为这里我所需要实现的是由虚拟终端输入所以在写.c程序的时候要把所定义的函数的内容放到主机和子机中写,不能直接使用网上或者老师给出的LCD1602的头文件 ,需要改动一下。
首先我们来看原本的头文件:
打开intrins.h头文件可以看到里面的命令,我们可以引用头部和尾部来说明有这个头文件,中间可以定义自己需要的命令,这样之后就很清楚的知道自己需要用到的函数命令和变量。如下图
定义完所需要的变量之后就可以写LCD1602的.c文件了,如下:
(2)主机的.c文件
从main函数说起:
从main函数可以看出,这里包含了几个函数:
1,窗口函数
作用:定义串口工作方式1和定时工作方式1,设定波特率为9600(可以自行设计),打开总中断和串口中断。
2,外部中断开关函数
作用:打开外部中断(按键控制数据的发送)
3,LCD1602初始化函数
4,发送函数
作用:按键按下的时候数据发送给子机
5,显示函数
(以上解析的地方需要注意,这里就不做重复解析,又不懂的可以来问我哈)
作用:在显示屏上显示数据。
(3)主机全部的.c文件
这就是验证码发送机制的主机的简易函数
(4)子机程序
子机程序比主机的要简单一些,但都是差不多的,就不做过多的解析了。
六,仿真
这里需要提醒一点:虚拟终端的波特率需要自己根据自己所设的波特率来设计的。
好啦!宝子们,以上就是该实验的全部内容,希望能帮助你对51单片机有进一步的理解
如果这篇文章对你有帮助或者你也喜欢小博主的,记得点赞评论加关注哦!不然就找不到我了o(▽)q
多多支持小博主哈
我们一起加油
边栏推荐
- STM32标准固件库函数名(一)
- STM32库函数进行GPIO初始化
- Data consistency between redis and database
- Quarkus学习四 - 项目开发到部署
- Tujia muniao meituan has a discount match in summer. Will it be fragrant if the threshold is low?
- 检查密码
- 提示:SQL Server 阻止了对组件‘Ad Hoc Distributed Queries ‘的STATEMENT ‘OpenRowset/OpenDatasource“”
- Tip: SQL Server blocked the state 'openrowset/opendatasource' of component 'ad hoc distributed queries'
- TeamTalk源码分析之win-client
- STM32 library function for GPIO initialization
猜你喜欢
[development environment] StarUML tool (download software | StarUML installation | StarUML creation project)
A white hole formed by antineutrons produced by particle accelerators
Fabric.js 橡皮擦的用法(包含恢复功能)
In 2021, the global styrene butadiene styrene (SBS) revenue was about $3722.7 million, and it is expected to reach $5679.6 million in 2028
MySQL 45 lecture - learning the actual battle of MySQL in Geek time 45 Lecture Notes - 05 | easy to understand index (Part 2)
There is no solution to the decryption error of the remote user 'sa' and the service master password mapped from the remote server 'to the local user' (null) /sa '
Fabric.js 缩放画布
当贝投影4K激光投影X3 Pro获得一致好评:万元投影仪首选
Launcher startup process
Uniapp automated test learning
随机推荐
Chinese science and technology from the Winter Olympics (III): the awakening and evolution of digital people
The evolution process of the correct implementation principle of redis distributed lock and the summary of redison's actual combat
Quarkus学习四 - 项目开发到部署
Fabric. JS free draw circle
How many knowledge points can a callable interface have?
什么是 eRDMA?丨科普漫画图解
Generally speaking, if the error of inconsistent tab and space occurs frequently
Daily learning 3
Quick analysis: easy to share the Internet
1. Editing weapon VIM
mongodb的认识
3、函数指针和指针函数
PTA question bank== > complex four operations, one for one, examination seat number (7-73)
Design of non main lamp: how to make intelligent lighting more "intelligent"?
Adhere to the foundation of 20 minutes go every day II
The most complete analysis of Flink frame window function
万物生长大会在杭召开,当贝入选2022中国未来独角兽TOP100榜单
篇9:XShell免费版安装
Penetrate the remote connection database through the Intranet
The use of TestNG, the testing framework (II): the use of TestNG XML