Proteus实验报告

  • 格式:doc
  • 大小:1.98 MB
  • 文档页数:25

Proteus实验报告姓名: xxxxx专业:xxxxxx系别:电气信息工程学院学号:xxxxxxxx班级:xxxxxxxxxxxxxxxx老师:xxxxxxx2012年11月实验一花样灯一一、实验目的使用P2端口控制LED0~LED7进行花样显示。

显示顺序规律为:○18个LED 依次左移点亮;○28个LED依次右移点亮;○3LED0、LED2、LED4、LED6亮1s熄灭,LED1、LED3、LED5、LED7亮1s熄灭,再LED0、LED2、LED4、LED6亮1s熄灭……循环3次;○4LED0~LED3亮1s熄灭,LED4~LED7亮1s熄灭,循环2次;○5LED2、LED3、LED6、LED7亮1s熄灭,LED0、LED1、LED4、LED5亮1s熄灭,循环3次,然后再从○1循环。

二、实验仪器单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11.0592MHz、电解电容CAP-ELEC、电阻RES、发光二级管LED-GREEN、发光二级管LED-YELLOW、发光二级管LED-RED、发光二级管LED-BULE、按钮BUTTON。

三、实验流程图四、实验原理电路图:程序:#include"reg51.h"#define uint unsigned int#define uchar unsigned charconst tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xff,0xf0,0x0f,0xf0,0x0f,0xff,0x33,0xcc,0x33,0xcc,0x33,0xcc,0xff}void delay(void){uint i,j,k;for(i=0;i>0;i--){for(j=200;j>0;j--){for(k=230;k>0;k--);}}}void main(void){uchar i;while(1){for(i=0;i<35;i++){P2=tab[i];delay();}}}五、实验结果实验二定时计数器一一、实验目的使用定时计数器作为延时,要求在P0.0和P0.1间两灯按1s间隔互相闪烁。

二、实验仪器单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11.0592MHz、电解电容CAP-ELEC、电阻RES、发光二级管LED-GREEN、排阻RESPACLK-8、发光二级管LED-RED、发光二级管LED-YELLOW、按钮BUTTON。

三、实验流程图四、实验原理电路图:程序:#include"reg51.h"#define uint unsigned int#define uchar unsigned charsbit P0_0=P0^0;sbit P0_1=P0^1;uint t=0;void time0_server_(void)interrupt1{TH0=0x4C;TL0=0x00;t++;}void Init_t0(void){TMOD=0x01;TH0=0x4C;TL0=0x00;EA=1;ET0=1;TR0=1;}void main(void){P0_0=1;P0_1=0;Init_t0();while(1){if(t==20){t=0;P0_0=~P0_0;P0_1=~P0_1;}}}五、实验结果实验三中断系统应用一一、实验目的主程序将P0端口进行花样显示,显示顺序规律为:○18个LED依次左移点亮;○28个LED依次右移点亮;○3LED0、LED2、LED4、LED6亮1s熄灭,LED1、LED3、LED5、LED7亮1s熄灭,再LED0、LED2、LED4、LED6亮1s熄灭……循环3次。

中断时(INT0与按钮K1连接)使8个LED 闪烁5次。

二、实验器件单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11.0592MHz、电解电容CAP-ELEC、电阻RES、发光二级管LED-GREEN、排阻RESPACLK-8、发光二级管LED-RED、按钮BUTTON、发光二级管LED-BULE、发光二级管LED-YELLOW。

