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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

广东海洋大学单片机实验全套.docx

1、广东海洋大学单片机实验全套广 东 海 洋 大 学单片机原理实验指导书实验一 发光二极管流水灯实验一、实验目的:1.通过AT89C51单片机控制8个发光二极管,八个发光二极管分别接在单片机的P0.0P0.7接口上,输出“0”时,发光二极管亮。开始时P0.0P0.1P0.7P0.6P0.0,实现亮点以1HZ频率循环移动。2.用PROTEUS 设计,仿真以AT89C51为核心的发光二极管流水灯实验装置。3.掌握发光二极管的控制方法。二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:根据电路图自行编写并调试。#include#inclu

2、de #define GPIO_LED P0 void Delay10ms(unsigned int); void main(void) unsigned char n; GPIO_LED=0xfe;/1111_1110-1111_1101 while(1) for(n=0;n7;n+) GPIO_LED=_crol_(GPIO_LED,1); Delay10ms(50); for(n=0;n0;c-) for(b=38;b0;b-) for(a=130;a0;a-);实验二 开关控制LED数码管实验一、实验目的:1.通过AT89C51读入4位开关的输入状态(0F),并将其输出到数码管显示。2

3、.掌握LED数码管的静态显示。3.掌握I/O口的控制方法。二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:根据电路图自行编写并调试。#includecharcodeshumaguan=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;main()while(1)switch(P2)case0xf0:P0=shumaguan0;break;case0xf1:P0=shumaguan1;break;case0xf2:P0=

4、shumaguan2;break;case0xf3:P0=shumaguan3;break;case0xf4:P0=shumaguan4;break;case0xf5:P0=shumaguan5;break;case0xf6:P0=shumaguan6;break;case0xf7:P0=shumaguan7;break;case0xf8:P0=shumaguan8;break;case0xf9:P0=shumaguan9;break;case0xfa:P0=shumaguan10;break;case0xfb:P0=shumaguan11;break;case0xfc:P0=shumagua

5、n12;break;case0xfd:P0=shumaguan13;break;case0xfe:P0=shumaguan14;break;case0xff:P0=shumaguan15;break;default:break;实验三 外中断优先级实验一、实验目的:1.理解单片机中断优先级和优先权。2.用PROTEUS 设计,仿真基于AT89C51单片机的中断优先级实验。3.掌握中断编程方法。单片机主程序控制P0口数码管循环显示08;外中断0、外中断1发生时分别在P2口、P1口依次显示08。通过实验可演示高优先级可中断低优先级,但低优先级的中断请求不能中断高优先级。二、PROTEUS电路设计:

6、三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:根据电路图自行编写并调试。ORG0000HLJMPMAINORG0003HLJMPINT00ORG0013HLJMPINT11ORG0100HMAIN:MOVSP,#30HSETBEX0SETBIT0ETBPX0SETBEX0SETBEX1SETBIT1SETBEX1CLRPX1SETBEAStartMOVR3,#09MOVR0,#0LOOP:MOVDPTR,#TABMOVA,R0MOVCA,A+DPTRMOVP0,AINCR0MOVR4,#5CC:MOVR2,#100BB:MOVR1,#200AA:NOP

7、NOPDJNZR1,AADJNZR2,BBDJNZR4,CCDJNZR3,LOOPSJMPSTARTINT00:PUSHACCPUSHPSWSETBRS0CLRRS1MOVR,#09MOVR0,#0LOO:MOVDPTR,#TABMOVA,R0MOVCA,A+DPTRMOVP2,AINCR0MOVR4,#5FF:MOVR2,#100EE:MOVR1,#200DD:NOPNOPDJNZR1,DDDJNZR2,EEDJNZR4,FFDJNZR3,LOOPOPPSWPOPACCRETIINT11:PUSHACCPUSHPSWSETBRS0SETBRS1MOVR3,#09MOVR0,#0LO:MOVD

8、PTR,#TABMOVA,R0MOVCA,A+DPTRMOVP1,AINCR0MOVR4,#5FG:MOVR2,#100EF:MOVR1,#200DF:NOPNOPDJNZR1,DFDJNZR2,EFDJNZR4,FGDJNZR3,LOPOPPSWPOPACCRETITAB:DB0X40,0XF9,0X24,0X30,0X19,0X12,0X02,0XF8,0X00实验四 60S倒计时实验一、实验目的:1.通过AT89C51的定时器实现60S倒计时,显示采用两位数码管动态显示。2.用PROTEUS 设计,仿真基于AT89C51单片机的60S倒计时实验。二、PROTEUS电路设计:三、实验仪器和

9、设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:根据电路图自行编写并调试。#include#defineucharunsignedchar#defineuintunsignedintuchartemp,bai,shi,ge,num;ucharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;voiddelay(uint);voidmain()temp=60;num=0;P2=0x00;TMOD=0x01;TH0=(65536-45872)/

10、256;TL0=(65536-45872)%256;EA=1;ET0=1;TR0=1;while(1)shi=temp/10;ge=temp%10;P0=tableshi;P2=0x02;delay(5);P0=tablege;P2=0x01;delay(5);voidT0_time()interrupt1TH0=(65536-45872)/256;TL0=(65536-45872)%256;num+;if(num=40)num=0;temp-;if(temp=0)temp=60;voiddelay(uintz)uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);实验

