基于51单片机的人机接口电路设计(贺铁梅)2012.09.08
简单51单片机开发板的电路设计

简单51单片机开发板的电路设计51单片机开发板电路设计详细步骤及说明如下:一、准备工作1.定义开发板功能需求:根据具体需求确定开发板所需的功能模块,如AD转换、LCD显示、键盘输入等。
2.确定系统时钟源:选择合适的晶振,并确定时钟源用于驱动单片机。
二、电源设计1.选择适当的电源电压:根据单片机的工作电压范围选择合适的电源电压,并设计电源电路。
2.设计稳压电路:根据电源要求设计合适的稳压电路,保证单片机工作时电压稳定。
三、时钟电路设计1.选择合适的晶振:根据系统时钟需求选择合适的晶振,并设计相应的晶振电路。
2.设计时钟源电路:根据晶振的工作参数设计合适的时钟源电路,确保时钟信号稳定且频率准确。
四、复位电路设计1.根据单片机复位要求设计复位电路,保证单片机正常复位。
2.设计复位延时电路:根据需要设计复位延时电路,保证单片机复位后稳定运行。
五、外部IO电路设计1.根据开发板需求,设计并布局合适的IO接口电路,如LED指示灯、按键输入接口等。
2.设计并连接AD转换电路:根据需求设计和连接AD转换电路,实现模拟信号的采集和处理。
六、通信接口电路设计1.根据需求设计并连接串口接口电路,实现与其他设备的通信。
2.根据需要设计并连接其他通信接口电路,如SPI、I2C等。
七、存储器电路设计1.根据需求设计并连接存储器电路,如RAM、ROM等。
2.根据需要设计和连接外部存储器接口电路,实现扩展存储器的功能。
八、电路调试与优化1.完成电路设计后,进行电路连线、焊接等工作,并检查和修正可能存在的错误。
2.进行电路测试并优化,确保电路正常工作,并根据需要进行性能优化。
九、布局设计与外壳制作1.进行电路板的布局设计,合理安排各个模块的位置。
2.制作外壳和连接线,并进行电路板的安装。
最后,完成电路设计之后,可以进行软件编程和调试,将单片机与外设模块进行连接和通信,实现开发板的各项功能。
【精品毕设】基于51单片机类人机器人智能巡线的设计与实现

毕业设计指导课基于51单片机类人机器人智能巡线的设计与实现摘要:针对类人机器人如何在规定的赛道上实现智能巡线行走的问题,提出采用利用灰度传感器识别赛道,并以51单片机为核心对机器人编程控制的方法,实现该类人机器人通过识别白色光敏带赛道,遇到转弯信号能及时反馈并准确转弯的功能。
通过脱机运行、步态调试和现场模拟等实验表明,基本实现类人机器人在规定赛道智能巡线行走,但存在反应调整时间长、速度较慢等问题还未有效解决。
经过适当改造之后,该机器人既能克服传统类人机器人结构复杂行走不稳的缺点,又可以在一定程度上模仿人类行走动作,实现在复杂外部环境地形内探测行走的问题。
关键词:智能巡线;灰度传感器;51单片机;类人机器人Design and Implementation of Intelligent Robot Tracking Control SystemBased on 51 SinglechipAbstract: For how the humanoid robot in the provisions of the track to achieve intelligent patrol line walking problem,proposed to use the gray sensor to identify the track and 51 single-chip as the core of the robot programming control method, To achieve the type of human robot through the identification of white light-sensitive track, encountered turn signal can be timely feedback and accurate turning function. Off-line operation, gait debugging and field simulation experiments show that the basic realization of the humanoid robot in the provisions of the track intelligent patrol line walking, but there is a long time to adjust the reaction, the speed is slow and other issues have not been effectively resolved. After appropriate modification, the robot can overcome the shortcomings of the traditional humanoid robot structure complex movement instability, but also to a certain extent, imitate the human walking action, in the complex external environment to detect the problem of walking within the terrain.Keywords: Intelligent inspection line; Gray scale sensor; 51 single chip; Humanoid robot目录目录 (1)第一章引言 (2)1.1选题背景及意义 (3)1.2 国内外研究现状 (3)1.3本文主要研究内容及章节安排 (3)第二章类人机器人的设计及控制 (3)2.1 类人机器人的智能巡线系统设计 (3)2.2 系统的优越性 (4)第三章硬件设计 (5)3.1 51单片机的电路设计 (5)3.2 灰度传感器的使用 (5)3.3 C型足的设计 (5)第四章总结 (6)参考文献 (7)第一章引言1.1选题背景及意义机器人技术是一项有远大前景的技术,不仅在科学、军事、工业、生活领域变得越来重要,而且智能教育机器人的研究也越来越普及。
第7章51单片机人机交互课件

