搜档网
当前位置:搜档网 › 北邮单片机小学期 电子称 实验报告

北邮单片机小学期 电子称 实验报告

北邮单片机小学期 电子称 实验报告
北邮单片机小学期 电子称 实验报告

2012211120班6号尹航单片机设计实验报告

2012年小学期单片机设计实验报告题目:基于压力传感器的可计算价格电子称

班级:

班内序号:

实验组号:

学生姓名:

指导教师:

2012211120班6号尹航单片机设计实验报告

2012211120班6号尹航单片机设计实验报告

基于压力传感器的可计算价格电子称

――2012211120班尹航实验摘要

本次我们制作的基于压力传感器的可计算价格电子称除可以称出重物重量外还可以对其输入单价并计算其总价格。整个系统中,微控制器采用了Microchip公司的PIC16F877A,软件设计中涉及PORTA0作为模拟输入端口,将模拟电信号传给单片机并进行数模转换,用PORTA1-PORTA3作为数字输出端口控制显示屏的使能,用PORTB作为数字输入端口,连接4*4键盘输入重物的单价,PORTC作为数字输出端口连接液晶屏,显示重物的种类,单价和总价。

本系统的核心是压力传感器,将其因为压力而产生的模拟电信号传输给PIC16F877A后利用其自身的数模转换功能进行得到重物的重量。

A b s t r a c t

In this experiment, we made a electric scale based on the pressure sensor. It can automatically get the weight of the heavy on it,and calculate the whole price of the heavy according to the weight and the single price we decided for the heavy.

The system uses the production of the Microchip cord--PIC16F877 as the microcontroller. Software design involves PORTA0 as simulation input port, the analog signal to the microcontroller and digital to analog conversion, as a digital enable output port to control the screen with PORTA1-PORTA3, using PORTB as the digital input port, connect the 4*4 keyboard input weight unit, PORTC as the digital output port is connected with the LCD screen, display the weight categories, unit price and total value.

The core of this system is the pressure sensor, the pressure for analog signal transmission to the PIC16F877A after the use of digital to analog of its own to get the weight conversion function.

关键字

2012211120班6号尹航单片机设计实验报告单片机——microcontroller 芯片——CMOS chip

压力传感器——pressure sensor

模数转换——analog-digital conversion

一.实验论证与比较

1.压力传感器模块

电子称利用压力传感器先将压力信号转化为模拟电信号,再借由单片机自身的功能将其转化为数字电信号并进行输出以达到显示重物重量的功能。压力传感器MPX2100是压力传感器模块的核心,要用5V的电压进行供电。初次之外,压力传感器还要用一个LM324作为差分放大装置将获得的mV为单位的电信号放大到以V为单位的模拟电信号,要用±12V的直流电作为驱动。最终得到的模拟信号从LM324的8管脚传送到PIC16F877A的PORTA0进行模数转换。最后通过一个1M的电位计对电源电压进行分压以达到调零的目的,另有一个1K的电位计调整LM324的放大倍数以达到压力传感器的校准功能。图1为压力传感器模块的内部电路。

图1 压力传感器模块电路

在电子称工作时,将压力传感器一端固定在万用板上,将重物放在它的另一端,使压力传感器内部的电阻应变片发生形变,从而改变压力传感器的电阻大小,进而改变通

2012211120班6号尹航单片机设计实验报告过压力传感器的电流大小,获得随重物质量而改变的模拟电信号。

但是由于压力传感器的量程有限,只能称重0~3kg的重量,同时8位二进制数只能表示0~255,所以必须还要对获得的数字信号进行量化后进行输出。我们选取的分度值为12。

2.键盘模块

我们利用了小键盘的0~9以及A、B这12个按键。数字按键用来输入单价,而A、B两个按键分别用来清除已输入的单价和确定已输入的单价。键盘工作的原理是先将键盘所用的按键每个赋予一个键位码,存在从40H开始的连续地址单元中。在无按键按下时,键盘输出均为低电平,而当有按键按下时,对应的输出将会对应高电平。在工作时利用取反扫描法,检测键盘是否有按键按下,一旦有按键按下,查找其键位码对应的地址,利用间接寻址法,减去40H即可获得输入的按键,再转而输入到LCD上。图2为4*4键盘电路图。

图2 4*4键盘电路图

3.LCD显示屏模块

我们用128*64LCD显示屏显示重物的重量、单价、以及计算后的总价。显示

2012211120班6号尹航单片机设计实验报告

屏的输出不仅要用8条地址线传输输出输入内容,还要利用其RS、RW、E三个端口控制其输入输出。因为传输的内容有可能是数据也有可能是指令,所以先要用RS来设定传输的内容;LCD与液晶屏之间是双向传输的,所以要用RW来决定LCD 的输入输出;最后的E相当于使能端,决定何时传输内容。在此程序中,LCD屏只用来输出,所以可以将RW直接接地,而RS、E要连接对应的端口。

二.系统总体设计

⒈系统模块总体框图如下:

2012211120班6号尹航单片机设计实验报告

⒉键盘模块框图

我们默认的设置单价为两位数,所以当输入数字时系统会自动检测已经输入的数字的个数,另外如果想单价为一位数,那么可以在输入一个数字后按下B 键确认。另外,在每按下一个数字时,都会先检测是否按下的为A ,如果是,则清空已经输入的数字,再重新输入单价。

图3为键盘模块流程图。

否u

否u

2012211120班6号尹航单片机设计实验报告

⒊总价的计算

计算总价时,要先将储存单价的8421码转化成8421BCD 码。计算总价时用的为乘法计算,我们选择将乘法分解成加法并循环计算的方式。并且在显示总价时,会先检测总价的不是零的第一位再开始显示总价,避免了像000.000元这样的数字出现。我们的总价最多可以计算4位数乘2位数,结果可达6位数。 图4为计算总价的流程图。

三.硬件连接

⒈压力传感器模块连接

图3 键盘输入流程图

图4 总价计算流程图

2012211120班6号尹航单片机设计实验报告

压力传感器内部有电阻应变片,其阻止大小会随形变的多少而改变,从而产生随压力而变的电信号,再通过查分放大电路放大电信号。因此,压力传感器输出的是模拟信号。想要能够得到数字信号,必须利用PIC16F877A 自身的A 端口所带的模数转换功能。因此,必须先设置PORTA 的一个端口为模拟端口。又由于我们要用LCD 液晶屏必须令PORTA 有三个数字端口,经过查阅,决定另PORTA0为模拟端口。另外在接PORTA0之前必须接一个分压电路,来决定模拟信号的分度值,使输出的数字信号能在想要的范围内。

⒉键盘和单片机连接

在使用键盘时,必须接上拉电阻。单片机的PORTB 端口有自带的弱上拉功能,所以选取

PORTB 作为键盘的输入端口。同时为保险起见,在键盘和PORTB 相连之前,也接了4个上拉电阻。

3.LCD 屏和单片机连接

LCD 显示屏的连接较为复杂。其管脚如图5所示。使用时,1、15、20管脚均接地;2、

17、19管脚接电源电压,4、5、6管脚分别接PORTA1、PORTA2、PORTA3;7~14管脚分别接PORTB0~PORTB7;3管脚用来调节液晶屏亮度,需要在3端口接两个电阻分别接电源和地进行分压,在实际操作时先用电位计调节到合适阻值后用定值电阻代替,最后选取接电源盒地的电阻分别为6.8komega 和3.3komega 。

整个系统连接模块如下:

单片机PIC16F877

LCD 显示屏

压力传感器模块 小键盘

PORTC RA0 RA1~RA3