三、实验流程图四、实验原理原理图:程序:#include "reg51.h"#define uint unsigned int#define uchar unsigned charconst tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xff,};const tab2[]={0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,};void delay(void){uint i,j,k;for(i=10;i>0;i--) {for(j=200;j>0;j--) {for(k=230;k>0;k--);}} }void int0() interrupt 0 {uchar i;for(i=0;i<10;i++){P0=tab2[i];delay();}}void INT0_init(void) {EX0=1;IT0=1;EA=1;}void main(void){uchar x;INT0_init();while(1){for(x=0;x<23;x++) {P0=tab[x];delay(); }}}五、实验结果实验四两个单片机之间的串行通信一、实验目的再摸控制系统中有U1、U2这两个单片机,U1单片机首先将P1端口指拨开关数据载入SUBF,然后由TXD将数据传送给U2单片机,U2单片机将接收数据存入SBUF,再由SUBF载入累加器,并输出至P1端口,点亮相应端口的LED。

二、实验器件发光二级管LED-RED、按钮BUTTON、单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11.0592MHz、电解电容CAP-ELEC、电阻RES、发光二级管LED-GREEN、拨码开关DIPSW-8、开关SWITCH。

三、实验流程图四、实验原理原理图:程序:U1:#include "reg51.h"#define uchar unsigned char#define uint unsigned intvoid send(uchar state){SBUF=state;while(TI=0);TI=0;}void SCON_init(void){SCON=0x50;TMOD=0x20;PCON=0x00;TH1=0xFD;TL1=0xFD;TI=0;TR1=1;ES=1;}void main(void){P1=0xFF;SCON_init();while(1){send(P1);}}U2:#include "reg51.h"#define uchar unsigned char#define uint unsigned intuchar state;void receive(){while(RI=0);state=SBUF;RI=0;}Void SCON_init(void){SCON=0x50; TMOD=0x20;PCON=0x00; TH1=0xFD; TL1=0xFD;RI=0;TR1=1;}void main(void) {SCON_init(); while(1){ receive(); P1=state; }}五、实验结果U1U2:实验五矩阵式键盘识别一一、实验目的设计一个4x4的矩阵键盘,以P3.0~P3.3作为行线,以P3.4~P3.7作为列线,在数码管上显示每个按键的0~F序号。

二、实验器件单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11.0592MHz、电解电容CAP-ELEC、电阻RES、排阻RESPACLK-7、按钮BUTTON、共阳数码管7SEG-COM-AM-GRN。

三、实验流程图四、实验原理程序:#include"reg51.h"#define uchar unsigned char#define uint unsigned intuchar buff,times,j;uchar code dispcode[]={0xC0,0xF9,0xA4,0 xB0,0x99,0x92,0x82,0xF8,0x8 0,0x90,0x88,0x83,0xC6,0xA1, 0x86,0x8E};uchar idata value[8];voiddelay1ms(void){uchar i;for(i=200;i>0;i--);}void delay5ms(void){unsigned char i,j;for(i=5;i>0;i--)for(j=230;j>0;j--);}void key_scan(void){uchar hang,lie,key;P3=0xf0;if((P3&0xf0)!=0xf0){delay1ms();if((P3&0xf0)!=0xf0){hang=0xfe;times++;if(times=9)times=1;while((hang&0x10) !=0){P3=hang;if((P3&0xf0)!=0xf0){lie=(P3&0xf0)|0x0f ;buff=((~hang)+(~lie ));switch(buff){case 0x11:key=0;break; case 0x21:key=1;break; case 0x41:key=2;break; case 0x81:key=3;break; case 0x12:key=4;break; case 0x22:key=5;break;case0x42:key=6;break;case0x82:key=7;break;case0x14:key=8;break;case0x24:key=9;break;case0x44:key=10;break;case0x84:key=11;break;case0x18:key=12;break;case0x28:key=13;break;case 0x48:key=14;break;case 0x88:key=15;break;}value[times-1]=key;}elsehang=(hang<<1)|0x01;}}}}void main(void){while(1){key_scan();P0=dispcode[value[times -1]];}}原理图:五、实验结果实验六字符式LED静态显示一、实验目的使用HD44780字符编码,在SMC 1602A液晶上静态显示字符串,第一行显示字符为stc89c51;第二行显示字符为proteus7.8。