单片机及其应用报告.docx_第1页
单片机及其应用报告.docx_第2页
单片机及其应用报告.docx_第3页
单片机及其应用报告.docx_第4页
单片机及其应用报告.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用大 作 业姓名: XXX 专业: 通信工程 学号: XXX 作业1 流水灯实现循环左移右移一、 实验目的1)了解单片机系统实现LED动态显示的原理及方法;2)较为详细了解AT89C51芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6) 掌握使用PROTEUS软件进行仿真的方法;7) 掌握循环左移右移的方法。二、 实验软件PROTEUS仿真软件三、 芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。 四、 实验内容点亮一个流水灯,然后熄灭,接着点亮第二个流水灯,熄灭,点亮第三个,到最后点亮第八个;点亮第七个灯,一次到第一个灯,然后循环实现流水。五、 原理图六、 仿真效果图七、 软件编程程序八、 总结作业2 数码管矩阵键盘显示一、 实验目的1)了解单片机系统实现LED动态显示的原理及方法;2)较为详细了解AT89C51芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6)掌握4X4矩阵式键盘程序识别原理;7)掌握4X4矩阵式键盘的设计方法;8)学习键盘的扫描方式和应用程序设计;9) 掌握使用PROTEUS软件进行仿真的方法;二、 实验软件PROTEUS仿真软件三、 芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。 四、 实验内容1)44矩阵键盘程序识别原理。2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线都连接到AT89C51中,通过按键0F,来在数码管显示不同的值。 五、 原理图 六、 仿真效果七、 实验程序#include#include /定义绝对地址头文件#include#defineucharunsignedchar#defineuintunsignedint#definePA8255XBYTE0x4000 /8255的A口地址#definePB8255XBYTE0x4001 /8255的B口地址#definePC8255XBYTE0x4002 /8255的C口地址#definePD8255XBYTE0x4003 /8255的控制口地址unsignedchardispBuffer6=17,17,17,17,17,1; /显示缓冲ucharLED_DATA= /数码管段码0xc0, /00xf9, /10xa4, /20xb0, /30x99, /40x92, /50x82, /60xf8, /70x80, /80x90, /90x88, /a0x83, /b0xc6, /c0xa1, /d0x86, /e0x8e, /f0xbf, /.0xff /灭;ucharLED_NUM= /数码管位码0xFE, /LED10xFD, /LED20xFB, /LED30xF7, /LED40xEF, /LED50xDF /LED6;ucharKEY_number= /按键扫描编码0x77, /0 ,0xb7, /10xd7, /20xe7, /30x7b, /40xbb, /50xdb, /60xeb, /70x7d, /80xbd, /90xdd, /a0xed, /b0x7e, /c0xbe, /d0xde, /e0xee /f;voiddelayms(uintxms)/误差0usuinti,j;for(i=xms;i0;i-)for(j=110;j0;j-);voidini_8255() /初始化8255 PD8255=0x81;voiddispRefresh(void)unsignedchari;for(i=0;i6;i+)PA8255=LED_NUMi;PB8255=LED_DATAdispBufferi; delayms(2);unsignedcharkeyscan(void)unsignedcharkey1,key2=20; PC8255=0xEF; /C口的11101111,TL1列扫描key1=(PC8255&0x0F); /读取低四位值if(key1!=0x0F)delayms(10); /延迟10mskey1=(PC8255&0x0F); /读取低四位值if(key1!=0x0F) /说明有按键按下switch(key1|0xE0)/拼凑成完整的按键码,第一列 case0xe7:key2=3;break; /3 case0xeb:key2=7;break; /7case0xed:key2=11;break; /bcase0xee:key2=15;break; /fdefault:break;PC8255=0xDF;/C口的11011111,TL2列扫描key1=(PC8255&0x0F); /读取低四位值if(key1!=0x0F)delayms(10); /延迟10mskey1=(PC8255&0x0F); /读取低四位值if(key1!=0x0F) /说明有按键按下switch(key1|0xD0) /拼凑成完整的按键码,第一列case0xd7:key2=2;break; /2 case0xdb:key2=6;break; /6case0xdd:key2=10;break; /acase0xde:key2=14;break; /edefault:break; PC8255=0xbF; /C口的11101111,TL1列扫描key1=(PC8255&0x0F); /读取低四位值if(key1!=0x0F)delayms(10); /延迟10mskey1=(PC8255&0x0F); /读取低四位值if(key1!=0x0F) /说明有按键按下switch(key1|0xb0) /拼凑成完整的按键码,第一列 case0xb7:key2=1;break; /1 case0xbb:key2=5;break; /5case0xbd:key2=9;break; /9case0xbe:key2=13;break; /ddefault:break;/ PC8255=0x7F; /C口的11101111,TL1列扫描key1=(PC8255&0x0F); /读取低四位值if(key1!=0x0F)delayms(10); /延迟10mskey1=(PC8255&0x0F); /读取低四位值if(key1!=0x0F) /说明有按键按下switch(key1|0x70) /拼凑成完整的按键码,第一列 case0x77:key2=0;break; /0 case0x7b:key2=4;break; /4case0x7d:key2=8;break; /8case0x7e:key2=12;break; /cdefault:break;doPC8255=0x0F;key1=(PC8255&0x0F);while(key1!=0x0F);returnkey2;voiddataTransform(unsignedchar*pData,unsignedcharkeyValue)unsignedcharii;for(ii=0;ii5;ii+)pDataii=pDataii+1; pData5=keyValue;/以下为主程序voidmain()ucharkey=20;ini_8255();dispRefresh();while(1)key=keyscan();if(key!=20)dataTransform(dispBuffer,key);dispRefresh();八、 小结作业3 A/D转换一、 实验目的1)了解单片机系统实现LED动态显示的原理及方法;2)较为详细了解AT89C51芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6) 掌握使用PROTEUS软件进行仿真的方法;7) 掌握A/D转换的原理。二、 实验软件PROTEUS仿真软件三、 芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。 四、 实验内容设计一个程序,将IN4输入的0+5V模拟电压转换成数字量,再将这个2位十六进制转换成3位十进制数,放在LED显示器的第四六位显示。五、 原理图六、 仿真效果图七、 软件编程程序#include#include /定义绝对地址头文件#include#defineucharunsignedchar#defineuintunsignedint#definePA8255XBYTE0x4000 /8255的A口地址#definePB8255XBYTE0x4001 /8255的B口地址#definePC8255XBYTE0x4002 /8255的C口地址#definePD8255XBYTE0x4003 /8255的控制口地址#defineIN4_ADC0808XBYTE0x8004 /DAC0808对应的IN4输入端地址sbitwr_ADC0808=P36 ;sbitrd_ADC0808=P37 ;sbitEOC=P10 ;ucharLED_DATA= /数码管段码0xc0, /00xf9, /10xa4, /20xb0, /30x99, /40x92, /50x82, /60xf8, /70x80, /80x90, /90x88, /a0x83, /b0xc6, /c0xa1, /d0x86, /e0x8e, /f0xbf, /.0xff /灭;ucharLED_NUM= /数码管位码0xFE, /LED10xFD, /LED20xFB, /LED30xF7, /LED40xEF, /LED50xDF /LED6;ucharKEY_number= /按键扫描编码0x77, /0 ,0xb7, /10xd7, /20xe7, /30x7b, /40xbb, /50xdb, /60xeb, /70x7d, /80xbd, /90xdd, /a0xed, /b0x7e, /c0xbe, /d0xde, /e0xee /f;voiddelayms(uintxms)/误差0usuinti,j;for(i=xms;i0;i-)for(j=110;j0;j-);voidini_8255() /初始化8255,PA,PB输出,PC高四位输出,低四位输入 ,在本程序中主要是为了显示 PD8255=0x81;voiddisplay(uchardisplay_num,uchardisplay_data)if(display_num=0x01)&(display_num=0x06) /正常显示范围内uchari=1;PA8255=LED_NUMdisplay_num-i; /输入1,先显示LED1PB8255=LED_DATAdisplay_data; delayms(5); /以下为主程序/voidmain()ucharkey1,key2,key3,key4;key2=0; /初始显示值ini_8255(); /初始化8255while(1)IN4_ADC0808=0; /选中通到4while(EOC!=0); /转换完成EOC=0;key4=IN4_ADC0808; /读入数据key3=(key4/100); /百位 key2=(key4/10)%10; /十位key1=(key4%10); /个位display(1,key3);display(2,key2);display(3,key1);八、 总结作业4 D/A转换一、实验目的1)了解单片机系统实现LED动态显示的原理及方法;2)较为详细了解AT89C51芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6) 掌握使用PROTEUS软件进行仿真的方法;7) 掌握D/A转换的原理。二、实验软件PROTEUS仿真软件三、 芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。 四、 实验内容设计一个程序,在主程序中向P1.0输出频率为1Hz的方波,同时使用定时器1定时中断,在中断服务程序中用D/A转换器输出周期为20秒的三角波。五、 原理图六、 仿真效果图七、 软件编程程序#include#include/ 定义绝对地址头文件#include#define uchar unsigned char#define uint unsigned int#define PA8255 XBYTE0x4000/ 8255的A口地址#define PB8255 XBYTE0x4001/ 8255的B口地址#define PC8255 XBYTE0x4002/ 8255的C口地址#define PD8255 XBYTE0x4003/ 8255的控制口地址#define IN4_ADC0808 XBYTE0x8004/ DAC0808对应的IN4输入端地址sbit wr_ADC0808 = P36 ;sbit rd_ADC0808 = P37 ;sbit EOC = P10 ;uchar LED_DATA=/数码管段码0xc0,/ 00xf9, / 10xa4, / 20xb0, / 30x99, / 40x92, / 50x82, / 60xf8, / 70x80, / 80x90, / 90x88, / a0x83, / b0xc6, / c0xa1, / d0x86, / e0x8e, / f0xbf, / .0xff/ 灭;uchar LED_NUM=/数码管 位码0xFE,/ LED10xFD,/ LED20xFB,/ LED30xF7,/ LED40xEF,/ LED50xDF / LED6;uchar KEY_number=/ 按键扫描编码 0x77,/ 0, 0xb7,/ 1 0xd7,/ 2 0xe7,/ 3 0x7b,/ 4 0xbb,/ 5 0xdb,/ 6 0xeb,/ 7 0x7d,/ 8 0xbd,/ 9 0xdd,/ a 0xed,/ b 0x7e,

温馨提示

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

评论

0/150

提交评论