HNU小学期计算机系统设计与创新基础训练——加密信息存储与游戏操作系统

  • 一、 选题名称
  • 二、 选题背景
  • 三、 实现功能
    • 1. 主要功能
    • 2. 细节设计
  • 四、 设计思路
  • 五、 基本原理
    • 1. 数码管与发光二极管
      • 1.1 数码管与发光二极管电路
      • 1.2 LED数码管引脚定义
      • 1.3 数码管与发光二极管的显示方法
    • 2. 非易失存储器24C02
      • 2.1 24C02工作原理
      • 2.2 I2C总线
    • 3. 导航按键与按键
      • 3.1 导航按键与按键工作原理
      • 3.2 AD数据采集电路及采集步骤
      • 3.3 与A/D转换相关寄存器
    • 4. 蜂鸣器
      • 4.1 蜂鸣器工作电路
      • 4.2 蜂鸣器工作原理
    • 5. 串行口通信
      • 5.1 串口相关电路图
      • 5.2 串行口1的控制寄存器SCON和PCON
      • 5.3 串行口数据缓冲寄存器SBUF

一、 选题名称

加密信息存储与游戏操作系统

二、 选题背景

日常生活中有很多需要记住的信息,比如银行卡密码、手机号、各种各样的密码,如果遗忘会变得很麻烦,因此做一个信息加密存储器来存储这些东西会非常方便,再加上密码可防止泄露信息。
此外,基于上位机与下位机之间的通信和数据交互,利用下位机完成对上位机游戏——推箱子的导航按键操作控制,并在此基础上,可对多种上位机软件进行拓展操作。
在项目整体的设计过程中熟悉“STC学习板”的相关知识,学习数码管、按键、蜂鸣器、非易失存储器24C02以及导航按键的工作原理,依据具体需求进行详细设计,并了解通信协议,在上位机的设计过程中学习串口通信的相关知识。

三、 实现功能

1. 主要功能

① 信息存储方面,分为对各条信息(多信息)的加密功能、密码的更改功能、信息的 修改功能以及基于串口通信的信息发送接收功能。
② 游戏操作方面,基于串口通信模块,使用导航按键来控制上位机的推箱子游戏的移 动操作。

2. 细节设计

① 显示模块,利用定时器0实现数码管的定时显示功能,共有初始界面、信息选择、 输入密码、密码错误提示、密码正确提示、信息显示、修改密码、修改信息8个页 面需要显示,游戏操作模块使用初始页面。在定时器的响应函数内以判断语句进行 界面的输出选择;
② 蜂鸣器发声模块,设置一个变量标志是否需要蜂鸣器发声,这里仅在输入错误密码 时使其发声600ms即可,因此在输入密码错误时进入密码错误提示界面并令蜂鸣 标志置1,延时600ms后再次返回输入密码页面。蜂鸣器的发生模块同样位于定时 器0响应函数中,根据标志来进行发声。
③ 非易失存储模块,因为需要将密码同时也加入到24C02当中且我的密码是2字节、 信息为4字节,因此一条信息一共占6字节,密码在前,信息在后。因此第k条信 息的存储位置实际在首地址+k*6处。
④ 导航按键模块,数据的修改均由导航按键来实现,而一个字节的数据占用数码管的 两位分为高4位与低4位,实现了高低4位的自由修改,即数码管上的每一位都是 可以修改的,而不是一个字节一个字节的改动。

四、 设计思路

五、 基本原理

1. 数码管与发光二极管

1.1 数码管与发光二极管电路

P0口的8位输出分别连接了8个发光二极管L0~L7的阳极, P2.3经过一个反相器连接到8个发光二极管L0~L7的阴极(共阴极);

1.2 LED数码管引脚定义

P0口的8位输出分别控制1个LED数码管的7段和一个小数点。

1.3 数码管与发光二极管的显示方法