选通第二个三极管
送数字1
延时
选通第三个三极管
送数字2
延时
第第47章章 5M1单CS片-5机1单人片机机交系互统功能的扩展
五、LED控制的单片机程序设计
1. 图7-4 LED静态显示电路的应用汇编语言编程如下:
ORG 0000H
LJMP MAIN
ORG 0010H
;-------------第一片74LS74工作-------------
第第47章章 5M1单CS片-5机1单人片机机交系互统功能的扩展
2. 动态显示方式
动态显示方式是指一位一位地轮流点亮每位显示器,即 每个数码管的位选被轮流选中,多个数码管公用一组段 选。
显示时,段选控制相应字符段选码,位选控制该显示 位的电平。并保持延时一段时间,以造成视觉暂留效果。 刷新周期一般约为50ms。
动LED。当单片机的I/O端口PXX为高电平时,反相器
输出低电平,LED发光;当单片机的I/O端口为低电平
时,反相器输出高电平,没有电流流过LED,LED熄灭。
7406
VCC
LED
R
PXX
Vcs
Vf
图7-2 单个LED的驱动接口电路
限流电阻计算如公式(7-2)所示
R Vcc VF Vcs
IF
(7-2)
第第47章章 5M1单CS片-5机1单人片机机交系互统功能的扩展
三、LED数码管的工作方式
LED数码管显示器常用的工作方式又可分为: 静态方式显示和动态方式显示两种。
在设计过程中可以根据系统总体资源分配情况, 选择合适的方式。
第第47章章 5M1单CS片-5机1单人片机机交系互统功能的扩展
1. 静态显示方式
第8章 51单片机人机接口设计

(3)键盘的三种工作方式
① 编程扫描方式(查询方式) ② 中断工作方式 ③ 定时扫描方式
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
8.3
键盘抖动及消除
由于键盘的机械特性,键盘在按下和松开的过程中会存在 抖动过程,具体如图所示:
键抖动可能导致计算机将按键操作识别为多次操作。为 了消除干扰,必须采取措施消除抖动。
④
按键的识别过程及程序
(1)逐行/列扫描法 ① 所有输出口输出0,读取输入口; ② 如果输入口全为1,重新执行第1步, 否则; ③ 输出(列)口逐个送0,读取输入口 全为1,下一个输出口送0,否则; ④ 记录当前列值N,同时进行行扫描; 记录行值M。 计算获取键值=(M-1)×4+N
8051
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
8.2.2非编码键盘
(1)独立式键盘
特点: 一键一线。 优点: 结构简单,键容易识别。 缺点: 占用较多I/O口线, 不便组成大型键盘。
P0 .0 P0.1 P0.2 P0.3
+5V
S1 S2 S3 S4
8051
(2)矩阵式键盘
特点: 把检测线分成二组,一组为行线,另一组为列线,按键放 在行线和列线的交叉点上。或称为:输入口和输出口。 优点: 键盘规模可扩大。 8051 缺点: 键盘分析程序较复杂。
f
g e d
b
c dp
共阴极
共阳极
+5V
a b c
d e f g dp (a)
a b c d e f g dp (b)
为了让数码管能正确显示数字或字母,须点亮相 应的段,这样就需要对其译码。在译码方式上主要有 两种,硬件和软件。 无论是硬件译码还是软件译码,实际是都是给出 要显示数字或者字符的段码。
基于MCS—51单片机的安全报警系统的设计

基于MCS—51单片机的安全报警系统的设计作者:梅桂静岳立喜卢艳楠尹金枝来源:《价值工程》2013年第21期摘要:随着城市人口增加,住宅小区增多,小区居民的安全防范要求增强。
目前,出现了智能住宅安全防范系统,本文对安全报警系统进行了研究,提高了防盗系统的智能化水平。
Abstract: As the urban population increases, the residential district increased, and the demand for security of residents is higher. The paper studies the safety alarm system, improving the intelligence level of anti-theft systems.关键词:安全防范系统;防盗报警系统;单片机Key words: security and protection system;burglar alarm systems;single-chip microcomputer中图分类号:TP311 文献标识码:A 文章编号:1006-4311(2013)21-0203-020 引言随着人口增加,住宅小区增多,小区居民的安全防范要求增强。
目前,多采用防盗门窗装防盗网措施,难以满足要求,出现了智能住宅防范系统。
该系统由安全对讲系统、防盗报警系统、火灾报警系统和防煤气泄漏系统组成。
本文对以单片机为核心的报警系统进行了设计,实际使用时,还可加摄录像,报警时启动自动录像,完善监控报警系统。
1 硬件系统与功能1.1 简介硬件系统包括MCS-51单片机、红外探测器、电话接口电路、串行输入电路、自动复位电路、电源电路等元部件。
将带锁定功能的开关控制红外线发射器安装在保险门锁上,当门反锁时红外线发射器给电启动。
如果有人不开锁直接进入房间,红外探测器随即将探测到人的信号传输至单片机,单片机根据已设定的程序作出是否报警的判断。
51单片机控制四相步进电机电路图9页word文档