2012211120班6号尹航单片机设计实验报告

四.调试过程

程序开始就进入main,设置各端口的输入输出,单片机将“重量”“单价”“总价”这几个字及其对应的单位显示在LCD屏幕上,当得到了重物的重量后,将重量显示在上面,在输入单价并确认后显示单价并自动计算、显示总价。在调试阶段,遇到了好多大家都遇到的问题,大多数通过自己独立解决,并且将方法告诉了其他遇到相同问题的同学。

⒈小键盘键位码的确定

书上虽然有介绍小键盘的使用和相关代码,但是书上的小键盘的行和列与试验箱上的行列是相反的,在反复尝试了之后,我发现了这一问题并通过参照原理,更改了键盘的位置码,并将其分享给了班级里的很多同学。

⒉小键盘按下按键后LCD屏幕显示乱码

有些时候当在小键盘上按下按键后液晶屏上不会出现对应的数字而是显示乱码。这个问题困扰了我很久,并且发现其实很多同学也会遇到这样的问题。当我仔细检查了几遍程序后,终于发现了问题。

由于开始的时候是参考的网上的代码,并不理解其含义,边用边学,所以有的语句用的并不准确。在程序中,控制像液晶屏传输数据和传输指令的程序是不同的,RS分别设置为1和0,如果错用便会产生出乎意料的结果。在检查的过程中,我发现许多地方在调用了像液晶屏送数据显示的程序后又不小心加上了向LCD显示屏送指令的语句,这样造成的后果就是把数字对应的编码作为指令传输给了LCD屏幕,如果正巧数据对应的八位二进制数存在相应的LCD显示屏控制指令,便会发生意想不到的结果。删除调用的第二个函数即可解决这一问题。在查看遇到类似问题的同学的代码后,果然都存在这些问题,并且都可以用相同的方法解决。

⒊时延不一致导致出现乱码

LCD显示屏上电复位需要时间,而如果这一时间还没到单片机就将指令传输给LCD屏幕,那么传给LCD屏幕的指令显然就会出现错误,因而出现乱码。

这一问题不好检测和调试。因为在调试过程中可以一条一条语句分步执行,自然就会有充足的延时,在调试时根本不会出现问题,但是在运行时候就会出现问题了。对于这种问题只能不断的在将向LCD屏幕传送数据之前人工加一个时延程序或者适当执行几条NOP指令,

2012211120班6号尹航单片机设计实验报告

直到最后不再有乱码出现为止,过程较为繁琐。其实我最后也没有很好的解决这个问题,对于一些地方不好控制时延长度,我最后就采取了加一个196ms时延的方法解决,导致程序效率不够高,这一点上我仍需改进。

⒋PORTA的几个管脚的设定

在我们的电子称中,既需要用到PORTA的数模转换功能有需要借助它的几个端口给控制LCD显示屏。这就需要合理的设置PORTA的I/O端口。由于数模转换部分开始由同组的王威学习,他写的程序所利用的PORTA的端口和我写显示屏程序时所利用的PORTA的端口存在严重冲突,所以最开始把两个程序合在一起时并没有成功。我在仔细查看了程序后发现了这一问题。我又去看了“《提高篇》”中关于A\D部分的介绍,查看了ADCON1和ADCON0在取不同值时对应的PORTA的各I\O端口的不同,最后选取了合适的组合,另除RA0外所有的PORTA 的端口均为数字信号,只有RA0为模拟信号,修改后就成功的解决了问题。

⒌分页问题的解决

由于程序过长,当我信心满满的以为只要把之前写的每个模块的代码放在一起就能写出整个代码时,却发现程序执行到一半就突然重新执行,在用监视窗观察了之后,发现时PCL 指针自动回到了第一句。经过翻书看PCL指针的相关介绍,我断定,应该是程序过长第一页不够用了,这就需要换页写程序。

我开始靠自己的理解尝试着在其他的页内写程序,但是因为没有给PCLATH指针赋值,并没有成功翻页。

当时还有很多同学也遇到了这个问题。有人在书上找到了一个程序的例子解决分页问题,但是去发现并不能解决问题。当我仔细阅读了程序后发现,翻页第一步需要将PCLATH指针的第3第4位的值加以改变,然后才能跳转到新的一页中。但是在书上的例子里,当PCLATH指针的第3、4位值改变跳转到新的一页后,指针的值并没有恢复,所以不能从新的一页中跳回去。我在从新的一页跳回去之前将PCLATH指针的值赋回原值,果然就能实现了分页的功能,并且也将这一发现告诉了许多也遇到相同问题的同学。

⒍软硬件联合调试

我们最后并没有成功是实现电子称的称重功能,问题就是出现在这一部分。

2012211120班6号尹航单片机设计实验报告在开始的几天里,我们组一直处于班级中的领先速度。为了能有充足的时间使用电烙铁,我和王威经常在饭点不去吃饭,中午不休息,早上7点半就来,因此我们很快就焊接好了电路。并且自主分析LCD显示屏的接线方法,最早能实现在小键盘上按键显示在LCD屏上并且还顺便帮助了一些同学。

我们也很快就把压力传感器的模块焊接好了。但是压力传感器的有4根导线,分别接VDD,VSS,S+和S-,但是并没有标明哪一根线对应着哪个功能,只是以不同颜色区分开了。我们于是拿出在软件调试时用的压力传感器模块,对照着它的电路图,仔细研究了一下,确定了四色线的功能。

但是当调零后,压力传感器输出的数值一直是0,没有变化。我们百思不得其解。一个偶然的机会,我没有调好零,却发现当有重物放上后,获得的压力值竟然变小了。这时候我以为是因为接S+和S-的MPX2100的两根线接反了,给差分放大电路的信号正好相反,所以会出现这样的状况。于是我们把两根线对调,果然能用了。这时我们十分开心,以为已经做出来了,并且邱老师也看到了我们的调试过程,以为只要把零和精度调好就可以结束了。

在之前的调试中,我们有一段电路后来取消了,只是单纯的把导线剪断,但是并没有这段电路从板子上拿下来,于是我们想把这段电路去了就去验收。可是当去掉这段电路后,发现压力传感器不能工作了。我们非常费解,一个下午和晚上都没能解决。看到别的组开始完成了,我们非常着急

第二天上午,一个意外,我发现了问题所在。原来由于长时间使用,原来的14V电源已经只能输出9V,而我们的查分放大电路必须要12V的电压才能工作,这就导致输出的模拟电信号值非常小,因而无法识别其变化。我们又找到了一个14V的电源,终于解决了这一问题。可是又出现了当放上重物后压力变小的问题。在前一天我们已经又把压力传感器的四条线按照压力传感器模块上的接法接了回来,我以为是又反了,反反复复试了很多次,可还是不可以。最后我们恍然大悟,原来压力传感器上贴着的压力按下的方向是反的。我们于是把压力传感器上下颠倒,果然得到了正常的现象。此时是午休时间,没有老师,我们只好自己调试。结果当下午,我们的压力传感器模块突然又不能用了。

这一次,由于校准的电位计并没有起作用,我分析还是差分放大电路没有将模拟电信号放大。差分放大电路本应该使用12V和-12V的电压源,可是由于设备有限,-12V电压我们用接地代替,这一次我决定用稳压源输出-12V电压接在电压的负极。果然,这一次校准电位计

2012211120班6号尹航单片机设计实验报告

可以起作用,就是说我们的差分放大电路正常了。

