




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- - - 中语言微电脑编程系统使用说明中国人自已的微电脑编程语言最近几年,中国的微电子迅猛发展,微电脑应用已进入千家万户,所有的家电几乎每台都装有微电脑芯片,例如电饭煲,电视机,电风扇等。不只是在民用方面,各个行业的微电脑应用也是是新月异:工业应用,医疗器械,航天应用等等。可以说,现在社会微电脑应用已是无所不在!然而,中国的微电脑编程语言一直是英文为主的,这给一些英文基础不太好的微电子爱好者设定了一定的障碍。在中国,有数亿万计的微电子爱好者,但从事微电脑编程的人员占不到十分之一,很大一部分就是因为编程语言的缘故。不只是工作方面,这些微电子爱好者有好多想法,如果得以实现,可以发明出很多产品,但
2、是就是因为英文基础不态好的原因造成的微电脑编程不能进行,从而给研发产品造成了一定的困扰,大的方面说,也阻碍了我国的电子信息化的发展。在美国等一些国家,普通人员不要专业知识就可以学编程,因为编程语言是他们的,所以就和写文章一样,很容易的。为此,我们经过多年努力,终于开发出一套完整的中文微电脑编程系统,取名中语言微电脑编程系统。中语言微电脑编程系统是基于C语言基础上结合中文特点而开发的一套完整的微电脑单片机中文编程系统,希望能给我国电子信息化发展尽一份微薄之力!中语言微电脑编程系统有以下特点:1,全中文语法结构与变量,完全符合中国人的书写与阅读习惯。2,基于C语言但结合了中国人的语法词汇,无需生记
3、硬背语法,用的时候看一下立即明白意思。3,无论年龄,无论专业,无论性别,只要是微电子爱好者即可学会。人人可学,人人可用。4,一天入门,三天上手,简单易学。5,重简去繁,在C语言上一些复杂的用不上的语法完全去掉,只留下简单实用而且常用的,当然这是建立在不影响微电脑应用的基础上。使得学习起来更加容易。同时我们开发了中语言微电脑编程系统编程软件,系统软件具有如下特点:1,全中文友好界面,无需英语基础即可书写内容。2,内嵌编译器,一键编译出对应的HEX文件,并显示出对应的目录,方便易找到HEX文件。3,内附有教程,一看即会。4,代码折叠功能,复杂较长的函数可以折叠起来,读起来更方便。5,左栏有双击打开
4、最近文件功能,简单实用。中语言微电脑编程系统还有很多优点等着您去发现,当然,我们这套系统也是一套全新的系统,有些问题和不足之处,如果您发现了,请告诉我们,以方便改进。中语言微电脑编程系统使用教程第一节,新建项目目录:首先在D:盘或E:根目录下新建一个文件夹:我的项目,然后在我的项目文件夹中新建一个文件夹:项目1.这样我们就可以方便的保存将要新建的项目:第二节,打开软件:打开我们的编程系统软件,将会出现如下画面 # 第三节:新建我们的工程项目:- - -点击文件新建工程,将会出现如下画面:这是在提示我们选择相关的微电脑芯片,以提供正确的编译方式,选好以后点击确认选择将会出现如下画面:面:正确填入
5、我们需要的项目名字:我这里填的是点亮第一盏红灯,点保存,将会出现如下画 - - ISI&4占1卜琲-訝!iM:3EUI-W.-PUifiliSiisi.hSff.&EMHi:占E甜PW初右驱JL灵ansmzr哉話0計等翻LEH职吕1WWI!屯日1苗EJt-iJl-rr曲曲TnaihMj;:g-F7aysuism小点范-jHrhill*!3-THdEMi.=可以看到,已有了第一行代码,这是引入头文件的,不用我们再写了。接下来就正式进入我们的第一个项目了,这里我们要先从最简单的入手,也就是点亮一个我们的红灯,代码很简单,请输入以下代码:#端口再定义红灯控制脚P1_1函数主程序()红灯控制脚=低;结
6、束函数这里第一行我们就是把单片机的P1_1口再次定义一下,定义为我们方便看懂的红灯控制脚,这样对于我们后面查询代码时非常有用。第二行函数主程序,这个不用说了,也就是说是主程序的开始,第三行,红灯控制脚=低;这句代码说的是将这个红灯控制脚置为低电平,可以看出,这个脚接低电平时红灯会亮。第四句是结束函数,也就是主程序结束了。怎么样,很简单吧,那么倒底这几句代码是不是有用呢?我们点一下,这时出现如下画面:aTBlKw,河貓!.片曲章aLrtiDStsfffrHMtlPl.ia-tTKHJfe-E禺即5ftmr阿忖、齐理事SSfl-i!i*tsiim工hqm由金口口tcejfqe-jxa辽工sl|S團
7、-JilFKSll.T可以看出,在下面项目编译提示信息中已出现了.hex文件编译成功的信息,并给出了文件目录,那么这个文件倒底能不能运行呢?我们必须实践一下,打开仿真软件PROTEUS,这可是个好软件,在项目调试过程中非常有用,这里晶体选12M,装入我们刚生成的HEX文件,点运行,可以看出,LED灯亮了。!=ILII74LGOD0OC51E:ULEEJ-BLUELED3AENLED-FIEDLEE3-tjELLOV/RESI74L50DJ1_iin7II凰陪1J严兀iEXiEL|x21OQ.O-240Q0M|ANIUATlNG:Cl:OQ:12.ED00QQ(CPU2J是不是很容易呢?不过万里
8、长征走了第一步,由浅入深慢慢来,接下来我们要让这个灯一直闪,一秒一次,我们要有个思路,写代码没思路不行,盲目的写最后写出来的很乱的。那么要想让灯闪那就让红灯控制脚先置高或低,延时一下,再置高或低,这样是不是就可以了呢?写入如下代码:#端口再定义红灯控制脚P1_1声明无返回值延时_毫秒(整数型毫秒);函数主程序()红灯控制脚=低;延时_毫秒(1000);红灯控制脚=高;延时_毫秒(1000);- - -结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量120;计次变量递加);任务安排完毕结束函数整个代码加了个延时函数,所以要在主
9、函数上面声明一下,这个函数是没有返回值的,所以要声明为无返回值的。先看一下延时函数,函数延时_毫秒(整数型毫秒)这里先声明了一个局部变量,毫秒,表示我们要延时多长时间,如果延时1毫秒,到时就填1就可以了,延时1000毫秒也就是1秒,填1000就可以了。再看下一句:短整数型计次变量;这里也是声明了一个变量,短整数型的,用于延时循环。再看一下这一句:单任务依次循环(计次变量=0;计次变量120;计次变量递加);这就是说当计次变量小于120时,计次变量就会递加1。这里是12MHZ的晶体,大概延时时间在1个毫秒。再看上面一句多任务自动循环(毫秒递减),也就是说这里面的数开始减1,当减为0时自然就结束这
10、个循环。这里解释一下单任务和多任务,单任务就是只运行这个函数本身的任务,多任务就是包除自身任务外还包含有其它任务运行,后面跟有任务安排完毕的句子。好,点一下编译,装入PROTEUS运行,好像不对,亮一下就灭了,不是我们想的一直闪,如果我们想一直闪怎么办?很简单,再用多任务自动循环(真)就可以了,将代码改一下:#端口再定义红灯控制脚P1_1声明无返回值延时_毫秒(整数型毫秒);函数主程序()多任务自动循环(真)红灯控制脚=低;延时_毫秒(1000);红灯控制脚=高;延时_毫秒(1000);任务安排完毕结束函数函数延时_毫秒(整数型毫秒短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计
11、次变量=0;计次变量120;计次变量递加);任务安排完毕结束函数点一下编译,装入PROTEUS运行,效果出来了:ISISlileVieiYiaIloclslesicriGraliSour匚已BehueLibrarrlemplateSistoriHelp血回*丨申亀Q耳碑|90*1X*玉1仪#搏沪iJfelMZIe=卄JL二二-Z也旦DEVICES74L5COaocsi.BusA789C51LED-BLUELEDREENLED-REDLED-YELLOWRES74LS00丄031ss.n/nJHq.lErtEEMmEDI2Dc-M川.I川JI.|川MITaITU.8Alsl丰|II|O5Mbs汨
12、口乖U11护11H工II:U.丄JUUUTlHUIohb-S|接下来我们要让红灯用中断来闪烁,因为中断是微电脑必须的一个功能,新建项目并输入以下- #- 代码:#端口再定义红灯控制脚P1_1短整数型计数器;函数初始化_定时器OJI6位(无类型)模式控制寄存器二0 x01;低位初装值定时器0二0 xD8;高位初装值定时器0二OxFO;中断允许_定时器0二真;总中断允许二真;开启定时器0-真;-22-22-结束函数函数中断后事件定时器0(无类型)中断号中断标志0二假;低位初装值定时器0二0 xD8;高位初装值定时器0二OxFO;计数器递加;如果(计数器=100)- - -计数器=0;红灯控制脚=取
13、相反(红灯控制脚);结束如果结束函数函数主程序()初始化_定时器0_16位();单任务自动循环(真);结束函数看一下上面的中断定时器初始化,这里是12MHZ晶体,所以中断时间大概为10毫秒。函数内容很简单的,就是几个中断必要的条件。中断后的事件加了一个计数器,当计数器大于100时(也就是1秒钟),把红灯控制脚翻转,也就是低变成高,高变成低,这样就可以持续的闪烁了。主程序很简单的,就两句话。下面是运行效果:Nl回匹LDEVICESQ0C51.QUSAT89C51LED;LUELED-GREENLED-PEDLEDYELLOWRESI74L5D0|I.1|-窗一/口+pinDEVICES24LS0
14、D90C51DU9rggcsiLED-BLUELEDJ3REEMLED-FIEDLEDVELLQWRE5I74LSOOI到了这时候,我们就要学习一下按键控制了。当按键1按下的时候红灯亮,当按键2按下的时候绿灯亮,按键控制也有两种方式,我们先看第一种查询方式,也就是不停的查询按键的端口状态请输入以下代码,:TOC o 1-5 h z#端口再定义按键1P3_2#端口再定义按键2P3_3#端口再定义红灯1P1_1#端口再定义绿灯2P1_2声明无返回值延时_毫秒(整数型毫秒);函数主程序()红灯1=低;- - -多任务自动循环(真)如果(按键仁二低)延时毫秒(10);如果(按键仁二低)红灯1二高;绿灯
15、2二低;结束如果-31-31结束如果如果(按键2二二低)延时毫秒(10);如果(按键2二二低)红灯1二低;绿灯2二咼;结束如果- - -结束如果任务安排完毕结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量120;计次变量递加);任务安排完毕结束函数同样,代码很简单,这里要解释的就是这个延时10毫秒,为什么要这样?因为我们的单片机周围存在很多电磁波干扰,所以延时一点时间,如果这个端口还是这个状态的话,那就表示是真的按键了,如果延时后端口状态变化了,就说明这个是干扰,就不处理这次按键的结果了。这种方法叫去抖动或消抖动。编译并装入
16、PROTEUS,看一下效果:eOCEl.BUSAT03C51BUTTONLED-BLUELED-GREENLED-REDLED-YEULOWRESI74LGQ0JO12SJIf!.:=一十生吕=l-臨E33卸次豎/=AS1*nmcvCO.IIJDIunMn1nsjcvnujauajcvninjcPT.WJFJiACiST戸ajsjjjrsaifEIIIMF331lppaPSraiJlTPI$找|園因|妙上面演示了按键的查询,下面要进行按键中断演示,因为我们的中断反应很快,而且运行过程中点用的时间很小,这就是中断的好处了,原理是当中断来时,事先可以设定高中断还是低中断,我们这里设定低中断,也就是
17、按键按下以后端口为低,引发中断,从而控制灯的状态,请输入以下代码:#端口再定义按键1P3_2#端口再定义按键2P3_3#端口再定义红灯P1_1#端口再定义绿灯P1_2短整数型按键状态位;声明无返回值延时_毫秒(整数型毫秒);函数初始化_硬件中断()- - #-触发方式选择硬件0二1;中断允许_硬件0二真;触发方式选择硬件1=1;中断允许_硬件1二真;总中断允许二真;结束函数函数中断后事件硬件0()_中断号0- #- -延时毫秒(10);如果(按键1二二低)按键状态位二1;结束如果结束函数函数中断后事件硬件1()_中断号2延时毫秒(10);- - -如果(按键2二二低)按键状态位二0;结束如果结
18、束函数函数主程序()初始化_硬件中断();多任务自动循环(真)- - #-如果(按键状态位二二1)红灯二高;绿灯二低;否则红灯二低;绿灯-高;结束如果- - -任务安排完毕结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量120;计次变量递加);任务安排完毕结束函数这里我们用了两个硬件中断,当中断来时,同样延时10毫秒检测一下端口状态,也是起延时消抖的作用。M-n-*:!焦洌客一/LJc)8A亘串8OZ51.BUSAT09C51BUTTONLEDBLUELEDGREENLEDREDLEDYELLOWFiESI74LBOOIJI
19、卜fujuxuFD.IM1en_uaMr-3EJ3XI33mJixmITrFH.1JWiaHfl-stari11Lf-n(I:-?rajixi2ZJI.W11Htlr|I4PE51diqrajPl.iura.F工円-FjDIAEPRSP.iP5ciraaa王LII耳rDhri*i.JlD:IaSSPTini2A1-17aifBKA*a_=PA叫|I.|H|显5Messagefsl|ANIM4TING120:00:20.050000CPU按键控制就这样,当然在实际应用中请灵活运用。到这时候,不得不玩一下我们单片机常用的- - #流水灯也称为跑马灯了,这也是微电脑单片机常用的一个学习程序,那么我们
20、这里也有两种方式,一种是延时,先看一下这种方式,请输入以下程序:#端口再定义红灯1P1_0#端口再定义红灯2P1_1#端口再定义红灯3P1_2#端口再定义红灯4P1_3#端口再定义红灯5P1_4#端口再定义红灯6P1_5#端口再定义红灯7P1_6#端口再定义红灯8P1_7声明无返回值延时_毫秒(整数型毫秒);- - -函数主程序()多任务自动循环(真)红灯1二低;延时毫秒(1000);红灯2二低;延时毫秒(1000);红灯3二低;延时毫秒(1000);红灯4二低;延时毫秒(1000);红灯5二低;- - -延时毫秒(1000);红灯6二低;延时毫秒(1000);红灯7二低;延时毫秒(1000)
21、;红灯8二低;延时毫秒(1000);红灯1二高;红灯2二高;红灯3二高;红灯4二高;红灯5二高;- - -红灯6二高;红灯7二高;红灯8二高;延时毫秒(1000);红灯8二低;延时毫秒(1000);红灯7二低;延时毫秒(1000);红灯6二低;延时毫秒(1000);红灯5二低;- - -延时毫秒(1000);红灯4二低;延时毫秒(1000);红灯3二低;延时毫秒(1000);红灯2二低;延时毫秒(1000);红灯1二低;延时毫秒(1000);红灯1二高;红灯2二高;红灯3二高;- #- -红灯4二高;红灯5二高;红灯6二高;红灯7二高;红灯8二高;延时毫秒(1000);任务安排完毕结束函数lA
22、NIMATlNG:i:0:00:18.200DCO(CPUbad13SJ- -lANIMATlNG:i:0:00:18.200DCO(CPUbad13SJ- - -函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量120;计次变量递加);任务安排完毕结束函数学了上面几个程序,那么这个就很简单了,不用解释,全是一些端口置高置低的。看一下效果:马IT葺圭詈恂-ISISrrofusianal(lLiiiBaliiLg:)PilftViawEditToalsD&sijnGraphSaurcaDabugLibraryTamplataSyctam
23、Hlp酋曙丨帝圓|j國匣I串丨半电鱼鱼陕|呼罕丨瞬昭审丨壬書丨議#拧/|雇J船KI画賈抽逼因丨阿麗hshs-葛ssn.lRNJU?ln.nkr2tcl-xPEAPLDEVICES74LGO00OC51BUSAT83C51LED-BLUELED-GREENLED-REDLED-fELLOWFiES7蕊回护0图一/口0DWAS#1IIJ5Message(旬- - -这里我们主要介绍第二种方式,移位流水跑马灯,移位这个功能很有用的,用在遥控解密或I2C通讯等多个方面。请输入以下代码:#端口再定义流水灯缓冲值P1声明无返回值延时_毫秒(整数型毫秒);函数主程序()短整数型主计次变量;多任务自动循环(真
24、)流水灯缓冲值=0b11111110;多任务依次循环(主计次变量=0;主计次变量8;主计次变量递加)延时_毫秒(2000);流水灯缓冲值=流水灯缓冲值按位左移位1;任务安排完毕流水灯缓冲值=0b01111111;多任务依次循环(主计次变量=0;主计次变量8;主计次变量递加)延时_毫秒(2000);流水灯缓冲值=流水灯缓冲值按位右移位1;任务安排完毕任务安排完毕结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量120;计次变量递加);任务安排完毕结束函数我们先看这一句:#端口再定义流水灯缓冲值P1这个和我们前几个项目都是有区别的
25、,前几个是针对一个端口,而这里是针对P1的8个端口,这8个端口我们送数,送什么样的数?当然是二进制数。看这一句:流水灯缓冲值=0b11111110;这里说明我们送的数每一位代表一个端口的状态,二进制数用Ob表示,最后一位为0,对应我们的P1.0端口为低电平,其它的为1全是高电平。再看这一句:流水灯缓冲值二流水灯缓冲值按位左移位1;也就是将流水灯缓冲值每次往前移一位,移的数为1,这样就把0b11111110慢慢的移到Ob111111OO-Ob11111OOO-Ob1111OOOO直移到0bOOOOOOOO,这时8个灯就全亮了。其它的语句就很简单了。编译并装入PROTEUS,看一下效果:殍位採作I
26、SISrrofccsioiL-blEil亡3fiiftToolsR亡mi,GSra.phS.aurceDehucLibraryTempi*-teSestcm回莖舟丨夺愆虫耳嚥壽粘电丨工圧丨衣攜/|區丨舲#丨囲00厂tS0C51.BUSAFB3匚弓1LEDBLUELED-GREENLEDREDLED-tELLOWHES74LSOOssaCNn.n33H3HraBraHlnlRlBE1-比吕丨乐丨尊团I7SEG-U忖-CAT-ELLIE7JL50080C51.BUSATESC51LEDBLUELED-REDMATRIX尿AGREENI74LSOOX-m3E阳K画肆:一t-亠”I卜II*IMI丨血5
27、同曲汨皿阂/.FIIMAnJ.LUUJ.L!b.lLUJULrii_:HUujC-T上面学了静态的数码管,目的是让我们了解一下数码管的原理,这样的程序实际应用很占资源,如果同时亮个123那就要24个口,而且程序代码量也很大。所以就需要动态显示了,利用人眼的迟滞效应,轮流的让123这三位进行显示,由于闪烁的频率很快,所以人眼是看不出来在闪的,请看以下代码:#端口再定义数码管段控接口P0#端口再定义数码管位控接口P2整数型临时变量;短整数型百位数,十位数,个位数;声明无返回值延时_毫秒(整数型毫秒);声明无返回值数码管显示(整数型百位,整数型十位,整数型个位);- - -函数主程序()临时变量二123;百位数二临时变量/100;十位数二临时变量%10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论