arm.docx
- 文档编号:16329967
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:21
- 大小:92.05KB
arm.docx
《arm.docx》由会员分享,可在线阅读,更多相关《arm.docx(21页珍藏版)》请在冰点文库上搜索。
arm
..学院
ARM课程设计报告
排队叫号系统设计
目录
1设计任务及要求1
2设计原理1
2.1设计思路1
2.2设计流程1
2.2.1系统的总体设计框图1
2.2.2各模块设计原理1
3系统设计4
3.1键盘叫号模块功能4
3.2触摸屏取号模块4
3.3Lcd显示被叫号数模块4
3.4整个系统总体显示界面4
4参考程序5
5系统调试与性能分析12
5.1软件部分调试12
5.2硬件部分调试12
5.3硬件测试图12
5.4性能分析13
6总结14
排队叫号系统设计
1设计任务及要求
ARM的排队叫号系统设计
1、模拟现有银行等系统的排队叫号器
2、支持3个工作人员
3、支持普通客户,VIP客户
4、在LED或LCD上显示叫到的客户编号
5、在客户按键时,显示客户编号及需等待的人数
2设计原理
2.1设计思路
根据本次课程设计任务及要求,将整个设计分为以下三个模块来实现。
分别为:
键盘叫号模块、触摸屏取号模块、lcd显示被叫号数模块。
2.2设计流程
2.2.1系统的总体设计框图
Lcd显示被叫号模块
触摸屏取号模块
键盘叫号模块
2.2.2各模块设计原理
(1)键盘叫号模块
开发板上的键盘采用的是HD7279A专用键盘显示电路,真正的单片LED数码管显示和键盘接口芯片,无需外围电路,只需要外接少量的电阻等,即可构成完善的显示、键盘接口电路。
而与CPU的接口采用SPI串行接口方式,使用方便。
可方便的构成64按键,8位数码显示电路(共阴极结构)。
HD7279A内部含有译码器,可直接受BCD码或16进制数据或七段显示码数据。
此外,还具有多种控制指令,如消隐,闪烁,左移,右移,段寻址等。
具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。
(2)触摸屏取号模块
S3C2410内部触摸屏电路连接线路如下:
ADC触摸屏控制寄存器(ADCTSC)
ADCTSC符号
位
描述
初始状态
Reserved
[8
保留位
0
YM_SEN
[7]
选择YMON的输出值。
0:
YMON输出0(YM=高阻)
1:
YMON输出1(YM=GND)
0
YP_SEN
[6]
选择nYPON的输出值。
0:
nYPON输出0(YP=外部电压)
1:
nYPON输出1(YP连接到AIN[5])
1
XM_SEN
[5]
选择XMON的输出值。
0:
XMON输出0(XM=高阻)
1:
XMON输出1(XM=GND)
0
XP_SEN
[4]
选择nXPON的输出值。
0:
nXPON输出0(XP=外部电压)
1:
nXPON输出1(XP连接AIN[7])
0
PULL_UP
[3]
上拉开关使能。
0:
XP上拉使能;1:
XP上拉不使能
1
AUTO_P5T
[2]
X位置和Y位置自动顺序转换。
0:
正常ADC转换模式
1:
自动顺序X/Y位置转换模式
0
XY_PST
[1:
0]
X位置或Y位置的手动测量。
00:
无操作模式;01:
X位置测量
10:
Y位置测量;11:
等待中断模式
0
(3)Lcd显示被叫号模块
S3C2410中具有内置的LCD控制器,它能将显示缓存(在SDRAM存储器中)中的LCD图像数据传输到外部的LCD驱动电路上的逻辑功能。
它支持单色、4级、16级灰度LCD显示,以及8位彩色、12位彩色LCD显示。
在显示灰度时,它采用时间抖动算法(time-basedditheringalgorithm)和帧率控制(FrameRateControl)方法,在显示彩色时,它采用RGB的格式,即RED、GREEN、BLUE,三色混合调色。
通过软件编程,可以实现332的RGB调色的格式,565全彩输出,5551全彩输出等。
对于不同尺寸的LCD显示器,它们会有不同的垂直和水平象素点、不同的数据宽度、不同的接口时间及刷新率,通过对LCD控制器中的相应寄存器写入不同的值,来配置不同的LCD显示板。
另外,还可以设置虚拟屏幕,增加显示的面积。
LCD模块内部电路结构
LCD绘图函数:
U32GUI_Init(void);//GUI初始化
voidDraw_Point(U16x,U16y);//绘制点API
U32Get_Point(U16x,U16y);//得到点API
voidDraw_HLine(U16y0,U16x0,U16x1);//绘制水平线API
voidDraw_VLine(U16x0,U16y0,U16y1);//绘制竖直线API
voidDraw_Line(I32x1,I32y1,I32x2,I32y2);//绘制线API
voidDraw_Circle(U32x0,U32y0,U32r);//绘制圆API
voidFill_Circle(U16x0,U16y0,U16r);//填充圆API
voidFill_Rect(U16x0,U16y0,U16x1,U16y1);//填充区域API
voidSet_Color(U32color);//设定前景颜色API
voidSet_BkColor(U32color);//设定背景颜色API
voidSet_Font(GUI_FONT*pFont);//设定字体类型API
voidDisp_String(constI8*s,I16x,I16y);//显示字体API
Disp_String("",U16x0,U16y0);//lcd显示变量函数
lcd_Printf("%d%d",x1,y1);
3系统设计
3.1键盘叫号模块功能
该模块模拟银行服务窗口,通过HD7279A专用键盘显示电路实现,按键0表示1号窗口,按键1表示2号窗口,按键2表示三号窗口,另外按键3具有清楚lcd上显示的被叫号数的功能。
3.2触摸屏取号模块
该模块模拟银行客户取号,通过在触摸屏上设好的取号界面上触摸操作,点击对应的触摸按键区域在相对应的位置显示各不同类型业务等待人数
3.3Lcd显示被叫号数模块
该模块模拟银行在屏幕上向客户展示某类型的客户到某个窗口办理业务,显示的内容为:
请v+被叫号数或p+被叫号数到窗口+窗口号数。
3.4整个系统总体显示界面
类型
普通
vip
等待
4参考程序
#include
#include
#include
#include"keydriver.h"//HD7279A键盘驱动头文件
//#include"..\INC\config.h"
#include
#include"target.h"
#include"2410LIB.h"
#include"2410addr.h"
#include"..\..\Touch_driver\inc\touch2410.h"//触摸屏驱动头文件
#include"..\gui\glib\glib.h"
#include"..\..\lcddrv\inc\lcd.h"
#include"..\..\lcddrv\inc\lcdlib.h"
//voidswitchstat(void);
externGUI_FONTGUI_Font8x16;//字体大小
externGUI_FONTCHINESE_FONT12;//字体类型
externGUI_FONTCHINESE_FONT16;
charm,m1,m2;
charn,n1,n2;
inti;
charj,j3,j2;
chark,k1,k2;
charx,y;
/*
*******************************************************************************
-函数名称:
Main(void)
*******************************************************************************
*/
voidMain(void)
{
U8keylast;
Target_Init();//目标板初始化
KeyINT_Init();//按键初始化
GUI_Init();
Set_Font(&GUI_Font8x16);//设定字体类型API
Set_Color(GUI_WHITE);//设置颜色
Fill_Rect(0,0,639,479);
Set_BkColor(GUI_WHITE);//设置背景颜色
Set_Color(GUI_BLUE);
Draw_Line(210,60,380,60);//画叫号显示框
Draw_Line(210,140,380,140);
Draw_Line(210,60,210,140);
Draw_Line(380,60,380,140);
for(i=0;i<3;i++)//用户取号界面
Draw_Line(80,i*80+240,560,i*80+240);
for(i=0;i<4;i++)
Draw_Line(i*160+80,240,i*160+80,400);
Set_Font(&GUI_Font8x16);
Set_Font(&CHINESE_FONT12);
Disp_String(CN_start"类型"CN_end,140,280);
Set_Font(&GUI_Font8x16);
Set_Font(&CHINESE_FONT12);
Disp_String(CN_start"普通"CN_end,300,280);
Set_Font(&GUI_Font8x16);
Disp_String("vip",460,280);
Set_Font(&GUI_Font8x16);
Set_Font(&CHINESE_FONT12);
Disp_String(CN_start"等待"CN_end,140,360);
while
(1)
{
if(touchok)
{//点击触摸屏普通选项等待人数加计数
if((240 { k++; k1=k/10; k2=k%10; Set_Color(GUI_BLUE); Set_Font(&GUI_Font8x16); Disp_String("",300,360); lcd_Printf("%d%d",k1,k2);//显示变量,普通等待的人数 Set_BkColor(GUI_YELLOW);//点击普通选项,该项附近显示黄色 Set_Color(GUI_YELLOW); Fill_Rect(242,242,398,318); Set_Color(GUI_BLUE); Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"普通"CN_end,300,280); Delay(5000); Set_BkColor(GUI_WHITE); Set_Color(GUI_WHITE);//黄色清除,恢复原色 Fill_Rect(242,242,398,318); Set_Color(GUI_BLUE); Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"普通"CN_end,300,280); } if((400 {//点击触摸屏vip选项等待人数加计数 Set_Color(GUI_BLUE); Set_Font(&GUI_Font8x16); j++; j3=j/10; j2=j%10; Disp_String("",460,360); lcd_Printf("%d%d",j3,j2);//显示变量,vip等待的人数 Set_BkColor(GUI_YELLOW);//点击vip选项,该项附近显示黄色 Set_Color(GUI_YELLOW); Fill_Rect(402,242,558,318); Set_Color(GUI_BLUE); Set_Font(&GUI_Font8x16); Disp_String("vip",460,280); Delay(5000); Set_BkColor(GUI_WHITE); Set_Color(GUI_WHITE); Fill_Rect(402,242,558,318); Set_Color(GUI_BLUE); Set_Font(&GUI_Font8x16); Disp_String("vip",460,280); } touchok=0; } keylast=key_number;//取出按键值 key_number=0xff;//按键值重置为无按键 switch(keylast) { case0: //按下按键0,lcd显示情况(即模拟银行窗口1) if(j>0) {//当vip有人等待时,按下0键,lcd上显示: 请 j--;v+号数到窗口1,vip等待人数减1 j3=j/10; j2=j%10; Set_Font(&GUI_Font8x16); Disp_String("",460,360);//显示变量,vip等待的人数 lcd_Printf("%d%d",j3,j2); n++;//叫号框显示vip号数加1 n1=n/10; n2=n%10; Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"请"CN_end,250,100); Set_Font(&GUI_Font8x16); Disp_String("v",266,100); Set_Font(&GUI_Font8x16); Disp_String("",276,100); lcd_Printf("%d%d",n1,n2); Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"号到窗口"CN_end,295,100); Set_Font(&GUI_Font8x16); Disp_String("1",345,100); } elseif(k>0&&j==0)//当vip无人等待,普通有人时,按下0键,lcd上 {显示: 请p+号数到窗口1 n=0;//叫号显示框vip号数清零 k--;//普通等待人数减1 k1=k/10; k2=k%10; Set_Font(&GUI_Font8x16); Disp_String("",300,360);//显示变量,普通等待的人数 lcd_Printf("%d%d",k1,k2); m++;//叫号框显示普通号数加1 m1=m/10; m2=m%10; Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"请"CN_end,250,100); Set_Font(&GUI_Font8x16); Disp_String("p",266,100); Set_Font(&GUI_Font8x16); Disp_String("",276,100); lcd_Printf("%d%d",m1,m2);//叫号框显示普通号数 Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"号到窗口"CN_end,295,100); Set_Font(&GUI_Font8x16); Disp_String("1",345,100);} elseif(k==0&&j==0)//普通、vip都无人等待时叫号显示框普通 {m=0;号数清零 } break; case1: //按下按键1,lcd显示情况(即模拟银行窗口2) if(j>0)//当vip有人等待时,按下1键,lcd上显示: 请 {v+号数到窗口2,vip等待人数减1 j--; j3=j/10; j2=j%10; Set_Font(&GUI_Font8x16); Disp_String("",460,360); lcd_Printf("%d%d",j3,j2);//显示变量,vip等待的人数 n++;//叫号框显示vip号数加1 n1=n/10; n2=n%10; Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"请"CN_end,250,100); Set_Font(&GUI_Font8x16); Disp_String("v",266,100); Set_Font(&GUI_Font8x16); Disp_String("",276,100); lcd_Printf("%d%d",n1,n2);//叫号框上显示vip号数 Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"号到窗口"CN_end,295,100); Set_Font(&GUI_Font8x16); Disp_String("2",345,100); } elseif(k>0&&j==0)//当vip无人等待,普通有人时,按下1键,lcd上 {n=0;显示: 请p+号数到窗口2,叫号显示框vip号数清零 k--;//普通等待人数减1 k1=k/10; k2=k%10; Set_Font(&GUI_Font8x16); Disp_String("",300,360);//显示变量,普通等待的人数 lcd_Printf("%d%d",k1,k2); m++;叫号框显示普通号数加1 m1=m/10; m2=m%10; Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"请"CN_end,250,100); Set_Font(&GUI_Font8x16); Disp_String("p",266,100); Set_Font(&GUI_Font8x16); Disp_String("",276,100);//叫号框显示普通号数 lcd_Printf("%d%d",m1,m2); Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"号到窗口"CN_end,295,100); Set_Font(&GUI_Font8x16); Disp_String("2",345,100);} elseif(k==0&&j==0)//普通、vip都无人等待时叫号显示框普通 {m=0;号数清零 } break; case2: //按下按键2,lcd显示情况(即模拟银行窗口3) if(j>0)//当vip有人等待时,按下2键,lcd上显示: 请 {v+号数到窗口3。 j--;//vip等待人数减1 j3=j/10; j2=j%10; Set_Font(&GUI_Font8x16); Disp_String("",460,360); lcd_Printf("%d%d",j3,j2);//显示变量,vip等待的人数 n++;//叫号框显示vip号数加1 n1=n/10; n2=n%10; Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"请"CN_end,250,100); Set_Font(&GUI_Font8x16); Disp_String("v",266,100); Set_Font(&GUI_Font8x16); Disp_String("",276,100);//叫号框上显示vip号数 lcd_Printf("%d%d",n1,n2); Set_Font(&GUI_Font8x16); Set_Font(&CHINESE_FONT12); Disp_String(CN_start"号到窗口"CN_end,295,100); Set_Font(&GUI_Font8x16); Disp_String("3",345,100); } elseif(k>0&&j==0)//当vip无人等待,普通有人时,按下2键,lcd上 {n=0;显示: 请p+号数到窗口3,叫号显示框vip号数清零 k--;//普通等待人数减1 k1=k/10; k2=k%10; Set_Fon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arm