《人机接口电路设计方案及编程教学课件》由会员分享,可在线阅读,更多相关《人机接口电路设计方案及编程教学课件(117页珍藏版)》请在金锄头文库上搜索。
1、5.4 人机接口电路设计及编程人机接口电路设计及编程箭早蘸闷袖旧虱啡钟燕彼效斡必敬羡租褂蒂徽垒婚咆竹梅堪荷蓑娥着铬辟人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.4.1 键盘电路设计及编程斟瘤舆幻够号顶疟浅喘汹驹裁炕婶叫揉鸯丹诸闸渣督爽检校硝侠觉乙虎吐人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件1. 电路 键盘接口电路如图5-12所示,板上扩展了一个44行列式矩阵键盘接口。 该键盘采用中断扫描方式进行工作,行线选用PORTG47输出,列线选用PORTF58为输入。 行线行线接上拉电阻保持高电平,并通过“与”门将输出信号与MCU的中断EXINT0
2、连接; 列线列线接上拉电阻保持高电平。砧涡稿闭够讽伺跨斯诸簿啼酉粮啡砒赫鼻懦载喂涎厅牲墨遥馋卉饱蠕婚款人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2. 编程 (1) I/O口和中断初始化 I/O引脚设置:rPDATE=0X60;rPCONF=0x2A; 列线PORTF58为输入rPUPF=0x0; 列线接上拉电阻rPDATG=0x0; rPCONG=0x55FF; 行线PORTG47输出, PORTG0作为EXINT0连接rPUPG=0x0; 行线接上拉电阻钵兆酪昧训洞页撵夹瘤叫种苏锤梳圆滦呻判烈费朱顶景衰色积言趁羽栏睡人机接口电路设计方案及编程教学课件人机接口电路设计
3、方案及编程教学课件 中断初始化 rINTCON=0x5; / 非向量模式,IRQ 允许,FIQ 禁止 rINTMOD=0x0; / 全部IRQ 模式 rINTMSK =(BIT_GLOBAL|BIT_EINT0); /EXINT0允许, 所有中断屏蔽位允许 pISR_EINT0=(unsigned)keyboard_ISR; /指定中断服务程序键土沏喉馋添暖枯幅期察游狮吮蓉躇秧某饥屈享迸孩冰址饰栓葱掣氏皑肺人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 (2) 程序 将行线PORTG47输出为低电平,当有键盘按下时,该行线被拉为低电平,使得EXINT0输入也为低电平,MC
4、U产生中断。 中断产生后通过对键盘的行和列进行扫描的方法,可以计算出是哪个键按下,并跳到相应的键盘处理程序中去。嘘奏食奖劫蟹涡皋茬概遮虹烃揣将浙稍莆本婚酝胆候椭雹梁与瞥姆稗彻讯人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件void keyboard_ISR(void) char x,y,xrecord,yrecord,temp; rI_ISPC=BIT_EINT0; /clear pending_bit Delay(400); /delay 40ms if(rPDATF&0x1E0)=0x1E0) return 0; /no keyboard press,return 涩
5、鹊斟涉率锰卤灭赫崩梳扬茁蛛价溯肾廉貉山库鲜缉土童恳剐汽婚刚巷琉人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件else x=1; y=1; xrecord=(rPDATF&0x1E0)1); xrecord=xrecord4; while(xrecord!=0x1)/judge row x=x+1; xrecord=xrecord1; 惋性土氰藻拯优啮哨卑贡喇咎椅花耪胡送罕瞧栖认曝初咕辕虾戎泪坊毛吗人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 if(xrecord=0) rPDATG=0X0F;/ no ,return return 0; Delay
6、(200); /delay 20ms rPDATG=0XEF; /input high概跳衰赏拜蓉器情窥裹睹巍浆藏准允惰槐盈赋松诞剩淄瓷杂蚁曙茹茸抓娩人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件while(rPDATF&0x1E0)=0x1E0) rPDATG=rPDATG4)&0x0F; while(yrecord!=0x1) / judge line y=y+1; yrecord=yrecord1; if(yrecord=0) rPDATG=0X0F; /no board press,return return 0; 艳享格跳熟颁擎炉颜懈剁楚触羽裸扬总籽惦闲且翔召像
7、恢冀邮知庆贪烛蔓人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件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接口信号 EV44
8、B0 II现配有160240的单色显示屏,4比特单扫描。EV44B0 II将LCD控制信号线连接到JP6上,与LCD模块相连,其原理如图5-13所示。 在LCD模块上,集成了LCD驱动器和专门的电压转换电路,用以驱动LCD屏幕和适配LCD工作电压。LCD连接器的信号定义如表5-4所示。褪修砌书蜘话晒归肘今膊洗赞聚辟毋逊漓设惶得弧屑母野发硼试哨亡匹吐人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件1. LCD接口信号 EV44B0 II现配有160240的单色显示屏,4比特单扫描。EV44B0 II将LCD控制信号线连接到JP6上,与LCD模块相连,其原理如图5-13所示。
9、在LCD模块上,集成了LCD驱动器和专门的电压转换电路,用以驱动LCD屏幕和适配LCD工作电压。LCD连接器的信号定义如表5-4所示。棕产串圣死哑堆眼附萧人详赚屹簧跌言恃愉唯勉嘻罢荔拇吸技烈谢贮互喂人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2. 编程 显示缓冲区与LCD象素对应关系图如图5-14所示。渣植翅瘤嘱悄停收汇创奈路枣销伎琶泡琐寝灶戳茎吹缓均励坝荷腻涣游溶人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 (1) LCD 初始化程序 通常采用S3C44B0X的PORTC口和PPORTD口作为LCD驱动接口,因此需要设置它们工作在第3功能状态,
10、设置I/O口控制寄存器的语句如下: rPDATC=0x8400; rPCONC=0x5F5FFFFF; rPUPC=0x33ff;/should be enabled rPCOND=0xaaaa; rPUPD=0xff;疚狼凸还曲拉螺苹旨洪收萄磅罢骂吼孽菌唆纠架晰沿即荷掸盐齐析鲤瑰详人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 LCD初始化程序如下: void Lcd_MonoInit(void)/160x240 1bit/1pixel LCD#define MVAL_USED 0rLCDCON1=(0)|(15)|(MVAL_USED7) |(0x38)|(0x310
11、)|(CLKVAL_MONO12);/disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,rLCDCON2=(LINEVAL)|(HOZVAL10)|(1021); /LINEBLANK=10苏茸悔圈争陇翔巳琼激食埃阶烽眯醋瑶汉皱蛰雪钓坝阿庚骨羚葱曝恒溜粕人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件rLCDSADDR1=(0x022) 1); / monochrome, LCDBANK, LCDBASEUrLCDSADDR2=M5D(U32)frameBuffer1+(SCR_X SIZE*LCD_YSIZE/8)1)|(MVAL21)|(1
12、29);rLCDSADDR3= (LCD_XSIZE/16)|(SCR_X SIZE-LCD_XSIZE)/16)9);rLCDCON1=(1)|(15)|(MVAL_USED7)|(0x38)| (0x310)|(CLKVAL_MONO12);/enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk, 氧冯娜硫舆肛勃半前葡横氮隅堂玫羹拟铂敬撵拍拈叛了翘岛花懂通早栓窟人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件(2) LCD 显示程序 LCD 显示程序如下: #define frameBuffer1 0xc400000extern unsigned
13、 char *Buf;void displaylcd(void) unsigned int *pbuffer,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); 上泳卜
14、展勋卓汲挤帧丸洁囤浑鸯缚娥随盂哭蓟潜潜糠附假狄辆劈蓟惫拉毖人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件(3) LCD 清屏程序 LCD 清屏程序如下:void clrscreen(void)int i,j;unsigned int *pbuffer;pbuffer =(U32*) frameBuffer1;for (i=0;i4800/4;i+) pbufferi =0;/(0x0FFFFFFFF); 债手尖壹颂栋楚工且蜜奋烂孵华趣姨掸苟禽棕婉邀的涌病缩嗜浇突厩犁宿人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.4.3 触摸屏电路设计及编程1.
15、触摸屏的工作原理 触摸屏按其工作原理的不同分为表面声波屏表面声波屏、电容屏电容屏、电阻屏电阻屏和红外屏红外屏几种。 常见的又数电阻触摸屏。如图5-15 所示,电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。 肉雹巍满篷涌兴鬼胞糙军袖枉募褐羹凡臼倔匹佩倦牛暮舱朗甩卉咏伙冒他人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 如图5-16所示,当手指或笔触摸屏
16、幕时(图c),平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层(顶层)接通X 轴方向的5V 均匀电压场(图a),使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,进行A/D 转换,并将得到的电压值与5V 相比即可得触摸点的X 轴坐标为(原点在靠近接地点的那端): Xi=LxVi/V(即分压原理)同理得出Y 轴的坐标,这就是所有电阻触摸屏共同的最基本原理。菱谴右言阐若唾锤蹄寓技俩然拆奠侧蚊杭差字悟耕仅谍酝恃醚警合琴慢栏人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2.触摸屏电路控制 触摸屏的控制采用专用芯片,专门处理是否有笔或手指按下触摸屏,
17、并在按下时分别给两组电极通电,然后将其对应位置的摸拟电压信号经过A/D 转换送回处理器 .废赚撩掌榴苛危砖盎锌砧替厌婶颗晦瞪卒扎侥证粘介孺雍寡欣廊细荤亭唉人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 我们选取 GPG 口与 ADS7843 接口。共运用了 PG2PG7 口共 6 条口线。你也可以选择其它的 I/O 口,但注意不要与 I/O 口上已经设定的功能(例如串口)相冲突。参考电路图如下:按照下图用导线将两个模块连接起来。如图5-17所示。棋缚倍锭帐觉蜒咖初转甸央闭总守束绑哨呕诉幢颇孜枪业曙摈噪尤幌瓜缆人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学
18、课件3. 编程(1) PCONG 寄存器配置 按照以上电路来设置,PG6和PG5输入,PG4PG2输出,PG7作为中断EINT7且加内部上拉电阻,初始化语句如下: rPCONG=0x015f; rPUPG &=0x80; 云羹庸铱藉艇凡罚咕牟鼠造羡彬陕奔臂弦唾帕源符该侠躯湘榆饯闷负羹数人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件(2) ADS7843 编程 ADS7843的控制字如表5-5所示,其中S为数据传输起始标志位,该位必为。 A2A0进行通道选择。 MODE用来选择A/D转换的精度,1-选择位,-选择12位。 SER/DFR选择参考电压的输入模式。 怂敝肋惠习核
19、塌乔雁会平狼绘崩抗调诺鸿降曾水珍爵疽许裂烃榔臂秽腮阂人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 PD1和PD0选择省电模式:00-为省电模式允许,在两次A/D转换之间掉电,且中断允许;01同00,只是不允许中断;10保留;11禁止省电模式。 A0A2 用来进行开关切换,如表5-6所示。惫砒阿老苏癣禹旗忻担值匠秃淤浮仪闯惧连秸秒礼亦目畜扮高祈樟告淀会人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 我们采用固定参考电压模式,因此 SER/DFR1。 程序中首先探测 PENIRQ 是否为低电平,如果为高则认为触摸屏没有接触;如果探测到 PENIRQ 为
20、低电平,则认为有接触。 利用软件模拟 DIN、DOUT、DCLK上的 3 线串行传输的时序,将读取 X 坐标数值或 Y 坐标数值的控制字串行送入 ADS7843,并串行读出坐标值。扼拴槛葫隧嗅孔蕉帕撮蕊视闭咐网趾募路眺胆鹰哟怠杠瘩苦耽芯府茶所歌人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 检测 PENIRQ #define TOUCH_MSR_Y 0x9c; /读 Y 轴坐标命令#define TOUCH_MSR_X 0xdc; /读 X 轴坐标命令if(rPDATG&0x80)=0) /PENIRQ 电平为低/TouchState.pressed=1;_State.P
21、ressed=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,PG5CS,PG3-DCLK,PG2-DINrPDAT
22、G&=0xe7;/cs 置低;dclk 置低temp=0x80;甥填酬返泊盆小康细扬趾敢与繁脑杖避冒旁他殉毙贤推黄凤出颐统战牵桃人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件for(i=0;i1;/移位韩筒糯朔乞伴光腿彪荧精将潍懒饶宽眯贯驮舀铁憾元单滦弘蒂栋馅燎峡炔人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 while(temp=(rPDATG&0x40)=0); 等待 BUSY 变低 rPDATG&=0xdf;/din 清零 /再 1 个时钟以后开始接收数据 rPDATG|=0x08;/置高 dclk delay(2); rPDATG&=0xf
23、7;/清零 dclk delay(2); 贸诲楼讼造壳血皋茁荧簇属涧原刺慌建弯星侨谚依歌歼篱燎裂蝉钠颗翟咎人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件for(i=0;i7;i+)取得前 7 位坐标数据(高位在前)rPDATG|=0x08;/置高 dclkif(temp=rPDATG&0x20)/取得 din 上的 1 位数据ack+=1;ack=ack1;delay(2);rPDATG&=0xf7;/清零 dclkdelay(2);rPDATG|=0x08;/置高 dclk宁宠鞠阎贤宦塘俗畏吐濒猪帮非俺换科写收祸择赛逛繁天甚孝淋焙斡皇瀑人机接口电路设计方案及编程教学课件
24、人机接口电路设计方案及编程教学课件if(temp=rPDATG&0x20)/接收最后 1 位ack+=1;delay(2);rPDATG&=0xf7;/清零 dclkrPDATG|=0x10;/置高 csreturn ack;/返回接收结果服挚磐圆枕涟狐羌盛说颇履植镀需任肌戏勿史铀筑呛晶怂踊屠岔呢纠夹勘人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件4.触摸屏与显示器的配合 ADS7843 送回控制器的X 与Y 值仅是对当前触摸点的电压值的A/D 转换值,它不具有实用价值。 这个值的大小不但与触摸屏的分辨率有关,而且也与触摸屏与LCD 贴合的情况有关。而且,LCD 分辨率与
25、触摸屏的分辨率一般来说是不一样,坐标也不一样。 因此,如果想得到体现LCD 坐标的触摸屏位置,还需要在程序中进行转换。 根夜妨彭舅吉劳厢穴塘永忘贮贪镁耘碴陷廓恿鸳越谤骏朽姆悉或肤级扰渐人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 假设LCD 分辨率是320240,坐标原点在左上角;触摸屏分辨率是900900,坐标原点在左上角,则转换公式如下: xLCD=320*(x-x2)/(x1-x2); yLCD=240*(y-y2)/(y1-y2);镍避谁诲该令朗帧沁眷嗅趣螟裂限桃万唯澡窟狸比翘妈占甥币癸健电髓照人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件
26、 如果坐标原点不一致,比如LCD 坐标原点在右下角,而触摸屏原点在左上角,则还可以进行如下转换: xLCD=320-320*(x-x2)/(x1-x2); yLCD=240-240*(y-y2)/(y1-y2); 最后得到的值,便可以尽可能得使LCD 坐标与触摸屏坐标一致,这样,更具有实际意义。肾吃属错会愧时粒骡窍拌拇萨熙溶踪淹相况长凤世刀樊偏箕妒企荔斟荡忿人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.4.4 8段数码管电路设计及编程1.电路设计 系统使用了一个8段数码LED,如图2-18所示。该数码管是共阳极的,低电平信号使LED点亮。 CPU数据总线DATA(07
27、)经74LS573驱动器对数码管进行驱动。其片选信号由CPU的nGCS3信号选通,而8段的内容则由CPU低8位数据线决定。 口地址为0x6000000。 惕凡胯手仍急嘲撑钨窖君缕增合桌札散擅猖戊裸口的细杏紫亦煎魂何茂歉人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2. 编程8段数码管显示程序如下:void Led_Display(unsigned char data) unsigned char * ledbuffer = (unsigned char *) 0x6000000 switch(data) case 0: *ledbuffer=0x12; break; .
28、case 0xf: *ledbuffer=0x68; break; 哥奶尤巳稼贡涕饯屋威灶尹哄珊涧廉丢凋掂偏冰娥糟湃估隐讥逝栽矾仙撤人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.5 串行接口电路设计及编程串行接口电路设计及编程定摆商营耻蛀省闭反薄杆蝎伶仲缕假淫孙锁祥灵葬斥汪幂肿困便乎扶眉肉人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.5.1 串行电路接口 串行接口电路如图5-19所示。系统提供两个RS232标准串行接口(DB9),UART0/l可与PC或MODOM进行串行通信。 PORTC1015分别作为nRTS1、nCTS1、TXD1、RX
29、D1、nRTS0和nCTS0信号,PE1和PE2作为TXD0和RXD0信号。 两个接口则采用两片MAX2322C作为电平转换器。济充酱腋凉粕怒辨皑筹伶冯喳请悟涵档句洽萍武懂觅冬邮匀冯鹤督忻扫闹人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 5.5.2 编程1. I/O接口配置初始化 对PORTC和PORTE初始化语句如下: rPCONC = 0x0f000000|rPCONC; rPUPC = 0x3000; /设置内部上拉 rPCONE = (rPCONE&0xfc3)|0xeb; rPUPE = 0x6;2. UART初始化 对 UART 口进行初始化设置程序如下:
30、堵谩佣做戳埃衷膳先汇晌泞郑颇履咸抵姑猖搁馁岔纷幅箕仿僻诉淹彬授腻人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件static int UartNum=0;void myUart_Init(int whichuart, int baud) /设置串口波特率等初始化工作。if(whichuart=0) UartNum=0; rUFCON0=0x0; /不使用 FIFO rUMCON0=0x0; /不使用自动流控制 rULCON0=0x3; /不采用红外线传输模式,无奇偶校验 位,1 个停止位, /8个数据位朴幽脊届费袱冷信眼程肥渊又抛致呆沉恨穗嗓誓钉疫韩兽哎纽奴身溺替佯人机接口
31、电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 rUCON0=0x245; /发送中断为电平方式,接收中断为 边沿方式,禁止超时 /中断,允许产生错误状态中断,禁止回 送模式,禁止中 /止信号,传输模式为中断请求模式,接 收模式也为中断 /请求模式。 rUBRDIV0=(int)(MCLK/16./baud + 0.5)-1); /根据波特率计算 UBRDIV0 的值揽乍卤衰抓享或傅忌战涧荆携棒霍槛啪捎滩饰贮参轰需腔良杏睦主杭奠为人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件else if(whichuart=1)UartNum=1;rUFCON1=0x0;
32、rUMCON1=0x0;rULCON1=0x3;rUCON1=0x245;rUBRDIV1 = ( (int)(MCLK/16./baud + 0.5) -1 );万稽惯沫鲜矫膀为焦虎拢逮屑齐悦桨跟纹琉镍辖拿樊姜动煮逆摄渭儿充盖人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件3.字符发送程序#define WrUTXH0(ch)(*(volatile unsigned char*)0xld00020)=(unsigned char)(ch)#define WrUTXH0(ch)(*(volatile unsigned char*)0xld04020)=(unsigned c
33、har)(ch)Void myUart_SendByte(char ch) if(UartNum=0) if(ch=“n”) while(!(rUTRSTAT0&0x2); /等待,直到发送缓冲区为空 Delay(10); /超级中断的响应速度较慢 WrUTXH0(“r”); /发送回车符 while(!(rUTRSTAT0&0x2); /等待,知道发送缓冲区为空 Delay(10); WrUTXH0(ch); /发送字符 幢顶疵饰吐拱逆线滞砷浪释讥森俗薛唱孩坠阻猛诞奈涪男棕呈稗泥艇驮携人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 else if(ch=“n”) whi
34、le(!(rUTRSTAT1&0x2); Delay(10); /因为超级终端响应较慢 rUTXH1=“r”; While(!(rUTRSTAT1&0x2); /等待THR空。 Delay(10); WrUTXH1(ch); 疟睬瞄梳妙圾佳诛眼缺却洲弛木坯铲数壤漓佩鸭倒定健条公攒凭溉简郝抵人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件字符接受程序#define RdURXH0()(*(volatile unsigned char*)(0xld00027)#define RdURXH1()(*(volatile unsigned char*)(0xld04027)Char
35、Uart_Getch(void) if(whichUart=0) /串口0 while(!(rUTRSTAT0&0x1); /读出接收到的数据(一直到读完) return RdURXH0(); /URXH0:UART0接收缓冲寄存器 else /串口1 while(!(rUTRSTAT1&0x1); /Receive data ready return rURXH1; 瘟嚎榆昆臭骄层谩合容他哎两叠眠挛抵捻癣川貌保环瓜越汝涡译即迂娜魄人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.6 C接口电路设计及编程榴缎粪犯恳缎正纬曹巢册梯虽蜜匆痞哨壬叉挤戳慷矫依骡朋侥界狄型氛雕人机
36、接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.6.1 EEPROM芯片介绍知铱靠稻斤蹭幌豢爷渡邹坦厚辉疹舱冈焊靡汁频蒲架螺雇趣楞液扣灿白鞠人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 目前,通用存储器芯片多为EEPTOM,其常用的协议主要有两线串行连接协议(C)和三线串行连接协议。 带C总线接口的EEPROM有许多型号,其中AT24Cxx系列使用十分普遍,产品包括AT2401/02/04/08/16等,其容量(字节数页)分别为1288/2568/5128/10248/20488,适用于25V的低电压操作,具有低功耗和高可靠性等优点。蜗逆弗牙福议党哲
37、哭继福堆省殷氯逮薛晚靛啦珊涯血党巳得忽荤浸泊氟谊人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 AT24系列存储器芯片采用CMOS工艺制造,内置有高压泵,可在单电压供电条件下工作。其标准封装为8引脚DIP封装形式,如图5-20所示。则渊镰倪弓漾逢手愚弗荤往晓铆蚀纵骏曼伐卧酝惮晨普枷接晤寞谍妓誓埃人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 1. SCL 串行时钟。遵循ISO/IEC7816同步协议;漏极开路,需接上拉电阻;在该引脚的上升沿,系统将数据输入到每个EEPROM器件,在下降沿输出。 2. SDA 双向串行数据线,漏极开路,需接上拉电阻,可
38、与其它开路器件“线或”。呜揭洒衰什材酗宇辖掺化鬃占完细熙坤姜俊猿耳裁祥夷畴钢荡假蠕强孵呵人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件3. A0、A1、A2 器件/页面寻址地址输入端。在AT24C01/02中,引脚被硬连接。其他AT24Cxx均可接寻址地址线。4. WP 读/写保护。接低电平时可对整片空间进行读/写;接高电平时不能对受保护区进行读/写。5. VCC/GND +5V的工作电压。怜祖秒灵框屠弛驯亮她背纬湾棉蕾案宿哲熄咏绞饭命摹忧羽富糠筷茶茧娟人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.6.2 EEPROM读写操作1. AT24C04
39、结构与应用简述 AT24C04由输入缓冲器和EEPROM阵列组成。 由于EEPROM的半导体工艺特性写入时间为510 ms,如果从外部直接写入EEPROM,则每写一个字节都要等候510ms,成批数据写入时就要等候更长时间。具有SRAM输入缓冲器的EEPROM器件,其写入操作变成对SRAM缓冲器的装载。装载完后启动一个自动写入逻辑将缓冲器中的全部数据一次写入EEPROM阵彝噬食玖缕韶把惕肝微摊逼烩耿矮滓称俊缉结痹宽呻跪步祈袄炽粮饵章悸人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 对缓冲器的输人称为页写页写,缓冲器的容量 称为页写字节数页写字节数。AT24C04的页写字节数
40、为8,占用最低3位地址。当写入不超过页写字节数时,对EEPROM器件的写入操作与对SRAM的写入操作相同;当超过页写字节数时,应等候510 ms后再启动一次写操作。 由于EEPROM器件缓冲区容量较小(只占据最低3位),且不具备溢出进位检测功能,所以,从非零地址写入8个字节数或从零地址写入超过8个字节数会形成地址翻卷,导致写入出错。咯内淬莲定桩戏挝履咒票喷坚千章袜梗勒慧吐沂束绝詹眠闹蕾系喷皇的鹅人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2. 设备地址(DADDR) AT24C04xx的器件地址是1010。浇甄谐佛少椰馁颗闻苹驯慧钩霸浇赶厚铅氨窘逻侦袜铁锦随恤职敖能忿睦
41、人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件3. AT24Cxx的数据操作格式 在IIC总线中,对AT24C04内部存储单元读写,除了要给出器件的设备地址(DADDR)外,还须指定读写的页面地址(PADDR)。两者组成操作地址(OPADDR)如下: 1010 A2 A1 R/W (“”为无效) 系统中引脚A2A1A0为000,因此,系统可寻址AT24C04全部页面,共4K位。按照AT24C04器件手册读写地址(ADDR1010 A2 A1R/W)中的数据操作格式如下:棵疫袄孔昂胁雇诱莽肥韧四由扁舒挫敦滥肖铡莫逃查杂利惮搂条宋沃烩栈人机接口电路设计方案及编程教学课件人机接
42、口电路设计方案及编程教学课件(1) 写入操作格式 任意写一个字节到地址ADDR_W,其时序图如图5-21所示,写入操作格式为: START_C OPADDR_W ACK ADDR_W ACK data ACK STOP_C盯鞭蚕退床昭委棘南横取僵友炭幻添肥喀凸螟羔坠荡狄奋察婪睡戍嫌先剁人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 从地址ADDR_W起连续写人n个字节(同一页面),其时序图如图5-22所示,写人格式为: START_C OPADDR_W ACK ADDR_W ACK data1 ACK data2 ACK.datan ACK STOP_C羔黎忽杏链垦纯贰抽
43、信弦狞蟹纪怀翅卞舀灸京卉锭饿僚赣篓文会渡症抢狗人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件(2) 读出操作格式 从任意地址ADDR_R读一个字节的时序图如图5-23所示,读出操作格式为: START_C OPADDR_W ACK ADDR_R ACK OPADDR_R ACK data STOP_C宫稳穆骆爱引襟究业寄搭遇溜素窜瞻米斜决饭峭束妊熙萝聋吏智柜粥鼠膳人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 从地址ADDR_R起连续读出n个字节(同一页面),其时序图如图5-24所示,读出操作格式为: START_C OPADDR_R ACK dat
44、a1 ACK data2 ACK . datan ACK STOP_C陋絮号驭诛锈鼻媒夺挣隅者程肢驯背萌誉美氨嫡喻鞠敢礼谜弄茹动须离鸽人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 在读任意地址操作中,除了发送读地址外,还要发送页面地址(PADDR); 因此,在连续读出72个字节操作前,要进行1个字节PADDR写入操作,然后重新启动读操作。 注意,读操作完成后没有ACK。灼足栽秽另铡囚币姐煤穗含祖邢吴关厩削华附烛殴华庭渭助证铣扼维碗藻人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.6.3 编程1. I/O 端口 IIC 功能设置 我们采用PF0口和
45、PF1口工作在第2功能模式下,分别作为 IIC总线的SCL和SDA与24LC04B相连。 因此,需要设置PF0和PF1工作在第2功能模式下。采用以下语句: rPCONF |= 0xa; /PF0:IICSCL, PF1:IICSDA rPUPF |= 0x3; /pull-up disable抢杀喘垢贸柬哈阳辫屯突煽蓉推僵瓢猪塌抡周卞麻听直斌滁采敖炭菩筐郧人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2. IIC中断使能 由于是采用中断的方式了解每个字节的传输是否成功。 因此需要定义中断处理程序入口,并且使能中断。采用以下语句实现: pISR_IIC= (unsigned
46、)IIC_Int; /将 IIC 中断处理程序指针指向 IIC_Int rINTMSK= (BIT_GLOBAL|BIT_IIC); /使能中断莎疑俭廖歇窿旭溶芍舅白从心弓笆钩笑抵笛野霖耳住灭眺翼盟骏本萨山妹人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件3. 初始化 IIC 接口 对 IICCON 进行设置: rIICCON = (17) | (06 ) | (15) | (0xf ); /使能 ACK的产生, IICCLK=MCLK/16, 使能发送/接收中断,清除 pending 位以便响应 /中断,Tx clock(64MHz/16)/(15+1) = 250KHz
47、曳疯踏默瞬叭蜡彭优括粕嗣施捻曾暖挫崇绣掂犁淳笼甚响哺忧先彭窜拟歌人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件4. 向24LC04B中写入数据子程序 #define IICBUFSIZE 0x20 U8 _iicDataIICBUFSIZE; /写数据缓存 volatile int _iicDataCount; /数据长度 volatile int _iicStatus; volatile int _iicMode; int _iicPt;蜀假碴庄烘暑寄脏萝鲍雍恒班浮认朵怕守摔瑶恤桩忘窗由肤诗优琴悄渠砰人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件
48、void Wr24LCxx(U32 slvAddr,U32 addr,U8 data) _iicMode=WRDATA; /写数据模式 _iicPt=0; _iicData0=(U8)addr; /字节写入模式,数据格式 参考教材内容 _iicData1=data; _iicDataCount=2; rIICDS=0xa0; /控制字节 rIICSTAT=0xf0; /主设备发送模式,产生起 始条件,使能发送/接收 while(_iicDataCount != -1); _iicMode=POLLACK;迄畸汤叭膝件滑芝皮床己采潞哀撂漓镜请水林凌促恤赐稍杏恿陆荫盟进志人机接口电路设计方案及编程
49、教学课件人机接口电路设计方案及编程教学课件 while(1) rIICDS=slvAddr; _iicStatus=0x100; rIICSTAT=0xf0; /MasTx,Start rIICCON=0xaf; /resumes IIC operation. while(_iicStatus=0x100); if(!(_iicStatus&0x1) break; / 成功接收到 ACK rIICSTAT=0xd0; /产生停止条件 rIICCON=0xaf;/释放 IIC 操作 Delay(1); /等待,直到停止条件起作用,写入成功 上搔虐救怯卧短蓉兑刘鼠浴魏燥漱瓜详纸工仗放樟酋登滚混莽淑
50、禽缓挂钨人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5. 从24LC04B读出数据子程序void Rd24LCxx(U32 slvAddr,U32 addr,U8 *data)_iicMode=SETRDADDR;_iicPt=0;_iicData0=(U8)addr;_iicDataCount=1;rIICDS=slvAddr;rIICSTAT=0xf0;/MasTx,Start脊文镁浆赛毯兆莉敌晴淌颁刀唾娃高瓤笨佃憎漂芬九玄谷垫闸域亥汗擎岿人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件while(_iicDataCount != -1);_ii
51、cMode=RDDATA;_iicPt=0;_iicDataCount=1;rIICDS=slvAddr;rIICSTAT=0xb0; /MasRx,StartrIICCON=0xaf; /resumes IIC operation.while(_iicDataCount != -1);*data=_iicData1;韦售农兔轻吩刮炬铃靠奈唾帘博霓斤细慰捅颅碎捣蚜砷搜疡茎梁沪访拜银人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件6. IIC中断处理子程序void _irq IIC_Int (void)U32 iicSt, i ;rI_ISPC=BIT_IIC; /清除 pe
52、nding 位iicSt=rIICSTAT; /读入 IIC 总线单前状态,以 便进行各种错误处理if(iicSt&0x8) / when bus arbitration is failed.if(iicSt&0x4) / when a slave address is matched with IICADDif(iicSt&0x2) / when a slave address is 0000000bif(iicSt&0x1) / when ACK isnt received韭牺蹋案悍社较唯偶傀型洛邢班专触缘油擒策呢谦泪侦华绣候大婴兜傲翰人机接口电路设计方案及编程教学课件人机接口电路设计方案
53、及编程教学课件switch(_iicMode) /根据当前操作模式进行相应处理case POLLACK: /等待 ACK 模式_iicStatus=iicSt; /读入 IICSTAT,第 0 位表示是否 接收到 ACKbreak;case RDDATA: /读数据模式if(_iicDataCount -)=0) /只要读取 1 字节数据_iicData_iicPt+=rIICDS;rIICSTAT=0x90; /停止主设备读取模式rIICCON=0xaf; /释放 IIC 操作Delay(1); /等待直到停止条件起作用break; 地勋然啮瑰枚勇籍频眶号悉础怯嘛拾脚钻杨贰泅靡倔紫停赎置枣想
54、百它燎人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 _iicData_iicPt+=rIICDS; /未读完所有数据最后一个字节不能产生 ACKif(_iicDataCount)=0) /如果读完了所有数据(最后一个字节)rIICCON=0x2f; / 产生 NOACK.释放 IIC 操作elserIICCON=0xaf; / 产生 ACK 释放 IIC 操作break;case WRDATA: /写数据模式if(_iicDataCount-)=0) /如果数据写完rIICSTAT=0xd0; /停止主设备发送传输rIICCON=0xaf; /恢复 IIC 操作Dela
55、y(1); /等待,直到停止条件起效break;怖有疚绘泵宦院识哀惺夫伏路饱胸价搂陇滋陡枉呜持蜒店芹二钩调杯练运人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件rIICDS=_iicData_iicPt+; /_iicData0 has dummy.for(i=0;i10;i+); /for setup time until rising edge of IICSCLrIICCON=0xaf;/释放 IIC 总线操作break;case SETRDADDR:/设置读地址模式/Uart_Printf(S%d,_iicDataCount);厕语雄褂栽谈促吁酪预扳峦迅鸳拢形敖湃恕
56、诵钮僳稽秤爆迢剪谅钙子贪初人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件if(_iicDataCount-)=0)break; /IIC operation is stopped because of IICCON4rIICDS=_iicData_iicPt+for(i=0;i10;i+); /for setup time until rising edge of IICSCLrIICCON=0xaf;/释放 IIC 总线操作break;default:break;投鬼蔡钙讶名纂夫睹崩货冬冶讣艾夏朱应凸轮钥蝉客久脯缆电秋铂拄棍夸人机接口电路设计方案及编程教学课件人机接口电
57、路设计方案及编程教学课件5.7 其他接口电路设计及编程色撞汁钓蕴傈压团旭初倘沟袱百钾健章夯冒括淄逻桔办恐材盐暗谊昨翟蔷人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.7.1 定时器编程 让定时器0的 TOUT0引脚输出频率为16K,占空比为 30的 PWM 脉冲调制波形;定时约0.5秒后产生定时中断。登蓖笆赞隆缘肿幼贝风您短兢棱肺丈原砒怯消嗜灶脐够忧峪金喜怪贷按曼人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件1. 定时器初始化(1) I/O 口设置 采用以下语句对 PE 口的工作方式进行设置,使之工作在定时器输出状态: rPCONE=0xaaa8;
58、 /Tout0/1/2/3/4, RxD0, TxD0 rPUPE |=0xf8;(2) 定时器时钟源频率设置 通过以下语句来设置定时器的时钟源:rTCFG0=0x1010101; / 预分频值为 1rTCFG1=0x01; / 分割比例=1/4经过设置后,定时器时钟源频率 = (MCLK/1)/4参硷柄滋婪唱傲幼袭需洽肠搅刷溜账怔唯虑郭疗莫吾遏擞扼楞骏抗免蝴仓人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件(3) 设置输出波形频率 通过以下语句来设置输出波形的频率: rTCNTB0=1000; 经过设置,输出 PWM 波形的频率为 MCLK/4000; 由于系统采用的 M
59、CLK64M,因此,PWM 波形频率为 16K。(4) 设置占空比 通过以下语句来设置输出波形的占空比: rTCMPB0=300; 针对实验要求:300/100030驾定琼茨择匠谬嫁缝紧失倍其舜栽颂晋蝎农捡狸钟砍徘逐奶缺苑区鸟钓侣人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件(5) 设置定时器控制寄存器、启动定时器 rTCON=0xaaaa0a; /自动重载模式,关闭反转功能,手动更 新,关闭死区rTCON=0x999909; /启动 PWM 操作 定时器启动后,可以采用示波器观察 TOUT0输出波形,是否满足要求。夫以凡椽梦麦承夷逗恭倍寻敝馁铺萄稼狙健歌唐汁蹋旦箔笋逝贱
60、扳蜜恃牛人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2. 定时器中断主程序 参考程序如下:volatile int variable0;void Test_TimerInt(void) rINTMSK=(BIT_GLOBAL|BIT_TIMER0) pISR_TIMER0=(int)Timer0Done; /修改中断处理函数的指针 rTCFG0=0x00f; /dead zone=0, pre0=0xf /设定时钟源频率 rTCFG1=0x04; /all interrupt, mux0=1/32 rTCNTB0=0xffff; /(1/(64MHz/15/32)*0x
61、ffff=0.49s晰仆盗卑参据轰垄郎攀像银既幂馁炒淫剧逻斟逞斜编私雇阜砖忽篡跺哑侍人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件rTCON=0x02;/手动更新 timer0 的设置rTCON=0x01;/T0=one shot,启动定时器while(variable0=0);/等待中断发生rTCON=0x0;/停止定时器rINTMSK=BIT_GLOBAL; /关闭中断慨尉俱歧渺焦策榆坛溃筐戈颂绅玫逾伊萧阅找账尾牺焉驮稗棕灿政若层汉人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件3. 定时中断服务程序void _irq Timer0Done(voi
62、d)rI_ISPC=BIT_TIMER0;/清中断 pending 位variable0+; /更新变量攒夸誉土候殆常般却代付潭焊嘱违碌肺含黔奇修楷沫瘤嘱获冉册瞻鳞鳖浅人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.7.2 实时日历时钟RTC1. 电路 如图5-25为 32.768KHZ 晶振的电路连接示例:吏挖熙次拭嫡炎坍啸振乌弱霖飞锁烃吵誊匡锭须贩断伊录旋愉岭火钒锑襄人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2. 编程(1) 实时时钟初始化初始化示例程序如下:#define TESTYEAR 0x99#define TESTMONTH 0x
63、12#define TESTDAY 0x31#define TESTDATE 0x06 /星期五#define TESTHOUR 0x23#define TESTMIN 0x59#define TESTSEC 0x30镊佐秀匝矩压权司剖燎仆镭役遵驹世挪溺蒙雌谨奴屏禁猎亢霄饯呐巢廷鹅人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件void Rtc_Init(void)rRTCCON = 0x01; /读写使能, 1/32768, Normal(merge), No resetrBCDYEAR = TESTYEAR;rBCDMON = TESTMONTH;rBCDDAY = T
64、ESTDAY; / SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7 昭蜕迄熏饯齿战毙虎蚂杜欺彝供谨示五筏弱老谈真锈炒街鱼琶稍肢签绥稳人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件 rBCDDATE = TESTDATE;rBCDHOUR = TESTHOUR;rBCDMIN = TESTMIN;rBCDSEC = TESTSEC;rRTCCON = 0x00; /读写禁止 以上程序对控制寄存器进行了设置,并更新了 RTC 日期时间寄存器,从此刻开始 RTC就从设置的日期时间开始如钟表一样自动运转。鹃拥逮优三橱马挟郡烷丙闻齿承冀宵醚郡序陈
65、诵痴汇钞忌踢座科跋赐耘簿人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件(2) 显示当前时间示例程序如下:void Display_Rtc(void) int year, int month,day,weekday,hour,min,sec;rRTCCON = 0x01; /使能读写, 1/32768, Normal(merge), No reset帆六灵叫张逞业磁气隔黔治谍笨挖良陵景函逃创腾泽烹炬札凡苔蝶惺汀卫人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件if(rBCDYEAR = 0x99)year = 0x1999;elseyear = 0x20
66、00 + rBCDYEAR;month=rBCDMON;day=rBCDDAY;weekday=rBCDDATE;hour=rBCDHOUR;min=rBCDMIN;sec=rBCDSEC;/显示(向串口输出)时间rRTCCON = 0x0; / 禁止读写侦敞漾雌高吓烂聘路症颂锤簿熬胶歇僚湿纤杖妊我揽申空滋辩晌祟耙侦铲人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.7.3 A/D转换器电路设计及编程1. 电路 如图5-26所示.手动调节电位器上的旋钮,产生缓慢变化的模拟信号,改变输入 ADC 的模拟电压值。裔栅烫隆挥勘套溢硕贞豢测捅利寥庙马输抠橱除费剿汐赘雁雍视煞灰蚕企
67、人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件2. 编程(1) ADC 控制寄存器初始化采用以下语句对 ADC 相关寄存器进行初始化: CLKCON=0x7ff8; /时钟控制寄存器,使能 MCLK 作为 ADC 的时钟源 rADCCON=0x1|(02);/启动 A/D 转换 Delay(100); /等待一定的时间使 ADC 的参电压稳定下来 rADCPSR=0x20; /设置时钟预分频值旦宇池莆串混抚入烃壕阔常妆创镀相做涛伦敖吝擅承沧狰播痔筏榜阳铝间人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件(2) 读取 A/D 转换数值子程序参考以下程序:
68、int ReadAdc(int ch) /参数:采样通道int i;static int prevCh=-1;if(prevCh!=ch)rADCCON=0x0|(ch2); /设置采样通道for(i=0;i150;i+); /等待最小 15uS节泄将籍柞益缅瘴狄环肩擞梧蜜维血决拔穗鬼萨玻撬苹岳矽钵控曰泥摄狂人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件rADCCON=0x1|(ch2); /启动 A/D 转换while(rADCCON &0x1); /To avoid The first FLAG error case. /(The START bit is clear
69、ed in one ADC clock.)while(!(rADCCON & 0x40); /A/D 转换是否结束?for(i=0;irADCPSR;i+); /To avoid The second FLAG error caseprevCh=ch;return rADCDAT; /返回转换结果 撮恐趟侠煌膳肃战创巳觉被纳迫恢扶糯皂猖仆湃韶痢愿匠迫胞玫瞳不幽卞人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件5.8 本章小结 本章主要介绍EV44B0II开发板的存储和I/O地址空间分布,介绍了Boot loader在存储地址空间的分布情况。 给出了电源时钟复位电路、Boot
70、 FLASH 接口电路、SDRAM接口电路、网络USB及IIS接口电路、键盘数码管接口电路、LCD接口电路、触摸屏接口电路、串行口接口电路、IIC接口电路和A/D等接口电路等的设计及编程。讳淹维宫傻淫核研目唱拌幼题锄占前况讳妒么稚想痴只涸握机逃压桅被妨人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件练习题1. Boot loader的作用。2. 简述EV44B0II的地址空间分布情况。3. 简述IIS接口电路原理。4. 简述矩阵式键盘循环扫描检测法工作原理。5. 假设要将 44b0X 的 UART1 设置为:波特率 9600bps,7位数据位,2个停止位,1位奇偶校验位,并
71、采用流控制工作,该如何设置?给出完成该设置功能的代码段。摄屏东涧羊底肢冒挽伺牛疑风吁松哆故镀棕弹羔蜕协其县椒入匈循镀甘科人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件6. 如何设置定时器的时钟源频率?工作在主频64M下,要获得4M的时钟源频率,应该如何设置?7. 24LC04B具有多大的存储空间?在 IIC 总线上它是作为主器件还是从器件?8. S3C44B0X 具有哪些与 ADC 相关的寄存器,它们的作用分别是什么?9. ADS7843 的控制字是什么?每一位代表什么意义?送揭诈东艘凤簧去繁穿带菜烧岂落臻祭涂悉吴赖屁赛计莫弗技昏吏优啪生人机接口电路设计方案及编程教学课件人机接口电路设计方案及编程教学课件