51单片机控制四相步进电机接触单片机快两年了,不过只是非常业余的兴趣,实践却不多,到现在还算是个初学者吧。
这几天给自己的任务就是搞定步进电机的单片机控制。
以前曾看过有关步进电机原理和控制的资料,毕竟自己没有做过,对其具体原理还不是很清楚。
今天从淘宝网买了一个EPSON 的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下图所示:拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。
地线与四线接触的顺序相反,电机的转向也相反。
如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。
通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四线脉冲电流的顺序,则可实现对转向的控制。
所以,设计了如下电路图:C51程序代码为:代码一#include <AT89X51.h>static unsigned int count;static unsigned int endcount;void delay();void main(void){count = 0;P1_0 = 0;P1_1 = 0;P1_2 = 0;P1_3 = 0;EA = 1; //允许CPU中断TMOD = 0x11; //设定时器0和1为16位模式1ET0 = 1; //定时器0中断允许TH0 = 0xFC;TL0 = 0x18; //设定时每隔1ms中断一次TR0 = 1; //开始计数startrun:P1_3 = 0;P1_0 = 1;delay();P1_0 = 0;P1_1 = 1;delay();P1_1 = 0;P1_2 = 1;delay();P1_2 = 0;P1_3 = 1;delay();goto startrun;}//定时器0中断处理void timeint(void) interrupt 1{TH0=0xFC;TL0=0x18; //设定时每隔1ms中断一次count++;}void delay(){endcount=2;count=0;do{}while(count<endcount);}将上面的程序编译,用ISP下载线下载至单片机运行,步进电机便转动起来了,初步告捷!不过,上面的程序还只是实现了步进电机的初步控制,速度和方向的控制还不够灵活,另外,由于没有利用步进电机内线圈之间的“中间状态”,步进电机的步进角度为18度。
基于51单片机的无线充电智能控制设计

基于51单片机的无线充电智能控制设计作者:王正光黄飞周诗超付鹏宇宋诗雨来源:《中国科技博览》2013年第26期[摘要]设计无线充电电路系统,控制部分以单片机AT89S51为核心,设计蓝牙单片机接口,以手机/PC的蓝牙调试助手为人机交互界面,对无线充电开始或结束进行控制,并设计语音提示、液晶屏显示功能。
该设计系统具有可控制,无线充电,能量传输效果好,无需布线等优势,有着广泛的应用前景。
[关键字]AT89S51单片机蓝牙模块无线充电智能控制中图分类号:TN657.1 文献标识码:A 文章编号:1009-914X(2013)26-291-01引言现今的大部分非接触式传电仍然采用手动或是接触式控制,不能对无线充电设备进行有效实时控制。
因而实现可控制、高效率、大功率、长距离便成了今后关于无线充电的主要研究方向。
一、系统结构本设计由发射电路、接收电路、控制电路三部分组成。
无线充电系统主要采用电磁感应原理,通过线圈进行能量耦合实现能量的传递。
如图1所示,系统工作时输入端将交流电经桥式整流电路变换成直流电,当接收线圈与发射线圈靠近时,在接收线圈中产生感生电压,当接收线圈回路的谐振频率与发射频率相同时产生谐振,电压达最大值,具有最好的能量传输效果,次级线圈输出的电流经转换电路变化成直流电为电池充电。
本系统建立手机/PC端蓝牙和从机蓝牙模块的通信,通过蓝牙调试助手发送相应指令给下位机主机AT89C51单片机,单片机控制继电器开端实现充电与否,同时驱动喇叭和LCD提示充电开始与结束、充电时间等信息。
二、硬件设计1、发射端为了使得发射端和接受端两谐振体能在稳定设定的频率下产生谐振并传输功率,驱动源必须有频率可调和功率放大功能,且在高频下能有较好的输出波形。
在输入波形上,我们选用TTL波,因为其在相同的时间内携带的能量较三角波和正弦波都高。
信号源直接采用信号发生器,它能稳定产生可调的最高至3MHz的TTL波。
在功率放大电路中,我们选用IXDD409做为功率放大芯片。
单片机控制的人机接口