根据二极管的单向导通性(当阳极为高(对应P0口位为1)、阴极为低时,二极管导通,否则不导通),若P2.3输出信号为低电平“0”,则二极管的阴极都为高电平,二极管都不会导通,也就不会发光。因此想要发光二极管导通,必须先设置P2.3输出信号为“1”,再通过设置P0,点亮想要点亮的发光二极管。
而P2.3经反相器U4C控制74HC138的使能信号E3,结合P2.0、P2.1、P2.2这3个位选控制信号确定8个LED数码管中的哪个被点亮;电阻R15~R22为限流电阻。当段选为高、使能信号有效时,对应的LED管将会发光。通过以一定频率扫描位选信号,修改段选信号进行数码管点亮一段时间,从而给人视觉上几个数码管几乎同时显示的效果。
如果去掉DP小数点位就是七段。A在8位中的最低位,DP位为最高位。组合成的八位对应P0口的八位。数码管又分为共阴极和共阳极两种类型;其中共阴极就是将八个LED阴极连在一起,让其接地,这样给任何一个LED发光管另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。一个发光二极管的引脚图如上图所示。

2. 非易失存储器24C02

非易失性存储器(nonvolatile memory)是掉电后数据能够保存的存储器,它不用定期地刷新存储器内容。这包括所有形式的只读存储器(ROM),像是可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)和闪存。

2.1 24C02工作原理


24C02通过IIC_SCL和IIC_SDA与单片机相连,单片机以IIC总线的方式对24C02进行读写。24C02是一个2K位串行E2PROM,内部含有256个8位字节。

2.1.1 管脚描述

2.1.2 寻址方式

寻址信号由一个字节构成,高7位为地址位,最低位为方向位,用以表明主机与从器件的数据传送方向。方向位位0,表明主机接下来对从器件进行写操作;方向位位1,表明主机接下来对从器件进行读操作。
A0,A1和A2对应器件的管脚1,2和3,因为仅有唯一的一个24C02芯片,因此A0-A2的设置无关紧要,经验证都是对唯一的那个24C02进行读写操作。

2.1.3 读/写时序
① 读字节时序

② 写字节时序

写一个字节时序,第一个DEV SEL是器件选择信号,器件选择的范围为(000~111),总共可以选择8个24C02芯片器件。但是本实验只用到了1个24C02芯片,所以对应的器件管脚地址A2A1A0为000。第二个信号BYTEADDR是地址信号,表示要对哪一个地址进行操作,第三个DATA IN则是写入的数据。而读操作则是多了一步,DEV SEL和BYTE ADDR后,还有一个DEV SEL,但此信号的最后一位为高,表示是读操作,随后从机会把相应地址的数据发送给主机。

2.2 I2C总线

I2C(Inter-Integrated Circuit)总线是两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。

2.2.1 总线硬件结构图

SCL是时钟线,SDA是数据线;I2C总线信号包括有,启始信号,停止信号和应答信号。

2.2.2 I2C位传输

数据传输:对应SDA_Input,SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;若SDA发生跳变,则用来表示一个会话的开始或结束;
数据改变:对应SDA Change,SCL为低电平时,SDA线才能改变传输的bit。

2.2.3 I2C开始、结束信号与应答信号
开始信号:对应START Condition,SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:对应STOP Condition,SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:
主设备每发送完8bit数据后等待从设备的ACK。
即在第9个clock,从IC发ACK,SDA会被拉低,若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程。

3. 导航按键与按键

3.1 导航按键与按键工作原理


导航按键的每一个方向被按下,都会引起实际电压的改变,从而可以根据这个原理,与A/D转换器配合,可以判断哪个方位被按下,获取按下后A/D转换的结果。
当按键被按下的时候,电路导通接地,I/O口为低电平;当按键未被按下时,电路断开,I/O口保持高电平。

3.2 AD数据采集电路及采集步骤

3.2.1 ADC结构图

STC15系列单片机ADC由多路选择开关、比较器、逐次比较寄存器、10位DAC、转换结果寄存器(ADC_RES和ADC_RESL)以及ADC_CONTR构成。
STC15系列单片机的ADC是逐次比较型ADC。逐次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序的对每一个输入电压与内置D/A转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。逐次比较器具有速度高,低功耗等优点。
从上图可以看出,通过模拟多路开关,将通过ADC07的模拟量输入送给比较器。用数/模转换器DAC转换的模拟量与输入的模拟量通过比较器进行比较,将比较的结果保存到逐次比较寄存器,并通过逐次比较寄存器输出转换结果。A/D转换结束后,最终的转换结果保存到ADC转换结果寄存器ADC_RES和ADC_RESL,同时,置位ADC控制寄存器ADC_CONTR中的A/D转换结束标志位ADC_FLAG,以供程序查询或发出中断申请。模拟通道的选择控制由ADC控制寄存器ADC_CONTR中的CHS2CHS0确定。ADC的转换速度由ADC控制寄存器中的SPEED1和SPEED0确定。在使用ADC之前,应该先给ADC上电,也就是置位ADC控制寄存器中的ADC_POWER位。

