ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:350.09KB ,
资源ID:7874660      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7874660.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机及其应用报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机及其应用报告.docx

1、单片机及其应用报告 单片机原理及应用大 作 业姓名: XXX 专业: 通信工程 学号: XXX 作业1 流水灯实现循环左移右移一、 实验目的1)了解单片机系统实现LED动态显示的原理及方法;2)较为详细了解AT89C51芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6) 掌握使用PROTEUS软件进行仿真的方法;7) 掌握循环左移右移的方法。二、 实验软件PROTEUS仿真软件三、 芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压

2、,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。 四、 实验内容点亮一个流水灯,然后熄灭,接着点亮第二个流水灯,熄灭,点亮第三个,到最后点亮第八个;点亮第七个灯,一次到第一个灯,然后循环实现流水。五、 原理图六、 仿真效果图七、 软件编程程序八、 总结作业2 数码管矩阵键盘显示一、 实验目的1)了解单片机系统实现LED动态显示的原理及方法;2)较为详细了解AT89C51芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够

3、根据自己的需要编写代码;6)掌握4X4矩阵式键盘程序识别原理;7)掌握4X4矩阵式键盘的设计方法;8)学习键盘的扫描方式和应用程序设计;9) 掌握使用PROTEUS软件进行仿真的方法;二、 实验软件PROTEUS仿真软件三、 芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。 四、 实验内容1)44矩阵键盘程序识别原理。2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线都连接到AT89C51中,通过按键0F,来在数码管显示不

4、同的值。 五、 原理图 六、 仿真效果七、 实验程序#include#include /定义绝对地址头文件#include#defineucharunsignedchar#defineuintunsignedint#definePA8255XBYTE0x4000 /8255的A口地址#definePB8255XBYTE0x4001 /8255的B口地址#definePC8255XBYTE0x4002 /8255的C口地址#definePD8255XBYTE0x4003 /8255的控制口地址unsignedchardispBuffer6=17,17,17,17,17,1; /显示缓冲uchar

5、LED_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

6、, /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; dela

7、yms(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

8、;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; /

9、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; /9case0x

10、be: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:key

11、2=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!=2

12、0)dataTransform(dispBuffer,key);dispRefresh();八、 小结作业3 A/D转换一、 实验目的1)了解单片机系统实现LED动态显示的原理及方法;2)较为详细了解AT89C51芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6) 掌握使用PROTEUS软件进行仿真的方法;7) 掌握A/D转换的原理。二、 实验软件PROTEUS仿真软件三、 芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能

13、CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。 四、 实验内容设计一个程序,将IN4输入的0+5V模拟电压转换成数字量,再将这个2位十六进制转换成3位十进制数,放在LED显示器的第四六位显示。五、 原理图六、 仿真效果图七、 软件编程程序#include#include /定义绝对地址头文件#include#defineucharunsignedchar#defineuintunsignedint#definePA8255XBYTE0x4000 /8255的A口地址#definePB8255XBYTE0x4001 /8255的B口地址#

14、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, /c0xa

15、1, /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)/误差

16、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)

17、; /以下为主程序/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)了解单片机系统实现LE

18、D动态显示的原理及方法;2)较为详细了解AT89C51芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6) 掌握使用PROTEUS软件进行仿真的方法;7) 掌握D/A转换的原理。二、实验软件PROTEUS仿真软件三、 芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。 四、 实验内容设计一个程序,在主程序中向P1.0输出频率

19、为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

20、 / 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,

21、/ .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, / c 0xbe, / d 0xde, / e 0xee / f;void d

22、elayms(uint xms) /误差 0us uint i,j; for(i=xms;i0;i-) for(j=110;j0;j-);void ini_8255() / 初始化8255,PA,PB输出,PC高四位输出,低四位输入 ,在本程序中主要是为了显示 PD8255 = 0x81;void display(uchar display_num, uchar display_data) if (display_num = 0x01 )&(display_num=0x06) / 正常显示范围内 uchar i = 1; PA8255 = LED_NUMdisplay_num - i; / 输

23、入1,先显示LED1 PB8255 = LED_DATAdisplay_data; delayms(5); / 以下为主程序 /void main() uchar key1,key2,key3,key4; key2 = 0; / 初始显示值 ini_8255(); / 初始化8255 while(1) IN4_ADC0808 = 0; / 选中通到4 while(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); 八、 总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1