单片机控制的人机接口贺世云(阿城电站设备自动化设计研究所哈尔滨150303)摘 要:单片机现已成为电力系统保护中常用的硬件。
本文介绍以以Inte l 公司的16位单片机80C196K B 为核心的人机接口控制方案,并详细说明了其硬件原理及软件实现。
关键词:单片机;实时时钟;通讯接口;C M OS 技术0 引言随集成电路和计算机技术的飞速发展,计算机保护在电力系统中的应用和发展也是十分迅速的,它主要依靠计算机智能地实现保护功能和自动控制。
它的主要部分是计算机本体,用来分析电力系统的有关电量及判断系统是否发生故障,决定是否发出跳闸信号。
1 硬件原理以Inte l 公司新一代高速16位单片机80C196KB 为核心,它具有运算速度快、控制能力强运行安全可靠,而且内部设有监视定时器,能随时解脱软件故障造成的死机现象,为装置长期稳定运行提供了保证。
1 1 总体框图主要由时钟接口电路、键盘接口、液晶显示电路、与保护通讯接口、与上位机通讯接口及其打印机接口等组成,其原理框图如下图所示。
下面主要介绍时钟接口电路、与保护通讯接口、与上位机通讯接口及其打印机接口。
附图 人机对话通道接口原理框图1 2 实时时钟电路选用美国DALL AS 公司推出的DS12887实时时钟芯片。
采用C MOS 技术制成,把时钟芯片所需的晶振和外部锂电池相关电路集成于芯片内部,同时还与I B M AT 计算机常用MC146818B 和DS1287管脚兼容可直接替换。
时钟电路设计勿需任何外围电路并具有良好的微机接口。
它具有微功耗、外围接口简单、精度高、工作稳定可靠等优点。
内含锂电池,断电情况运行十年以上不丢失数据。
模式选择脚MOT 接地,选择I N TEL 时序;DS12887的数据总线及AS 地址选通输入端与80C196KB 单片机的数据总线及ALE 脚直接相连;而DS 、R /W 读写控制线与单片机的RD 、W R 控制线相连;片选信号CS 来自与地址译码器件34电 站 设 备 自 动 化 2007年3月 第1期GAL16V8;复位输出(RESET)取自微处理器监控芯片MAX705,当保持低电平时间大于20m s,保证DS12887有效复位。
MCS-51单片机第七章 人机交互通道配置及其接口技术

描完。
要注意的两个问题:
1.字型码通常通过查表指令MOVC来求得.
2.换位显示时通Be常ijin要g In加sti一tute段of程Pe序tro-使che所mi有cal的TecLhEnDol全ogy灭.
动态显示程序流程图
采用动态扫描方式依次循环点亮各位数码管,构成
多位动态数码管显示电路。
1
开始
指向段选口,送字型码
DJNZ R2,$
DJNZ R1,AGAIN ;2μs
NOP
;1μs
NOP
;1μs
NOP
;1μs
NOP
;1μs
NOP
;1μs
RET
;2μs
END
;2μs×48 ×10
Beijing Institute of Petro-chemical Technology
7.2.2 LED数码管及其应用
共阳极
共阴极
7.2.2 LED数码管及其应用
显示0~9程序
DELAY: MOV R7, #10
ORG 0000H
MAIN : MOV R0, #0
MOV R4, #10
;存要显示的数 ;存循环次数
DEL0: MOV R6, #200 DEL1: MOV R5, #250 DEL2: DJNZ R5, DEL2
…
WTAB: DB 3FH,06H,5BH
…
P1.0~1.7 MCS-51
aa
bf
b
g
he
c
dh
;指向字形码表首地址 ;取显示缓冲区中数据 ;查表显示译码 ;输出显示
;字形码表
COM
Beijing Institute of Petro-chemical Technology
基于51单片机的“扫地机器人”设计报告

第十二届智能控制设计大赛初级组之基于51单片机的“扫地机器人”设计报告目录一、设计要求 ........................................................................................ 错误!未定义书签。
1.基本要求:.......................................................................................... 错误!未定义书签。
2.拓展要求:.......................................................................................... 错误!未定义书签。
二、设计思路 ........................................................................................ 错误!未定义书签。
三、方案比较 (3)1、洞洞板的选择 (3)2、芯片的选择 (3)3、单片机键盘的选择 (3)4、LCD的选择...................................................................................... 错误!未定义书签。
5、电源的选择....................................................................................... 错误!未定义书签。
6、储存模块的选择 (4)7、时钟模块的选择 (4)8、最终选用方案 (4)四、一些模块的选择及底盘制作 ........................................................... 错误!未定义书签。
基于51单片机智能娃娃的设计

