51单片机实验
codeacg
1
展开
-
8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8。
8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8。程序:#include<reg51.h>#include<absacc.h>#define PORT_A XBYTE[0X7FFC]#define PORT_B XBYTE[0X7FFD]#define PORT_C XBYTE[0X7FFE]#define PORT_CTL XBYTE[0X7FFF]void delay(){unsigned int i;for(i=0;i原创 2021-01-13 09:57:11 · 3537 阅读 · 1 评论 -
I/0口输入输出实验 将P1口的某一位作为输入使用,连接一个按键,当按键按下时使发光二极管亮,否则发光二极管熄灭
将P1口的某一位作为输入使用,连接一个按键,当按键按下时使发光二极管亮,否则发光二极管熄灭。程序:#include<reg51.h>sbit KEY=P1^1;sbit LED=P1^2;int main(void){LED=1;KEY=1;if(KEY==0)LED=~LED;else{LED=LED;}}视频:...原创 2021-01-08 20:13:52 · 1179 阅读 · 0 评论 -
I/0口输入输出实验 流水灯程序 P0、P1、P2、P3口作为输出口,连接八只发光二极管,编写程序,使发光二极管从左至右循环点亮。
P0、P1、P2、P3口作为输出口,连接八只发光二极管,编写程序,使发光二极管从左至右循环点亮。流水灯程序程序:#include<reg51.h>void delay(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<200;n++);}int main(void){unsigned char i;unsigned char code Tab[8]={0xfe,0xfd,0xfb,0xf7,0xef,0x原创 2021-01-08 20:13:04 · 5749 阅读 · 3 评论 -
I/0口输入输出实验 学习IO口的位操作方法,分别选择P0、P1、P2、P3端口中的某一位,该位作为输出使用,连接一只发光二极管,控制器闪烁。
学习IO口的位操作方法,分别选择P0、P1、P2、P3端口中的某一位,该位作为输出使用,连接一只发光二极管,控制器闪烁。程序:#include<reg51.h>sbit KEY=P1^1;sbit LED=P1^2;int main(void){LED=1;KEY=1;if(KEY==0)LED=~LED;else{LED=LED;}}视频:...原创 2021-01-08 20:14:17 · 1054 阅读 · 0 评论 -
AD转换实验 编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则
编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则数码管应该显示2.5)程序:#include<reg51.h>#define DataPort P1#define WeiPort P2sbit ADCS=P3^0;sbit ADRD=P3^1;sbit ADWR=P3^2;sbit ADINTR=P3^3;unsigned char led[]原创 2021-01-08 20:14:40 · 3396 阅读 · 2 评论 -
串行口实验 编写程序利用PC机控制单片机实验板上的数码管设备工作
编写程序利用PC机控制单片机实验板上的数码管设备工作程序:#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar temp;uchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};int main(void){SCON=0x50;PCON=0X00;TMOD=0X20;EA=1;ES=1;TH1=0XFD原创 2021-01-07 18:26:54 · 1039 阅读 · 4 评论 -
串行口实验 编写程序利用串口调试助手通过串口给实验板发送数据(数据范围0x00-0xfe),单片机将接受到的数据加1后再发送给PC机。
编写程序利用串口调试助手通过串口给实验板发送数据(数据范围0x00-0xfe),单片机将接受到的数据加1后再发送给PC机。程序:#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar temp;int main(void){SCON=0x50;PCON=0X00;TMOD=0X20;EA=1;ES=1;TH1=0XFD;TL1=0XFD;TR1=1;while(1);原创 2021-01-07 18:25:47 · 3337 阅读 · 2 评论 -
定时器中断实验 编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。程序:#include <reg51.h>#define uchar unsigned charuchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar seg[]={0xfe,0xfd};unsigned int cont=0;uchar num=0;uc原创 2021-01-07 18:24:30 · 1665 阅读 · 0 评论 -
定时器中断实验 编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。程序:#include <reg51.h>#define uint unsigned int #define uchar unsigned char sbit a = P1^0;sbit b = P1^1; uchar code tube[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};原创 2021-01-07 18:23:25 · 2251 阅读 · 1 评论 -
定时器中断实验 编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。
编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。程序:#include<reg51.h>sbit fm=P2^3;unsigned char cnt;int main(void){TMOD=0x01;TH0=(65536-46083)/256;TL0=(65536-46083)%256;cnt=0;TR0=1;EA=1;ET0=1;while(1);}void int0_timer (void) interrupt 1{cnt++;if原创 2021-01-07 18:22:01 · 4190 阅读 · 2 评论 -
51单片机外部中断实验 设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管
设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管加1显示程序)。#include<reg51.h>#define uchar unsigned char;sbit key1=P3^2;sbit key2=P3^3;unsigned int i;uchar led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};ucha原创 2021-01-07 18:19:38 · 1301 阅读 · 1 评论 -
外部中断实验 编写程序学习外部中断的电平触发方式。无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。
编写程序学习外部中断的电平触发方式。无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。程序:#include<reg51.h>#define uchar unsigned char;sbit key=P3^3;uchar i,j;uchar led[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};uchar tube[]={0xc0,0xf9,0xa4原创 2021-01-07 18:18:20 · 1947 阅读 · 0 评论 -
让8只数码管从左往右显示1、2、3、4、、、8
编写实验学习数码管动态显示,让8只数码管从左往右显示1,2,3,4,,,8程序:#include <reg51.h>unsigned char led[]={0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};//0-9的字型码unsigned char segment[]= {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//存储2个数码管的位选码unsigned char k=0;int main(void){原创 2021-01-07 18:05:32 · 6323 阅读 · 0 评论 -
让8只数码管初始显示零,每隔大约1s加一显示,到数码管显示9后,再从一开始显示
让8只数码管初始显示零,每隔大约1s加一显示,到数码管显示9后,再从一开始显示用延时函数实现加一显示程序:#include <reg51.h>void delay(unsigned char n);int main(void){ unsigned char led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0-9μ?×?Dí??unsigned char i;P2=0x00;while(1){for(i原创 2021-01-07 17:59:02 · 2745 阅读 · 2 评论 -
数码管显示实验一 编写程序让8只数码管同时显示零
编写程序让数码管同时显示零此实验是共阳极写法程序:#include <reg51.h> unsigned char segment[]= {0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};unsigned char k=0;int main(void){TMOD=0x00;TL0=(8192-2000)%32;TH0=(8192-2000)/256;TR0=1;EA=1;ET0=1;while(1);}void T0_t原创 2021-01-07 17:54:31 · 2436 阅读 · 0 评论