可是,压力传感器的输出确极不稳定,时而变化时而不变化,并且和压力不成正比。在经过一下午的调试后,我不能在想出调试和解决的办法,决定放弃了,这时我们已从原来班级进度最快的组变成了最慢的一组。

但是后来我经过冷静下来,其实想出了问题的所在和调试的方法。

王老师在验收时说可能是我给RA0的数模转换电路焊接的不对(这段电路就是我曾经想去掉的电路),但是这里的电位计确实起了作用,可以调节输出数字信号的范围。而这时我想到,19班做电子称的那组没有焊接这段电路,而他们最后的问题就是秤不能调零,这就是这段电路的作用,所以我们的数模转换调节电路并没有问题。

虽然没有亲手测量,但我几乎能肯定,一定是我的压力传感器除了问题。

压力传感器输出不稳定,所以才会使获得的重物重量不稳定。有时当重物拿走后,压力传感器的示数还是不会立刻回复为0,而是慢慢的恢复。这正证明了我的判断。应该是我在调试的时候,有时候为了获得较为明显的现象,我直接用手对压力传感器施压,应该是超出了其弹性形变范围,导致电阻应变片不能正常工作。其实只要用电压表测量一下压力传感器输出的模拟电压会不会随压力改变就可以证明我的猜想是否合理,可惜为时已晚,现在想来,这是我这次小学期唯一后悔的地方。

五.参考文献:

PIC单片机实用教程——基础篇(五号宋体)

李学海

北京航空航天大学出版社

使用说明:通过这本书,我学习了PIC16F877A的基本工作原理和指令,帮助

我从本质上学会了PIC16F877A的使用。里面的一些例子令我受益匪浅。

PIC单片机实用教程——提高篇

李学海

北京航空航天大学出版社

使用说明:主要在这本书中学习了怎么数模转换和小键盘怎么使用,但是还是需

要自己理解了其工作原理并把书上的代码改变后才使这两个模块正常工作。六.实验心得体会

这次小学期无论是从知识的获取,还是学习能力的提升,亦或是交流能力的改善,自己

2012211120班6号尹航单片机设计实验报告

真的感受颇多。

首先,在上大学以来,一直没干过什么项目,也没做过什么东西,总是很羡慕那些能够去找老师或者自己做项目的同学,觉得他们很厉害,每次和他们说听起来你们做的好高端啊,他们却会说很简单的。但是自己性格原因,却不敢去找老师或去到处找同学一起做项目做东西,对那些都只是向往。但是这个小学期虽然内容不是很复杂,但是却给了我一个自己动手实践接触单片机的机会,让我学到了单片机的一些基本知识,让我有机会自己亲手做点属于自己的原创的东西。在知识上丰富了自己,同时获得了对自己能力的认同感,这一点是我一直想获得却得不到的。

其次,这次的小学期基本上都是靠自己自学完成,又不会的就去翻书查资料,培养了自己的自学能力,让自己的学习能力有了提升。在短期内就基本掌握了一门汇编语言,这样的经历既提升了自己的能力,又让自己对自身的水平有了一个认识和肯定,感到非常自豪。尤其是发现自己所学的东西真的能很容易的变成实际的成果的时候,喜悦之情更加溢于言表。

另外,这次小学期我真的很努力,经常不午休不吃饭,又找到了一种拼搏的感觉。说实话,上了大学以后,在没有像高中那么拼命努力过了。不知道未来在哪里,不知道努力的目标在哪里。这次小学期至少给了我一个短期内的目标,一个拼搏的动力。即使不吃午饭也不觉得饿,不午休也不觉得累,当看见自己做出来东西的时候,心里的成就感好像回到了原来高考的日子,给了自己一种好久没体验到的快乐。

同时,这次小学期在开学前,让我很快进入了学习状态。从闲散的假期生活里一下子调整了过来,不再无所事事,每天过得充实饱满,即使累一点也觉得充实快乐。感觉为这个学期打下了良好的基础。

最后,这次小学期难得的让全班同学在一个教室里成天在一起学习。上大学以来,很少有机会能和同学接触这么多,在这次小学期中,大家一起研究讨论,互相帮助,感觉彼此之间又熟悉了不少,拉近了与同学之间的关系,这是很意外的收获。

在这次小学期中,我做的有很多不足。最大的失败就是没有能够坚持到底调整好压力传感器做出作品来。有时会和同学打趣说,早知道在中间那次出来结果就验收好了,那样我还是最快正式验收的一组。但即使我们最后没做出来,我也不后悔我们当时的决定。要做就要做到最好,不要有想投机取巧的想法。那次成功了,正说明我们的电路不稳定。而后续我们不断的调试过程,没能再重现当时的结果,有时是疏忽大意没选对仪器,有时是犯了低级的错

2012211120班6号尹航单片机设计实验报告

误,都给了我教训,让我以后做事情学习会更加严谨。并且在不断调试的过程中,虽然最终没有得到结果,但是却更加深刻地体会到了各个元器件的工作原理,更加明白了电路的组成,这是如果我们投机验收成功也学不到的,而我也认为这才是我们这次小学期应该学会的东西。通过小学期学会单片机的使用,直接的体会电路工作,如果在这些问题上掌握的扎实,收获了很多,那么我觉得即使结果不尽如人意,我那么久的努力拼搏也值得了。

不过最后还是没能做出作品,感觉十分遗憾。其实正像我再第四部分里说的,后来想想,其实问题一定出在了压力传感器上,如果自己再坚持一下努力调试,应该是可以做出来的。自己觉得自己拼搏了那么长时间已经到了自己的极限,已经尽了全力,但很显然,自己最好意志还是不够坚定,精神还是不够顽强。这次失败既是对自己的磨砺也是对自己的教训。

这次小学期,要非常谢谢邱老师王老师的帮助,邱老师总会来查看我们的进度还借给我们单独一块L C D屏幕方便我们最后调试,给了我们很大便利,真的非常感谢两位老师。

这次小学期,让我在自主学习的过程中提升了能力学习了知识锻炼了意志,虽然很拼但是最后还是失败了,不过我也不后悔。我相信我得到的远比一次成功更重要。

七.源程序

见附件一《智能电子称源程序》

八.成果展示及使用说明书

1.产品正背面图(图5为正面图,图6为背面图)

2012211120班6号尹航单片机设计实验报告

2 产品使用说明书

本产品为可以实现计价功能的只能电子称。

在使用时,需接1组大于12V 的电源给键盘、L C D 屏幕、压力传感器等模块供电,同时反接一组12V 电源以保证电路中的运放L M 324可以正常工作。

首先,在屏幕显示了需要输入的请求后,将重物放在托盘上(图5中透明的亚克力板),产品会自动进行称重。

待产品显示重物重量后,产品将等待用户输入单价。单价设置最多为2位,单位元/k g 。用户输入单价后需按下键盘上的B 键以完成输入。若输入单价错误可以按下A 键清零进行更改。 当用户输入完价格后,产品将自动计算总价并显示在液晶屏上。 用户按下键盘上任意键,产品自动清屏并进行下次称重。 本产品的理论精度为0.01k g 。

图 5 产品正面图

图6 产品背面图

2012211120班6号尹航单片机设计实验报告

附件一电子称程序源代码

l i s t p=16F8777A

#i n c l u d e

Z E Q U2

C E Q U0

F S R E Q U04H

V A L U E E Q U22H

T A B L E E Q U40H

N1E Q U20H

N2E Q U21H

N3E Q U23H

#D E F I N E R S P O R T A,1

#D E F I N E R W P O R T A,2

#D E F I N E E P O R T A,3

C O U N T E Q U24H

T M P1E Q U25H

