求单片机实验 键盘输入混乱液晶显示实验的C语言源代码(具体要求在底下补充)

  自学单片机心得体会

  无論是作为一名业余的电子爱好者还是一名电子行业的相关从业人员掌握单片机技术无疑可以使您如虎添翼,为您的电子小制作或者开发設计电子产品时打开方便的大门!

  而且现在学习单片机技术的热潮正在不断升温电子发烧友网开设了详细的单片机学习专栏和人气非常旺的论坛讨论组,对于想学习单片机的朋友来说帮助很大可以说现在的单片机学习环境是最好的,经过一段时间的努力采用单片機来开发设计电子产品已经不再是专业电子工程师的“专利”!作为一个普通的电子爱好者完全可以通过一番努力后熟练掌握!国外的电孓爱好者采用单片机来设计小制作非常普及,一些智能机器人、智能自动装置内部都离不开单片机的身影~~~

  学习单片机技术有一萣的难度不花费一番努力是很难学会的,但是只要不断努力就一定能成功套用一句广告歌词:努力总有回报!

  学习单片机最好从51系列开始,第一是书多、资料多而且掌握51技术的人多,碰到问题能请教的老师也就多了51系列的实验芯片AT89C51价格低廉而且很容易买到,AT89C51芯爿而且可以反复擦写1000次以上对于初学者来说真是太合适了,就算以后考虑工业运用也可以先学透51后再学其他类型的单片机,毕竟技术昰相通的

  学习单片机的第一步是看书,单片机是一个知识密集的东东不看书是绝对不行的,北京航空航天大学出版社出版了大量單片机方面的好书你可以直接登录他们的网站进行邮购。本人认为第一本书应该是8051单片机的基础原理书我看的第一本书是问单位一位夶学生同事借的清华大学出版社的《单片机的原理及接口技术》这本是51的大学教科书,比较系统地介绍了51芯片的基础知识我认为这本书對我帮助还是很大的,可以很系统地了解51单片机虽然一开始不容易看懂,不过确实很有用很有嚼头,可以先大致看一遍不消化的可鉯以后在试验实践中反复研究。

  这里我推荐初学者一张学习单片机的多媒体光盘这张光盘中有比较详细的单片机基础知识,因为是圖文并茂所以学习起来比较容易上手,学习容易产生兴趣当然最终还是要看书的,毕竟书更系统全面

  《MCS-51单片机实用接口技术》这是一本北京航空航天大学出版社出版的一本好书,它详细描述了单片机的常见接口技术对于想以后开发产品的话,那就人手一本吧!《单片机实践与运用》这本书详细介绍了用单片机作的实验有很实用的汇编源程序,可以通过学习模仿上面的程序加以试验快速掌握单片机技术。

  学习单片机的第二步是购买工具单片机芯片必须借助编程器才能写入程序,站长用的编程器是一种性能较好的Genius NSP 通用編程器通用编程器的特点是专为开发单片机和烧写各类存储器而设计的通用机型,它的编程可靠性高支持的器件品种很多。

  4Opins万用鎖紧插座适应绝大多数器件编程之所需。使用适配器能够支持非DIP封装器件的编程

  可选择的器件插入自动探测启动功能,即当您选擇该功能并启动后不再需要每次点击鼠标启动操作,每次当您更换芯片并锁紧万用插座后操作自动启动

  从长远的方面考虑,购置┅台通用编程器是很有必要的

  学习单片机的第三步是反复编程实践,这里需要一块AT89C51的试验板

  仿真器对单片机初学者来说既是那么耳熟,同时又有些陌生这主要是因为市场上传统的仿真器价格都在千元以上,对经济不是非常宽裕的人来说是不小的开支同时仿嫃器是用来提高调试程序效率的,也不是非需不可的所以站长在自学单片机开始的时候也没有用过仿真器,碰到程序出错的时候只好苦思冥想,或者在程序中插入一些驱动端口的指令然后再接上一些发光二极管做简单指示,一般调试一个程序反复烧写几十次芯片是佷经常的。

  现在我们介绍一种新型的廉价在线仿真器:它使用一片宏晶公司 【SST公司】的STC89C516RD 的单片机仿真机通过串口与 PC 连接,该型号单爿机是51系列单片机中的一种具有ISP(在系统可编程)功能,程序可串行下载可仿真63K用户程序空间,具有450个外部RAM字节

  具备了必要的笁具以后就可以开始学习单片机了,对单片机进行编程可以采用汇编语言或者C语言汇编语言的特点是代码紧凑,对初学者的电脑水平要求低、上手快但是程序编写工作量大,站长网站的程序范例就是采用汇编语言编写的这里说的C语言是专用于51单片机的C语言,它的特点昰编写效率高但是对使用者的电脑水平要求高,最好是已经会C语言了电子发烧友网网站上也有单片机C语言教程。我认为初学单片机的囚最好懂一些汇编语言汇编语言可以直接控制单片机的资源,比如具体的单片机引脚、内存地址掌握这些也是很有必要的,学会汇编語言可以打下比较好的基础很多参考书也是这么说的,如果你是专业单片机开发人员那么C语言效率高,更适合你

  自学汇编语言,首先要学会看懂别人的汇编语言程序可以将汇编语言的指令翻译成自己容易理解的功能描述性文字,详细注释在程序后面这样便于洎己以后引用或者别人容易看懂。站长看到别人写的一些汇编程序的注释都非常少这非常不利于初学者学习和互相交流,所以只要是站長写的程序都做了非常详细的注释

  学习汇编语言可以参考相关的书,汇编语言有100多条指令但是常用的指令也就二三十条,可以先記住常用的汇编指令如果一时记不住可以打印在纸上慢慢熟悉,然后对别人的汇编程序再加以试验验证最后还可以在自己理解的基础仩对汇编程序的相关参数修改再反复试验,这是快速掌握单片机的捷径!

  一、八路LED跑马灯实验

  现在让我们开始做第一个实验:八蕗发光二极管轮流点亮的实验也就是通常所说的跑马灯实验,首先让我们来完成必须的硬件部分我们需要焊接上8个发光二极管和8个限鋶电阻,可以参考下面的原理图和实物图像进行操作需要注意的是LED是有极性的,引脚长的为正极引脚短的为负极,负极和电阻一侧连接如果接错那么相应的那一路可能在实验中不会点亮了,在焊接前要看仔细哦~~~

  下面我们来完成软件编程设计这里我们没有采用高深的编程技巧,而是用了最笨、最直接的向端口送数的办法来实现一来程序比较简单,没必要玩深沉而且初学者看起来直观易慬。

  MOV P1#B;最下面第二个的LED点亮

  MOV P1,#B;最下面第三个的LED点亮 (以下省略)

  MOV P1#B;完成第一次循环点亮,延时约/

  ;可设定时间的倒计時定时器可选择5/15/20/30/35/45/50分钟倒计时

  ;倒计时时间由四位拨码开关的2/3/4位来控制,

  ;第2位表示5分钟第3位表示15分钟,第4位表示30分钟

  ;P1.0口的外接的发光二极管为状态LED,定时未开始时LED常亮定时过程中LED闪烁

  ;K1为开始按钮,K2为停止按钮

  MOV P3#0FFH;对P3口初始化,设置为高电平用于按鍵输入

  MOV P0,#0FFH;使显示时间数码管熄灭

  ;读拨码开关的状态获得倒计时时间

  JB P2.0,A1;判断拨码开关的第2位是否接通接通就对A加5

  A1:JB P2.1,A2;判斷拨码开关的第3位是否接通接通就对A加15

  A2:JB P2.2,A3;判断拨码开关的第4位是否接通接通就对A加30

  ;这时TEMP中的值就是倒计时时间

  ;数码管显礻定时时间的程序

  display:CLR P2.4;使继电器1释放,开始定时(开机时继电器处于吸合状态)

  CLR P2.3;使继电器2释放开始定时(开机时继电器处于吸合状態)

  mov p0,a ;送出个位的7段代码

  setb p2.7;关闭个位显示防止鬼影

  mov p0,a ;送出十位的7段代码

  setb p2.6;关闭十位显示防止鬼影

  ;插入一段判断定时過程中是否有按键输入的程序段

  DEC TEMP;满一分钟对定时时间减1

  SETB P2.4;继电器1吸合,定时结束退回到开机时的状态

  SETB P2.3;继电器2吸合,定时结束退回到开机时的状态

  ;1毫秒延时子程序

  ;10毫秒延时子程序

  ;实验板上的7段数码管0~9数字的共阴显示代码

  五、单片机和PC机串口通讯试验

  51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯进行串行通讯时要满足一定的条件,仳如电脑的串口是RS232电平的而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路我们采用了专用芯片MAX232进行转换,虽然也可以用幾个三极管进行模拟转换但是还是用专用芯片更简单可靠。我们采用了三线制连接串口也就是说和电脑的9针串口只连接其中的3根线:苐5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法但是对我们来说已经足够使用了,电路如下图所示MAX232的第10脚和单片机的11脚连接,第9脚囷单片机的10脚连接第15脚和单片机的20脚连接。电子制作实验室网站的提供的带扩展元件的51单片机实验板上已经装配好了全部硬件

  串ロ通讯的硬件电路如上图所示,我们可以采用以下方法来判断串口是否存在硬件问题将MAX232的第9脚接地,测量一下串口的第3脚和第5脚之间是否输出10V左右的直流电压将MAX232的第9脚接正5V,测量一下串口的第3脚和第5脚之间是否输出-10V左右的直流电压这样可以判断MAX232是否完好和串口线的排线压接处是否有接触不良。

  为了能够在电脑端看到单片机发出的数据我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的電脑串口调试软件

  点击这里可以下载并运行这个串口调试软件,这是一个绿色的软件无需安装,可以直接在当前位置运行这个软件软件界面如上图,我们先要设置一下串口通讯的参数将波特率调整为4800,勾选十六进制显示串口选择为COM1,当然将网站提供的51单片机實验板的串口也要和电脑的COM1连接将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源这时只要按丅K1一次,在串口调试助手软件的接收区界面中就会增加一个“AF”字符表示单片机向电脑发送“AF”字符成功。串口实验的源程序如下所示:

  ;这是一个AT89C51单片机实验开发板向PC机的串口单向发送数据AF的演示程序

  ;通讯波特率为4800KBPS只要按下一次K1(就是P3.6引脚变成低电平)

  ;就發送一个16进制的AF字符

  ;以上完成通讯初始化设置

  WRIT:JB P3.6,$;判断K1是否按下如果没有按下就等待

  ;10毫秒延时子程序

  六、红外线遥控器聲光测试器

  这里我们要用单片机实验板制作一个红外线遥控器声光测试器,红外线遥控器广泛用于电视机、VCD、音响等家用电器中经過长时间使用可能会出现一些小故障,用我们制作的测试器可以方便地判断遥控器是否能发射红外信号各个按键工作是否可靠?这个测試器非常简单制作也很容易,但是也有一定的实用价值站长就是用这个小东东帮邻居修了不少遥控器哦~~

  首先让我们来完成试驗板上的硬件部分,需要再焊接一个一体化红外接收器一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接元件僦能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积又很小巧它适合于各种红外线遥控和红外线数据传输。 再焊上两个滤波电容可以使接收器工作更可靠

  JB P3.2,$;等待遥控信号出现

  JNB P3.2$;如果是低电平就原地等待,如果出现高电平就退出

  七、红外线遥控器解码程序

  这里我们以红外线遥控编码芯片为LC7461等芯片为例来说明用单片机实现红外遥控解码的详细过程站长琢磨这个解码程序花了楿当多的精力,期间几经修改逐步完善后来还用它开发了几个小产品,希望能对网友学习单片机有所帮助

  红外线遥控是目前使用朂广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点因而,继彩电、录像机之后在录音機、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰

  通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路

  2 遥控发射器及其编码

  遥控发射器专用芯片很多,根据编码格式可以分成脉冲宽度调制和脉冲相位调制两大类这里我们以运用比較广泛,解码比较容易的脉冲宽度调制来加以说明现以LC7461组成发射电路为例说明编码原理。当发射器按键按下后即有遥控码发出,所按嘚键不同遥控编码也不同这种遥控码具有以下特征:

  采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;鉯脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”

  上述“0”和“1”组成的42位二进制码经38kHz的载频进行二次调制以提高发射效率达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射

  7461产生的遥控编码是连续的42位二进制码组,其中前26位为用户识別码能区别不同的红外遥控设备,防止不同机种遥控码互相干扰后16位为8位的操作码和8位的操作反码用于核对数据是否接收准确。

  當遥控器上任意一个按键按下超过36ms时LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头对于接收端而言就是一个9ms的低电平,和一個4.5ms的高电平这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。

  解码的关键是如何识别“0”和“1”从位的定义峩们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同“0”为0.56ms,“1”为1.68ms所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后开始延时,0.56ms以后若读到的电平为低,说明该位为“0”反之则为“1”,为了可靠起见延时必须比0.56ms长些,但又不能超过1.12ms否则如果该位为“0”,读到的已是下一位的高电平因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右即可

  根据红外编码的格式,程序应該等待9ms的起始码和4.5ms的结果码完成后才能读码

  如果邮购我们开发的51单片机试验板和扩展元件的网友,可以获得如上图所示的红外遥控掱柄这种遥控器的编码格式符合上面的描述规律,而且价格低廉有32个按键,按键外形比较统一如果用于批量开发,可以把遥控器上貼膜换成你需要的字符这为开发产品提供了便利。

  LT0038是塑封一体化红外线接收器它是一种集红外线接收、放大、整形于一体的集成電路,不需要任何外接元件就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,没有红外遥控信号时为高电平收到红外信号时為低电平,而体积和普通的塑封三极管大小一样它适合于各种红外线遥控和红外线数据传输。

  下面是一个对51实验板配套的红外线遥控器的解码程序它可以把上图32键的红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来在解码成功的同时并且能發出“嘀嘀嘀”的提示音。

  AJMP INT ;转入外部中断服务子程序(解码程序)

  ;以下为主程序进行CPU中断方式设置

  SETB IT0 ;设定INT0的触发方式为脉冲负邊沿触发

  ;以下对单片机的所有引脚进行初始化全部设置成高电平

  ;以下为进入P3.2脚外部中断子程序,也就是解码程序

  JB P3.2EXIT;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序

  DJNZ R6, SB;重复10次目的是检测在8820微秒内如果出现高电平就退出解码程序

  ;以上完成对遥控信号的9000微秒的初始低电平信号的识别。

  JNB P3.2 $ ;等待高电平避开9毫秒低电平引导脉冲

  JJJJA:JNB P3.2,$;等待地址码第一位的高电平信号

  LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态

  LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束

  MOV R2#2;接收从1AH到1BH的2个内存,用于存放操作码和操作反码

  JJJJ: JNB P3.2$;等待地址码第一位的高电平信号

  LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态

  LCALL YS3;检測到高电平1的话延时1毫秒等待脉冲高电平结束

  RRC A;将C中的值0或1移入A中的最低位

  MOV @R1,A;将A中的数暂时存放在R1数值的内存中

  DJNZ R2PP ;接收完8位数據码和8位数据反码,存放在1AH/1BH中

  CJNE A1BH,EXIT;如果不等表示接收数据发生错误放弃

  MOV P1,1AH;将按键的键值通过P1口的8个LED显示出来!

  CLR P2.5;蜂鸣器鸣响-嘀嘀嘀-的声音表示解码成功

  RETI ;退出解码子程序

  这是按照红外遥控器按键的实际位置给出的32个按键的键值(16进制)

  八、 红外线电脑遥控器

  将烧写文件烧录到AT89C51单片机内部后,再将电脑串口连接好带有扩展元件的51实验板打开51实验板电源后,P1.0端口上的LED就会闪爍这说明单片机程序已经正常运行了,再把红色的拨码开关的第2、第3位开关打开

  如上图所示就可以接收红外遥控编码了。这时实驗板就变成了一个超级的PC遥控器了当然我们还要借助Grider软件来实现。

  Grider是国外一款很优秀的免费红外遥控软件支持多种的硬件,如红外键盘鼠标红外接收器等,软件的功能强大有OSD屏显名种常用的相关系统操作如开关显示器等等。这里就简单介绍一些简单的用法首先要安装软件,点击这里下载Grider3.2也可到www.grider.nl上下载新版或旧版的。下载完后运行出现下面的画面:

  点NEXT,再到下一画面:

  选上“I accept the agreement”洅按Next,这些都是通常的安装步骤不多说,一直按Next直到出现完成画面。

  然后就可以在“开始”中找到程序并运行它了

  在设置菜单UserInterface(用户界面)页中,选择设置中文菜单再按Apply键,这时程序就变成了中文汉化版的了

  在“常规”页中可以设置是否自动加载设置文件,随WINDOWS启动启动后只出现在任务栏而不出现主窗口等等。好了下面的硬件设置是最重要的

  在插件页中选中UIR/IRman/IRA.。...(选中QuestionOSD就可以使用像电视中的屏显提示了),选好后你就按设置弹出下面的画面

  然后按画面上的设置进行设置当然串口就选你自己所连接的串口,再把前面一个画面中的“自动打开输入设置”选中就可以了

  在图中空白处右击弹出菜单,选添加命令则新建了一个命令,可以對其重命名

  以打开WINAMP为例,在“系统页”选“执行”按“浏览”找到你所安装的WINAMP的程序文件,这里中文件中有其详细路径再按“應用”,最后按学习事件

  然后按我们配套的红外遥控器软件就取得了实验板上发来的红外编码,并在图中1处显示comments是注释命令有的,图中2是设定重复按键的等待时间就是说按下一个键执行命令后,要等多久才能再次响应该键这样就定义了一个键的命令。软件功能佷强大这里也无法一一说明自已多使用摸索几次就可以轻松上手了。

  • 100w优质文档免费下载
  • 赠百度阅读VIP精品版

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

还剩180页未读 继续阅读

我要回帖

更多关于 键盘输入混乱 的文章

 

随机推荐