基于51单片机智能娃娃的设计智能娃娃是一种集合了现代科技和儿童教育的玩具,其具有可以让儿童得到关爱、交流、互动与学习等多种功能,而目前,基于51单片机的智能娃娃产品越来越受到关注。
本文旨在介绍一种基于51单片机实现的智能娃娃设计,并在此基础上提出进一步探索的思路和方向。
1. 设计目标和原理设计目标是开发出一款能够陪伴儿童的智能娃娃产品,其具有语音、互动和学习能力,能够与人类进行智能对话,利用内置的人工智能算法,能够实现自学习、自适应和自主打磨能力。
其原理是基于51单片机构建硬件控制环境,使用开发板、语音识别芯片、红外遥控器等硬件,并通过固件编程实现逻辑控制。
2. 硬件组成及功能硬件组成包括主控芯片、增强芯片、语音识别芯片、红外遥控芯片、扬声器、麦克风、步进电机和舵机等。
主控芯片是51单片机,它具有对其他硬件的控制和信息处理的功能;增强芯片可以为主控芯片提供更多的I/O口,以扩展更多的硬件设备;语音识别芯片可以实现对儿童语音的识别和处理;红外遥控芯片可以实现对儿童语音的控制,例如启动、停止、暂停等;扬声器和麦克风可以实现对话功能;步进电机用于控制娃娃的动作;舵机用于控制娃娃的表情变化。
以上硬件设备的功能共同构成了智能娃娃的语音识别、交互和表情展示等基本功能。
3. 软件架构智能娃娃的软件架构包括应用层、数据层和底层。
应用层即用户界面,通过语音交互进行控制;数据层主要是当前娃娃运动的状态、待执行的任务和交互过程中儿童的输入;底层包括操作系统和设备驱动程序,其主要任务是实现硬件的交互,例如舵机和步进电机的调控、语音识别芯片的信息处理等。
4. 程序设计实现程序的设计实现可以利用51单片机提供的软件开发套件(SDK),通过C语言进行编码。
其中,SDK具有对51单片机接口、GPIO口、串口、中断服务、时钟变速等底层操作的封装。
因此,程序开发的实现方式主要是在SDK基础上进行完成。
具体实现过程需要按照设计需求进行开发和测试。
一种基于51单片机的智能安防机器人设计

一种基于51单片机的智能安防机器人设计
一种基于51 单片机的智能安防机器人设计
李辰迪1 王艳新2 马立婧1 蔺鹤1 余虹1
【摘要】就人力安防而言,机器人安防更具实时性和可靠性。
本文提出了一种智能安防机器人的设计方案,机器人以51 单片机为核心,使用轮子进行移动,利用各类传感器对环境进行监测,通过无线技术实现远程控制和数据传输。
除了固有的险情报警、环境检测、自动巡逻等功能外还预留接口供日后功能的拓展。
该方案成本低,易维护,应用前景广阔。
【期刊名称】科技创新与应用
【年(卷),期】2013(000)006
【总页数】1
【关键词】安防机器人;51 单片机;传感器
引言
智能安防机器人是现今智能安防技术发展的一个方向,相较于传统的人力安防,智能安防机器人更具有实时性和可靠性,在各种危险场所(如化学品仓库等)尤为突出。
智能安防机器人基本组成是一套传感器系统和控制系统,针对定点放置报警器使用范围小和不灵活的缺点,安防机器人能够自由移动,任意设置监测点。
这使其具有了很广阔的研发和应用前景。
目前市面上已有的安防机器人大都进口于国外,价格十分昂贵,维护也比较困难。
故设计一个成本低,维护简易的安防机器人很有意义。
本文所提供的方案采用了51 单片机为核心,模块化的传感器和驱动装置。
这使得软硬件制作和维护成本控制在了很低的范围内,性能价格比十分突出。
1 硬件方案。
第15讲:MCS-51单片机系统的人机接口设计

单片机与控制技术
电气学院:胡学军
第06章:人机接口设计【教材第8章】
2、LED显示技术
LED显示器用于显示工业控制参数、 过程状态。 1)LED数码管 共阴极LED和共阳极LED 当LED字段引线与数据线连接,每个 显示字形对应一个字形码。
a
b
h
COM D7 D6 D5 D4 D3 D2 D1 D0 h g f e d c b a
LED的字形码(字段码)
显示字符 共阴极 共阳极
本讲小结
1、非编码键盘(独立式、行列式)的硬件与编程 2、七段LED的显示原理(静态显示、动态显示) 3、掌握利用8155扩展键盘和显示器的方法!(教材实例) 4、掌握利用8255扩展键盘和显示器的方法!(课后习题T5)
课后习题:
P252
D1
D2
D3
D4
D5
a f g e c d h
COM COM COM
显示缓冲区 地址 内容
b
7AH 7BH 7CH 7DH 7EH 7FH
D0 D1 D2
显示缓冲区与多位LED对应关系:
显示程序 DIS: MOV R0,#7AH ;指向显示缓冲区起始单元 MOV R3,#01H ;字位码初值→R3 MOV A,R3 ;取字位码 DLP: MOV DPTR,#PAAR;指向字位口 (PA口) MOVX @DPTR,A ;输出字位码,显示其中1位 MOV A,@R0 ;取一个显示数据 ADD A,#0CH ;查表偏移量 MOVC A,@A+PC ;取出字形码 INC DPTR ;指向字段口(PB口) MOVX @DPTR,A ;输出字形码 ACALL DLY1MS ;延时1ms INC R0 ;指向显缓区下一单元 MOV A,R3 ;修改字位码 RL A ;显示下一位 MOV R3,A JNB ACC.6,DLP ;未显示到最右边LED,继续显示 RET ;全部扫描一遍,结束 DTAB:DB 0C0H,0F9H,0A4H ;字形表 DB 0B0H,99H, DLY1MS:… ;延时1ms子程序
(完整word版)单片机人机接口设计