T M P2E Q U26H;用于存放正在输入的字符

C L_P R E Q U27H

R E S U L T E Q U28H;用于存放称重结果

M U L T I2E Q U29H;用于存放量化值

Q I A N E Q U35H;存放未量化B C D

B A I E Q U2B H

S H I E Q U2C H

G E E Q U2D H

Q I A N2E Q U36H;存放量化后B C D

B A I2E Q U31H

S H I2E Q U32H

G E2E Q U33H

T E M P3E Q U34H

L I M I T E Q U38H

S H I W A N3E Q U4C H

W A N3E Q U4D H

Q I A N3E Q U4E H

B A I3E Q U4F H

S H I3E Q U50H

G E3E Q U51H

D A N S H I

E Q U52H

D A N G

E E Q U53H

D A N J I A

E Q U35H

W A N2E Q U39H

2012211120班6号尹航单片机设计实验报告S H I W A N2E Q U3A H

M U L T I E Q U5C H

O R G0000H

G O T O M A I N

;××××××××××××××××××;××××××主程序×××××;××××××××××××××××××O R G0005H

M A I N

N O P

;---------设置输入输出端口-----------B C F S T A T U S,R P1

B S F S T A T U S,R P0

M O V L W0E H

M O V W F A D C O N1

M O V L W00H

M O V W F T R I S C

;C端口设置为输出,用于控制液晶屏

B C F E

B C F R S

B C F R W

M O V L W0F F H

;D端口设置为输入,用于4*4键盘的输入M O V W F T R I S B

B C F S T A T U S,R P0

M O V L W B'10000001'

M O V W F A D C O N0

C L R F P O R T C

;-----------------------------

;-------位置置码表------------

m o v l w b'10111101'

m o v w f40h

m o v l w b'01110111';1

m o v w f41h

m o v l w b'10110111';2

m o v w f42h

m o v l w b'11010111'

m o v w f43h

m o v l w b'11100111'

m o v w f44h

m o v l w b'01111011';5

m o v w f45h m o v l w b'10111011'

m o v w f46h

m o v l w b'11011011'

m o v w f47h

m o v l w b'11101011'

m o v w f48h

m o v l w b'01111101'

m o v w f49h

m o v l w b'11011101'

m o v w f4a h

m o v l w b'11101101'

m o v w f4b h

;---------------------------

C A L L I N I T I A L L C D;初始化L C D屏幕

C A L L S H O W R E Q U E S T;用于显示提示信息

B S F P

C L A T H,3

B S F P

C L A T H,4

C A L L

D A N W

E I

B C F P C L A T H,4

B C F P C L A T H,3

;---------显示称重信息-----

A t o D

N O P

N O P

B S F A D

C O N0,G O

A D W A I T

B T F S

C A

D C O N0,G O

G O T O A D W A I T

M O V F A D R E S H,W

M O V W F R E S U L T

;M O V F R E S U L T,0

;M O V W F T E M P3

C A L L B C D

;实际数值的二进制码变成B C D码

M O V F G E,0

2012211120班6号尹航单片机设计实验报告

M O V W F G E2

M O V F S H I,0

M O V W F S H I2

M O V F B A I,0

M O V W F B A I2

C L R F Q I A N2

C A L L Z H U A N

M O V L W83H

M O V W F P O R T C

C A L L E N A B L E

M O V F Q I A N2,0

B S F P

C L A T H,4

C A L L T D

B C F P C L A T H,4

C A L L S E N D

M O V L W2E H

C A L L S E N D

M O V F B A I2,0

B S F P

C L A T H,4

C A L L T D

B C F P C L A T H,4

C A L L S E N D

M O V F S H I2,0

B S F P

C L A T H,4

C A L L T D

B C F P C L A T H,4

C A L L S E N D

M O V F G E2,0

B S F P

C L A T H,4

C A L L T D

B C F P C L A T H,4

C A L L S E N D

;------------输入单价---------C L R F L I M I T

S H U R U

C L R F

D A N S H I

C L R F

D A N G E

M O V L W93H

M O V W F P O R T C;设置输出数值位置C A L L E N A B L E

M O V L W20H

C A L L S E N

D M O V L W20H

C A L L S E N D

M O V L W20H

C A L L S E N D

M O V L W20H

C A L L S E N D

M O V L W8B H

M O V W F P O R T C

C A L L E N A B L E

M O V L W20H

C A L L S E N D

M O V L W20H

C A L L S E N D

M O V L W20H

C A L L S E N D

M O V L W20H

C A L L S E N D

M O V L W20H

C A L L S E N D

M O V L W20H

C A L L S E N D

M O V L W20H

C A L L S E N D

M O V L W93H

M O V W F P O R T C;设置输出数值位置C A L L E N A B L E

B T F S

C L I M I T,0

C A L L C L E A N S H I

C A L L C H E C K;检查是否有输入C A L L

D

E L A Y

B S F P

C L A T H,4

C A L L C H E C K C L

C A L L C H E C K C O M

B C F P C L A T H,4

M O V F F S R,0

M O V W F D A N G E

M O V F D A N G E,0

B S F P

C L A T H,4

C A L L T D

B C F P C L A T H,4

M O V W F T M P2

M O V F T M P2,0

2012211120班6号尹航单片机设计实验报告

C A L L S E N D

C A L L C H E C K;检查是否有输入

C A L L

D

E L A Y

B S F P

C L A T H,4

C A L L C H E C K C L

C A L L C H E C K C O M

B C F P C L A T H,4

M O V F D A N G E,0

M O V W F D A N S H I

M O V F F S R,0

M O V W F D A N G E

M O V F F S R,0

B S F P

C L A T H,4

C A L L T D

B C F P C L A T H,4

M O V W F T M P2

M O V F T M P2,0

C A L L S E N D

C A L L C H E C K;检查是否有输入

C A L L

D

E L A Y

B S F P

C L A T H,4

C A L L C H E C K C L

C A L L C H E C K C O M

B C F P C L A T H,4

;---------做乘法,得总价---------Z O N G

C L R F W A N2

C L R F S H I W A N2

C L R F G E3

C L R F S H I3

C L R F B A I3

C L R F Q I A N3

C L R F W A N3C L R F S H I W A N3

M O V L W.9

M O V W F M U L T I

M O V F D A N S H I,0

X B1

A D D W F D A N S H I,0

D E C F S Z M U L T I,1

G O T O X B1

M O V W F D A N J I A

M O V F D A N J I A,0

A D D W F D A N G E,0

M O V W F D A N J I A

B S F P

C L A T H,3

B S F P

C L A T H,4

C A L L T O T A L

B C F P C L A T H,3

B C F P C L A T H,4

M O V L W8B H

M O V W F P O R T C

C A L L E N A B L E

B S F P

C L A T H,4

B S F P

C L A T H,3

C A L L C H E C K Z E R O2

B C F P C L A T H,4

B C F P C L A T H,3

C A L L C H E C K;检查是否有输入C A L L

D

E L A Y

B S F P

C L A T H,3

B S F P

C L A T H,4

C A L L C H E C K R E T U R N

B C F P C L A T H,3

B C F P C L A T H,4

S T A R T

G O T O A t o D;返回称重重新开始

;---------------------------------

××××××××××××××××××;××××××L C D×××××××;×××××××××××××××××;------196M S延时-----------

D E L A Y

B S F P

C L A T H,4

C A L L

D

E L A Y4

R E T U R N

;返回主程序

;-----------------------

;-------初始化L C D----------I N I T I A L L C D

单片机实验报告

PIC单片机原理与应用实验报告 学校: 学院: 班级: 姓名: 学号: 指导教师:

实验一I/O端口实验 一、实验目的 (1)掌握MPLAP IDE集成开发环境的基本操作。 (2)掌握单片机的I/O端口的设计方法。 (3)掌握在线调试器的使用方法。 (4)学会查阅相关数据手册。 二、实验仪器设备 (1)PC机一台; (2)MPLAP IDE开发软件一套; (3)PICkit3在线调试器一套; (4)APP009实验板一块; 三、实验要求 (1)设计发光LED灯闪烁程序,下载调试,验证功能。 (2)设计流水灯程序,或其他花样彩灯程序,下载调试,验证功能。 (3)设计按按键加1计数程序,下载调试,验证功能。 四、实验步骤 (1)连接在线调试器PICkit3、APP009实验板和计算机; (2)打开MPLAP IDE集成开发环境软件,点击Debugger>Select Tools>PICkit 3 选择调试工具; (3)点击Debugger>Settings,在Settings窗口中点击Power栏,选择由PICkit3向实验板供电; (4)完成实现发光LED灯闪烁实验; 程序代码: #include void delay(void); int main() { while(1) { TRISEbits.TRISE0 = 0; //RE0设置为输出(1输入,0输出); https://www.sodocs.net/doc/1315716785.html,TE0 =1; //RE0=1输出高电平+5V,亮灯 delay(); //延时 https://www.sodocs.net/doc/1315716785.html,TE0 =0; //RE0=0输出低电平0V,灭灯 delay(); //延时 } } void delay(void) { long int i; for (i=0;i<65000;i++); } 实验现象:将程序下载到实验板上,运行程序,LED闪烁,通过改变延时函数改变延时时间,进而可以改变LED闪烁的频率。

单片机第一次实验报告

单片机第一次实验报告 姓名: 学号: 班级:

实验报告 课程名称:微机原理与接口技术指导老师:学生姓名:学号:专业:自动化日期:20140327 地点: 实验一实验名称 1. 实验目的和要求 1.掌握keil软件和STC-ISP 软件的使用方法 2.点亮第一个发光管. 3.点亮1,3,5,7发光管 4.尝试让第一个发光管闪烁. 2. 主要仪器设备 1.一台pc机 2.一个单片机开发板 点亮第一个发光管. #include void main () { P1 &=0xFE; while(1) } 点亮1,3,5,7发光管 void main () { P1 &=0xAA;

while(1) } 尝试让第一个发光管闪烁. #include #define uint unsigned int #define uchar unsigned char void delay_ms(uint timer) { uchar j = 0; while(timer--) { for(j = 124;j>0;j--) { ; } } } void main (void) { while(1) { P1 &=0xFE; delay_ms(100); P1 |=0x01; delay_ms(100); } }

实验心得:这第一次试验,没准备,所以这次实验一上机啥都不会,也不知道该做啥,在同学的帮助下安装了程序和驱动,代码也是问同学才明白的。第一个代码,通过很顺利,但是测试第二个代码的时候电脑无法连接板子,后来重新安装了驱动才就能连接了。虽然感觉还是好多不懂的,不过还是学到了一些东西,有一点成就感。

单片机实验报告

仲恺农业工程学院实验报告纸 自动化学院(院、系)工业自动化专业144班组单片机与嵌入式系统实验课学号201421714406姓名黄国盛实验日期2016年11月05日教师评定 实验一Keil C51集成开发环境的使用练习 一、实验目的 熟悉Keil C51集成开发环境的使用方法。 二、实验设备及器件 IBM PC机一台 三、实验内容 按照Keil C51软件的使用说明进行Keil C51集成开发环境的安装和使用练习,然后按照以下内容建立并编译产生HEX文件。 ORG0000H LJMP Main ORG00F0H Main: MOV R7,#0 Loop: MOV R6,#0 DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R7,Loop;延时 CPL P1.0;P1.0取反 CPL P1.1;P1.1取反 CPL P1.2;P1.2取反 CPL P1.3;P1.3取反 CPL P1.4;P1.4取反

CPL P1.5;P1.5取反 CPL P1.6;P1.6取反 CPL P1.7;P1.7取反 SJMP Main END 四、实验要求 熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。 五、实验预习要求 认真阅读Keil C51软件的使用说明。 六、实验思考题 试写一条把片内RAM50H~59H单元清零的程序。 实现程序如下: ORG0000h LJMP Main ORG0100H Main:MOV R0,#50H;立即数50H(内部RAM地址)传送到R0中 MOV R1,#10;立即数10(循环次数为10次)传送到R1中 MOV A,#0;立即数0传送到A,中将累加器A的值清0 LOOP:MOV@R0,A;将R0内容所指向的单元清0 INC R0;R0内容加1,修改地址指针 DJNZ R1,LOOP;减1不为0判断,若为真跳回循环,否,则运行下一语句 END;结束 七、实验总结 通过实验,熟悉80C51指令系统,熟悉Keil C51集成开发环境的使用方法,熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。加深对内部存储器读写的认识。

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机实验报告

单片机实验报告 班级:信科09-3 姓名:王艳辉 学号:08093581 指导老师:陈岱 完成时间:2012年1月8日

实验一 I/O接口P1、P3口实验 一,实验题目 1,用P1口做输出,接八只发光二极管,编写程序,使发光二极管循环点亮。 2,用P3口做输入口,接八个扭子开关,通过P1口在实验箱上LED 灯上输出,编写程序读取开关状态,将此状态,在发光二极管上显示出来。 二,实验目的 1.熟悉使用CPLD实验箱进行单片机实验的方法。 2.设计出符合实验要求的CPLD硬件电路。 3.学习单片机仿真开发软件Keil 51的使用方法。 4.学习MCS-51汇编语言编程方法。 5.学习Pl口的使用方法。 6.学习延时子程序的编写和使用。 三,实验准备 P1和P3口为准双向口,Pl、P3的每一位都能独立地定义为输出线或输入线,作为输入时,必须向锁存器相应位写入“l”,该位才能作为输入。803l中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“l”使它再成为一个输入。再来看一下延时程序的实现。现常用的有两种方法:一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。根据实验系统的工作主频,计算出延时0.1s的

时间常量,编制延时程序: MOV R7, #200 (1) DEl:MOy R6,#X (2) DE2:DJNZ R6,DE2 (3) DJNZ R7,DEl (4) 上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需1÷0.256us现求出X值: (X*1/0.256+1/0.256+l/0.256)*200+l/0.256=0.1*10^6。解出X=l26。代入上式可知实际延时约0.100O04s,近似符合要求。 四,实验步骤 (1)打开MAX+PLUSⅡ CPLD实验开发系统。 (2)点击File菜单Project子菜单之Name项,出现Project Name 对话框。为当前的实验选择恰当的路径并创建项目名称”E:\AT8031”。(3)点击File菜单之New项,出现对话框,为选择输入方式,选择Graphic Editor File。出现图形编辑窗口。 (4)双击空白编辑区,出现Enter Symbol 对话框。 (5)从Symbol Libraries项中选择mf子目录(双击),在prim子目录中选择输入脚input 和输出引脚output。 (6)在图形编辑窗口中的左侧点击连线按钮,并完成对电路的连线。(7)在引脚的PIN_NAME处左键双击使之变黑,键入引脚名称。

北邮,单片机,实验报告,电子琴

北邮,单片机,实验报告,电子琴 北邮单片机实验报告简易电子琴 2014年小学期单片机设计实验报告题目:基于单片机的电子音乐发生器 班级:班内序号:实验组号:学生姓名:指导教师: 基于单片机的电子音乐发生器 实验摘要 此次本组制作的基于PIC单片机的电子音乐发生器是具有LCD显示屏提示的音乐简单演奏、播放、存储等功能的演示作品,拥有以下4种功能: 1.按键演奏:即“电子琴”功能,可以用键盘上的“1”到“A”键演奏从低音sol到高音do等11个音; 2.点歌功能:即按动“B”“C”键分别演奏两首乐曲(可以表现准确的音高和音长)。3.存储音乐功能:即按右下角“F存储”键,然后按键演奏并存储,随后按“E”键结束,之后按“D键”就可以播放存储的乐曲了; 4.液晶显示功能:即在开始时显示“hello!”,在点播时分别显示“song b”、“song c”,在存储时显示“saving”。 电子音乐发生器采用以Microchip公司的PIC16F877芯片为核心的简单控制系统,外部电路连接有喇叭、键盘、LCD液晶显示屏以及其他必要系统调节元件。软件设计中涉及PORTB\PORTC\PORTD\PORTE用作普通数字I/O脚功能。本实验用

单片机PORTB\D接收来自键盘输入的指令信息,由此确定LCD液晶屏幕显示以及喇叭播放内容,再通过PORTC\D\E输出声音或字幕信息。 关键字 单片机——microcontroller芯片——CMOS chip 音乐发生器——music generator 分频——fractional frequency 一、实验论证与比较 本设计的核心器件是单片机芯片和音频功放芯片。单片机采用以Microchip公司的PIC16F87X系列中的PIC16F877芯片为核心构建简单控制系统,它完全可以满足本设计功能的需要。此音乐发生器设计利用单片机的输入输出功能,当按下播放功能键时,单片机的输出功能使外部电路连接的喇叭和LCD液晶显示屏同时播放声音及显示文字,从而实现各种复杂音乐播放器的功能。 在嵌入式系统设计中,扬声器等是常用的输出设备,它具有使用方便、价格便宜、电路接口简单等优点,因此,在嵌入式系统中被广泛使用。同时随着单片机的发展,其功能越来越强大,技术也越来越成熟,由此生产的音乐播放器越来越受到人们的喜爱。因此,在技术性操作、社会因素和经济方面都具有良好的可行性。我在实验中负责了全部软件设计,代码的编写,电路图的设计,以及部分硬件焊接。其中,困难的部分在于,理论上认为电子音乐发生器模拟真正乐器的仿真实现方法,与现实电路实现起来有着一定的差别,在长音、乐谱存储播放上,以及存储功能的代码

杭电自动化单片机实验报告

单片机原理与应用及 C51程序设计 实验报告 实验名称:单片机技术实验 实验一继电器控制输出实验 一、实验目的 1.掌握STC12C5A16S2单片机的最基本电路的设计; 2.了解单片机I/O端口的使用方法; 3.了解继电器和蜂鸣器控制电路以及小电压控制大电压的方法。

二、实验要求 1.利用STC12C5A16S2单片机的P1.2、P1.3口作按钮S9和S10输入,P1.0 和P1.1口作开关量输出,并分别控制一个5V的继电器和蜂鸣器。 2.当S9闭合时,P1.0控制继电器闭合并控制灯泡闪亮;当S9断开时,继 电器触电断开,灯泡不亮; 3.当S10闭合时,P1.1控制蜂鸣器闭合并发出声音;当S10断开时,蜂鸣 器不响。 三、电路 四、原理说明 Q1、Q2为9012三极管即PNP型,低电平导通,当S9或S10按下时,相应的IO口拉低,当P1.0或P1.1赋0时即可控制继电器的吸合活着蜂鸣器的发声。 五、程序代码 #include sbit L1=P1^1; sbit L2=P1^2; sbit L3=P1^3; sbit L0=P1^0;//定义位变量 void delay() { int i,j; for(i=0;i<250;i++) for(j=0;j<250;j++);//利用系统时钟,定义延时函数 }

void main () { int n=20; while(1) //不断循环检测 { if(L2==0) //判断S9输入 { while(n--) { L0=0; delay(); L0=1; delay(); //灯泡以2*delay为周期闪亮 } n=20; } if(L3==0) //判断S10闭合 { while(n--) { L1=0; delay(); L1=1; delay(); //蜂鸣器以2*delay为周期发声 } n=20; } } } 实验二 LED轮换点亮实验 一、实验目的 1.掌握STC12C5A16S2单片机的I/O电路设计; 2.学习SN74HC573数据锁存输出方法。 二、实验要求 1.利用SN74HC573对STC12C5A16S2单片机的P0进行扩展,驱动LED 控制输出; 2.编写程序,使P0.0~P0.7上的发光二极管循环点亮;P2.7控制 SN74HC573芯片的使能; 三、电路

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级:14级 学号:05 2016年12 月1 日

实验项目列表 序号实验项目名称成绩指导教师 1 单片机仿真软件的使用 2 单片机I/O接口应用实验——流水灯 3 外部中断实验——工业顺序控制模拟 4 定时/计数器实验——矩形波 5 定时/计数器实验——计数器 6 综合实验 7 8 9 10 注: 1、实验箱端口为com6。 2、芯片选择切换到51 3、停止运行使用实验箱上的复位按钮

实验室号:___ 实验时间:成绩: 实验一仿真软件的使用 1.实验目的和要求 1)熟悉Keil C51软件界面,以及编辑、编译、运行程序的步骤; 2)掌握单片机仿真软件使用和调试的方法。 2.实验原理 Keil C51软件使用 在Keil C51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。 3.主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件的PC机1台 4.操作方法与实验步骤 Keil C51软件使用 (1)建立用户文件夹 (2)建立工程 (3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中 (4)把文件加入工程中 (5)编译工程。编译时观察在界面下方的“Build”页中的到编译错误信息和使用的系统资源情况等。 (6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。 (7)目标代码文件的生成。运行生成相应的.HEX文件。 5.实验内容及程序 1)从DATA区地址起始地址为40H的连续10个内存单元的内容传送到XDATA区起始地址为2000H的10个内存单元中。 注意:DATA区地址起始地址为40H的连续10个内存单元必须先赋初值。 P83-5源程序 #include #define uchar unsigned char xdata unsigned char buffer1[10]_at_ 0x2000; //在xdata区定义数组变量BUF1,首地址为2000H data unsigned char buffer2[10]_at_ 0x40; //在data区定义数组变量BUF2,首地址为40H void main(void)

北邮《现代通信技术》实验报告一

现代通信技术实验报告 班级: 2012211110 学号: 2012210299 姓名:未可知

在学习现代通信技术实验课上,老师提到的一个词“通信人”警醒了我,尽管当初填报志愿时选择了通信工程最终也如愿以偿,进入大三,身边的同学忙着保研、考研、出国、找工作,似乎大家都为了分数在不懈奋斗。作为一个北邮通信工程的大三学生,我也不断地问自己想要学习的是什么,找寻真正感兴趣的是什么,通信这个行业如此之大,我到底适合什么。本学期,现代通信技术这本书让我了解到各种通信技术的发展和规划,也让我对“通信人”的工作有了更深刻的认识。 一、通信知识的储备 《现代通信技术》第一页指出,人与人之间通过听觉、视觉、嗅觉、触觉等感官,感知现实世界而获取信息,并通过通信来传递信息。所谓信息,是客观事物状态和运动特征的一种普遍形式,客观世界中大量地存在、产生和传递着以这些方式表示出来的各种各样的信息。信息的目的是用来“消除不可靠的因素”,它是物质运动规律总和。因此,我们通信人的任务就是利用有线、无线等形式来将信息从信源传递到信宿,在传输过程中保证通信的有效性和可靠性。 而具体来讲,要实现信息传递,通信网是必需的通信体系,其中通信网分层的结构形式需要不同的支撑技术,包括业务网技术,向用户提供电话、电报、数据、图像等各种电信业务的网络;介入与传送网技术,实现信息由一个点传递到另一个点或一些点的功能。对此,我们通信工程专业学习课程的安排让我们一步步打下基础,建立起知识储备。 知识树如下: 如知识树所述,通信工程课程体系可以大致分为一下6类基础:

数学基础:工科数学分析,线性代数,复变函数,概率论基础,随机过程; 电路基础:电路分析,模拟电子技术,数字逻辑电路,通信电子电路; 场与波基础:电磁场与电磁波,微波技术,射频与天线; 计算机应用能力:C 语言程序设计,微机原理与接口技术,计算机网络,数据结构,面向对象程序设计,实时嵌入式系统 信号处理类课程:信号与系统,信号处理,图像处理,DSP 原理及应用; 通信类课程:通信原理,现代通信技术,信息论基础,移动通信,光纤通信等。 从大一开始学习的工科数学分析,大学物理,大学计算机基础等课程为基础类课程,旨在培养我们的语言能力,数学基础,物理基础,计算机能力,然后逐步加大难度,细化课程,方向逐渐明朗详细。同时,课程中加入了各种实验,锻炼了我们的动手能力。 二、通信知识的小小应用 实验课上老师说过,以我们所学的知识已经可以制作简单通信的手机的草图了,我对此跃跃欲试。经过思考和调研,以下是我对于简单手机设计的原理框图和思考结果。 一部手机的结构包括接收机、发射机、中央控制模块、电源和人机界面部分,如下图 手机结构设计图 电路部分包括射频和逻辑音频电路部分,射频电路包括从天线到接收机的解调输出,与发射的I/O 调制到功率放大器输出的电路。其中,射频接收电路完成接收信号的滤波、信号放大、解调等功能;射频发射电路完成语音基带信号的调制、变频、功率放大等功能。要用到的超外差接收机、混频器、鉴相器等在《通信电子电路》书本中的知识。逻辑音频包括从接收解调到接收音频输出、送话器电路到发射I/O 调制器及逻辑电路部分的中央处理单元、数字语音处理及各种存储器电路。由核心控制模块CPU 、EEPROM 、 FLASH 、SRAM 等部分组成,一个基本 天线 接收机 发射机 频率合成 电源 逻 辑 音 频 人 机 交 互

单片机实验报告

汇编语言程序设计 1)编译后,系统提示:目标越界,改为AJMP后编译通过,将ORG 07FFH 改为0800H, 系统提示:目标越界,这说明AJMP可以在2KB 范围内无条件转移。 2.改为LJMP编译通过,这说明LJMP可以在64KB 范围内无条件转移。 3.将LJMP LP1改为SJMP LP0,机器码为80FC,其中FC为偏移量,它是一个补码,01H~7FH说明向PC(增大√、减小)方向跳,80H~FFH说明向PC(增大、减小√)方向跳,这说明SJMP可以在当前PC值-128B~+127B 范围内无条件转移。 1、X、Y以补码的形式存放在20H、21H中,编写程序实现如下函数: 实验程序: MOV A,20H JZ ZREO JB ACC.7,NEG MOV 21H,#01H SJMP PEND ZREO:MOV 21H,A SJMP PEND NEG:MOV 21H,#0FFH PEND:SJMP$ END 结果记录: 1.将数89H存放于20H中,运行程序,观察到21H单元中的内容为FF; 2.将数05H存放于20H中,运行程序,观察到21H单元中的内容为01; 3.将数00H存放于20H中,运行程序,观察到21H单元中的内容为00; 2、将20H~27H中的压缩BCD码拆为两个单字节BCD码,存放在以2000H为首地址的外部RAM 中。 实验程序: MOV R0,#20H MOV R7,#08H MOV DPTR,#2000H LOOP:ACALL CZ INC R0

INC DPTR DJNZ R7,LOOP SJMP $ CZ:MOV A,@R0 SWAP A ANL A,#0FH MOVX @DPTR,A INC DPTR MOV A,@R0 ANL A,#0FH MOVX @DPTR,A RET END 结果记录: 20H 21H 22H 23H 24H 25H 26H 27H 87H 54H 36H 23 19H 43H 77H 69H 2000H 2002H2004H2006H2008H200AH200CH200EH 07H 04H 06H 03H 09H 03H 07H 09H 2001H 2003H2005H2007H2009H200BH200DH200FH 08H 05H 03H 02H 01H 04H 07H 06H 1、数在计算机中是以补码形式存放的,因此,判断数据的正负,往往采用判断第7 位,是0 则为正数,是1 则为正数 2、实验内容2中JZ ZREO 的机器码为600DH ,其中0DH 为偏移量,当前PC值0004 加上这个偏移量等于0011H ,这正是即将执行的程序的首地址,即标号为ZREO 语句。程序计算器PC的功能是指向下一条指令,因此,跳转语句是依靠偏移量来改变程序计数器PC的值,从而改变程序的流向。 3、分支程序一定要注意分支的语句标号的正确性,每一分支之间必须用跳转(如SJMP)指令分隔,并跳转到相应标号。 4、子程序往往用间址寄存器传递数据,内部RAM用@Ri ,外部RAM用@DPTR ,绝对不能用直接地址。最后以RET 结尾。 5、循环程序往往用寄存器传递数据,用R7控制循环次数,用调用作为循环体,用指令INC 修改地址指针,用指令DJNZ 判断循环结束。 6、执行ACALL前(SP)= 07H ,执行ACALL时,(SP)= 09H ,(08H)= 09H ,(09H)= 00H ,(PC)= 000FH ,PC的值正是子程序的入口地址,而堆栈中这两个单元存放的是断点处PC的值;执行到RET后,(SP)= 07H , 原08H的值弹给(PC)7~0 ,原09H的值弹给(PC)15~8 ,因此,返回断点继续执行主程序。

单片机实验报告

单片机实验报告 实验一:存储器块清零或赋值 一、实验目的 1 熟悉存储器的读写方法,熟悉51汇编语言结构。 2 熟悉循环结构程序的编写。 3 熟悉编程环境和程序的调试。 二、实验内容 指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。例如将4000H开始的10个字节内容清零或全部赋值为33H。 注意: 1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。 2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容 3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR 4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。 5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。 三、实验仪器 微机、VW,WA VE6000编程环境软件,(单片机实验箱) Lab6000/Lab6000通用微控制器MCS51实验 四、实验步骤 1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)

2、编写程序。 3、运行和调试过程。 外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH): 单步执行程序,观察SFR中外部地址指针的变化; 全速执行程序,可以看到外部数据存储器已赋值33H:

