基于STC89C52单片机的人机接口的设计Word格式文档下载.docx
《基于STC89C52单片机的人机接口的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于STC89C52单片机的人机接口的设计Word格式文档下载.docx(15页珍藏版)》请在冰点文库上搜索。
液晶显示
4×
4键盘
图2-1基于STC89C52单片机的人机接口的系统结构
2.2功能描述
人机接口是人与机器之间传递、交换信息的媒介和对话接口,是单片机系统的重要组成部分。
是指人和单片机系统在信息交换和功能上接触或相互影响的领域。
人机接口的应用无处不在,如在温度的测试及监控系统中,人通过键盘输入要设定的温度值,系统通过数码管或液晶显示当前的温度。
这样就通过人机接口完成了人与单片机之间的信息交流。
正因为人机接口运用如此广泛及它在实现人机交流的地位的不可或缺,故设计一个高性能的人机接口具有巨大的意义。
此设计是基于51单片机的人机接口,通过51单片机和12864液晶来实现人机信息交流。
利用51单片机的IO口实现键盘输入,通过串行通信控制液晶显示。
2.3单片机开发板原理及各部分功能说明
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,
它出了毛病,整个装置就瘫痪了。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计
通过对它的学习,应用,从而达到学习、设计、开发软件的能力。
1 2 3 4 5 6 7 8
P112864
P
P21602
J3EN_1602
123
12345678911111111112
01234567890PORT
1234567819111111
0123456
1
CD
C01201234567345C
CD
2
CDD
VN11100000000111VN
C010123456C7 2
D
PGPPPPPPPPPPPPPPPG
VN11N0000000V0NNN1
PR3
10K
PGPPEPPPPPPPPPGGEP
1KPR1
MC1
VCCGND
DVCC1
PR44K7
DDIGI
104
MU1AT89S52
VCC
P101P1.0(T2)
P112P1.1(T2EX)
(AD0)P0.039P00
P123P1.2
P13 4
(AD2)P0.237P02
36P03
IP1
P15MOSI1
3
MR1
4
5
6
EDQ1
DQ2 DQ3
85508550
DQ4 DQ5 DQ6 DQ7 DQ88550855085508550 8550
(AD1)P0.138P01
2B 8550
RST5
P17
SCK7
P16MISO9
ID1
2 VCC
61N4148
8
10GND
P145P1.3
P156P1.4
(AD3)P0.335P04
DR1CDR2 DR3 DR4 DR5 DR6 DR7 DR84K7 4K7 4K7 4K7 4K7 4K7 4K7 4K7
P167P1.5(MOSI)
(AD4)P0.434P05
(AD5)P0.533P067 0
P178P1.7(SCK)
P1.6(MISO)
(AD6)P0.6
(AD7)P0.732P07
81P
9
11
W1PDS2
22
W1P
33
W1P
44 55 66 77 8
W1P W1P W1P W1PDS1
W
P3313P3.3(INT1)
(A8)P2.021P204K7x8D111a
A112W8D111a
A112W4
ISP
P3212P3.2(INT0)
P35 15
(A9)P2.122P21
23P22
D27bDIG1DIG2DIG3DIG4A29W7D27bDIG1DIG2DIG3DIG4A29W3
D34
P3414P3.5(T1)
(A10)P2.224P23
(A11)P2.325P24
D42c
DP3
D51d
A4
A36W5D42c
8W6D34
e
A36W1
8W2
SSerial
P3.4(T0)
(A12)P2.4
(A13)P2.526P25
D610
D610e
DP2
SC5104
SC3104
VCC31EA/VPP
(A14)P2.627P26
(A15)P2.728P27
D75g
SCON1
26
C
7
SC4SU110413
OSC_OUT18
RST 9
OSC_IN19XTAL1
XTAL2
VCC20GND
40VCC
D83DP
HDSP-B04E
8R2INVCR2OUT9P30
R1IN+CVR1OUT
12
RST
(RXD)P3.0
GND10P30
(TXD)P3.111P31
LVCC
LLED
DR9
P3110T1IN
11
V
14
P37 17
30
D1DR10P00
JP1
D2 P01LVCC
1T2IN T2OUT 4
T1OUT7T2OUTP3616P3.7(RD)
P3.6(WR)
ALE/PROG 29
PSEN
D3D1KR11P02DVCC12VCC
LQ18550
2T2OUT
3C1+D C2+ 5
LED1LED2LED3LED4LED5LED6LED7LED8
D41DKR12P03PVCC234VCC
6 SC1
C1-N C2-
G
1DKR13 5 6
D5 P04PVCC1 VCC
D61DKR14P05
1 104MAX232
SC2104
1DKR15
78
HEADER4X2
LR04K7
RS232
MP1
P0
12345678
D71KP06
D8DR16P07
P07
P06P05
P04P03
P02P01
P00
MP4
P3
P37
P36P35
P34P33
P32P31
P30
DDDDDDDD
1K
7C
2L
E
K
MK1
RESETMC410U/16V
MR24K7
EC1
EVCCGNDEVCC
KEY
EEPROM104EU1
P31
P32
P33
K11
K12
K13
K14
1 8
2A0VDD 7
3A1WP6P25
ER1ER2
4K74K7
SW-PB4
65
PCON1
D-2
B
1VCC2POWER
O
MP2
P1
P16P15
P14P13
P12P11P10
MP3
P2
4A2SCL5P26
P27
P26P25
P24P23
P22P21P20
VSSSDA
24C08
P34
K21
K22
K23
K24
GND 4
D+ 3
3GND
2GND
VBUS1VCC1
UCON1USB
TRTC
TC1
TVCCGND
TX1
OSC32OUTOSC32IN
P35
K31
K32
K33
K34
T
N
U
32K
SW1 5
R11K
_C
P36
SO
TU1
K41
K42
K43
K44
TVCC1 8BAT
VCC11
PWR
C1C2
220U/16V 104
VCC2VCC1
X1
OSC32IN2 7P22
JP2 OSC32OUT3X1SCLK6P23
SW-PB4P37
VCC23
P21
POWER-KEY
12M
P20
12DS1
BEEP
GND4X2I/O5P24
MC2TVCC VCC
56
GNDRSTDS1302
P32K1
MC330P
34 K2
K3
K4
30PEVCC VCC
DS
DS18B20
SW-PB4GND
BQ18550
BR14K7
BU1
DSR1DSU14K7
BEEP DS1
IR1
100IU1P32
3 2
IR38K
JP31
IR38K 2
CON2
A
IR38K
Title
图2-2单片机原理图
SizeA3
Number Revision
Date:
12-Jul-2010 SheetofFile:
H:
\实习制作电路板\syb51制版.ddbDrawnBy
图2-3STC89C52引脚图
3.设计方案
3.1硬件调试
3.1.1调试过程
硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。
具体步骤及测试结果如下:
(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,测试结果所有连接线都已连接好;
(2)检验STC89C52单片机的晶振是否起振,用示波器观察波形,测试结果波形都很好;
(3)检查各芯片的功能是否正常,检测按键的导通情况。
测试结果正常。
3.1.2接口定义
表一、基于STC89C52单片机的人机接口接口定义表格
对
功能/定义
象
I/O口
P1.0~P1.7P2.0P2.1
TO
T0中断
键盘行输出列输入
12864的数据输入口
12864的时钟输入口
定时器
中断
初始值为50000,定时50ms
计时到50ms产生中断,用于更新液晶显示
3.1.3硬件结构图
图3-1基于52单片机的人机接口接口定义表格
图3-2基于52单片机的人机接口的硬件结构图
3.2软件开发
3.2.1程序流程图
开始
初始化
否
键值是否更
是
显示更新的键
图3-3基于STC89C52单片机的设计
图3-4总设计图
3.2.2具体程序设计
#include<
reg51.h>
#include<
intrins.h>
#defineKeyROCISegCodeO P1 /*定义键盘行输出列输入*/#defineNumRow 4 /*定义键盘行数为4*/
#defineNumColumn4 /*定义键盘列数为4*/#defineunitunsignedint
#defineucharunsignedcharsbitSID=P2^0;
sbitSCLK=P2^1;
voiddelay(uchartime)/*延时函数*/
{uchari,j;
for(i=0;
i<
time;
i++)for(j=0;
j<
255;
j++);
}
ucharKeyBoardScan() /*键盘扫描函数*/
{ucharrow,RowCode,column,ColumnState;
/*行循环、行码、列循环、列状态
*/
KeyROCISegCodeO=0xf0;
/*键盘行线均输出0*/if((KeyROCISegCodeO|0x0f)!
=0xff)
{/*有键按下*/
delay(12);
/*消抖延时约10ms(fosc=12MHz)*/
{/*确实有键按下,寻找是哪个键*/RowCode=0xfe;
/*指向第1行*/
for(row=0;
row<
NumRow;
row++) /*扫描共NumRow行*/
{KeyROCISegCodeO=RowCode;
/*当前行*/ColumnState=KeyROCISegCodeO|0x0f;
/*获取列状态*/for(column=0;
column<
NumColumn;
column++) /*查询共NumColumn
列的状态*/
if((ColumnState|0x7f)==0x7f)
{while((KeyROCISegCodeO|0x0f)!
=0xff);
/*等待键释放*/return(row*NumColumn+column);
/*返回键值*/
else
ColumnState=_crol_(ColumnState,1);
/*指向下一列*/RowCode=_crol_(RowCode,1);
/*指向下一行*/
return(NumRow*NumColumn);
/*返回无键值*/
voidsend_command(ucharcommand_data) /*串口写指令函数*/
{
uchari;
uchari_data;
i_data=0xf8;
SCLK=0;
for(i=0;
8;
i++)
SID=(bit)(i_data&
0x80);
SCLK=1;
i_data=i_data<
<
1;
i_data=comman_data;
i_data&
=0xf0;
for(i=0;
i_data<
=4;
voidsend_data(ucharcommend_data) /*写数据函数*/
uchari;
i_data=0xfa;
voidlcd_init(void) /*液晶初始化函数*/
delay(120);
write_c(0x30);
//基本操作write_c(0x01);
//清屏操作
write_c(0x06);
//游标及显示右移一位write_c(0x0C);
//整体显示开 反白关
voidLCD_LOCATION(ucharx,uchary) /*地址选择函数*/
unsignedcharpos;
if(x==0){x=0x80;
elseif(x==1){x=0x90;
}elseif(x==2){x=0x88;
elseif(x==3){x=0x98;
}pos=x+y;
write_commend(pos);
vo