最新人机接口电路设计方案及编程教学课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《最新人机接口电路设计方案及编程教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 人机 接口 电路 设计方案 编程 教学 课件
- 资源描述:
-
1、5.4.1 键盘电路设计及编程else x=1;y=1;xrecord=(rPDATF&0 x1E0)1);xrecord=xrecord4;while(xrecord!=0 x1)/judge row x=x+1;xrecord=xrecord1;if(xrecord=0)rPDATG=0X0F;/no,return return 0;Delay(200);/delay 20ms rPDATG=0XEF;/input highwhile(rPDATF&0 x1E0)=0 x1E0)rPDATG=rPDATG4)&0 x0F;while(yrecord!=0 x1)/judge line y=
2、y+1;yrecord=yrecord1;if(yrecord=0)rPDATG=0X0F;/no board press,return return 0;Led_Display(x+(y-1)*4-1);Uart_Printf(%3d,x+(y-1)*4-1);Delay(1200);/delay 40ms rPDATG=0X0F;5.4.2 LCD接口电路设计及编程1.LCD接口信号 EV44B0 II现配有160240的单色显示屏,4比特单扫描。EV44B0 II将LCD控制信号线连接到JP6上,与LCD模块相连,其原理如图5-13所示。在LCD模块上,集成了LCD驱动器和专门的电压转换
3、电路,用以驱动LCD屏幕和适配LCD工作电压。LCD连接器的信号定义如表5-4所示。1.LCD接口信号 EV44B0 II现配有160240的单色显示屏,4比特单扫描。EV44B0 II将LCD控制信号线连接到JP6上,与LCD模块相连,其原理如图5-13所示。在LCD模块上,集成了LCD驱动器和专门的电压转换电路,用以驱动LCD屏幕和适配LCD工作电压。LCD连接器的信号定义如表5-4所示。Pin SignalPin SignalPin SignalPin Signal1 VM6 VDD11 VD216 VD72 VRAME7 GND12 VD317 TSPX3 VLINE8 VD413 G
4、ND18 TSMX4 VCLK E9 VD014 VD519 TSPY5 GPB1010 VD115 VD620 TSMY2.编程 显示缓冲区与LCD象素对应关系图如图5-14所示。(1)LCD 初始化程序 通常采用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;LCD初始化程序如下:void Lcd_MonoInit(v
5、oid)/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=10rLCDSADDR1=(0 x022)1);/monochrome,LCDBANK,LCDBASEUrLCDSADDR2=M5D(U32)frameBuffer1+(SCR_X SIZE*LCD
6、_YSIZE/8)1)|(MVAL21)|(129);rLCDSADDR3=(LCD_XSIZE/16)|(SCR_X SIZE-LCD_XSIZE)/16)9);rLCDCON1=(1)|(15)|(MVAL_USED7)|(0 x38)|(0 x310)|(CLKVAL_MONO12);/enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,(2)LCD 显示程序 LCD 显示程序如下:#define frameBuffer1 0 xc400000extern unsigned char*Buf;void displaylcd(void)unsigned int*p
7、buffer,temp_data;int i;pbuffer=(U32*)frameBuffer1;for(i=0;i(4800/4);i+)temp_data=(Bufi*4+3 24)+(Bufi*4+2 16)+(Bufi*4+1 8)+(Bufi*4);pbufferi=temp_data;Delay(10);(3)LCD 清屏程序 LCD 清屏程序如下:void clrscreen(void)int i,j;unsigned int*pbuffer;pbuffer=(U32*)frameBuffer1;for(i=0;i4800/4;i+)pbufferi=0;/(0 x0FFFFF
8、FFF);5.4.3 触摸屏电路设计及编程1.触摸屏的工作原理 触摸屏按其工作原理的不同分为表面声波屏表面声波屏、电容屏电容屏、电阻屏电阻屏和红外屏红外屏几种。常见的又数电阻触摸屏。如图5-15 所示,电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。如图5-16所示,当手指或笔触摸屏幕时(图c),平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层(顶层)接
9、通X 轴方向的5V 均匀电压场(图a),使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,进行A/D 转换,并将得到的电压值与5V 相比即可得触摸点的X 轴坐标为(原点在靠近接地点的那端):Xi=LxVi/V(即分压原理)同理得出Y 轴的坐标,这就是所有电阻触摸屏共同的最基本原理。2.触摸屏电路控制 触摸屏的控制采用专用芯片,专门处理是否有笔或手指按下触摸屏,并在按下时分别给两组电极通电,然后将其对应位置的摸拟电压信号经过A/D 转换送回处理器.我们选取 GPG 口与 ADS7843 接口。共运用了 PG2PG7 口共 6 条口线。你也可以选择其它的 I/O 口,但注意不要与 I/
10、O 口上已经设定的功能(例如串口)相冲突。参考电路图如下:按照下图用导线将两个模块连接起来。如图5-17所示。3.编程(1)PCONG 寄存器配置 按照以上电路来设置,PG6和PG5输入,PG4PG2输出,PG7作为中断EINT7且加内部上拉电阻,初始化语句如下:rPCONG=0 x015f;rPUPG&=0 x80;(2)ADS7843 编程 ADS7843的控制字如表5-5所示,其中S为数据传输起始标志位,该位必为。A2A0进行通道选择。MODE用来选择A/D转换的精度,1-选择位,-选择12位。SER/DFR选择参考电压的输入模式。PD1和PD0选择省电模式:00-为省电模式允许,在两次
11、A/D转换之间掉电,且中断允许;01同00,只是不允许中断;10保留;11禁止省电模式。A0A2 用来进行开关切换,如表5-6所示。SER/DFR1 时,A0A2 输入设置 我们采用固定参考电压模式,因此 SER/DFR1。程序中首先探测 PENIRQ 是否为低电平,如果为高则认为触摸屏没有接触;如果探测到 PENIRQ 为低电平,则认为有接触。利用软件模拟 DIN、DOUT、DCLK上的 3 线串行传输的时序,将读取 X 坐标数值或 Y 坐标数值的控制字串行送入 ADS7843,并串行读出坐标值。检测 PENIRQ#define TOUCH_MSR_Y 0 x9c;/读 Y 轴坐标命令#de
12、fine TOUCH_MSR_X 0 xdc;/读 X 轴坐标命令if(rPDATG&0 x80)=0)/PENIRQ 电平为低/TouchState.pressed=1;_State.Pressed=1;/说明已经按下temp=TOUCH_MSR_X;_State.x=ReadTouch(temp);temp=TOUCH_MSR_Y;_State.y=ReadTouch(temp);送控制字并读取结果子程序int ReadTouch(unsigned char command)unsigned char temp,i,ack,j,k;ack=0;/PG7-PENIRQ,PG6-BUSY,PG
13、5CS,PG3-DCLK,PG2-DINrPDATG&=0 xe7;/cs 置低;dclk 置低temp=0 x80;for(i=0;i1;/移位 while(temp=(rPDATG&0 x40)=0);等待 BUSY 变低 rPDATG&=0 xdf;/din 清零/再 1 个时钟以后开始接收数据 rPDATG|=0 x08;/置高 dclk delay(2);rPDATG&=0 xf7;/清零 dclk delay(2);for(i=0;i7;i+)取得前 7 位坐标数据(高位在前)rPDATG|=0 x08;/置高 dclkif(temp=rPDATG&0 x20)/取得 din 上的
14、 1 位数据ack+=1;ack=ack1;delay(2);rPDATG&=0 xf7;/清零 dclkdelay(2);rPDATG|=0 x08;/置高 dclkif(temp=rPDATG&0 x20)/接收最后 1 位ack+=1;delay(2);rPDATG&=0 xf7;/清零 dclkrPDATG|=0 x10;/置高 csreturn ack;/返回接收结果4.触摸屏与显示器的配合 ADS7843 送回控制器的X 与Y 值仅是对当前触摸点的电压值的A/D 转换值,它不具有实用价值。这个值的大小不但与触摸屏的分辨率有关,而且也与触摸屏与LCD 贴合的情况有关。而且,LCD 分
15、辨率与触摸屏的分辨率一般来说是不一样,坐标也不一样。因此,如果想得到体现LCD 坐标的触摸屏位置,还需要在程序中进行转换。假设LCD 分辨率是320240,坐标原点在左上角;触摸屏分辨率是900900,坐标原点在左上角,则转换公式如下:xLCD=320*(x-x2)/(x1-x2);yLCD=240*(y-y2)/(y1-y2);如果坐标原点不一致,比如LCD 坐标原点在右下角,而触摸屏原点在左上角,则还可以进行如下转换:xLCD=320-320*(x-x2)/(x1-x2);yLCD=240-240*(y-y2)/(y1-y2);最后得到的值,便可以尽可能得使LCD 坐标与触摸屏坐标一致,这
16、样,更具有实际意义。5.4.4 8段数码管电路设计及编程1.电路设计 系统使用了一个8段数码LED,如图2-18所示。该数码管是共阳极的,低电平信号使LED点亮。CPU数据总线DATA(07)经74LS573驱动器对数码管进行驱动。其片选信号由CPU的nGCS3信号选通,而8段的内容则由CPU低8位数据线决定。口地址为0 x6000000。2.编程8段数码管显示程序如下:void Led_Display(unsigned char data)unsigned char*ledbuffer=(unsigned char*)0 x6000000 switch(data)case 0:*ledbuf
17、fer=0 x12;break;.case 0 xf:*ledbuffer=0 x68;break;5.5 串行接口电路设计及编程串行接口电路设计及编程5.5.1 串行电路接口 串行接口电路如图5-19所示。系统提供两个RS232标准串行接口(DB9),UART0/l可与PC或MODOM进行串行通信。PORTC1015分别作为nRTS1、nCTS1、TXD1、RXD1、nRTS0和nCTS0信号,PE1和PE2作为TXD0和RXD0信号。两个接口则采用两片MAX2322C作为电平转换器。5.5.2 编程1.I/O接口配置初始化 对PORTC和PORTE初始化语句如下:rPCONC=0 x0f0
18、00000|rPCONC;rPUPC=0 x3000;/设置内部上拉 rPCONE=(rPCONE&0 xfc3)|0 xeb;rPUPE=0 x6;2.UART初始化 对 UART 口进行初始化设置程序如下:static int UartNum=0;void myUart_Init(int whichuart,int baud)/设置串口波特率等初始化工作。if(whichuart=0)UartNum=0;rUFCON0=0 x0;/不使用 FIFO rUMCON0=0 x0;/不使用自动流控制 rULCON0=0 x3;/不采用红外线传输模式,无奇偶校验 位,1 个停止位,/8个数据位 r
19、UCON0=0 x245;/发送中断为电平方式,接收中断为 边沿方式,禁止超时 /中断,允许产生错误状态中断,禁止回 送模式,禁止中 /止信号,传输模式为中断请求模式,接 收模式也为中断 /请求模式。rUBRDIV0=(int)(MCLK/16./baud+0.5)-1);/根据波特率计算 UBRDIV0 的值else if(whichuart=1)UartNum=1;rUFCON1=0 x0;rUMCON1=0 x0;rULCON1=0 x3;rUCON1=0 x245;rUBRDIV1=(int)(MCLK/16./baud+0.5)-1);3.字符发送程序#define WrUTXH0(
20、ch)(*(volatile unsigned char*)0 xld00020)=(unsigned char)(ch)#define WrUTXH0(ch)(*(volatile unsigned char*)0 xld04020)=(unsigned char)(ch)Void myUart_SendByte(char ch)if(UartNum=0)if(ch=“n”)while(!(rUTRSTAT0&0 x2);/等待,直到发送缓冲区为空 Delay(10);/超级中断的响应速度较慢 WrUTXH0(“r”);/发送回车符 while(!(rUTRSTAT0&0 x2);/等待,知
21、道发送缓冲区为空 Delay(10);WrUTXH0(ch);/发送字符 else if(ch=“n”)while(!(rUTRSTAT1&0 x2);Delay(10);/因为超级终端响应较慢 rUTXH1=“r”;While(!(rUTRSTAT1&0 x2);/等待THR空。Delay(10);WrUTXH1(ch);字符接受程序#define RdURXH0()(*(volatile unsigned char*)(0 xld00027)#define RdURXH1()(*(volatile unsigned char*)(0 xld04027)Char Uart_Getch(voi
22、d)if(whichUart=0)/串口0 while(!(rUTRSTAT0&0 x1);/读出接收到的数据(一直到读完)return RdURXH0();/URXH0:UART0接收缓冲寄存器 else /串口1 while(!(rUTRSTAT1&0 x1);/Receive data ready return rURXH1;5.6 C接口电路设计及编程5.6.1 EEPROM芯片介绍 目前,通用存储器芯片多为EEPTOM,其常用的协议主要有两线串行连接协议(C)和三线串行连接协议。带C总线接口的EEPROM有许多型号,其中AT24Cxx系列使用十分普遍,产品包括AT2401/02/04
23、/08/16等,其容量(字节数页)分别为1288/2568/5128/10248/20488,适用于25V的低电压操作,具有低功耗和高可靠性等优点。AT24系列存储器芯片采用CMOS工艺制造,内置有高压泵,可在单电压供电条件下工作。其标准封装为8引脚DIP封装形式,如图5-20所示。1.SCL 串行时钟。遵循ISO/IEC7816同步协议;漏极开路,需接上拉电阻;在该引脚的上升沿,系统将数据输入到每个EEPROM器件,在下降沿输出。2.SDA 双向串行数据线,漏极开路,需接上拉电阻,可与其它开路器件“线或”。3.A0、A1、A2 器件/页面寻址地址输入端。在AT24C01/02中,引脚被硬连接
展开阅读全文