时钟频率,相当于人体的心脏,没有它就挂。 复位电路由一个电阻和一个电容构成,学过模电又聪明的的你应该懂得这叫阻容 复位电路,它的输出加载在单片机的复位引脚就是给单片机一个上电的缓冲时 间,保证单片机正常工作。 但是,但是,但是(重要的事情说三遍),上述电路在仿真软件里面是不起作用 的,也就是说你把他们统统删掉,单片机照样飞奔。并且,你看到那个晶振的频 率为11.0592,其实那个也是虚的,真实的单片机晶振在这里(双击单片机本身)
RS -- 这个是用来选择发送的是地址还是数据的,(因为 1602 的显示是需要 先发送地址,告诉人家我要在哪个地方显示,然后再发送数据,告诉人家我要在 这个地方显示什么内容),所以如果发送地址的时候,RS 就要设为 0;发送数据 时,RS 就要设为 1.
E -- 使能引脚 当该引脚为 1 时,表示 LCD 禁止被写入,为 0 表示允许被写 入;所以如果我们要往里面写数据时,就需要拉低它,写完后,再拉高。
由于该设计使用的按键较多,拍屁股一想,只能用矩阵键盘,节约 IO 口, 还显得高大上。矩阵键盘最明显的优势就是占用的 IO口少,比如 16 个按键,要 接独立按键就需要 16 个 IO 口,但是如果接成矩阵键盘就只需要 8 个 IO 口。现 在来看一下矩阵键盘的工作原理。在矩阵键盘里面,每一个按键的两端各占一个
平,如果读到 B 口为高电平,则表示该按键没有按下,如果读到 B 口为低电平, 则表示该按键被按下。
线圈导通,继电器吸合。 六、LED电路
如果你想看程序,请你务必安装 KEIL4 软件,这样才能看的心 安理得,切忌懒惰!!!
是一 个整体)。 每个文件的功能大致如下: Main.c --- 主文件,调用其他文件中的函数 Key.c --- 按键文件,处理矩阵按键 Lcd1602.c --- 显示器文件,处理液晶显示
对于 main 函数,其核心思想就是状态机(就是把整个软件分成多个状态,在 不同的触发条件下,切换到不同的状态下运行)。
整个软件分成三个状态:初始化状态,密码生成状态,密码输入状态。 程序里面用一个变量 global_state 来存储各种状态,并且各个状态的用如下数
初始化状态 --- 0 密码生成状态 --- 1 密码输入状态 --- 2
四列,本设计采用的是行扫描法,也就是说每次给四行当中的一行输出低电平(其 他三行为高电平),然后再读取四列的值,如果发现四列全部为高电平,那么就 表示没有按键按下,如果有某一列为低电平,就表示有按键按下了。 比如我让四行当中的第一行(P00)为0,同时读取四列,发现第一列(P04)为 低电平,那么就说明”1”按键被按下。
先来普及一下 1602 的基本知识,该液晶显示 2 行,每行显示 16 个字符,并 且它不能显示中文。
对于每个字符来说都有相应的地址,第一行的 16 个字符的地址是 0x80-0x8f, 第二行的 16 个字符的地址是 0xc0-0xcf。如下表所示
0x80 | 0x81 | 0x82 | 0x83 | 0x84 | 0x85 | 0x86 | 0x87 | 0x88 | 0x89 | 0x8a | 0x8b | 0x8c | 0x8d | 0x8e | 0x8f |
0xc0 | 0xc1 | 0xc2 | 0xc3 | 0xc4 | 0xc5 | 0xc6 | 0xc7 | 0xc8 | 0xc9 | 0xca | 0xcb | 0xcc | 0xcd | 0xce | 0xcf |
址(告诉它我要在哪里显示),第二部给它输入要显示的字符(告诉它我要在这 里显示什么东西)。并且要注意的是,显示的内容是需要字符形式,比如要显示 数字 1,就不能直接给 1,而是需要将整数 1 换算成字符的‘1’(1+0x30=’1’)才 能正确显示。
现在我们想让液晶在左上角显示字母‘a’,从上表得知,左上角的地址为 0x80。 所以分如下两步,就可以显示
2、回到仿真主界面,点击开始按钮,
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |