微机控制实验报告

微机控制实验报告

ID:20270886

大小:470.50 KB

页数:29页

时间:2018-10-11

微机控制实验报告_第1页
微机控制实验报告_第2页
微机控制实验报告_第3页
微机控制实验报告_第4页
微机控制实验报告_第5页
资源描述:

《微机控制实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一代码转换1.1实验任务1:设计并调试一个程序,将片内20H单元中8位无符号二进制数转化为BCD码,结果存入以30H开始的单元中。1.1.1程序分析及流程图:8位无符号二进制数最多可转化为3位BCD码。可以首先定义两个指针,分别为*ori和*temp,指向20H和30H的单元地址,然后利用除法,将20H中二进制数逐渐分离出个位、十位和百位,改变指针的内容,依次存入30H开始的地址空间中。流程图如下所示。1.1.2实验代码:#includeunsignedchardata*ori;unsignedchardata*temp;voi

2、dmain(){ori=0x20;temp=0x30;第29页*ori=123;*temp=(*ori)/100*16;*temp=*temp+((*ori)/10)%10;temp++;*temp=(*ori)%10*16;while(1);}1.1.3实验结果截图:执行程序之后,打开存储器,在20H单元中可以看到存储值为7B,而在30H开头的单元中为123,故转化结果正确。结果如下图所示。1.2实验任务2:设计并调试一个程序,将片内以20H开始的单元中的4字节无符号二进制数转化为BCD码,结果存入以30H开始的单元中,低位字节在低地址端。1.2.1程序分

3、析:与上相同也可以用除法来实现,将原数除10取余就得到最后一位数,再将除10得到的结果重复这一步,即除10取余,就可以得到倒数第二位数。同理,做一个循环就能取出每一位数。但需要注意一个字节的数值大小,以免溢出。流程如如下所示。第29页1.2.2实验代码:#include"c8051f020.h"#includeunsignedchardata*ptr1,*ptr2;voidmain(void){unsignedlonginttmp=0;inti,j;ptr1=0x20;ptr2=0x30;*ptr1=0x012*(ptr1+1)=0x034

4、*(ptr1+2)=0x056;*(ptr1+3)=0x078;for(i=3;i>=0;i--){tmp=tmp*256+*(ptr1+i);}while(temp!=0);{*ptr2=tmp%10;tmp=tmp/10;ptr2++;}}1.2.3实验结果:为避免20H开始的数据计算之后丢失,将其保存至temp中间变量中。20H开始的单元存放4字节数据为12345678H(即十进制305419896),运行上述程序后:(30H)à6,(31H)à9,(32H)à8,(33H)à9,(34H)à1,(35H)à4,(36H)à5,(37H)à0,(38H

5、)à31.3实验任务3:设计并调试一个程序,将累加器A中的二进制数(0~F)转化为ASCII码,结果仍放在A中。第29页1.3.1程序分析:ASCII表(部分)BINDECHEX字符BINDECHEX字符00110000483000011100056388001100014931100111001573990011001050322010000016541A0011001151333010000106642B0011010052344010000116743C0011010153355010001006844D001101105436601000101694

6、5E0011011155377010001107046F从上表可看出,判断累加器A的数值大小,若在0~9则直接加30H;若在A~F则加37H。1.3.2实验代码:#include"c8051F020.h"voidmain(void){unsignedcharA;ACC=0x0B;A=ACC;if(A>=10)A=A+0x37;elseA=A+0x30;ACC=A;}1.3.3实验结果:运行程序后,A的内容为32H;若A初始化为0X0B,则运行程序后A的内容为42H。第29页实验二液晶显示程序设计2.1实验任务1:设计并调试一个显示程序,利用所提供液晶显示器滚

7、动显示123456这六个数字,并以每字符500毫秒的速度向右移动循环。2.1.1程序分析及流程图:因例程中已写好各数字的点阵表,可直接用函数LCDC_DispWord()调用显示;每字符500毫秒右移动循环,可用延时程序并在循环里依次将显示的数字在LCD上右移实现。数字的显示函数:voidLCDC_DispWord(unsignedcharx,y,unsignedcharcode*p,unsignedcharline,length,Flag),其中x、y表示显示字符的坐标,*p表示显示字符的代码。延时函数:voidDelay_ms(unsignedintti

8、mes),其中times表示延时的毫秒数。利用LCD

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。