3.2.2 ADC采集步骤
① 将ADC0~7的模拟量送到比较器中,用DAC(数/模转换器)转换的模拟量与输入的模 拟量通过比较器进行比较。
② 转换结束后,将比较结果放入转换结果寄存器(ADC_RES和ADC_RESL)。
③ 将ADC_FLAG软件清零
硬件会自动将ADC_START清零,如果需要进行下一次转换,则需要将ADC_START 置位。

特别说明:
① 数码管所显示的ADC转换结果并不是电压值,而是电压进行转换后所得的一个值。
② ADC转换结果是一个10位数据,若ADRJ=0,则ADC_RES存放高八位,ADC_RESL 存放低两位。若ADRJ=1,则ADC_RESL存放高八位,ADC_RES存放低两位。
③ 实际电压计算方式:

3.3 与A/D转换相关寄存器

3.3.1 相关寄存器表

① FLASF寄存器:
STC15系列单片机的A/D转换口在P1口,有8路10位告诉A/D转换器,速度可达300KHz。上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任意一路设置为A/D转换,不需要作为A/D使用的P1口可继续作为I/O口使用。需作为A/D使用的口需先将PLASF特殊寄存器的相应位置置为‘1’,将相应的口设置为模拟功能。

② ADC控制寄存器ADC_CONTR

ADC_POWER:ADC电源控制位
SPEED1、SPEED0:转换器转换速度控制位
ADC_FLAG:模数转换器转换结束标志位
ADC_START:模数转换器转换启动控制位
CHS2~CHS0:模拟输入通道选择

③ ADC转换结果调整寄存器位——ADRJ

4. 蜂鸣器

蜂鸣器分为有源蜂鸣器和无源蜂鸣器,这里的源特指振荡源;有源蜂鸣器直接加电就可以响起,无源蜂鸣器需要我们给提供振荡源。理想的振荡源为一定频率的方波。实验板采用的是无源蜂鸣器,相比与有源蜂鸣器,无源蜂鸣器的优点在于价格便宜,可以通过控制其振动频率来改变发出的声音。

4.1 蜂鸣器工作电路

4.2 蜂鸣器工作原理

实验板使用的无源蜂鸣器是电磁式蜂鸣器,电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,接收到的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
无源蜂鸣器只需改变Beep端口的电平,产生一个周期性的方波即可使蜂鸣器发生声音,不同的频率发出的声音不同。其中,ULN2003是一个功放,用于放大电流。电阻R14和电容C21是用来保护电路的。若人为将Beep端口的电平一直置为高电平,在没有保护电路的情况下,容易烧毁电路,但即使有保护电路也应该注意不要将Beep端口长时间置于高电平,这对器件也是有一定损害的。

5. 串行口通信

STC15F2K60S2系列单片机有2个高速异步串行通信端口;
每个串行口由2个数据缓冲器、一个移位寄存器、一个串行控制寄存器和一个波特率发生器等组成。每个串行口的数据缓冲器由2个互相独立的接收、发送缓冲器构成,可以同时发送和接收数据。发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,因而两个缓冲器可以共用一个地址码。串行口1的两个缓冲器共用的地址码是99H,串行口2的两个缓冲器共用的地址码为9BH;
串行口1的两个缓冲器统称串行通信特殊功能寄存器SBUF;串行口2的两个缓冲器统称串行通信特殊功能寄存器S2BUF。

5.1 串口相关电路图

5.2 串行口1的控制寄存器SCON和PCON

STC15系列单片机的串行口1设有两个控制寄存器:串行控制寄存器SCON和波特率选择特
殊功能寄存器PCON。
串行控制寄存器SCON用于选择串行通信的工作方式和某些控制功能。

5.2.1 SCON : 串行控制寄存器 (可位寻址)

