人机接口电路设计及编程.pptx
《人机接口电路设计及编程.pptx》由会员分享,可在线阅读,更多相关《人机接口电路设计及编程.pptx(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1人机接口电路设计及编程人机接口电路设计及编程第一页,共117页。5.4.1 键盘键盘(jinpn)电路电路设计及编程设计及编程第1页/共117页第二页,共117页。1.1.电路电路电路电路(dinl)(dinl)键盘接口电路如图5-12所示,板上扩展了一个44行列式矩阵键盘接口。该键盘采用中断扫描方式进行工作(gngzu),行线选用PORTG47输出,列线选用PORTF58为输入。行线接上拉电阻保持高电平,并通过“与”门将输出信号与MCU的中断EXINT0连接;列线接上拉电阻保持高电平。第2页/共117页第三页,共117页。2.2.编程编程编程编程 (1)I/O口和中断初始化 I/O引
2、脚设置:rPDATE=0X60;rPCONF=0 x2A;列线PORTF58为输入rPUPF=0 x0;列线接上拉电阻rPDATG=0 x0;rPCONG=0 x55FF;行线PORTG47输出,PORTG0作为(zuwi)EXINT0连接rPUPG=0 x0;行线接上拉电阻第4页/共117页第五页,共117页。中断初始化 rINTCON=0 x5;/非向量模式,IRQ 允许,FIQ 禁止(jnzh)rINTMOD=0 x0;/全部IRQ 模式 rINTMSK =(BIT_GLOBAL|BIT_EINT0);/EXINT0允许,所有中断屏蔽位允许 pISR_EINT0=(unsigned)ke
3、yboard_ISR;/指定中断服务程序第5页/共117页第六页,共117页。(2)程序 将行线PORTG47输出为低电平,当有键盘按下时,该行线被拉为低电平,使得EXINT0输入也为低电平,MCU产生中断。中断产生后通过对键盘的行和列进行扫描的方法,可以计算出是哪个(n ge)键按下,并跳到相应的键盘处理程序中去。第6页/共117页第七页,共117页。void keyboard_ISR(void)void keyboard_ISR(void)char x,y,xrecord,yrecord,temp;char x,y,xrecord,yrecord,temp;rI_ISPC=BIT_EINT
4、0;rI_ISPC=BIT_EINT0;/clear pending_bit/clear pending_bit Delay(400);Delay(400);/delay 40ms/delay 40ms if(rPDATF&0 x1E0)=0 x1E0)if(rPDATF&0 x1E0)=0 x1E0)return 0;return 0;/no keyboard press,return/no keyboard press,return 第7页/共117页第八页,共117页。elseelse x=1;x=1;y=1;y=1;xrecord=(rPDATF&0 x1E0)1);xrecord=(
5、rPDATF&0 x1E0)1);xrecord=xrecord4;xrecord=xrecord4;while(xrecord!=0 x1)while(xrecord!=0 x1)/judge row/judge row x=x+1;x=x+1;xrecord=xrecord1;xrecord=xrecord1;第8页/共117页第九页,共117页。if(xrecord=0)if(xrecord=0)rPDATG=0X0F;rPDATG=0X0F;/no,return/no,return return 0;return 0;Delay(200);Delay(200);/delay 20ms/
6、delay 20ms rPDATG=0XEF;rPDATG=0XEF;/input high/input high第9页/共117页第十页,共117页。while(rPDATF&0 x1E0)=0 x1E0)while(rPDATF&0 x1E0)=0 x1E0)rPDATG=rPDATG1;rPDATG=rPDATG4)&0 x0F;yrecord=(rPDATG&0 xF0)4)&0 x0F;while(yrecord!=0 x1)while(yrecord!=0 x1)/judge line/judge line y=y+1;y=y+1;yrecord=yrecord1;yrecord=
7、yrecord1;if(yrecord=0)if(yrecord=0)rPDATG=0X0F;rPDATG=0X0F;/no board press,return/no board press,return return 0;return 0;第11页/共117页第十二页,共117页。Led_Display(x+(y-1)*4-1);Led_Display(x+(y-1)*4-1);Uart_Printf(%3d,x+(y-1)*4-1);Uart_Printf(%3d,x+(y-1)*4-1);Delay(1200);Delay(1200);/delay 40ms/delay 40ms rP
8、DATG=0X0F;rPDATG=0X0F;第12页/共117页第十三页,共117页。5.4.2 LCD5.4.2 LCD接口接口(ji ku)(ji ku)电路设计及电路设计及编程编程第13页/共117页第十四页,共117页。1.LCD1.LCD接口接口接口接口(ji k(ji k u)u)信号信号信号信号 EV44B0 II现配有现配有160240的单色显示屏,的单色显示屏,4比特单扫描。比特单扫描。EV44B0 II将将LCD控制信号控制信号线连接到线连接到JP6上,与上,与LCD模块相连,其原理模块相连,其原理如图如图5-13所示。所示。在在LCD模块上,集成模块上,集成(j chn)
9、了了LCD驱驱动器和专门的电压转换电路,用以驱动动器和专门的电压转换电路,用以驱动LCD屏幕和适配屏幕和适配LCD工作电压。工作电压。LCD连接连接器的信号定义如表器的信号定义如表5-4所示。所示。第14页/共117页第十五页,共117页。1.LCD1.LCD接口接口接口接口(ji k(ji k u)u)信号信号信号信号 EV44B0 II现配有160240的单色显示屏,4比特单扫描。EV44B0 II将LCD控制(kngzh)信号线连接到JP6上,与LCD模块相连,其原理如图5-13所示。在LCD模块上,集成了LCD驱动器和专门的电压转换电路,用以驱动LCD屏幕和适配LCD工作电压。LCD连
10、接器的信号定义如表5-4所示。第16页/共117页第十七页,共117页。2.2.编程编程编程编程 显示(xinsh)缓冲区与LCD象素对应关系图如图5-14所示。第18页/共117页第十九页,共117页。(1)LCD 初始化程序 通常采用(ciyng)S3C44B0X的PORTC口和PPORTD口作为LCD驱动接口,因此需要设置它们工作在第3功能状态,设置I/O口控制寄存器的语句如下:rPDATC=0 x8400;rPCONC=0 x5F5FFFFF;rPUPC=0 x33ff;/should be enabled rPCOND=0 xaaaa;rPUPD=0 xff;第20页/共117页第二
11、十一页,共117页。LCD初始化程序(chngx)如下:void Lcd_MonoInit(void)/160 x240 1bit/1pixel LCD#define MVAL_USED 0rLCDCON1=(0)|(15)|(MVAL_USED7)|(0 x38)|(0 x310)|(CLKVAL_MONO12);/disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,rLCDCON2=(LINEVAL)|(HOZVAL10)|(1021);/LINEBLANK=10第21页/共117页第二十二页,共117页。rLCDSADDR1=(0 x022)rLCDSADDR
12、1=(0 x022)1);1);/monochrome,LCDBANK,LCDBASEU/monochrome,LCDBANK,LCDBASEUrLCDSADDR2=M5D(U32)frameBuffer1+(SCR_XrLCDSADDR2=M5D(U32)frameBuffer1+(SCR_X SIZE*LCD_YSIZE/8)1)|(MVAL21)|(11)|(MVAL21)|(129);rLCDSADDR3=(LCD_XSIZE/16)|(SCR_XrLCDSADDR3=(LCD_XSIZE/16)|(SCR_X SIZE-LCD_XSIZE)/16)9);SIZE-LCD_XSIZE)
13、/16)9);rLCDCON1=(1)|(15)|(MVAL_USED7)|(0 x38)|rLCDCON1=(1)|(15)|(MVAL_USED7)|(0 x38)|(0 x310)|(CLKVAL_MONO12);(0 x310)|(CLKVAL_MONO12);/enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk/enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,第22页/共117页第二十三页,共117页。(2)LCD(2)LCD 显示显示显示显示(xi(xi nsh)nsh)程序程序程序程序 LCD 显示(xinsh)程序如下:#
14、define frameBuffer1 0 xc400000extern unsigned char*Buf;void displaylcd(void)unsigned int*pbuffer,temp_data;int i;pbuffer=(U32*)frameBuffer1;第23页/共117页第二十四页,共117页。for(i=0;i(4800/4);i+)for(i=0;i(4800/4);i+)temp_data=(Bufi*4+3 24)+(Bufi*4+2 temp_data=(Bufi*4+3 24)+(Bufi*4+2 16)+(Bufi*4+1 8)+(Bufi*4);16
15、)+(Bufi*4+1 8)+(Bufi*4);pbufferi=temp_data;pbufferi=temp_data;Delay(10);Delay(10);第24页/共117页第二十五页,共117页。(3)LCD(3)LCD 清屏程序清屏程序清屏程序清屏程序(chngx)(chngx)LCD 清屏程序(chngx)如下:void clrscreen(void)int i,j;unsigned int*pbuffer;pbuffer=(U32*)frameBuffer1;for(i=0;i4800/4;i+)pbufferi=0;/(0 x0FFFFFFFF);第25页/共117页第二十
16、六页,共117页。5.4.3 触摸屏电路设计及触摸屏电路设计及编程编程1.触摸屏的工作(gngzu)原理 触摸屏按其工作(gngzu)原理的不同分为表面声波屏、电容屏、电阻屏和红外屏几种。常见的又数电阻触摸屏。如图5-15 所示,电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。第26页/共117页第二十七页,共117页。如图5-16所示,当手指或笔触摸(ch m)屏幕时(图
17、c),平常相互绝缘的两层导电层就在触摸(ch m)点位置有了一个接触,因其中一面导电层(顶层)接通X 轴方向的5V 均匀电压场(图a),使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,进行A/D 转换,并将得到的电压值与5V 相比即可得触摸(ch m)点的X 轴坐标为(原点在靠近接地点的那端):Xi=LxVi/V(即分压原理)同理得出Y 轴的坐标,这就是所有电阻触摸(ch m)屏共同的最基本原理。第28页/共117页第二十九页,共117页。2.2.触摸屏电路触摸屏电路触摸屏电路触摸屏电路(dinl)(dinl)控制控制控制控制 触摸屏的控制(kngzh)采用专用芯片,专门处理是否
18、有笔或手指按下触摸屏,并在按下时分别给两组电极通电,然后将其对应位置的摸拟电压信号经过A/D 转换送回处理器.第30页/共117页第三十一页,共117页。我们选取 GPG 口与 ADS7843 接口。共运用了 PG2PG7 口共 6 条口线。你也可以选择其它的 I/O 口,但注意不要与 I/O 口上已经设定的功能(例如(lr)串口)相冲突。参考电路图如下:按照下图用导线将两个模块连接起来。如图5-17所示。第31页/共117页第三十二页,共117页。3 3.编程编程编程编程(1)PCONG 寄存器配置 按照以上电路来设置(shzh),PG6和PG5输入,PG4PG2输出,PG7作为中断EINT
19、7且加内部上拉电阻,初始化语句如下:rPCONG=0 x015f;rPUPG&=0 x80;第33页/共117页第三十四页,共117页。(2)ADS7843 编程 ADS7843的控制字如表5-5所示,其中(qzhng)S为数据传输起始标志位,该位必为。A2A0进行通道选择。MODE用来选择A/D转换的精度,1-选择位,-选择12位。SER/DFR选择参考电压的输入模式。第34页/共117页第三十五页,共117页。PD1和PD0选择省电模式:00-为省电模式允许,在两次A/D转换之间掉电,且中断允许;01同00,只是不允许中断;10保留;11禁止省电模式。A0A2 用来(yn li)进行开关切
20、换,如表5-6所示。第36页/共117页第三十七页,共117页。我们采用固定参考电压模式,因此(ync)SER/DFR1。程序中首先探测 PENIRQ 是否为低电平,如果为高则认为触摸屏没有接触;如果探测到 PENIRQ 为低电平,则认为有接触。利用软件模拟 DIN、DOUT、DCLK上的 3 线串行传输的时序,将读取 X 坐标数值或 Y 坐标数值的控制字串行送入 ADS7843,并串行读出坐标值。第38页/共117页第三十九页,共117页。检测检测检测检测(ji(ji n c)PENIRQn c)PENIRQ#define TOUCH_MSR_Y 0 x9c;/#define TOUCH_M
21、SR_Y 0 x9c;/读读 Y Y 轴坐标命令轴坐标命令#define TOUCH_MSR_X 0 xdc;/#define TOUCH_MSR_X 0 xdc;/读读 X X 轴坐标命令轴坐标命令if(rPDATG&0 x80)=0)/PENIRQ if(rPDATG&0 x80)=0)/PENIRQ 电平为低电平为低/TouchState.pressed=1;/TouchState.pressed=1;_State.Pressed=1;/_State.Pressed=1;/说明说明(shumng)(shumng)已经按下已经按下temp=TOUCH_MSR_X;temp=TOUCH_MS
22、R_X;_State.x=ReadTouch(temp);_State.x=ReadTouch(temp);temp=TOUCH_MSR_Y;temp=TOUCH_MSR_Y;_State.y=ReadTouch(temp);_State.y=ReadTouch(temp);第39页/共117页第四十页,共117页。送控制送控制送控制送控制(kngzh)(kngzh)字并读取结果子程序字并读取结果子程序字并读取结果子程序字并读取结果子程序int ReadTouch(unsigned char command)int ReadTouch(unsigned char command)unsigne
23、d char temp,i,ack,j,k;unsigned char temp,i,ack,j,k;ack=0;ack=0;/PG7-PENIRQ,PG6-BUSY,PG5-DOUT,/PG7-PENIRQ,PG6-BUSY,PG5CS,PG3-DCLK,PG2-DIN PG4-CS,PG3-DCLK,PG2-DINrPDATG&=0 xe7;rPDATG&=0 xe7;/cs/cs 置低置低;dclk;dclk 置低置低temp=0 x80;temp=0 x80;第40页/共117页第四十一页,共117页。for(i=0;i8;i+)for(i=0;i1;temp=temp1;/移位移位
24、第41页/共117页第四十二页,共117页。while(temp=(rPDATG&0 x40)=0);while(temp=(rPDATG&0 x40)=0);等待等待 BUSY BUSY 变低变低 rPDATG&=0 xdf;/din rPDATG&=0 xdf;/din 清零清零/再再 1 1 个时钟个时钟(shzhng)(shzhng)以后开始接收数据以后开始接收数据 rPDATG|=0 x08;rPDATG|=0 x08;/置高置高 dclk dclk delay(2);delay(2);rPDATG&=0 xf7;rPDATG&=0 xf7;/清零清零 dclk dclk delay
25、(2);delay(2);第42页/共117页第四十三页,共117页。for(i=0;i7;i+)for(i=0;i7;i+)取得取得(q(q d)d)前前 7 7 位坐标数据(高位在前)位坐标数据(高位在前)rPDATG|=0 x08;rPDATG|=0 x08;/置高置高 dclk dclkif(temp=rPDATG&0 x20)if(temp=rPDATG&0 x20)/取得取得(q(q d)din d)din 上的上的 1 1 位数据位数据ack+=1;ack+=1;ack=ack1;ack=ack1;delay(2);delay(2);rPDATG&=0 xf7;rPDATG&=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人机 接口 电路设计 编程
限制150内