五、实验结果 可以看到外部数据存储器已赋值33H: 六、问题讨论 本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。同时,学习掌握汇编程序的编写和调试过程。 实验二:存储块移动 一、实验目的 1 熟悉51汇编语言程序结构。 2 熟悉循环结构程序的编写,进一步熟悉指令系统。 3 熟悉编程环境和程序的调试。 二、实验内容 将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。 注意:在编程环境中,可以通过软件仿真,观察程单片机运行情况。 由于源地址和目的地址的内容都一样(FF),调试时看不到内容的变化,所以需要给源地址内容赋值。有多种赋值方式(比如在搬移循环体内,赋值一个搬移一个,请在空白处添

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.sodocs.net/doc/1315716785.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY RL A

DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件

个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.sodocs.net/doc/1315716785.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJNZ R2,LOOP

北邮小学期AVR单片机电子琴实验报告

小学期AVR单片机实验报告实验题目:基于ATmega16L单片机的电子琴设计 学生姓名:学渣 班级:2012XXXXXX 班内序号:XX 学号:2012XXXXXX 日期:2014年9月30日 同组同学:学渣

目录: 一、实验介绍 (3) 1.1实验课题名称 (3) 1.2实验平台 (3) 1.3实验课题关键字..............................3 1.4实验摘要 (3) 二、小组分工 (3) 三、基本题目训练——流水灯与数码管秒表计时器 (3) 3.1实现功能 (3) 3.2程序代码分析 (4) 3.3实验结果图片 (7) 四、有关发声的基础知识 (7) 五、电子琴的设计与测试 (9) 5.1设计过程 (9) 5.2实验所需元器件 (9) 5.3实验程序主要流程图 (10) 5.4实验原理及原理图 (10) 5.4.1实验原理 (10) 5.4.2原理图 (11) 5.5各个模块的设计与讲解 (11) 5.6程序源代码及程序分析 (14) 5.7实验结果..................................... ..24 六、排错过程............................ . (26) 七、心得体会 (29) 八、参考文献 (32) 九、意见与建议 (33)

一、实验介绍: 1.1实验课题名称:基于ATmega16L单片机的电子琴设计 1.2实验平台:本实验所用平台为AVR Studio 4 1.3实验课题关键字: ATmega16L型单片机电子琴键盘按键 LCD液晶显示屏 1.4实验摘要: 本实验设计的电子琴拥有可视化操作界面,能实现即时弹奏音乐、音乐播放、音乐变速、音乐变调,并可以进行任意长度录音(通过按键记录音阶)等功能 二、小组分工: ●XXX负责电路硬件的连接和报告的撰写 ●XXX负责程序代码的编写 ●XXX负责资料的收集整理和查阅 三、基本题目训练——流水灯与数码管秒表计时器 3.1功能:八盏LED二极管按顺序依次循环点亮,实现流水灯的效果,同时两只数码管分别代表秒和十分之一秒,进行秒表计时,配有

实验报告(单片机实验报告)

1 双字节无符号数加法 例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h) 假设其和不超过16位。请编程。 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1, #79h mov R2,#25h mov R3, #0a4h mov A,R1 ADD A,R3 mov R5,A mov A,R0 ADDC A,R2 mov R4,A ss: jmp ss end 2双字节无符号数减法

例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。同学自己可以设置被减数与减数数值 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1,#79h mov R2,#25h mov R3,#0a4h mov A,R1 CLR C SUBB A,R3 mov R5,A mov A,R0 SUBB A,R2 mov R4,A ss: jmp ss end 3双字节数乘以单字节数

例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。 30H,31H,32H内容 12H,34H,56H ; org 0000h Ljmp start org 0050h start: mov 30h,#12h mov 31h,#34h mov 32h,#56h mov a,(30h) mov b,(32h) mul ab mov R3,b mov R4,a mov a,(31h) mov b,(32h) mul ab add A,R3 mov R3,A

单片机实验报告

单片机实验报告 学院:姓名:学号:指导老师:

目录 第一章实验内容、目的及要求 (2) 一、内容 (2) 二、目的及要求 (3) 第二章实验 (3) 实验一数字量输入输出实验 (3) 实验二定时器/计数器实验 (4) 实验三A/D、D/A转换实验 (11) 实验四串行通信设计 (20) 第三章实验体会 (28)

第一章实验内容、目的及要求 一、内容 实验一数字量输入输出实验 阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目。 实验二定时器/计数器实验 阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“3.3 定时/计数器实验”基本实验项目。 提高部分:定时器控制LED灯 由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。编写程序模拟时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。 实验三A/D、D/A转换实验 阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目。 提高部分:(要求:Proteus环境下完成) 小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A 转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。 实验四串行通讯实验 阅读、调试C语言程序功能。使用汇编语言编程,完成实验指导书之“3.7 串口通讯实验”项目。(要求:实验仪器上完成)提高部分:(要求:Proteus环境下完成) 利用单片机实验系统,实现与PC机通讯。功能要求:将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。

单片机中断实验报告

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想 ------- 屠呦呦 实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1;

void timer1_init() { TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int sbit D1=P2^0; //将D1位定义为P2.0引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;//time=0;

单片机实验报告

太原工业学院计算机工程系成绩: 单片机原理及应用 课程实验报告 课程:单片机原理及应用 姓名:冯文颖 专业:计算机科学与技术 学号:132054413 日期:2016年4月20日 太工计算机工程系 计算机原理实验室

实验一:拆字程序实验 实验环境PC机+Win 2007+伟福仿真软件实验日期2016.4.20一.实验内容 1.熟悉51仿真系统,设计并单步调试实现,将R5中一字节数拆分成两位独立的数据,分别存于R6,R7中,将R6,R7中的一位HEX数据转换为输出 2.ASCII编码分析BIN,HEX,BCD,ASCII等不同编码的数学意义及表现形式上的异同 二.理论分析或算法分析 (1)基本要求的描述 在这次实验中,要将R5中存的一字节数拆分成两个独立的数据,主要用到是逻辑运算符中的与功能,进而取得高字节和低字节的数,将R5的数和0f0h进行与取得高字节,和0f0h 与取得低字节的数,进而将它们分别存于R6、R7中。 (2)扩展要求的描述 在扩展要求中,要求将高低字节的数据转换成ASCII码值,首先先运用操作符subb将高低位字节与0Ah进行比较,根据CY的值来判断高低字节的数据是否在0到9之间,若在则在它们的基础上加上30h即可得到其对应的ASCII码值,否则,若在A到F之间,则需要在它们的基础上加37h即可得到它们对应的ASCII码值。 三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等) org 0019h clr c mov r5,#6ah mov a,r5 anl a, #0fh mov r6, a mov a, r5 anl a,#0f0h swap a mov r7,a sjmp $ end Masc1:mov a,r6 add a,#0F6h . mov,a,r6 jnc ad30h add a,#07h ad30h: add a,#30h mov r6,a 1

单片机实验报告含仿真

单片机原理及应用课程 实验报告 专业: 班级: 姓名: 学号:

实验一、keilC51及proteus软件的使用 一、实验目的: 1、掌握keil和proteus软件的基本操作 2、通过具体实例掌握keil和proteus软件的使用。 二、实验原理: keil使用步骤,proteus使用步骤 三、程序: 四、实验结果分析: 五、总结:学会了使用keil和proteus软件,掌握了利用keil和proteus软 件进行仿真的步骤。

实验二、并行输入/输出接口实验 一、实验目的: 1、进一步熟悉keil仿真软件、proteus仿真软件的使用。 2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。 3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。 二、实验原理: MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式0 扩展并行i/0 接口:利用方式1 实现点对点的双机通信;利用方式2 或方式3 实现多机通信。利用方式0 扩展并行i/0 接口MCS 5 1 单片机的串行口在方式0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。 三、程序: #include sbit P1_0=P1^0; void main() { unsigned char i; unsigned int j;

i=0x01; for(;;) { P1_0=0; SBUF=I; while(!TI) {i} P1_0=1;TI=0; for(j=0;j<=254;j++){;} i=i*2; if(i==0x00) i=0x01; } } 四、实验结果分析: 五、总结:进一步熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会了构建简单的流水灯电路。掌握了C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

相关主题