TI: 发送中断请求标志位。在方式0,当串行发送数据第8位结束时,由内部硬件自动置位,
即TI=1,向主机请求中断,响应中断后TI必须用软件清零,即TI=0。在其他方式中,
则在停止位开始发送时由内部硬件置位,即TI=1,响应中断后TI必须用软件清零。
RI: 接收中断请求标志位。在方式0,当串行接收到第8位结束时由内部硬件自动置位RI=1,
向主机请求中断,响应中断后RI必须用软件清零,即RI=0。在其他方式中,串行接收
到停止位的中间时刻由内部硬件置位,即RI=1,向CPU发中断申请,响应中断后RI必须
由软件清零。
注意:串行通信的中断请求:当一帧发送完成,内部硬件自动置位TI,即TI=1,请求中断处理;
当接收完一帧信息时,内部硬件自动置位RI,即RI=1,请求中断处理。由于TI和RI以“或逻辑”关系向主机请求中断,所以主机响应中断时事先并不
知道是TI还是RI请求的中断,必须在中断服务程序中查询TI和RI进行判别,然后分别处理。因此,两个中断请求标志位均不能由硬件自动置位,必须通过软件清0。

5.2.2 PCON : 电源控制寄存器 (不可位寻址)

SMOD:波特率选择位。当用软件置位SMOD,即SMOD=1,则使串行通信方式1、2、3的波特率加倍;SMOD=0,则各工作方式的波特率加倍。复位时SMOD=0。
SMOD0:帧错误检测有效控制位。当SMOD0=1,SCON寄存器中的SM0/FE位用于FE(帧错误检测)功能;当SMOD0=0,SCON寄存器中的SM0/FE位用于SM0功能,和SM1一起指
定串行口的工作方式。复位时SMOD0=0

5.3 串行口数据缓冲寄存器SBUF

STC15系列单片机的串行口1缓冲寄存器(SBUF)的地址是99H,实际是2个缓冲器,写SBUF
的操作完成待发送数据的加载,读SBUF的操作可获得已接收到的数据。两个操作分别对应两个
不同的寄存器,1个是只写寄存器,1个是只读寄存器。
串行通道内设有数据寄存器。在所有的串行通信方式中,在写入SBUF信号(MOV SBUF,A)
的控制下,把数据装入相同的9位移位寄存器,前面8位为数据字节,其最低位为移位寄存器的
输出位。根据不同的工作方式会自动将“1”或TB8的值装入移位寄存器的第9位,并进行发送。
串行通道的接收寄存器是一个输入移位寄存器。在方式0时它的字长为8位,其他方式时为9位。当一帧接收完毕,移位寄存器中的数据字节装入串行数据缓冲器SBUF中,其第9位则装入 SCON寄存器中的RB8位。如果由于SM2使得已接收到的数据无效时,RB8和SBUF中内容不变。
由于接收通道内设有输入移位寄存器和SBUF缓冲器,从而能使一帧接收完将数据由移位
寄存器装入SBUF后,可立即开始接收下一帧信息,主机应在该帧接收结束前从SBUF缓冲器中
将数据取走,否则前一帧数据将丢失。SBUF以并行方式送往内部数据总线。

下一部分将讲述具体实现方法及代码链接