11、五 A/D转换实验一、实验目的:1.掌握转换器ADC0809的使用。2.用PROTEUS 设计,仿真基于AT89C51单片机的A/D转换实验。3.通过改变电位器的值改变模拟量的输入,经转换为数字量在LED上显示,比对模拟量和数字量的关系。二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:根据电路图自行编写并调试。ORG0000HAJMPSTARTORG0003HAJMPINTORG0100HSTART:MOVR0,#50HMOVXR0,ASETBIT0SETBEX0SETBEASETBF0CLRP2.0MOVDPTR,#TABL

12、OOP:JBF0,LOOP1SETBP3.4CLRP3.5MOVA,R6MOVP1,AACALLDLYCLRP3.4AJMPLHDLOOP1:SETBP3.5CLRP3.4MOVA,R7MOVP1,AACALLDLYCLRP3.5LHD:CPLF0AJMPLOOPINT:MOVXA,R0MOVR7,ASWAPAMOVR6,AMOVA,R7ANLA,#0FHMOVCA,A+DPTRMOVR7,AMOVA,R6ANLA,#0FHMOVCA,A+DPTRMOVR6,AMOVXR0,ARETIDLY:MOVR4,#0FHDL:MOVR5,#045HDL1:DJNZR5,DL1DJNZR4,DLRETT

13、AB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB80H,90H,88H,83H,0C6H,0A1H,86H,8EHEND综合性实验小型计算器的设计一、实验目的1.用单片机AT89C51实现一个小型计算器,可以实现两位数以内的算术运算及显示。2.通过P2口设计一个小型键盘44,键盘包括几个数字键0、1、2、4、5、6、7、8、9,以及功能键加,减,乘,除,等于,CLR(清除)。键盘输入和计算结果可通过P0口输出到数码管,并以动态显示。3.综合性实验内容包含一个44的键盘设计,以及两位数码管动态显示的设计方法。二、PROTEUS电路设计三、实验仪器和设备PC机

14、、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:根据电路图自行编写并调试。#include sbit fou_bit = P10;sbit thi_bit = P11;sbit sec_bit = P12;sbit fir_bit = P13;unsigned char nixiecode216 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92, /无小数点 0x82,0xf8,0x80,0x98,0x88,0x83, 0xc6,0xa1,0x86,0x8e, ;void delay(unsigned int z) unsigned int x,y; for(x=

15、z;x0;x-) for(y=110;y0;y-);void display(unsigned int num) unsigned char thou, hun, ten, bits; thou = num/1000; hun = num%1000/100; ten = num%100/10; bits = num%10; /显示千位 fou_bit = 1; P0 = nixiecode0thou; delay(1); P0 = 0xff; fou_bit = 0; /显示百位 thi_bit = 1; P0 = nixiecode0hun; delay(1); P0 = 0xff; thi

16、_bit = 0; /显示十位 sec_bit = 1; P0 = nixiecode0ten; delay(1); P0 = 0xff; sec_bit = 0; /显示个位 fir_bit = 1; P0 = nixiecode0bits; delay(1); P0 = 0xff; fir_bit = 0;void main(void) unsigned char temp = 0, operaone, operatwo; unsigned int numone = 0, numtwo = 0, num = 0; P0 = 0xff; fou_bit = 0; thi_bit = 0; w

17、hile(1) P2 = 0xfe; switch(P2) case 0xee : if(temp 2) numone = numone*10 + 1; while(P2 = 0xee); num = numone; temp+; break; case 0xde : if(temp 2) numone = numone*10 + 2; while(P2 = 0xde); num = numone; temp+; break; case 0xbe : if(temp 2) numone = numone*10 + 3; while(P2 = 0xbe); num = numone; temp+

18、; break; case 0x7e : operaone = +; while(P2 = 0x7e); operatwo = operaone; num = numtwo = numone; numone = 0; temp = 0; break; P2 = 0xfd; switch(P2) case 0xed : if (temp 2) numone = numone*10 + 4; while(P2 = 0xed); num = numone; temp+; break; case 0xdd : if (temp 2) numone = numone*10 + 5; while(P2 =

19、 0xdd); num = numone; temp+; break; case 0xbd : if (temp 2) numone = numone*10 + 6; while(P2 = 0xbd); num = numone; temp+; break; case 0x7d : operaone = -; while(P2 = 0x7d); operatwo = operaone; num = numtwo = numone; numone = 0; temp = 0; break; P2 = 0xfb; switch(P2) case 0xeb : if (temp 2) numone

20、= numone*10 + 7; while(P2 = 0xeb); num = numone; temp+; break; case 0xdb : if (temp 2) numone = numone*10 + 8; while(P2 = 0xdb); num = numone; temp+; break; case 0xbb : if (temp 2) numone = numone*10 + 9; while(P2 = 0xbb); num = numone; temp+; break; case 0x7b : operaone = *; while(P2 = 0x7b); opera

21、two = operaone; num = numtwo = numone; numone = 0; temp = 0; break; P2 = 0xf7; switch(P2) case 0xe7 : if (temp 2) numone = numone*10 + 0; while(P2 = 0xe7); num = numone; temp+; break; case 0xb7 : operaone = =; while(P2 = 0xb7); break; case 0x77 : operaone = /; while(P2 = 0x77); operatwo = operaone;

22、num = numtwo = numone; numone = 0; temp = 0; break; if (P2 = 0xd7) delay(5); if (P2 = 0xd7) numone = 0; numtwo = 0; num = 0; operaone = 0; operatwo = 0; temp = 0; while(P2 = 0xd7); if (operaone = =) switch(operatwo) case +: num = numone + numtwo; break; case -: num = numtwo - numone; break; case *: num = numone * numtwo; break; case /: num = numtwo / numone; break; display(num);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2