按关键词阅读:
1、嵌入式系统与接口技术 课 程 报 告 ARM7 的串口聊天程序设计 学号 姓名 班级电气 1081 班 指导老师 目 录 目目 录录 摘要 .I INTRODUCTION.II 1 概述.1 1.1 设计任务.1 1.2 设计要求.1 2 系统总方案及硬件设计.2 2.1 系统总方案.2 2.1.1 系统基本功能.2 2.1.2 系统结构原理.2 2.2 硬件各部分设计.3 3 软件设计.4 3.1 软件流程设计.4 3.2 程序模块.5 3.2.1 4X12 键盘扫描程序.5 3.2.2 160*128 液晶显示驱动:.7 3.2.3 按键功能判断.11 3.2.4 通信功能.13 3.2. 。
2、5 控制主程序.17 4 PROTEUS 仿真.21 4.1 启动状态仿真.21 4.2 输入姓名.21 4.3 输入按键.22 4.4 含有姓名的通信.22 4.5 切换大小写以及组合按键.23 设计心得.24 参考文献.25 摘要 I 摘要 嵌入式系统它摒弃了普通计算机复杂的系统结构 , 把需要用到的设备集成到一 块硅片上 , 能够在成本上得到很好的控制 , 而在控制效果又能满足实际设计需要的微 型计算机 。
本实验采用基于 ARM7 架构的 LPC2138 微处理器 , 它集成了多个 32 位定时 器、1 个或 2 个 10 位 多路 ADC、10 位 DAC、PWM 通道和 47 个 GPIO 以及多达。
3、9 个边沿 或电平触发的外部中断使它们特别适用于工业控制和医疗系统 。
在自动控制系统中 ,嵌入式芯片起着相当于人的大脑一样的作用 。
现代控制系统 , 通过编译出优秀的软件 ,可以更加接近人的想法来实现控制 , 他是模糊控制 , 精确控制 , 等等控制方法的简单 的实现场所 。
本课程设计通过设计一个具有按键控制、液晶显示功能的通讯聊天工具 ,核心采用 LPC2138 , 采用 4X12 扫描按键 , 显示采用 160*128 液晶英文显示 , 通过其中 一块芯片上输入的信息 , 可以传输到另一块芯片上并显示出来 。
当然 , 同时也可以输 入不同的字模 , 液晶上也可以显示不同的图案 。
关键词:LPC2138;IQQ 聊天工具;4X12 扫描按 。
4、键;液晶;字模 ABSTRACT II INTRODUCTION Embedded microcontroller chip is an upgraded version, it integrates a number of 32-bit timers, one or two 10-bit 8-channel ADC, 10 位 DAC, PWM channels and 47 GPIO and up to nine edge or level triggered External interrupt enable them particularly suitable for industri 。
5、al control and medical systems. In the automatic control system, embedded chip, like the human brain plays an equivalent role. Modern control system, by compiling the best software, can be more close to peoples ideas to achieve control, he is fuzzy control, precise control, and so simple to achieve。
6、control sites. The course design through the design of a key control, LCD display chat tool of communication, the core using LPC2138, using 4X12 scan button, display with 160 * 128 LCD display in English, through which the information entered on a single chip can be transferred to another piece of c 。
7、hip and displayed. Of course, you can also enter a different font, the LCD can also display different patterns. KEYWORDS: LPC2138,IQQ chat;
4X12 scankeybord;
LCD;
广东海洋大学 嵌入系统与接口技术课程设计报告 1 1概述概述 1.11.1设计任务设计任务 通过学习 ARM 嵌入式系统 , 熟悉使用 ARM 芯片来设计控制系统 。
本实验使用 LPC2138 , 4X12 键盘扫描 , 160128 液晶显示文字图案,控制 UART0 通信 , 实现各种控 。
8、制 功能 , 以及实现更为友好的人机交换界面 。
1.21.2设计要求设计要求 键盘上有 48 个数字按键,两个复合键:Caps_lock 和 Shift;
两个功能按键:Enter 和 Backspace,分别控制确认输出和删除上一输入 , 尽最大可能模拟电脑键盘排布 。
160*128 液晶用来显示初始画面及双方通讯内容 , 包括英文大小写 , 数字及“*” “(” “) ” “!” “%” “¥” “#”等常用符号 。
广东海洋大学 嵌入系统与接口技术课程设计报告 2 2 2系统总方案及硬件设计系统总方案及硬件设计 2.12.1系统总方案系统总方案 2.1.1 系统基本功能 两台用于通信的 ARM7 系统 , 分别 。
9、连接着 160*128 液晶及 4*12 键盘 。
其中一台机 子通过按键输入一个字符串 , 按确认后同时在自己及另一台机子的液晶上显示 , 输入 紧随其后清零 。
由于最大限度地模拟键盘 , 所以设置了 Cap_lock 和 Shift 按键可以大 量简化键盘排布的方案 。
2.1.2 系统结构原理 系统采用 LPC2138 单片机为核心 , 采用 LG 160*128 显示 , 4X12 线反转法键盘 , 系 统结构图如图 2.1.2 所示 。
串口通信 LPC2138 4X12 键盘 160*128 4X12 键盘 LPC2138 160*128 广东海洋大学 嵌入系统与接口技术课程设计报告 3 图 2.1.2 系统结构图 。
10、 2.22.2硬件各部分设计硬件各部分设计 由于本实验比较简单 , 而且没必要花费比较多的钱做实物 , 所以采用 Proteus 来 仿真 , 可以更快地达到验证该系统的功能 , 电路如图 2.2.1 所示 。
D1.7 D1.6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0 VDD5 VDD5 CD1 WR1 RD1 row1.5 row1.1 row1.6 row1.7 row1.8 row1.9 row1.10 CD1 RD1 WR1 DIR1 CE1 LOCK1 D1.7 D1.6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0 LINE1.0 LINE1.1 LINE1.2。
11、LINE1.3 row1.0 row1.2 row1.3 row1.4 row1.11 LINE1.0 LINE1.1 LINE1.2 LINE1.3 TXD1 RXD1 ROW1.0 ROW1.1 ROW1.2 ROW1.3 ROW1.4 ROW1.5 ROW1.6 ROW1.7 ROW1.8 ROW1.9 ROW1.10 ROW1.11 TXD0 RXD0 XTAL1 62 XTAL2 61 P0.0/TxD0/PWM1 19 P0.1/RxD0/PWM3/EINT0 21 P0.2/SCL0/CAP0.0 22 P0.3/SDA0/MAT0.0/EINT1 26 P0.4/SCK0/CA 。
12、P0.1/AD0.6 27 P0.5/MISO0/MAT0.1/AD0.7 29 P0.6/MOSI0/CAP0.2/AD1.0 30 P0.7/SSEL0/PWM2/EINT2 31 P0.8/TxD1/PWM4/AD1.1 33 P0.9/RxD1/PWM6/EINT3 34 P0.10/RTS1/CAP1.0/AD1.2 35 P0.11/CTS1/CAP1.1/SCL1 37 P0.12/DSR1/MAT1.0/AD1.3 38 P0.13/DTR1/MAT1.1/AD1.4 39 P0.14/DCD1/EINT1/SDA1 41 P0.15/RI1/EINT2/AD1.5 45 P0 。
13、.16/EINT0/MAT0.2/CAP0.2 46 P0.17/CAP1.2/SCK1/MAT1.2 47 P0.18/CAP1.3/MISO1/MAT1.3 53 P0.19/MAT1.2/MOSI1/CAP1.2 54 P0.20/MAT1.3/SSEL1/EINT3 55 P0.21/PWM5/AD1.6/CAP1.3 1 P0.22/AD1.7/CAP0.0/MAT0.0 2 P0.23 58 P0.25/AD0.4/AOUT 9 P0.27/AD0.0/CAP0.1/MAT0.1 11 P0.28/AD0.1/CAP0.2/MAT0.2 13 P0.29/AD0.2/CAP0.3/ 。
14、MAT0.3 14 P0.30/AD0.3/EINT3/CAP0.0 15 V3 23 RST 57 VREF 63 VSS 6 VSSA 59 P1.16/TRACEPKT0 16 P1.17/TRACEPKT1 12 P1.18/TRACEPKT2 8 P1.19/TRACEPKT3 4 P1.20/TRACESYNC 48 P1.21/PIPESTAT0 44 P1.22/PIPESTAT1 40 P1.23/PIPESTAT2 36 P1.24/TRACECLK 32 P1.25/EXTIN0 28 P1.26/RTCK 24 P1.27/TDO 64 P1.28/TDI 60 P1. 。
15、29/TCK 56 P1.30/TMS 52 P1.31/TRST 20 V3 43 V3 51 VSS 18 VSS 25 VSS 42 VSS 50 RTXC1 3 RTXC2 5 V3A 7 VBAT 49 P0.31 17 P0.26/AD0.5 10 U3 LPC2138 GND VDD3.3 CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 LCD2 PG160128A GND GND 1312 U2:D 74HC14 1 。
16、110 U2:E 74HC14 98 U2:F 74HC14 RXD RTS TXD CTS D1 LED-BLUE !$% ENTER SHIFTZXCVBNM,.? SPACE 系统左图 广东海洋大学 嵌入系统与接口技术课程设计报告 4 D7 D6 D5 D4 D3 D2 D1 D0 VDD5 VDD5 P1.17 P0.25 P0.26 row5 row1 row6 row7 row8 row9 row10 P1.17 P0.26 P0.25 DIR CE LOCK D7 D6 D5 D4 D3 D2 D1 D0 line0 line1 line2 line3 row0 row2 row 。
17、3 row4 row11 LINE0 LINE1 LINE2 LINE3 TXD1 RXD1 ROW0 ROW1 ROW2 ROW3 ROW4 ROW5 ROW6 ROW7 ROW8 ROW9 ROW10 ROW11 TXD0 RXD0 XTAL1 62 XTAL2 61 P0.0/TxD0/PWM1 19 P0.1/RxD0/PWM3/EINT0 21 P0.2/SCL0/CAP0.0 22 P0.3/SDA0/MAT0.0/EINT1 26 P0.4/SCK0/CAP0.1/AD0.6 27 P0.5/MISO0/MAT0.1/AD0.7 29 P0.6/MOSI0/CAP0.2/AD1. 。
18、0 30 P0.7/SSEL0/PWM2/EINT2 31 P0.8/TxD1/PWM4/AD1.1 33 P0.9/RxD1/PWM6/EINT3 34 P0.10/RTS1/CAP1.0/AD1.2 35 P0.11/CTS1/CAP1.1/SCL1 37 P0.12/DSR1/MAT1.0/AD1.3 38 P0.13/DTR1/MAT1.1/AD1.4 39 P0.14/DCD1/EINT1/SDA1 41 P0.15/RI1/EINT2/AD1.5 45 P0.16/EINT0/MAT0.2/CAP0.2 46 P0.17/CAP1.2/SCK1/MAT1.2 47 P0.18/CA 。
19、P1.3/MISO1/MAT1.3 53 P0.19/MAT1.2/MOSI1/CAP1.2 54 P0.20/MAT1.3/SSEL1/EINT3 55 P0.21/PWM5/AD1.6/CAP1.3 1 P0.22/AD1.7/CAP0.0/MAT0.0 2 P0.23 58 P0.25/AD0.4/AOUT 9 P0.27/AD0.0/CAP0.1/MAT0.1 11 P0.28/AD0.1/CAP0.2/MAT0.2 13 P0.29/AD0.2/CAP0.3/MAT0.3 14 P0.30/AD0.3/EINT3/CAP0.0 15 V3 23 RST 57 VREF 63 VSS。
【嵌入式系统与接口技术课程设计|嵌入式系统与接口技术课程设计ARM7的串口聊天程序设计】20、6 VSSA 59 P1.16/TRACEPKT0 16 P1.17/TRACEPKT1 12 P1.18/TRACEPKT2 8 P1.19/TRACEPKT3 4 P1.20/TRACESYNC 48 P1.21/PIPESTAT0 44 P1.22/PIPESTAT1 40 P1.23/PIPESTAT2 36 P1.24/TRACECLK 32 P1.25/EXTIN0 28 P1.26/RTCK 24 P1.27/TDO 64 P1.28/TDI 60 P1.29/TCK 56 P1.30/TMS 52 P1.31/TRST 20 V3 43 V3 51 VSS 18 VSS 25。
21、VSS 42 VSS 50 RTXC1 3 RTXC2 5 V3A 7 VBAT 49 P0.31 17 P0.26/AD0.5 10 U1 LPC2138 GND VDD3.3 CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 LCD1 PG160128A GND GND 12 U2:A 74HC14 34 U2:B 74HC14 56 U2:C 74HC14 RXD RTS TXD CTS RXD RTS TXD CTS !$%。
22、ENTER SHIFTZXCVBNM,.? SPACE 系统右图 图 2.1.2 系统电路图 3 3软件设计软件设计 3.13.1软件流程设计软件流程设计 本设计采用 ADS1.2 编译软件 , 用 C 语言编程 , 可以很容易的移植前者写的硬件的 驱动程序 , 以节约编程的时间 , 上层的控制程序可以很容易的用 C 语言来设计出控制 的流程 , 程序流程图如图 3.1.1: 液晶显示按下按键 系统初始化液晶 ,串口 , 键盘 键盘按键扫描 广东海洋大学 嵌入系统与接口技术课程设计报告 5 3.23.2程序模块程序模块 3.2.1 4X12 键盘扫描程序 定义列表: /按键码对应键值表* #pragma CONST_ 。
23、SEG DEFAULT const uint16 key_code= 0 x1001,0 x1002,0 x1004,0 x1008,0 x1010,0 x1020,0 x1040,0 x1080,0 x1100,0 x1200,0 x1 400,0 x1800, 0 x2001,0 x2002,0 x2004,0 x2008,0 x2010,0 x2020,0 x2040,0 x2080,0 x2100,0 x2200,0 x2400, 0 x2800, 0 x4001,0 x4002,0 x4004,0 x4008,0 x4010,0 x4020,0 x4040,0 x4080,0 x41 。
24、00,0 x4200,0 x4400, 0 x4800, 0 x8001,0 x8002,0 x8004,0 x8008,0 x8010,0 x8020,0 x8040,0 x8080,0 x8100,0 x8200,0 x8400, 0 x8800, ;
按下 ENTER? 液晶显示按下字符串 串口发送输入数据 接收标志有效? 显示输接收数据 图 3.1.1 系统程序流程 图 广东海洋大学 嵌入系统与接口技术课程设计报告 6 /键值对应 ASCII 码* #pragma CONST_SEG DEFAULT const uchar key_ascii= !,1,2,3,4,5,6,7,8,9, 。
25、0,+, Q,W,E,R,T,Y,U,I,O,P, %,A,S,D,F,G,H,J,K,L,;
,*, -,Z,X,C,V,B,N,M,.,?, , ;
键盘扫描采用线反转法: uint16 Get_Key_ASCII(void) uint16 key_code0;
uchar i;
uchar k;
IO0DIR=Key_Row_Scan;
/设置为行为输出列为输入 IO0PIN=IO0DIR/设置行为高电平列为低电平 DelayNS(10);
/小延时 , 建立电平 key_code0=(IO0PIN /取列对应位信息 read 语句 IO0DIR=Key_Line_Scan;
/设置为列为输出 ,。
26、行为输入 , 列扫描 IO0PIN=IO0DIR/ read Line DelayNS(10);
/小延时 , 建立电平 key_code0=key_code0|(IO0PIN / row+line DelayNS(10);
/小延时 , 建立电平 if(key_code0!=0 x0000) for (i=0;
iKey_Amount;
i+) if (key_code0=key_codei) / 得到排列 i return key_asciii;
return0 xff;
/按键无效 广东海洋大学 嵌入系统与接口技术课程设计报告 7 row1.5 row1.1 row1.6 row1.7 row1.8 ro 。
27、w1.9 row1.10 LINE1.0 LINE1.1 LINE1.2 LINE1.3 row1.0 row1.2 row1.3 row1.4 row1.11 !$% ENTER SHIFTZXCVBNM,.? SPACE 3.2.1 键盘扫描图 3.2.2 160*128 液晶显示驱动: 160*128 液晶采用横向打点法 , 因此 , 对应的字符及图形字模要留意 。
字符格式为 8X8. 定义列表: 液晶驱动程序: #define WR (129) /p1.29 写控制位 #define CD (131) /p1.17 数据指令选择控制位 #define RD (130) /p0.26 读控制位 # 。
28、define CE (128) /p0.27 LCD 片选 #define DIR (127) /p1.22 74LS245 数据传送方向 #define LOCK (126)/p0.15 74LS245 数据锁存控制位 #define DPT (0 xff18;
IO1CLR = IO1CLR | RD;
/读无效 return (data) ;
/返回值为读取的数据 /等待可读写函数 void ReadEnable() uchar temp;
while(temp=ReadState() /* void ControlPinIni() PINSEL0 = 0 x00000003;
PINSEL 。
29、1 = 0 x00000000;
PINSEL2 = 0 x00000000;
IO1DIR = IO1DIR |WR|RD|CE|LOCK;
IO1DIR = IO1DIR |CD|DIR;
IO1SET = IO1SET |LOCK;
/* /*写命令、写数据命令* 数据 1、数据 2、命令、参数个数* */ 广东海洋大学 嵌入系统与接口技术课程设计报告 8 void wr_data(char data1,char data2,char cmd,char num) char temp;
temp=num;
IO0SET = IO0SET | CE;
/使能 LCD if(temp=2) Re 。
30、adEnable();
IO1DIR = IO1DIR | DPT;
/设置数据为输出 IO1SET = IO1SET | CD;
/数据属性 IO1SET = (IO1SET IO1CLR = (IO1CLR / 数据写入口线 IO1SET = IO1SET | WR;
/写有效 IO1CLR = IO1CLR | WR;
/写入完毕,写置高 if(temp=2|temp=1) ReadEnable();
IO1DIR = IO1DIR | DPT;
/设置数据为输出 IO1SET = IO1SET | CD;
/数据属性 IO1SET = (IO1SET IO1CLR = (IO1CLR / 数据写入 。
31、口线 IO1SET = IO1SET | WR;
/写有效 IO1CLR = IO1CLR | WR;
/写入完毕,写置高 ReadEnable();
IO1DIR = IO1DIR | DPT;
/设置数据为输出 IO1CLR = IO1CLR | CD;
/命令属性 IO1SET = (IO1SET IO1CLR = (IO1CLR /* void WriteCommand (uchar command) 广东海洋大学 嵌入系统与接口技术课程设计报告 9 uint32 com=0;
/定义临时存储单元 com = command;
ReadEnable();
IO1DIR = IO1DIR | DP 。
32、T;
/设置输出数据 IO1CLR = IO1CLR | CD;
/命令属性 IO1CLR = IO1CLR | WR;
IO1CLR = IO1CLR | RD;
IO1SET = (IO1SET / 数据写入口线 IO1CLR = (IO1CLR IO1SET = IO1SET | WR;
/写有效 IO1CLR = IO1CLR | WR;
/写入完毕,写置低 void WriteData (uchar data) ReadEnable();
IO1DIR = IO1DIR | DPT;
/设置输出数据 IO1SET = IO1SET | CD;
/数据属性 /数据传输方向设定 IO1SET = ( 。
33、IO1SET / 数据写入口线 IO1CLR = (IO1CLR /IO0SET = IO0SET | CE;
/选中 LCD IO1SET = IO1SET | WR;
/写有效 IO1CLR = IO1CLR | WR;
/写入完毕,写置低 /* void DisHanZi(uchar x,uchar y,uchar *Hzcode) uchar i;
Set_xy(x*16,y*2);
for(i = 0;
i16;
i+) WriteCommand(AUT_WR);
WriteData(Hzcode2*i);
WriteData(Hzcode2*i+1);
WriteCommand(AUT_WO 。
34、);
Set_xy(x*16+i+1,y*2);
void LCD_Photo(uchar x,uchar y,uchar x_long,uchar y_long) uchar i,j;
Set_xy(y,x);
for (i=0;
iy_long;
i+) for (j=0;
jx_long;
j+) WriteCommand(AUT_WR);
WriteData(IQQ_LOGOj+i*x_long);
WriteCommand(AUT_WO);
广东海洋大学 嵌入系统与接口技术课程设计报告 10 Set_xy(y+i+1,x);
/* / /LCD_Write_ABC: 显示 8(宽)*16(高 。
35、)点阵列数字字母符号等半角类 /输入参数: x , y: / ASCII_num:显示的字符的序号 / 可以显示 12*5=60 个英文字符 void LCD_Write_ASCII(uchar x, uchar y,uchar ASCII_num)/x:横 y:竖 ASCII_num:字 符的序号 uchar i;
Set_xy(x*8,y);
for(i=0;
i19) /超出一行的显示范围 , x+1 换行 y=0;
x+;
广东海洋大学 嵌入系统与接口技术课程设计报告 11 D7 D6 D5 D4 D3 D2 D1 D0 VDD5 VDD5 P1.17 P0.25 P0.26 D1.7 D1. 。
36、6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0 VDD5 VDD5 CD1 WR1 RD1 row1.8 row1.9 row1.10 row1.11 CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 LCD1 PG160128A GND GND CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16。
37、D6 17 D7 18 RST 10 LCD2 PG160128A GND GND 3.2.2 液晶图 3.2.3按键功能判断 利用线反转法以及液晶已经把按下的按键显示出来 , 但对于某些功能键如“ENTER” 、 “Caps_Lock”等要进行功能判断操作 。
采用如下程序: /*输入显示及载入数组* uchar Get_Inputs(char *string,uchar *input_line,uchar *input_row,uchar *str_p,uchar *shift,uchar *caps_lock) /string a k i char keynum17;
uchar get_asc 。
38、ii;
get_ascii=Get_Key_ASCII();
/* if (get_ascii!=*) / CHECK WEATHER INPUT ENTER if (get_ascii!=0 xff) if (get_ascii=+) /退格 if(input_row=0) /是否在开头 if (*input_line)!=13) (*str_p)-;
*input_row=19;
(*input_line)-;
广东海洋大学 嵌入系统与接口技术课程设计报告 12 else (*input_row)-,(*str_p)-;
LCD_Write_ASCII(*input_line),*inpu 。
39、t_row, );
while(get_ascii!=0 xff) get_ascii=Get_Key_ASCII();
/WAIT UNTIL REMOVE KEY if(get_ascii!=+)(*input_line)+;
/判断输入是否换行 /*键盘切换* if(get_ascii=A /* LCD_Write_ASCII(*input_line),*input_row,get_ascii);
string*str_p=get_ascii;
(*str_p)+;
/THE OUTPUT STRING *input_row=*input_row+1;
/输入光标指向下一位 while(g 。
40、et_ascii!=0 xff) get_ascii=Get_Key_ASCII();
/WAIT UNTIL REMOVE KEY /*按下 cap lock if(get_ascii!=0 xff) else *caps_lock=1;
while(get_ascii!=0 xff) 广东海洋大学 嵌入系统与接口技术课程设计报告 13 get_ascii=Get_Key_ASCII();
/WAIT UNTIL REMOVE KEY /* if(get_ascii!=0 xff) else *shift=1;
while(get_ascii!=0 xff) get_ascii=Get_Key 。
41、_ASCII();
/WAIT UNTIL REMOVE KEY if(get_ascii=*) /输入为 ENTER string*str_p=0;
/* 结束符 while(get_ascii!=0 xff) get_ascii=Get_Key_ASCII();
/WAIT UNTIL REMOVE KEY /*str_p=0;
*input_row=0,(*input_line)=13;
/重设 输入行列参数 Clear_LCD_INPUT();
return 1;
else return 0;
3.2.4通信功能 LPC2000 系列 ARM7 微控制器包含 2 个符合 16C550 工 。
42、业标准的异步串行通信口 (UART):UART1、UART0 。
其中 , UART0 提供 TXD0 和 RXD0 信号引脚 , UART1 提供 TXD1 和 RXD1 信号引脚. #include config.h #define uchar unsigned char /* 定义串口模式设置数据结构 */ typedef struct UartMode 广东海洋大学 嵌入系统与接口技术课程设计报告 14 uint8 datab;
/ 字长度 , 5/6/7/8 可选 uint8 stopb;
/ 停止位 , 1/2 可选 uint8 parity;
/ 奇偶校验位 , 0-无校验,1-奇校验,2-偶校验 UARTM 。
43、ODE;
/* * * 函数名称 :IRQ_UART0() * 函数功能 :串口 0 接收中断服务程序 * 入口参数 :无 * 出口参数 :无 * */ void _irq IRQ_UART0 (void);
/* * * 函数名称 :UART0_SendByte() * 函数功能 :向串口 0 发送 1 字节数据 * 入口参数 :dat要发送的数据 * 出口参数 :无 * */ void UART0_SendByte (char dat) U0THR = dat;
/ 要发送的数据 /* * * 函数名称 :UART0_SendBuf() * 函数功能 :向串口发送 8 字节数据 * 入口参数 。
44、 :dat要发送的数据 * 出口参数 :无 * */ void UART0_SendBuf (char *rcv_buf) uint8 stop_flag=0;
uint16 i,j=0;
while(!stop_flag) for (i=0;
i8;
i+) if (rcv_bufj*8+i!=0) 广东海洋大学 嵌入系统与接口技术课程设计报告 15 UART0_SendByte(rcv_bufj*8+i);
else /for (;
i8;
i+) UART0_SendByte(0);
stop_flag=1;
j+;
while (U0LSR /等待数据发送完毕 DelayNS(100);
vo 。
45、id UART0_SendBack () uint8 i;
for (i=0;
i 115200)return (0);
if (set.datab 8) return (0);
if (set.stopb = 0) | (set.stopb 2) return (0);
if (set.parity 4) return (0);
/* 设置串口波特率 */ 广东海洋大学 嵌入系统与接口技术课程设计报告 16 U0LCR = 0 x80;
/ DLAB = 1 bak = (Fpclk 4) / baud;
U0DLM = bak 8;
U0DLL = bak /* 设置串口模式 */ bak。
46、= set.datab - 5;
/ 设置字长 if (set.stopb = 2)bak |= 0 x04;
/ 判断是否为 2 位停止位 if (set.parity != 0) set.parity = set.parity - 1;
bak |= 0 x08;
bak |= set.parity 4;
/ 设置奇偶校验 U0LCR = bak;
U0FCR = 0 x81;
/ 使能 FIFO , 并设置触发点为 8 字节 U0IER = 0 x01;
/ 允许 RBR 中断 , 即接收中断 return (1);
/* * * 函数名称 :main() * 函数功能 :从串口 UART0 接收字符串 。
47、ABCDEFGH , 并发送回上位机 显示 。
* 调试说明 :需要 PC 串口显示终端软件如 EasyARM.exe 。
* */ void UART0_Init(void) UARTMODE set;
set.datab = 8;
set.stopb = 1;
set.parity = 0;
PINSEL0 = 0 x00000005;
/设置 I/O 连接到 UART0 UART0_Model(19200, set);
/ 串口 0 模式选择 IRQEnable();
/ 使能 IRQ 中断 /* 使能 UART0 中断 */ VICIntSelect = 0 x00000000;
/ 设置所有的通道为 。
48、 IRQ 中断 广东海洋大学 嵌入系统与接口技术课程设计报告 17 VICVectCntl0 = 0 x20 | 0 x06;
/ UART0 分配到 IRQ slot0 , 即最高优先级 VICVectAddr0 = (uint32)IRQ_UART0;
/ 设置 UART0 向量地址 VICIntEnable = 1 0 x06;
/ 使能 UART0 中断 /*URT0 中断*8 void _irq IRQ_UART0 (void) uchar i;
if (!uart0_recvice_flag) if (U0IIR i8;
i+) rcv_bufuart0_pointer+i=U0RBR;
/读取 。
49、 FIFO 的数据并清除中断 if (rcv_bufuart0_pointer+i=0) for (;
i8;
i+) rcv_bufuart0_pointer+i=U0RBR;
/读取 FIFO 的数据 , 并清除中断 uart0_recvice_flag=1;
uart0_pointer+=8;
if (uart0_recvice_flag=1) uart0_pointer=0;
VICVectAddr = 0 x00;
/中断处理结束 3.2.5控制主程序 控制主程序主要实现上述的流程图所要实现的功能 , 通过按键键值 ENTER 和中断来控 制程序的运行 , 如显示字符串、图片、接收、发送 。
程序如下:。
50、/*main* void main (void) uchar i;
char get_string65=0,name15=0,other_name15=0;
uchar input_line=13,input_row=0,str_p=0,shift=1,caps_lock=1;
uchar send=0;
uchar state_flag=0;
uchar output_line=0,name_length=0,other_name_length=0,rcv_length=0,temp_output_line=0;
ControlPinIni();
广东海洋大学 嵌入系统与接口技术课程设计报告 。
51、 18 UART0_Init();
lcd_init();
Clear_LCD();
LCD_Photo(4,20,11,39);
LCD_Write_String(11,0, Copy Right 2011);
LCD_Write_String(13,0,-);
LCD_Write_String(15,0, BY FOX,XLG,CJ);
for (i=0;
i);
DelayNS(200);
Clear_LCD();
LCD_Photo(4,28,11,39);
LCD_Write_String(10,0,enter your name for );
LCD_Write_String(11, 。
52、0, any one can see );
LCD_Write_String(12,0, - );
LCD_Write_String(13,0,Name| |);
LCD_Write_String(14,0, - );
uart0_recvice_flag=0;
input_row=5;
while(1) switch(state_flag) Case 0: send=Get_Inputs(get_string, if (send=1) for (i=0;
get_stringi!=0;
i+) namei=get_stringi;
namei=0;
name_length=i-1;
/记录主机用户 。
53、名字长度 /UART0_Init();
UART0_SendBuf(name);
send=0;
LCD_Photo(4,28,11,39);
LCD_Write_String(12,0, Waiting others );
str_p=0;
/清除输入指针 state_flag=1;
break;
case 1: if (uart0_recvice_flag=1) 广东海洋大学 嵌入系统与接口技术课程设计报告 19 for (i=0;
rcv_bufi!=0;
i+) other_namei=rcv_bufi;
other_namei=0;
other_name_length=i-1;
/记录从机用 。
54、户长度 LCD_Write_String(12,0, );
/清除等待信息 LCD_Write_String(12,0,other_name);
/ LCD_Write_String(13,0,is coming!);
/清除等待信息 DelayNS(1300);
Clear_LCD();
state_flag=2;
LCD_Write_String(12,0,-);
uart0_recvice_flag=0;
/清除接收标志 break;
case 2: send=Get_Inputs(get_string, if (send=1) UART0_SendBuf(get_string);
temp_o 。
55、utput_line=(name_length+str_p+2)/20;
if (name_length+str_p+2)%20) temp_output_line+;
if (output_line+temp_output_line)=12) Clear_LCD_OUTPUT();
output_line=0;
str_p=0;
LCD_Write_String(output_line,0,name);
LCD_Write_String(output_line,name_length+1,:);
LCD_Write_String(output_line,name_length+2,get_s 。
56、tring);
output_line+=temp_output_line;
send=0;
if (uart0_recvice_flag=1) for (i=0;
rcv_bufi!=0;
i+);
/统计接收数组长度 rcv_length=i-1;
temp_output_line=(other_name_length+rcv_length+2)/20;
if (other_name_length+rcv_length+2)%20) temp_output_line+;
if (output_line+temp_output_line)=12) 广东海洋大学 嵌入系统与接口技术课程设计报告 20 。
57、 Clear_LCD_OUTPUT();
output_line=0;
LCD_Write_String(output_line,0,other_name);
LCD_Write_String(output_line,other_name_length+1,:);
LCD_Write_String(output_line,other_name_length+2,rcv_buf);
output_line+=temp_output_line;
rcv_length=0;
uart0_recvice_flag=0;
break;
广东海洋大学 嵌入系统与接口技术课程设计报告 21 4 4PROTE 。
58、USPROTEUS 仿真仿真 4.14.1启动状态仿真启动状态仿真 启动有欢迎界面 , 如图 4.1: D7 D6 D5 D4 D3 D2 D1 D0 VDD5 VDD5 P1.17 P0.25 P0.26 D1.7 D1.6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0 VDD5 VDD5 CD1 WR1 RD1 CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 PG160128A GND GND CE 7 RD 6 C/ 。
59、D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 PG160128A GND GND 图 4.1 启动状态图 4.24.2输入姓名输入姓名 D7 D6 D5 D4 D3 D2 D1 D0 VDD5 VDD5 P1.17 P0.25 P0.26 D1.7 D1.6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0 VDD5 VDD5 CD1 WR1 RD1 GND CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 1 。
60、1 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 PG160128A GND GND U3 LPC2138 CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 PG160128A GND GND 图 4.2 名字输入界面 广东海洋大学 嵌入系统与接口技术课程设计报告 22 4.3输入按键输入按键 D7 D6 D5 D4 D3 D2 D1 D0 VDD5 VDD5 。
61、 P1.17 P0.25 P0.26 D1.7 D1.6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0 VDD5 VDD5 CD1 WR1 RD1 CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 PG160128A GND GND CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 。
62、 18 RST 10 PG160128A GND GND 图 4.3 输入信息仿真 4.44.4含有姓名的通信含有姓名的通信 D7 D6 D5 D4 D3 D2 D1 D0 VDD5 VDD5 P1.17 P0.25 P0.26 D1.7 D1.6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0 VDD5 VDD5 CD1 WR1 RD1 CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 GND GND CE 7 RD 6 。
63、 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 GND GND 图 4.4 通信互动界面 广东海洋大学 嵌入系统与接口技术课程设计报告 23 4.54.5切换大小写以及组合按键切换大小写以及组合按键 D7 D6 D5 D4 D3 D2 D1 D0 VDD5 VDD5 P1.17 P0.25 P0.26 D1.7 D1.6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0 VDD5 VDD5 CD1 WR1 RD1 row1.8 row1.9 。
64、 row1.10 row1.11 CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 LCD1 PG160128A GND GND CE 7 RD 6 C/D 8 VSS 2 VDD 3 CON 4 WR 5 D0 11 FS1 19 FG 1 D1 12 D2 13 D3 14 D4 15 D5 16 D6 17 D7 18 RST 10 LCD2 PG160128A GND GND 图 4.5 大小字母键及双功能键仿真 设计心得 2 。
65、4 设计心得设计心得 在本次课程设计中通过我们选择了模拟 QQ 通讯设计 。
经过两个多星期的忙碌 , 整 个设计实现了从单一的理论学习到解决实际问题的转变 。
通过本次课程设计 , 我们最 大的收获是提高了自己的分析能力 , 培养了我们的寻求解决问题的能力 。
在设计中 ,充分利用我们所学的知识 , 例如:键盘扫描 , 160*128 , LPC2138 的等 , 也有通过查找 资料的额外收获如:UART0 , 图片取模的应用 。
这次实践让我们受益匪浅 , 在摸索该如 何设计电路所实现的功能时 , 培养了我们的设计思维 , 在让我们体会到设计地电路及 程序编写的艰辛时 , 也让我们体会到成功的喜悦和快乐 。
设计使用的软件是 ADS1.2 和 PROTEU 。
66、S 7.5 , 由于较早接触过这两个软件 , 所以画图和仿真就比较容易 , 同时也使得 设计有了质量的保证 。
课程设计提高了我们的综合设计能力 , 它使得我们的理论知识得到了综合应用 , 培 养了我们综合运用所学的理论知识和解决较复杂的实际问题的能力 。
电子技术发展呈现出系统集成化 , 自动化 , 设计自动化 , 用户专业化和测试智能化 的优势 , 作为一个大学生 , 我们必须紧随时代的发展 , 真实的我们比寻妖扩展自己的 知识 , 并利用计算机辅助分析和设计 , 这对我们是有益的 。
课程设计的自主设计、学习和研究过程中通过写课程设计的总结报告 , 初步训练了 我们的书面表达能力 , 组织逻辑能力 , 这些技能应用性强 , 对我们的将来就业和进一 步发展帮助很大 。
同时也加强了对课本知识的理解 , 使我们的理论和实际的联系加深 。
本次设计也反映了我们的知识严重的不足 , 激发了我们的自学能力和应对挑战的能力 ,为今后的学习打下了良好的基础 , 培养了我们的严谨务实 , 戒骄戒躁的作风 。
设计心得 25 参考文献参考文献 1周美娟.ARM7 技术及系统设计.北京:清华大学出版社,2007 2郑逢兴.ARM7 接口原理与技术.长沙:国防科技大学出版社 , 1993 3刘复华.A 。

稿源:(未知)
【傻大方】网址:/a/2021/0707/0022751282.html
标题:嵌入式系统与接口技术课程设计|嵌入式系统与接口技术课程设计ARM7的串口聊天程序设计