HNU小学期计算机系统设计与创新基础训练——基于STC学习板的加密信息存储与游戏操作系统(第一部分设计思路+基础原理)相关推荐

  1. 计算机高校应用现状的参考文献,学期计算机论文,关于高校专业应用为导向的小学期计算机课程改革方案相关参考文献资料-免费论文范文...

    导读:本文关于学期计算机论文范文,可以做为相关论文参考文献,与写作提纲思路参考. 关雪梅 (辽宁对外经贸学院基础课教研部,辽宁大连116052) 摘 要:在现代高等教育中,学期制改革在高校中逐渐展开, ...

  2. 计算机小学期实践报告,小学期计算机实践报告

    小学期计算机实习报告 一.实习目的 通过完成任务,学习并熟悉相关软件.了解并熟悉设计过程,从初步设计到实现到不断完善,掌握设计流程. 二 .实习任务 1.计算器程序 制作一个计算器程序: 支持2进制. ...

  3. 深度学习 数码管_创新研发基于深度学习的可见光智能检测技术

    "随着国家智能电网战略布局的不断实施,依托于巡检机器人的变电站智能巡检技术必将逐步取代人力,成为电网巡检的主流.国电瑞源智能巡检机器人搭载基于可见光的智能检测技术实现输电设备异物检测.变电站 ...

  4. 北科大计算机小学期,北京科技大学小学期计算机实践(C++源代码)

    北京科技大学的暑期小学期有计算机实践,要求编写一个小的数据库查询系统,这个代码仅供参考,因为并不完善,自己并没有学得很好,不喜勿喷. /* 创建者:沈冲 完成时间:2011-7-21 */ #incl ...

  5. HNU小学期实训课设

    1,设计概述 由于社会的发展和科技的进步,人们对生活品质要求越来越高,而计算机时代的来临和物联网技术的发展也会给我们的生活带来巨大的变化,所以我希望通过物联网传感技术实现对闹钟的创意设计,从而改进人们 ...

  6. 【HNU小学期硬件实训】基于QT上位机的汽车监控警报系统

    测试视频已上传到b站: 基于QT上位机的汽车监控警报系统 一.绪论 本次实验的选题是基于 QT 上位机的汽车行驶监控警报系统,灵感来源于本人在行驶电动车过程 中遇到的问题,为汽车模拟了不同的场景,外接 ...

  7. 小学期计算机考试,小学期来啦 ! 你准备好了吗 ?

    原标题:小学期来啦 ! 你准备好了吗 ? 伴随着考试周的结束 相信不少同学已经准备好拥抱接下来的假期了 但 是 !!! 想放假回家可没有那么容易 还必须要解锁最后一个关卡 它的名字就是 ...... ...

  8. hnu小学期实训之数圈

    文章目录 题目 思路 代码 收获 题目 思路 其实看到的第一眼我是想利用递归来求解的,但是它这个数圈很奇怪,不是很好利用第n-1个数圈推出第n个数圈.所以就模拟一个一个的暴力打出来.两点在于定义了一个 ...

  9. hnu小学期软件实训-拳王阿里

    [问题描述] 阿里是上个世纪美国最著名的拳击手,阿里在20年的时间里多次获得重量级拳王称号.不过不幸的是,他在之后患上了帕金森氏病.他参加了许多比赛,多到连自己都数不清了.     有这么一段时间,他 ...

最新文章

  1. 11 个 Linux 终端命令,没用过的快去试试吧!
  2. 你的「所见所闻」,才是电视的核心竞争力
  3. ffmpeg 从mp4上提取H264的nalu
  4. ActionForm类及表单数据验证
  5. 142. Linked List Cycle II 环形链表 II
  6. The Closest M Points BZOJ 3053
  7. (67)Verilog HDL模块条件例化
  8. 简单函数编写_strcpy、_stroverchg、_strcmp
  9. php中include包含文件路径查找过程
  10. 频谱感知1:未知确定信号的能量检测
  11. 怎么制作游戏脚本_自动玩游戏,手游脚本究竟是怎么做的?
  12. Port Security (端口安全)
  13. 批处理命令之Start的详细用法
  14. sublime text3 字体样式_Sublime Text3 Github最受欢迎主题字体推荐!
  15. 高级数据结构——海量数据(位图,布隆过滤器)
  16. 软件架构非功能需求——可靠性
  17. 解决Vue配置路由不生效,自动跳转到首页
  18. SONiC Warm Reboot
  19. TFTLCD之FSMC详解
  20. B站脑机接口主流算法解析课程视频汇总

热门文章

  1. C语言结构体的声明和定义
  2. 最优化基础理论和知识——1.21.3一部分
  3. 混沌系统的控制[文献总结](一)
  4. SQL 查找表名,字段名
  5. 天猫店群玩法,天猫无货源店群这样操作,优化宝贝不降权!
  6. C# 文本输入限制类型,datagridview单元格输入验证
  7. win11家庭版安装Docker
  8. 现在计算机二级都是机考了吗,计算机二级全部实行机考
  9. php 自动签到源码,CHINAZ站长论坛自动签到--让你每天都第一个签到
  10. 【Python】利用tkinter与图灵机器人制作智能聊天系统