单片机应用技术汇编C项目教程_第1页
单片机应用技术汇编C项目教程_第2页
单片机应用技术汇编C项目教程_第3页
单片机应用技术汇编C项目教程_第4页
单片机应用技术汇编C项目教程_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

书名:

单片机应用技术——汇编+C51项目教程ISBN:978-7-111-50040-7作者:姚存治出版社:机械工业出版社本书配有电子课件项目3可以调控的走马灯设计与制作

走在大街上,看到五彩斑斓的走马灯,你是不是也想自己一试伸手,亲自做一个出来?本项目就将设计一个带按键控制的非常漂亮的走马灯效果。本项目涉及到的知识点有键盘接口、中断系统、定时器定时、C51编程。

任务3.1学习键盘接口技术任务3.2可以调控的走马灯的设计与仿真下一页任务3.1学习键盘接口技术键盘接口是单片机系统的一个非常常见、实用的接口。用于实现人机交互中指令的输入。常见的键盘接口有独立式按键和行列式(也叫矩阵式)键盘。3.1.1独立式键盘应用3.1.2按键的消抖处理3.1.3矩阵式键盘应用

上一页下一页返回3.1.1独立式键盘应用一、独立式按键结构如图所示。

上一页下一页返回独立式按键的结构特点:每个按键单独占有一根I/O口线,按键的两个端子一端接地,另外一端接到一个单独的I/O口线,同时通过上拉电阻接到+5v电源端。每个按键的工作不会影响其它I/O口线的状态。在此电路中,按键输入为低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可以不配置上拉电阻。上一页下一页返回二、独立式按键的软件设计按上图的电路,设计出独立式键盘程序如下,此程序中Keyfun1~Keyfun8分别为每个按键对应的功能子程序标号(可根据实际需要编写),按键去除抖动采用软件延时,按键的接口选用P1端口。汇编源程序清单如下:START:MOVA,P1;读入键盘状态

MOV30H,A;保存键盘状态值

LCALLDL10ms;延时10ms消抖

MOVA,P1;再读键盘状态

CJNEA,30H,RETURN;再次结果不同。说明是抖动引起,返回

CJNEA,#0FFH,KEY-1;确认是否有键按下

LJMPRETURN上一页下一页返回KEY-1:CJNEA,#0FEH,KEY-2;K1键未按下,转KEY-2LJMPKeyfun1;是Kl键按下,转KEY1对应的功能子程序KEY-2:CJNEA,#0FDH,KEY-3;K2键未按下,转KEY-3LJMPKeyfun2;K2键按下,转Keyfun2处理KEY-3:CJNEA,#0FBH,KEY-4;K3键未按下,转KEY-4LJMPKeyfun3;K3键按下,转Keyfun3处理KEY-4:CJNEA,#0F7H,KEY-5LJMPKeyfun4KEY-5:CJNEA,#0EFH,KEY-6LJMPKeyfun5KEY-6:CJNEA,#0DFH,KEY-7LJMPKeyfun6KEY-7:CJNEA,#0BFH,KEY-8LJMPKeyfun7KEY-8:CJNEA,#7FH,RETURN;K8未按下,返回

LJMPKeyfun8;K8键按下,转Keyfun8处理RETURN:RET;重键或无键按下,不处理返回DL10ms:MOVR7,#12H;三循环延时程序,大约10ms。

D0:MOVR5,#10HD1:MOVR4,#10HD2:DJNZR4,$D3:DJNZR5,D1

DJNZR7,D0RET上一页下一页返回对应的C51程序为:#include<AT89X51.H>voiddelay(){unsignedinti;for(i=0;i<2000;i++);}voidmain(){unsignedcharkey;while(1){key=P1;if(key!=0xFF)delay();if(key!=0xFF)key=P1;while(P1!=0xFF);上一页下一页返回switch(key){case0xFE:Keyfun1();break;case0xFD:Keyfun2();break;case0xFB:Keyfun3();break;case0xF7:Keyfun4();break;case0xEF:Keyfun5();break;case0xDF:Keyfun6();break;case0xBF:Keyfun7();break;case0x7F:Keyfun8();break;}}}3.1.2按键的消抖处理在单片机应用系统中所用的键盘按键是一种机械开关,其机械触点在闭合或断开瞬间,会出现电压抖动现象,如图所示。为了保证按键识别的准确性,可采用硬件消抖和软件消抖两种方式进行消抖处理。硬件方法可采用RS触发器等消抖电路。软件方法则是采用时间延迟,由于键的前沿抖动时间大约为10ms左右,因此可在延时10ms后待按键稳定闭合时再判别键盘的状态,若仍有按键闭合,则确认有键按下,否则认为是按键的抖动。上一页下一页返回例3-1:如图所示,实现如下功能,按下某个键,在单个数码管上显示出键号。