目录1.课程设计目的 (1)2.课程设计要求 (1)3.KEIL基本介绍 (1)4.人机接口设计 (2)4.1实验设计流程 (2)4.2实验原理图 (3)4.3实验源代码 (3)5 结果分析 (6)6 实验总结 (6)7、参考文献 (6)单片机人机接口设计1.课程设计目的(1)对大学所学课程进行汇总。
(2)通过设计单片机来实现人机接口。
(3)掌握基本keil的运用。
2.课程设计要求1. 熟悉人机接口基本原理。
2. 设计人机接口电路。
3. 焊接电路板。
4. 调试程序并进行结果验证及分析3.keil基本介绍Keil C51 µVision2集成开发环境是Keil Software,Inc/Keil Elektronik GmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C 编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。
这个工具套件是为专业软件开发人员设计的,但任何层次的编程人员都可以使用,并获得80C51单片机的绝大部分应用。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
Keil C51单片机软件开发系统的整体结构;C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的继承开发环境(IDE),可以完成编辑,编译,连接,调试,方针等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及A51编辑器编译生成木匾文件(OBJ)。
Keil C51集成开发环境的主要功能有以下几点:1.µVisio n2 for Windows:是一个集成开发环境,它将项目管理、源代码编辑和程序调试等组合在一个功能强大的环境中;2.C51国际际准化C交叉编译器:从C源代码产生可重定位的目标模块;3.A51宏汇编器:从80C51汇编源代码产生可重定位的目标模块;4.BL51链接器/定位器:组合由C51和A51产生的可重定位的目标模块,生成绝对目标模块;5.LIB51库管理器:从目标模块生成连接器可以使用的库文件;6.OH51目标文件至HEX格式的转换器,从绝对目标模块生成Intel Hex文件;7.RTX-51实时操作系统:简化了复杂的实时应用软件项目的设计。
基于51单片机和FPGA的人机交互系统的设计

基于51单片机和FPGA的人机交互系统的设计
基于51 单片机和FPGA 的人机交互系统的设计
在现代各类仪器的开发中,人机交互功能正起着无可替代的作用。
人
机交互界面友好的仪器将更容易操作和使用,从而提高工作效率。
液晶显示器(LCD)具有功耗低、价格低、寿命长、接口控制方便等特点,在科研与设计
领域正发挥着越来越大的作用。
FPGA 作为单片机外设的接口芯片,可以大大简化接口电路,通过对FPGA 进行编程,可以实现常用的译码、地址选通等功能。
本文以C8051F020 单片机与FPGA 互连系统为控制核心,以液晶显示控制器T6963C 为例,结合行扫描键盘,简述了一种人机交互功能的设计。
1 系统设计方案:
FPGA 可在很大程度上扩展单片机的资源,然而人机交互功能仍应尽量减少对单片机及FPGA 的资源消耗,以便将更多的片内资源用于其他功能的扩展。
采用FPGA 扫描键盘可以节省单片机的资源,同时也能灵活地实现键盘的扩展。
而考虑到液晶控制较复杂,依然采用单片机控制LCD,使LCD 的各种功能得到最大程度的利用,其系统框图如图1 所示。
2 硬件电路及FPGA 接口设计:
2.1 总线接口设计:
这里采用单片机C8051F020 与CycloneⅡFPGA 互连的系统。
C8051F020 器件是完全集成的混合信号系统级MCU 芯片,具有64 个数字I/O 引脚,与8051 完全兼容,而且速度得到了极大提高,70%的指令执行时间为1 或2 个系统时钟周期,只有4 条指令的执行时间大于4 个系统时钟周期。
此外,C8051F020 系列MCU 对CIP-51 内核和外设有几项关键性的改进,提高。
【免费下载】实验三实验报告单片机人机接口设计

