自制89C51单片机实验电路板 学习单片机离不开实验,以往单片机的实验往往依赖于仿真机和单片机学习系统,价格昂贵,初学者很难配备。近年来,随着FLASH型单片机的广泛应用,采用软件模拟加写片验证成为一种经济实用的实验方法,以AT89C51单片机为例,其价格不足¥10RMB,而擦、写次数可以有1000次,一块芯片即可做上千次的实验。目前,流行的单片机开发软件Keil可以免费获得用于学习的EVAL版;编程器价格并不昂贵,专门用于写89C51类芯片的编程器价格更低廉(不足百元),而且编程器也是以后开发单片机所必备的工具;相比之下,用于实验的电路板制作比较麻烦,用万用板搭接,只能做些很简单的电路,稍复杂的电路一般要用到双面板,而业余条件下是很难自制双面板的,而且实验电路板主要是用于学习,学完了,也就没有什么使用价值了,所以很多人希望能够廉价地获得。作者在多年单片机教学(包括从事网络教学)的基础上,开发了一块有较多功能但使用单面板的单片机实验板,适于业余爱好者自制。这块实验板采用89C51为主芯片,板上安装了5位数码管,8个发光二极管,四个按钮开关,一个简单的音响电路,一个用于计数实验的振荡器,At24CXXX类芯片插座,X5045芯片插座,RS232串行接口等。使用这块实验板可以进行流水灯、人机界面程序设计、音响、中断、计数器等基本编程练习,还可以学习I2C接口芯片使用、SPI接口芯片使用、与PC机进行串行通讯等目前较为流行的技术。图1是该实验板的电路原理图,从图中可以看出,该实验板由若干块集成电路和一些阻容元件等组成,下面我们就分别介绍。1、发光二极管接口主芯片(U1)的P1端口接了8个发光二极管,这些发光二极管的负极接到P1端口各引脚,而正极则通过一个排电阻(标号为JP4,阻值为470殴)接到正电源端,这样,这些发光二极管亮的条件就U1的P1口相引的引脚为低电平,即如果P1口某引脚输出为0,相应的灯亮,如果输出为1,相应的灯灭。例:MOV P1,#0FH该行程序将使发光二极管L1-L4熄灭,而L5-L8点亮。2、数码管接口U1的P0口和P2口的部份引脚构成了5位LED数码管驱动电路,这里LED数码管采用了共阳型,共阳型数码管的笔段(即对应abcdefgh)引脚是二极管的负极,所有二极管的正极连在一起,构成公共端,即片选端,对于这种数码管的驱动,要求在片选端提供电流,为此,使用了PNP型三极管作为片选端的驱动,共使用5只三极管,所有三极管的发射极连在一起,接到正电源端,它们的基极则分别连到P2.0⋯P2.4,这样,当P2.0⋯P2.4中某引脚输出是高电平时,三极管不导通,不能给相应位的数码管供电,该位数码管的所有笔段都不亮,反之,如果某引脚是低电平时,三极管导通,可以给相应的数码管供电,该位数码管是否点亮,点亮哪些笔段,取决于这些笔段引脚是高或低电平。从图图1 共阳型数LED显示器.....
上传时间: 2013-11-14
上传用户:dingdingcandy
隔离放大器IC___产品特点: 1.精度等级:0.1级、0.2级、0.5级。 2.0-2.5V/0-5V/0-10V/1-5V等标准电压信号、0-1mA/ 0-10mA/0-20mA/4-20mA等标准电流信号输入, 输出标准的隔离信号。 3.输出电压信号:0-5V/0-10V/1-5V、输出电流信号:0-10mA/0-20mA/4-20mA,具有高带载能力。 4.全量程范围内极高的线性度(非线性度<0.2%) 隔离放大器IC___应用举例: 1.直流电流/电压信号的隔离、转换及放大 2.模拟信号地线干扰抑制及数据隔离采集 3.信号远程无失传输 4.电力监控、医疗设备隔离安全栅 5.一进一出、一进两出、两进两出模拟信号转换 隔离放大器IC___产品型号及定义 连续隔离电压值: 3000VDC 电源电压输入范围: ±10%Vin 焊接温度(10秒): +300℃ AOT -U(A)□ -P□- O□ 输入电压或电流信号值 U1:0-5V A1:0—1mA U2:0-10V A2: 0—10mA U3:0-75mV A3: 0—20mA U4:0-2.5V A4: 4—20mA U5:0-±5V A5:0—±1mA U6:0-±10V A6: 0—±10mA U7:0-±100mV A7: 0—±20mA U8:用户自定义 A8: 用户自定义 隔离放大器IC___辅助电源 P1:DC24V P2:DC12V P3:DC5V P4:DC15V P5:用户自定义 隔离放大器IC____输出信号 O1: 4-20mA O2: 0-20mA O4: 0-5V O5: 0-10V O6: 1-5V O7: 0-±5V O8: 0-±10V O9: -20-+20mA O10: 用户自定义 隔离放大器IC___产品特征: 奥通 光耦隔离系列产品是通过模拟信号(线性光耦)隔离放大,转换按比列输出的一种信号隔离放大器,产品抗干扰强。广泛应用在电力、工业控制转换,仪器仪表、远程监控、医疗设备、工业自控等需要电量隔离测控的行业。光耦隔离系列产品属于双隔离产品,输入信号与辅助电源隔离,辅助电源与输出隔离 ,隔离电压3000VDC 隔离放大器IC___产品说明: 1.SIP12脚符合UL94V-0标准阻燃封装 2.只需外接电位器既可调节零点和增益 3.电源、信号、输入输出 3000VDC隔离 4.工业级温度范围:-45~+85度 5.有较强的抗EMC电磁干扰和高频信号空间干扰特性 6.大小: 32.0mm*13.8mm*8.8mm
上传时间: 2014-01-04
上传用户:wangzeng
简单电子琴的51单片机程序 #include<reg51.h> //包含51单片机寄存器定义的头文件 sbit P14=P1^4; //将P14位定义为P1.4引脚 sbit P15=P1^5; //将P15位定义为P1.5引脚 sbit P16=P1^6; //将P16位定义为P1.6引脚 sbit P17=P1^7; //将P17位定义为P1.7引脚 unsigned char keyval; //定义变量储存按键值 sbit sound=P2^0; //将sound定义为P2.0 unsigned int C; //全局变量,储存定时器的定时常数 unsigned int f; //全局变量,储存音阶的频率 //以下是C调低音的音频宏定义 #define l_dao 262 //将“l_dao”宏定义为低音“1”的频率262Hz #define l_re 294 //将“l_re” 宏定义为低音“2”的频率294Hz #define l_mi 330 //将“l_mi” 宏定义为低音“3”的频率330Hz #define l_fa 349 //将“l_fa” 宏定义为低音“4”的频率349Hz #define l_sao 392 //将“l_sao”宏定义为低音“5”的频率392Hz #define l_la 440 //将“l_la” 宏定义为低音“6”的频率440Hz #define l_xi 494 //将“l_xi” 宏定义为低音“7”的频率494Hz //以下是C调中音的音频宏定义 #define dao 523 //将“dao”宏定义为低音“1”的频率Hz #define re 587 //将“re” 宏定义为低音“2”的频率Hz #define mi 659 //将“mi” 宏定义为低音“3”的频率Hz #define fa 698 //将“fa” 宏定义为低音“4”的频率Hz #define sao 784 //将“sao”宏定义为低音“5”的频率Hz #define la 880 //将“la” 宏定义为低音“6”的频率Hz #define xi 988 //将“xi” 宏定义为低音“7”的频率Hz
上传时间: 2013-11-09
上传用户:tian126vip
CH451 使用一个系统时钟信号来同步芯片内部的各个功能部件,例如,当系统时钟信号的频率变高时,显示驱动刷新将变快、按键响应时间将变短、上电复位信号的宽度将变窄、看门狗周期也将变短。一般情况下,CH451 的系统时钟信号是由内置的阻容振荡提供的,这样就不再需要任何外围电路,但内置RC 振荡的频率受电源电压的影响较大,当电源电压降低时,系统时钟信号的频率也随之降低。在某些实际应用中,可能希望CH451 提供更长或者更短的显示刷新周期、按键响应时间等,这时就需要调节系统时钟信号的频率。CH451 提供了CLK 引脚,用于外接阻容振荡。当在CLK 引脚与地GND 之间跨接电容后,系统时钟信号的频率将变低;当在CLK 引脚与正电源VCC 之间跨接电阻后,系统时钟信号的频率将变高。因为CH451 的系统时钟信号被用于芯片内部的所有功能部件,所以其频率不宜进行大幅度的调节,一般情况下,跨接电容的容量在5pF 至100pF 之间,跨接电阻的阻值在20KΩ至500KΩ之间。跨接一个47pF 的电容则频率降低为一半,跨接一个47KΩ的电阻则频率升高为两倍。另外,CH451 的CLK 引脚可以直接输入外部的系统时钟信号,但外部电路的驱动能力不能小于±2mA。CH451 在CLKO 引脚提供了系统时钟信号的二分频输出,对于一些不要求精确定时的实际应用,可以由CLKO 引脚向单片机提供时钟信号,简化外围电路。 单片机接口程序下面提供了U1(MCS-51 单片机)与U2(CH451)的接口程序,供参考。;**********************;需要主程序定义的参数CH451_DCLK BIT P1.7 ;串行数据时钟,上升沿激活CH451_DIN BIT P1.6 ;串行数据输出,接CH451 的数据输入CH451_LOAD BIT P1.5 ;串行命令加载,上升沿激活CH451_DOUT BIT P3.2 ;INT0,键盘中断和键值数据输入,接CH451 的数据输出CH451_KEY DATA 7FH ;存放键盘中断中读取的键值
上传时间: 2013-11-22
上传用户:671145514
12864液晶时钟显示程序 LCD 地址变量 ;**************变量的定义***************** RS BIT P2.0 ;LCD数据/命令选择端(H/L) RW BIT P2.1 ;LCD读/写选择端(H/L) EP BIT P2.2 ;LCD使能控制 PSB EQU P2.3 RST EQU P2.5 PRE BIT P1.4 ;调整键(K1) ADJ BIT P1.5 ;调整键(K2) COMDAT EQU P0 LED EQU P0.3 YEAR DATA 18H ;年,月,日变量 MONTH DATA 19H DATE DATA 1AH WEEK DATA 1BH HOUR DATA 1CH ;时,分,秒,百分之一秒变量 MIN DATA 1DH SEC DATA 1EH SEC100 DATA 1FH STATE DATA 23H LEAP BIT STATE.1 ;是否闰年标志1--闰年,0--平年 KEY_S DATA 24H ;当前扫描键值 KEY_V DATA 25H ;上次扫描键值 DIS_BUF_U0 DATA 26H ;LCD第一排显示缓冲区 DIS_BUF_U1 DATA 27H DIS_BUF_U2 DATA 28H DIS_BUF_U3 DATA 29H DIS_BUF_U4 DATA 2AH DIS_BUF_U5 DATA 2BH DIS_BUF_U6 DATA 2CH DIS_BUF_U7 DATA 2DH DIS_BUF_U8 DATA 2EH DIS_BUF_U9 DATA 2FH DIS_BUF_U10 DATA 30H DIS_BUF_U11 DATA 31H DIS_BUF_U12 DATA 32H DIS_BUF_U13 DATA 33H DIS_BUF_U14 DATA 34H DIS_BUF_U15 DATA 35H DIS_BUF_L0 DATA 36H ;LCD第三排显示缓冲区 DIS_BUF_L1 DATA 37H DIS_BUF_L2 DATA 38H DIS_BUF_L3 DATA 39H DIS_BUF_L4 DATA 3AH DIS_BUF_L5 DATA 3BH DIS_BUF_L6 DATA 3CH DIS_BUF_L7 DATA 3DH DIS_BUF_L8 DATA 3EH DIS_BUF_L9 DATA 3FH DIS_BUF_L10 DATA 40H DIS_BUF_L11 DATA 41H DIS_BUF_L12 DATA 42H DIS_BUF_L13 DATA 43H DIS_BUF_L14 DATA 44H DIS_BUF_L15 DATA 45H FLAG DATA 46H ;1-年,2-月,3-日,4-时,5-分,6-秒,7-退出调整。 DIS_H DATA 47H DIS_M DATA 48H DIS_S DATA 49H
上传时间: 2013-11-09
上传用户:xingisme
温湿度传感器 sht11 仿真程序 sbit out =P3^0; //加热口 //sbit input =P1^1;//检测口 //sbit speek =P2^0;//报警 sbit clo =P3^7;//时钟 sbit ST =P3^5;//开始 sbit EOC =P3^6;//成功信号 sbit gwei =P3^4;//个位 sbit swei =P3^3;//十位 sbit bwei =P3^2;//百位 sbit qwei =P3^1;//千位 sbit speak =P0^0;//报警音 sbit bjled =P0^1;//报警灯 sbit zcled =P0^2;//正常LED int count; uchar xianzhi;//取转换结果 uchar seth;//高时间 uchar setl;//低时间 uchar seth_mi;//高时间 uchar setl_mi;//低时间 bit hlbz;//高低标志 bit clbz; bit spbz; ///定时中断程序/// void t0 (void) interrupt 1 using 0 { TH0=(65536-200)/256;//5ms*200=1000ms=1s TL0=(65536-200)%256; clo=!clo;//产生时钟 if(count>5000) { if(hlbz) { if(seth_mi==0){seth_mi=seth;hlbz=0;out=0;} else seth_mi--; } if(!hlbz) { if(setl_mi==0){setl_mi=setl;hlbz=1;out=1;} else setl_mi--; } count=0; } else count++; } ///////////// ///////延时/////// delay(int i) { while(--i); } ///////显示处理/////// xianshi() { int abcd=0; int i; for (i=0;i<5;i++) { abcd=xianzhi; gwei=1; swei=1; bwei=1; qwei=1; P1=dispcode[abcd/1000]; qwei=0; delay(70); qwei=1; abcd=abcd%1000; P1=dispcode[abcd/100]; bwei=0; delay(70); bwei=1; abcd=abcd%100; P1=dispcode[abcd/10]; swei=0; delay(70); swei=1; abcd=abcd%10; P1=dispcode[abcd]; gwei=0; delay(70); gwei=1; } } doing() { if(xianzhi>100) {bjled=0;speak=1;zcled=1;} else {bjled=1;speak=0;zcled=0;} } void main(void) { seth=60;//h60秒 setl=90;//l90秒 seth_mi=60;//h60秒 setl_mi=90;//l90秒 TMOD=0X01;//定时0 16位工作模式 TH0=(65536-200)/256; TL0=(65536-200)%256; TR0=1; //开始计时 ET0=1; //开定时0中断 EA=1; //开全中断 while(1) { ST=0; _nop_(); ST=1; _nop_(); ST=0; // EOC=0; xianshi(); while(!EOC) { xianshi(); } xianzhi=P2; xianshi(); doing(); } }
上传时间: 2013-11-07
上传用户:我们的船长
12864液晶时钟显示程序 LCD 地址变量 ;**************变量的定义***************** RS BIT P2.0 ;LCD数据/命令选择端(H/L) RW BIT P2.1 ;LCD读/写选择端(H/L) EP BIT P2.2 ;LCD使能控制 PSB EQU P2.3 RST EQU P2.5 PRE BIT P1.4 ;调整键(K1) ADJ BIT P1.5 ;调整键(K2) COMDAT EQU P0 LED EQU P0.3 YEAR DATA 18H ;年,月,日变量 MONTH DATA 19H DATE DATA 1AH WEEK DATA 1BH HOUR DATA 1CH ;时,分,秒,百分之一秒变量 MIN DATA 1DH SEC DATA 1EH SEC100 DATA 1FH STATE DATA 23H LEAP BIT STATE.1 ;是否闰年标志1--闰年,0--平年 KEY_S DATA 24H ;当前扫描键值 KEY_V DATA 25H ;上次扫描键值 DIS_BUF_U0 DATA 26H ;LCD第一排显示缓冲区 DIS_BUF_U1 DATA 27H DIS_BUF_U2 DATA 28H DIS_BUF_U3 DATA 29H DIS_BUF_U4 DATA 2AH DIS_BUF_U5 DATA 2BH DIS_BUF_U6 DATA 2CH DIS_BUF_U7 DATA 2DH DIS_BUF_U8 DATA 2EH DIS_BUF_U9 DATA 2FH DIS_BUF_U10 DATA 30H DIS_BUF_U11 DATA 31H DIS_BUF_U12 DATA 32H DIS_BUF_U13 DATA 33H DIS_BUF_U14 DATA 34H DIS_BUF_U15 DATA 35H DIS_BUF_L0 DATA 36H ;LCD第三排显示缓冲区 DIS_BUF_L1 DATA 37H DIS_BUF_L2 DATA 38H DIS_BUF_L3 DATA 39H DIS_BUF_L4 DATA 3AH DIS_BUF_L5 DATA 3BH DIS_BUF_L6 DATA 3CH DIS_BUF_L7 DATA 3DH DIS_BUF_L8 DATA 3EH DIS_BUF_L9 DATA 3FH DIS_BUF_L10 DATA 40H DIS_BUF_L11 DATA 41H DIS_BUF_L12 DATA 42H DIS_BUF_L13 DATA 43H DIS_BUF_L14 DATA 44H DIS_BUF_L15 DATA 45H FLAG DATA 46H ;1-年,2-月,3-日,4-时,5-分,6-秒,7-退出调整。 DIS_H DATA 47H DIS_M DATA 48H DIS_S DATA 49H
上传时间: 2013-12-25
上传用户:wvbxj
温湿度传感器 sht11 仿真程序 sbit out =P3^0; //加热口 //sbit input =P1^1;//检测口 //sbit speek =P2^0;//报警 sbit clo =P3^7;//时钟 sbit ST =P3^5;//开始 sbit EOC =P3^6;//成功信号 sbit gwei =P3^4;//个位 sbit swei =P3^3;//十位 sbit bwei =P3^2;//百位 sbit qwei =P3^1;//千位 sbit speak =P0^0;//报警音 sbit bjled =P0^1;//报警灯 sbit zcled =P0^2;//正常LED int count; uchar xianzhi;//取转换结果 uchar seth;//高时间 uchar setl;//低时间 uchar seth_mi;//高时间 uchar setl_mi;//低时间 bit hlbz;//高低标志 bit clbz; bit spbz; ///定时中断程序/// void t0 (void) interrupt 1 using 0 { TH0=(65536-200)/256;//5ms*200=1000ms=1s TL0=(65536-200)%256; clo=!clo;//产生时钟 if(count>5000) { if(hlbz) { if(seth_mi==0){seth_mi=seth;hlbz=0;out=0;} else seth_mi--; } if(!hlbz) { if(setl_mi==0){setl_mi=setl;hlbz=1;out=1;} else setl_mi--; } count=0; } else count++; } ///////////// ///////延时/////// delay(int i) { while(--i); } ///////显示处理/////// xianshi() { int abcd=0; int i; for (i=0;i<5;i++) { abcd=xianzhi; gwei=1; swei=1; bwei=1; qwei=1; P1=dispcode[abcd/1000]; qwei=0; delay(70); qwei=1; abcd=abcd%1000; P1=dispcode[abcd/100]; bwei=0; delay(70); bwei=1; abcd=abcd%100; P1=dispcode[abcd/10]; swei=0; delay(70); swei=1; abcd=abcd%10; P1=dispcode[abcd]; gwei=0; delay(70); gwei=1; } } doing() { if(xianzhi>100) {bjled=0;speak=1;zcled=1;} else {bjled=1;speak=0;zcled=0;} } void main(void) { seth=60;//h60秒 setl=90;//l90秒 seth_mi=60;//h60秒 setl_mi=90;//l90秒 TMOD=0X01;//定时0 16位工作模式 TH0=(65536-200)/256; TL0=(65536-200)%256; TR0=1; //开始计时 ET0=1; //开定时0中断 EA=1; //开全中断 while(1) { ST=0; _nop_(); ST=1; _nop_(); ST=0; // EOC=0; xianshi(); while(!EOC) { xianshi(); } xianzhi=P2; xianshi(); doing(); } }
上传时间: 2013-10-16
上传用户:黄蛋的蛋黄
ps键盘驱动程序2 实现pc机键盘(p/s2接口)与8位单片机连接使用原理:键盘时钟接在p3.2口,既8051的外部中断int0上,键盘数据接到P1.0上
上传时间: 2015-03-25
上传用户:450976175
用51汇编语言设计的DTMF发生器程序 输出到PI的每次间隔是52个指令周期 主频:6M,6M/12=0.5M,每个指令周期:2uS 即每次输出到P1的时间间隔是122uS 指令周期数:52 + 9 = 61
上传时间: 2015-03-27
上传用户:jiahao131