上一页下一页返回本题中,按键全部为独立式按键,读取P1口的状态即可判断按下的是哪个键,读取相应的键的编码送入P1口即可。C51源程序如下:#include<AT89X51.H>unsignedcharled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8};voiddelay(){unsignedinti;for(i=0;i<2000;i++);}voidmain(){unsignedcharkey;while(1){key=P2;if(key!=0xFF)delay();上一页下一页返回if(P2!=0xFF)key=P2;while(P2!=0xFF);switch(key){case0xFE:P1=led[0];break;case0xFD:P1=led[1];break;case0xFB:P1=led[2];break;case0xF7:P1=led[3];break;case0xEF:P1=led[4];break;case0xDF:P1=led[5];break;case0xBF:P1=led[6];break;case0x7F:P1=led[7];break;}}}上一页下一页返回3.1.3行列式键盘应用

一、行列式键盘结构上一页下一页返回二、行列式键盘按键识别如上图所示AT89S51与4×4键盘的接口电路,按键识别时通过P1.0~P1.3(X0~X3)分别输出低电平,检测P1.4~P1.7(Y0~Y3)的状态是否为低电平来确定是否有键按下,通常把X3~X0称为行扫描输出线,Y0~Y3称为列检测输入线。具体识别过程如下:①判别键盘上有无键闭合。其方法为扫描口X0~X3输出全“0”,读Y0~Y3的状态,若为全“1”(键盘上列线全为高电平)则键盘上没有闭合键,若Y0~Y3不为全“1”则有键处于闭合状态。②去除键的机械抖动。其方法为判别到键盘上有键闭合后,可采用软件延迟一段时间(一般为10ms)再判别键盘的状态,若仍为有键闭合状态,则认为键盘上有一个确定的键被按下,否则认为是键的抖动。上一页下一页返回③判别闭合键的键号。方法为对X0~X3每位依次分别输出低电平,其它三位为高电平,对键盘的列线进行检测。即相应的顺次读Y0~Y3的状态,若Y0~Y3为全“1”,则行线为0的这一行上没有键闭合,否则这一行上有键闭合。闭合键的键号等于为低电平的列号加上为低电平行的首键号。例如:X0~X3输出为1101时,读出Y0~Y3为1101,则第2行与第2列相交的键处于闭合状态,第2行的首键号为8,列号为2,闭合键的键号为:N=为低电平的行首键号+为低电平的列号=8+2=10④使CPU对键的一次闭合仅作一次处理。闭合键一次仅进行一次键功能操作,采用的方法为等待闭合键释放以后再把键值送入A中,然后执行键功能操作。上一页下一页返回三、蓄行列红式键蔽盘软佳件编芽程方校式单片包机应辽用系惩统中绒键盘并扫描枪只是CP先U工作投的内筒容之举一。CP他U在忙扶于各糠项工杠作任箱务时鼓,如湖何兼绝顾键胡盘扫抹描,争既保级证不涌失时崭机的锁响应永键操数作,卧又不物过多喷占用CP支U时间盼。因娱此要荡根据裁应用术系统先中CP舒U的忙叹、闲告情况茂选择糠好键撑盘的锈工作喊方式唱。键律盘的盏工作翅方式珍有编伍程扫庄描方焦式、膜中断牛扫描鱼方式缓。①编洪程扫下描工掌作方允式筐编极程扫错描工娃作方备式是抚利用CP少U在完茅成其撑他工勉作的喷空余珍时间腔,调妄用键传盘扫胀描子锈程序诉来响贿应键德输入影要求赏。在阔执行病键功凝能程醉序时垦,CP剂U不再企响应凭键输枣入要睬求。②中交断扫盐描方毒式瘦中伤断扫休描方该式又绢分为浮两种隙:定啊时器祖中断嘉扫描室方式怠和键盖盘按迫键中立断扫截描方崖式。。上一疾页下一眯页返回定时论器中布断扫森描方姜式是释利用凤单片使机内塞部定烧时器歉产生诸定时毁中断(例如10旅0m话s),CP倚U响应已中断石请求斩时,态对键贷盘进锁行扫晃描和曲键值白识别冶。定哥时中计断扫绞描方去式的翻键盘他接口羽电路例与程岔序扫枕描法雾的接弟口电稼路相姨同。些定时互器中煌断键调盘扫饥描程纳序,全实际冲上作跃为定结时器翁中断垄服务侧程序朗。这旋种方粒式虽贿然可冬以改害善程户序结宜构,煤但是屡多数遥扫描徐仍然怎可能董为“空扫浮描”,CP引U效率勇提高世不大游。另外借一种舱中断煌扫描可方式狂是键绒盘按缠键中耗断扫衰描方货式。包下图贵是按肆键中叔断扫咐描方来式的AT未89胸S5植1与键终盘的悲接口浅电路任务3.吵2可以青调控废的走方马灯摔的设掌计与储仿真3.抵2.葛1硬件撑电路界设计3.笑2.服2程序炸编制3.潜2.墓3综合懂仿真乔调试上一民页下一犁页返回3.狐2.眼1硬件五电路倚设计本项促目在P2和P0口连榨接16个共进阳极定的发胆光二吹极管芬,在P1口在醉第0、1、2设置3个独刷立式超按键颈,在P3口连益接一友只公荐阳极稀的7段数意码管什。要池实现徐的功尝能如望下:都模式留键K1设置曾走马锹灯的宴模式派,共亲有8种模赵式可概设置股,每况种模置式对抱应的16只二鉴极管心的走船动模砍式。浓选择捎某种腿模式嚼后可咽在数氧码管机上显牢示出岁模式毅号。恰加速贫键K2用来惰实现富走马好灯的尺速度馅加速漫。减尼速键根则用络来实哈现走股马灯愤的速偶度减茫速。上一倾页下一恐页返回上一督页下一捧页返回3.向2.约2程序此编制本项栗目对尤应的C5丈1源程天序如绵下:#i搅nc牧lu劲de悄<A冷T8休9X列51移.h访>#d溪ef端in完e屿u8盼u野ns报ig壤ne座d熔ch秘ar#d贤ef梨in长e更u1董6滨un翼si荡gn矿ed菌i足ntu8载M气od盈eN住o;宏//模式聋编号u8回M脱ov俘in雷gB昼it捡=0趋;/横/移动群位数u8培T群dx闸;供/响/速度馅索引u8日T吊Co根un我te倦r=义0;削//延时震计数序器u1谦6给Sp专ee端d;链//二极联管移怨动速好度bi贫t泡Di血re晓ct屠io欠n=蚀1;秋//滚动轨方向u8颂c鞋od寻e签Mo专de货Di盒sp悦la皂y[马]=槐{0锈xC齐0,板0x底F9熄,0耐xA谦4,月0x跪B0纯,0瓜x9戚9,男0x阀92何,0四x8炭2,过0x斥F8墨};u1址6纺co师de上一组页下一夹页返回Sp贫ee牛dC硬om哲mo精n[侵]=饶{0异,2概,4坡,6穿,8差,1弱0,娃15粉,3恰0,晨45勉,8丝式0,肥12煌0,套16狐0,痰20当0,剂24降0,备28玩0}辱;/遵/速度拌常数//延时字函数vo温id签D胳el怜ay办(u猴16蚁x智){u8使i秋;wh狭il胶e(皂x-氏-)葱fo派r(坏i=产0;齿i<丹12旗0;要i+伯+)歼;}//三按估键识泪别函陡数u8栽G吉et件Ke五y(烘){u8政K界;if强(P捡1=溉=0药xF渣F)满re冶tu誓rn茎0侄;/蛾/如果辟没有捉键按替下,困则返越回0。De旧la乳y(勉10家);sw覆it衣ch钟(P丸1)享//确认迹有键和按下据,判让断是当哪个泄键。{上一根页下一旅页返回ca闪se湿0首xF醋E:棵K=些1;羽br含ea雷k;ca咐se凶0阁xF堤D:悦K=还2;网br凭ea锐k;ca肝se根0牛xF沿B:僵K=妥3;佣br窗ea志k;de刮fa狐ul捡t:皮K=切0;}wh赵il头e(团P1珍!=拾0x释FF腾);茫//等待拳按键喇释放坏再返泡回键漫值。re葡tu失rn染K荡;}//按键棵处理vo丝式id可K别ey模Pr兰oc即es旋s(拳u8征K菜ey乌){sw橡it响ch吐(K例ey痒){ca饲se元1柄:D维ir孔ec图ti锁on拾=1搞;M往ov崭in露gB源it精=0伟;Mo稳de裳No券=(伶Mo寨de令No耐+1让)%风8;P3迈=M广od瞒eD行is悟pl茅ay伯[M雁od败eN藏o]屠;br西ea荣k;ca倚se牺2茎:i念f(摸Td窄x>树1)建Sp娃ee迫d=浮Sp桐ee今dC软om夫mo偶n[剪--第Td缘瑞x]碎;b胜re爹ak棋;ca臂se装3饰:i惯f(塑Td练x<兽14亩)S暑pe葵ed猴=S懂pe亡ed鸣Co钩mm圣on济[+尤+T挽dx善];上一叛页下一翠页返回}}//点亮16位LE劈燕Dvo段id宾L晒ed穴Li开gh握t(呆u1卡6雁Le昆d1掩6b钩it浸s){P2忧=L胃ed翼16退bi威ts酸&拆0朱x0竞0F寇F;插//点亮免前8个P0遍=L延ed炊16品bi怜ts据>>肉8;恭//点亮痰后8个}//定时恳器中适断函盼数vo倒id钱T夕1_孔IN宴T(矛)闪in艰te泻rr购up阶t芝3{if刊(+科+T滨Co烧un征te泡r<姜Sp乏ee易dC门om当mo理n[责Td绵x]翅)r糕et坝ur友n;肢//控制晚延时TC办ou漆nt嫂er哑=0贯;上一末页下一吧页返回sw彻it花ch抢(M乳od茎eN帮o){ca奋se乏0确:L麦ed迷Li木gh苏t(傅0x栋00弦01辽<<绳Mo霜vi纷ng运Bi引t)充;b痰re柏ak寸;ca两se窄1卸:L剥ed喘Li窝gh胖t(尤0x搞80统00研>>巴Mo国vi彩ng熟Bi供t)贷;b浪re翻ak约;ca兽se胞2颠:i坊f(淹Di市re半ct扮io宝n)践Le票dL钟ig马ht扬(0貌x0垦00造1<片<M笑ov督in划gB锄it院);el辣se题L候ed欣Li轨gh抄t(见0x翠80盛00药>>邪Mo锦vi撇ng箭Bi独t)逃;if袍(M甚ov黄in皆gB葱it袍==以15爹)D刑ir越ec售ti槽on维=!梨Di状re说ct睬io阶n;br捧ea靠k;ca黎se俯3俯:i抱f(获Di中re仁ct们io闹n)罗Le摸dL扒ig善ht烈(~遇(0深x0祝00销1<绸<M浓ov砖in猾gB妇it痰))惠;el茧se侮L知ed骨Li嗽gh盐t(凯~(振0x驰80饭00习>>口Mo正vi叹ng谷Bi往t)定);if堵(M步ov条in厚gB笛it枣==喊15攻)D翅ir奥ec再ti饿on泊=!歌Di横re伤ct蹄io框n;br纵ea禁k;ca枣se滤4石:i找f(鸣Di券re邮ct背io父n)吨Le马dL握ig必ht卸(0纵x0慢00欲F<绍<M俩ov圾in讨gB稍it醉);el炮se趟L键ed皆Li粱gh顿t(幼0x但F0帝00宿>>唱Mo刘vi枪ng奔Bi熔t)哄;if任(M添ov想in些gB催it暴==眉15收)D长ir蜡ec志ti暂on舰=!缸Di懒re牺ct谎io硬n;br孟ea亮k;ca携se肆5抄:释if堆(D网ir虏ec假ti四on毅)L黎ed衣Li轨gh膨t(魔~(浇0x拦00择0F溜<<且Mo牵vi丙ng疫Bi衰t)用);el避se令L湖ed籍Li补gh呢t(切~(葵0x巨F0心00劝>>津Mo厦vi坝ng府Bi伞t)竹);if晴(M蹲ov野in遗gB胖it局==优15淘)D六ir凯ec代ti代on靠=!毁Di使re度ct他io贵n;br敏ea爷k;上一集页下一滩页返回ca浓se膜6军:i桥f(橡Di秩re絮ct盈io您n)悄Le秩dL柴ig校ht匀(0跌xF六FF位E<乘<M挤ov件in厘gB气it拥);el俭se铃L炎ed车Li挣gh惯t(交~(救0x乐7F团FF艘>>炭Mo怒vi奴ng鲁Bi信t)伍);if治(M均ov关in搅gB补it越==秋15坦)D颤ir妹ec资ti奏on热=!裤Di跑re光ct妥io译n;br须ea楚k;ca优se臭7鸡:i劣f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论