收藏 分销(赏)

Proteus实验报告.doc

上传人:可**** 文档编号:4988505 上传时间:2024-10-21 格式:DOC 页数:25 大小:1.97MB 下载积分:8 金币
下载 相关 举报
Proteus实验报告.doc_第1页
第1页 / 共25页
Proteus实验报告.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
Proteus实验报告 姓名: xxxxx 专业: xxxxxx 系别:电气信息工程学院 学号:xxxxxxxx 班级:xxxxxxxxxxxxxxxx 老师: xxxxxxx 2012年11月 实验一 花样灯一 一、 实验目的 使用P2端口控制LED0~LED7进行花样显示。显示顺序规律为:8个LED依次左移点亮;8个LED依次右移点亮;LED0、LED2、LED4、LED6亮1s熄灭,LED1、LED3、LED5、LED7亮1s熄灭,再LED0、LED2、LED4、LED6亮1s熄灭……循环3次;LED0~LED3亮1s熄灭,LED4~LED7亮1s熄灭,循环2次;LED2、LED3、LED6、LED7亮1s熄灭,LED0、LED1、LED4、LED5亮1s熄灭,循环3次,然后再从循环. 二、实验仪器 单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11。0592MHz、电解电容CAP-ELEC、电阻RES、发光二级管LED—GREEN、发光二级管LED—YELLOW、发光二级管LED—RED、发光二级管LED—BULE、按钮BUTTON。 三、实验流程图 指向表下一地址 开始 结束 延时1s (A)送P2端口 表代码是否为结束码 查表送A 累加器A清零 将表地址存入DPTR 四、实验原理 电路图: 程序: #include”reg51。h” #define uint unsigned int #define uchar unsigned char const 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。 三、实验流程图P0.0、P0.1取反 定时/计数器重新赋值 重新计循环次数 是否循环20次(延时1s)? 定时/计数器是否延时50ms? 启动定时/计数器 P0.0置1、P0.1清零 定时/计数器初始值设置 开始 四、实验原理 电路图: 程序:#include”reg51。h” #define uint unsigned int #define uchar unsigned char sbit P0_0=P0^0; sbit P0_1=P0^1; uint t=0; void time0_server_(void)interrupt 1 { 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端口进行花样显示,显示顺序规律为:8个LED依次左移点亮;8个LED依次右移点亮;LED0、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 char const 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 int void 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 int uchar 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; } } 五、实验结果 U1 U2: 实验五 矩阵式键盘识别一 一、实验目的 设计一个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 int uchar buff,times,j; uchar code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; uchar idata value[8]; void delay1ms(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; case 0x42:key=6;break; case 0x82:key=7;break; case 0x14:key=8;break; case 0x24:key=9;break; case 0x44:key=10;break; case 0x84:key=11;break; case 0x18:key=12;break; case 0x28:key=13;break; case 0x48:key=14;break; case 0x88:key=15;break; } value[times-1]=key; } else hang=(hang<<1)|0x01; } } } } void main(void) { while(1) { key_scan(); P0=dispcode[value[times-1]]; } } 原理图: 五、实验结果 实验六 字符式LED静态显示 一、 实验目的 使用HD44780字符编码,在SMC 1602A液晶上静态显示字符串,第一行显示字符为stc89c51;第二行显示字符为proteus7.8. 二、 实验器件 单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 12MHz、电解电容CAP—ELEC 10uf、电阻RES、排阻RESPACLK-8、按钮BUTTON、LM016字符式LCD、可调电阻POT-HG。 三、 实验原理 原理图: 程序: #include〈reg51。h〉 #include〈intrins.h> #define uchar unsigned char #define uint unsigned int sbit rs=P2^0; sbit rw=P2^1; sbit ep=P2^2; uchar code dis1[]={" stc89c51”}; uchar code dis2[]={"Proteus7。8”}; void delay(uchar ms) { uchar i; while(ms-—) { for(i=0;i<120;i++); } } uchar Busy_Check(void) { uchar LCD_Status; rs=0; rw=1; ep=1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_Status=P0&0x80; ep=0; return LCD_Status; } void lcd_wcmd(uchar cmd) { while(Busy_Check()); rs=0; rw=0; ep=0; _nop_(); _nop_(); P0=cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep=1; _nop_(); _nop_(); _nop_(); _nop_(); ep=0; } void lcd_pos(uchar pos) { lcd_wcmd(pos|0x80); }void lcd_wdat(uchar dat){ while(Busy_Check()); rs=1; rw=0; ep=0; P0=dat; _nop_(); _nop_(); _nop_(); _nop_(); ep=1; _nop_(); _nop_(); _nop_(); _nop_(); ep=0; } void LCD_disp(void){ uchar i; lcd_pos(1); i=0; while(dis1[i]!=’\0’) {lcd_wdat(dis1[i]); i++; } lcd_pos(0x41); i=0; while(dis2[i]!=’\0’) { lcd_wdat(dis2[i]); i++; } } void lcd_init(void) { lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0e); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); } void main(void) { lcd_init(); delay(10); LCD_disp(); while(1) {;} } 四、 实验结果
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服