输入 为加
输出示数加一
宁波大学信息学院 2013(2)“单片机原理及应用 1”实验报告
源代码必须有必要的注释,且要与流程图的逻辑关系对应。
1、 主程序 work.c #include<c8051f020.h> #include<bdwtd.h> #include<keyf.h> #define nokey 0xff #define jia 0x0A #define jie 0x0B #define re 0x0C /*为使主程序更简洁,另外写按键处理的按键的函数 keyf.c, 以及诸如可控制看门狗的头文件,并定义常量以供程序作为 按键类型的标记*/
unsigned char code de[]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8, 0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0};
/* 定义一个 16 位的数组,其值从 0xf0 到 0xff,对应于单片机的与 数码管相连的 P5 端口的八二进制数。可以让加减命令转化为这 个数组下标的移动,在数码管上就显示为灯的明灭,由于前四 个管总是灭的状态,灯可表示一个四位二进制数的变化。 */
八、源代码
2
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的人机接口电路设计一、功能描述键盘和显示是单片机应用系统中实现人机对话的一种基本形式,两种接口设计的好坏,直接影响到人机接口的友好程度。
在对一个系统进行操作时,往往离不开人与机器的对话,人机接口界面可以满足人与机器之间的交流。
可以通过按键将所需要信号与信息输入给系统,经过系统处理后,所期待的效果又可以通过屏幕来显示出来,这样就可以很好的达到人与机器的交流目的。
二、硬件电路图基于51单片机的人机接口电路如图1.1所示。
电路结构包括基本的复位电路、晶振电路、串口程序下载电路、键盘电路及屏幕显示电路。
图1.1 基于51单片机的人机接口电路设计显示电路键盘控制AT89C51图1 人机接口电路结构框图复位电路 晶振电路三、接口定义接口定义说明包括单片机的I/O 口的定义、中断的选择。
在键盘电路中引入了外部中断方式0,减少了CPU 的工作强度。
屏幕接口电路采用的是并行工作方式,51单片的的I/O 口较多,采用并行方式可以增大数据传输的速度,可以将信息实时显示。
具体接口定义如表1.1所示。
表1 A T89C51接口定义I/O 口 定义引脚号 引脚名 接口说明 备注 1~8 P1口 接矩阵键盘 10 RXD 接MAX232 11TXD 接MAX23212 /INT0 接74ls13四输入与非门输出引入中断21 P2.0 接屏幕的RST 22 P2.1 接屏幕的RS 23 P2.2 接屏幕的RW 24 P2.3 接屏幕的E32~38 P0口接屏幕的数据口DB0~DB7 中断类型 中断方式 按键中断中断方式0四、程序流程图1、主程序在主程序中,执行两个任务:1)初始化,键盘初始化,屏幕初始化;2)判断中断是否发生。
程序开始,进行初始化,若有中断发生,则屏幕有相应的显示;若无中断发生,则屏幕不显示或保留原显示,继续等待中断发生。
主程序流程图如图2.1所示。
2、初始化初始化函数主要包括键盘初始化和屏幕初始化。
键盘的初始化:1)设置中断标志位flag 初值为0,表示无中断产生,若有中断产生,则中断标志位flag 变为1;2)给P1口赋初值,若外部有键被按下,则P1口的值发生改变,引发外部中断;3)设置外部中开始 初始化中断发生?Y N屏幕显示 结束图2.1 主程序流程图断0的触发方式为下降沿触发,然后开启外部中断0,最后开启总中断。
屏幕初始化主要是对显示地址的初始化。
程序流程图分别如图2.2,2.3所示。
4、中断进入中断以后,中断标志位置1。
然后将外部中断0关闭,避免同时按下两个键时产生干扰;外部中断响应后开始进行键盘扫描;最后再给P1口重新赋初值,将之前关闭的外部中断打开,等待下一次的中断服务。
程序流程图如图2.4所示。
5、按键扫描按键扫描子函数实现的功能是判断哪一个按键被按下。
扫描开始后,通过行列检测的方式检测是否有按键被按下;确认按键被按下后,读取P1口的值,判断出哪个按键被按下,屏幕显示相应的内容。
程序流程图如图2.5所示。
6、屏幕写指令写指令函数程序流程图如图2.6所示。
该函数的功能是向控制器写入操作指令。
首先判断控制器的状态是的忙,如果忙则继续等待,不忙则进行下一步。
再将读写控制端读取键值 屏幕显示消抖重新检测扫描开始 扫描结束图2.5 按键扫描程序流程按键检测 按键按下? NYY键盘扫描 开外部中断 进入中断 退出中断图2.4 中断程序流程图关外部中断 flag=1 P1口赋初值中断标志位赋初值初始化开始中断配置 结束图2.2 按键初始化程序流程图图2.3 屏幕初始化流程图初始化开始 屏幕复位 写清屏指令 写开显示指令结束写基本指令集R/W 置0,使控制器为写的状态,再将RS 置低,然后向P0口送入指令数据,指令等待接收。
当使能端E 形成一个下降沿时,指令被接收。
控制器完成相应的指令动作 7、屏幕写数据写数据函数程序流程图如图7所示。
该函数的功能是向控制器写入显示数据。
首先判断控制器的状态是的忙,如果忙则继续等待,不忙则进行下一步。
再将读写控制端R/W 置0,使控制器为写的状态,再将RS 置高,然后向P0口送入数据,数据等待接收。
当使能端E 形成一个下降沿时,数据被接收,在屏幕上进行相应的显示。
五、程序1)主函数#include <reg51.h> #include<12864.h> #include<KEY .h> void main() { Lcm_init(); key_init(); while(flag==1) { Lcm_display(); } }图2.6 写指令流程图开始 测忙? RS=0 将指令送入P0口 将使能端置高E=1 将使能端置低E=0结束YN 读状态R/W=0 图2.7 写数据流程图开始 测忙? RS=1 将数据送入P0口 将使能端置高E=1 将使能端置低E=0结束YN读状态R/W=02)、12864.c#include<12864.h>uchar S1[]= "2012年7 月20 号";uchar S2[]= "文理学院";uchar S3[]= "第三实验楼";uchar S4[]= "1 楼112";/*****************延时函数*********************/ void delay_1ms(uint x){uint i,j;for(j=0;j<x;j++)for(i=0;i<110;i++);}/*****************写指令函数*********************/ void write_cmd(uchar cmd){RS=0;RW=0;E =0;P0=cmd;delay_1ms(5);E =1;delay_1ms(5);E =0;}/*****************写数据函数*********************/ void write_date(uchar date){RS=1;RW=0;E =0;P0=date;delay_1ms(5);E =1;delay_1ms(5);E =0;}/*****************显示位置函数*********************/ void Lcm_pos(uchar *ptr,uchar ddram){uchar i,j=0,x;if(ddram<0x88)Line=0; //定位行地址:第一行else if(ddram<0xA0)Line=2; //定位行地址:第三行else if(ddram<0xA8)Line=1; //定位行地址:第二行elseLine=3; //定位行地址:第四行Col=0x0f&ddram; //定位列地址if(Col>0x07)Col=Col-0x08;x=Col*2;write_cmd(ddram); // 定位显示起始地址while ((ptr[j])!='\0')j++; //判断数组ptr中字符的个数for (i=0;i<j;i++){write_date(ptr[i]); //输出单个字符x++;if (x==0x10){x=0;Line++;switch (Line){case 0:write_cmd(0x80);break;case 1:write_cmd(0xA0);break;case 2:write_cmd(0x88);break;case 3:write_cmd(0xA8);break;}if (Line>3){write_cmd(0x80);Line=0;}}}}/*****************初始化函数*******************/ void Lcm_init(){RST=0;delay_1ms(10);RST=1;delay_1ms(10);write_cmd(0x30);delay_1ms(10);write_cmd(0x0c);delay_1ms(10);write_cmd(0x01);delay_1ms(10);}/*****************显示函数*******************/ void Lcm_display(){Lcm_pos(S1,0X80);delay_1ms(10);Lcm_pos(S2,0X90);delay_1ms(10);Lcm_pos(S3,0X88);delay_1ms(10);Lcm_pos(S4,0X98);delay_1ms(10);}3)、12864.h#include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar Col,Line;sbit E = P2^0;sbit RS = P2^1;sbit RW = P2^2;sbit RST= P2^3;void delay_1ms(uint x);void write_cmd(uchar cmd);void write_date(uchar date);void Lcm_pos(uchar *ptr,uchar ddram);void Lcm_init();void Lcm_display();4)、key.c#include <reg51.h>#include <KEY.h>/*****************延时函数*********************/ void delay_1ms(uint x){uint i,j;for(j=0;j<x;j++)for(i=0;i<110;i++);}/*****************初始化函数*******************/void key_init(){flag=0; //中断未发生,标志位初值设置为0;P1=0x0f; //给P1口赋初值,检测是否产生外部中断;TI=0; //数据允许发送标志位清0,允许数据发送;IT0=1; //外部中断0为下降沿触发;EX0=1; //开外部中断;EA=1; //开总中断;}/****************外部中断函数*****************/void jianpan() interrupt 0{flag=1; //中断产生,标志位置1;EX0=0; //关外部中断,避免干扰;keyscan(); //外部中断产生后,进行键盘扫描;P1=0x0f; //重新给P1口赋值;EX0=1; //重新打开外部中断0;}/*****************按键扫描函数*******************/void keyscan(){P1=0xfe;temp=P1;temp=temp&0xf0;if(temp!=0xf0) //消抖检测;{delay_1ms(10); temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case 0x7e: key=0; break;case 0xbe: key=1; break;case 0xde: key=2; break;case 0xee: key=3; break;}while(temp!=0xf0) //按键松手检测;{temp=P1;temp=temp&0xf0;}}}P1=0xfd;temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay_1ms(10);temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case 0x7d: key=4; break;case 0xbd: key=5; break;case 0xdd: key=6; break;case 0xed: key=7; break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay_1ms(10);temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case 0x7b: key=8; break;case 0xbb: key=9; break;case 0xdb: key=10; break;case 0xeb: key=11; break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay_1ms(10);temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case 0x77: key=12; break;case 0xb7: key=13; break;case 0xd7: key=14; break;case 0xe7: key=15; break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}}5)、key.h#include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar temp,flag;uint key;void key_init();void keyscan();void delay_1ms(uint x);。