版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机实验报告姓名院系班级学号时间指导老师实验一 发光二极管流水灯实验一、实验目的:1.通过AT89C51单片机控制8个发光二极管,八个发光二极管分别接在单片机的P0.0P0.7接口上,输出“0”时,发光二极管亮。开始时P0.0P0.1P0.7P0.6P0.0,实现亮点以1HZ频率循环移动。程序:ORG 0000HAJMP STARTORG 0030HSTART: MOV P0,#0FFH MOV A,#0FEHAAA: MOV P0,A LCALL DELAY JNB P0.7,BBB RL A AJMP AAABBB: MOV A,#7FHCCC: MOV P0,A LCALL DELA
2、Y JNB P0.0,START RR A AJMP CCCDELAY: MOV R2,#123 DL3: MOV R1,#200DL2: MOV R0,#20DL1: DJNZ R0,DL1 DJNZ R1,DL2 DJNZ R2,DL3 RET END实验二 开关控制LED数码管实验一、实验目的:1.通过AT89C51读入4位开关的输入状态(0F),并将其输出到数码管显示。2.掌握LED数码管的静态显示。3.掌握I/O口的控制方法。二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:#include<reg51.h>
3、;sbit power = P10;sbit K1 = P20;sbit K2 = P21;sbit K3 = P22;sbit K4 = P23;void main()unsigned char leddata = 0xC0,0xF9,0xA4,0xb0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E;unsigned char ShuRu = 0;power = 0;K1 = 1;K2 = 1;K3 = 1;K4 = 1;while(1)ShuRu = P2&0X0F;P0 = leddata15-ShuRu;
4、实验三 外中断优先级实验一、实验目的:1.理解单片机中断优先级和优先权。2.用PROTEUS 设计,仿真基于AT89C51单片机的中断优先级实验。3.掌握中断编程方法。单片机主程序控制P0口数码管循环显示08;外中断0、外中断1发生时分别在P2口、P1口依次显示08。通过实验可演示高优先级可中断低优先级,但低优先级的中断请求不能中断高优先级。二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板4、 源程序设计:#include<reg51.h>sbit k1 = P32;sbit k2 = P33;del1ms(unsigned in
5、t k) unsigned int i,j; for(i=0;i<k;i+) for(j=0;j<110;j+);void int0() interrupt 0 unsigned char leddata = 0xC0,0xF9,0xa4,0xb0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E;if(k1=0) int a=0; del1ms(10);if(k1=0)for(a;a<10;a+)P2 = leddataa;del1ms(500);while(k1=0); void int2() inte
6、rrupt 2 unsigned char leddata = 0xC0,0xF9,0xa4,0xb0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E;if(k2=0) int b=0;del1ms(10); if(k2=0) for(b;b<10;b+)P1 = leddatab;del1ms(500);while(k2=0); void main() unsigned char leddata = 0xC0,0xF9,0xa4,0xb0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x8
7、3,0xC6,0xA1,0x86,0x8E;unsigned int l;TCON=0x05;IE=0x85;PX1=1;PX0=0; while(1)for(l=0;l<10;l+) P0 = leddatal; del1ms(500); 总结:该程序实现实验要求得功能,验证了中断的优先级,外部中断0的优先级低于外部中断1的优先级,当执行外部中断0时,若外部中断1请求中断,则会跳到实行外部中断1程序,反之,则不会出现。实验四 60S倒计时实验一、实验目的:1.通过AT89C51的定时器实现60S倒计时,显示采用两位数码管动态显示。2.用PROTEUS 设计,仿真基于AT89C51单片机
8、的60S倒计时实验。二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:#include<reg51.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar code a10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;unsigned char shu,shi,ge,count=0;/sbit rect_wave=P20; /方波由P20输出sbit
9、 x1=P12; /位定义 sbit x2=P13;void delay(uint x);void display(void);void time1(void);void chushihua() /初始化函数 shu=60; TMOD=0x01; TH0=0x3c; TL0=0xb0; IE=0x82; TR0=1; void main(void) chushihua(); while(1) display(); void display(void) shi=shu/10; ge=shu%10; x2=1; x1=0; P0=ashi; delay(5); x1=1; x2=0; P0=age
10、; delay(5);void time1(void) interrupt 1 TH0=0x3C; TL0=0xB0; count+; if(count=20)count=0;shu-; if(shu=-1)shu=60;void delay(uint x) uint y; for(;x>0;x-) for(y=100;y>0;y-);实验总结:通过这次实验,我对单片机中定时器/计数器有了更加具体的了解,同学我也学会了用C语言代码实现完成60s的倒计时。我觉得单片机,软件代码都是很神奇的东西,与此同时,这两项都激发了我学习软件,单片机的兴趣。实验五 A/D转换实验一、实验目的:1.
11、掌握转换器ADC0809的使用。2.用PROTEUS 设计,仿真基于AT89C51单片机的A/D转换实验。3.通过改变电位器的值改变模拟量的输入,经转换为数字量在LED上显示,比对模拟量和数字量的关系。二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:#include <reg52.h>#define uchar unsigned charsbit EOC = P32;sbit START = P20;sbit OE = P20;sbit P36 = P36;sbit P37 = P37;const char tab
12、le=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e/0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8evoid delay(int i) while(i-);void display(uchar num) P3=0xdf; P1=tablenum/10; delay(50);
13、 P3=0xef; P1=tablenum%10; delay(50);void main(void) int temp; while(1) P36=0; P37=0; START=0; /在上升沿的时候,所有的内部寄存器全部清零 delay(5); START=1; /在下降沿的时候,开始进行AD转换 while(EOC!=0); /EOC=1,表示转换结束 OE = 0; /允许数据线输出数据 temp=50*P0/250; OE=1; display( temp ); delay(50); 实验总结:通过做AD转换实验,更加熟悉51单片机操作外部硬件的技巧,对单片机的热情越来越浓厚。综合
14、性实验小型计算器的设计一、实验目的1.用单片机AT89C51实现一个小型计算器,可以实现两位数以内的算术运算及显示。2.通过P2口设计一个小型键盘4×4,键盘包括几个数字键0、1、2、4、5、6、7、8、9,以及功能键加,减,乘,除,等于,CLR(清除)。键盘输入和计算结果可通过P0口输出到数码管,并以动态显示。3.综合性实验内容包含一个4×4的键盘设计,以及两位数码管动态显示的设计方法。二、PROTEUS电路设计三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:根据电路图自行编写并调试。#include <reg51.h>
15、sbit qian_bit = P10;sbit bai_bit = P11;sbit shi_bit = P12;sbit ge_bit = P13;unsigned char nixiecode116 = 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=z;x>0;x-)for(y=110;y>0;y-);void display(unsigned i
16、nt num)unsigned char thou, hun, ten, bits;thou = num/1000;hun = num%1000/100;ten = num%100/10;bits = num%10;/显示千位qian_bit = 1;P0 = nixiecode0thou;delay(1);P0 = 0xff;qian_bit = 0;/显示百位bai_bit = 1;P0 = nixiecode0hun;delay(1);P0 = 0xff;bai_bit = 0;/显示十位shi_bit = 1;P0 = nixiecode0ten;delay(1);P0 = 0xff;
17、shi_bit = 0;/显示个位ge_bit = 1;P0 = nixiecode0bits;delay(1);P0 = 0xff;ge_bit = 0;void main(void)unsigned char temp = 0, operaone, operatwo;unsigned int numone = 0, numtwo = 0, num = 0;P0 = 0xff;qian_bit = 0;bai_bit = 0;while(1) P2 = 0xfe;switch(P2) case 0xee : if(temp < 2) numone = numone*10 + 1; wh
18、ile(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+; break;case 0x7e : operaone = '+'while(P2 = 0x7e); operatwo =
19、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 = 0xdd); num = numone; temp+; break;case 0xbd : if (temp &
20、lt; 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 = numone*10 + 7; while(P2 = 0xeb); num = n
21、umone; 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); operatwo = operaone; num = numtwo = numone; numone = 0; temp = 0; break;P2 = 0xf7;sw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年实习生宿舍管理合同
- 2024年工厂环境卫生管理承包合同
- 2024年个人借款与保证人合同书
- 2024年买卖合同违约责任纠纷起诉状
- 2024年专用:汽车销售合同
- 医院建设工程质量监测制度
- 医院药学部抗肿瘤药物管理制度
- 普通高中体育活动推广方案
- 黑板擦机械课程设计
- 心理健康视角的幼小衔接方案
- 好看的皮囊千篇一律有趣的灵魂万里挑一
- 某房地产公司项目定位分析
- 部编版三年级上册道德与法治作业设计
- ERAS理念下麻醉与镇痛的优化
- 2023-2024学年四川省泸州市江阳区西路学校七年级(上)期中数学试卷(含解析)
- 2023年下半年软件设计师真题 答案解析(上午选择 下午案例)全国计算机软考
- 初中英语新课程标准词汇表
- 创伤失血性休克中国急诊专家共识(2023)解读
- 学校体育与社区体育融合发展的研究
- 中国旅游地理智慧树知到课后章节答案2023年下平凉职业技术学院
- 工程竣工移交报告
评论
0/150
提交评论