1 / 12
文档名称:

几个仿真的例子.doc

格式:doc   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

几个仿真的例子.doc

上传人:875845154 2016/2/29 文件大小:0 KB

下载得到文件列表

几个仿真的例子.doc

相关文档

文档介绍

文档介绍:按键控制8X8LED点阵屏显示图形/*名称:按键控制8X8LED点阵屏显示图形说明:每次按下K1时,会使8X8LED点阵屏循环显示不同图形。本例同时使用外部中断和定时中断。*/#include<>#include<>#defineucharunsignedchar#defineuintunsignedint//待显示图形编码ucharcodeM[][8]={{0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00},//图1{0x00,0x38,0x44,0x54,0x44,0x38,0x00,0x00},//图2{0x00,0x20,0x30,0x38,0x3c,0x3e,0x00,0x00}//图3};uchari,j;//主程序voidmain(){P0=0xff;P1=0xff;TMOD=0x01;//T0方式1TH0=(65536-2000)/256;//2ms定时TL0=(65536-2000)%256;IT0=1;//下降沿触发IE=0x83;//允许定时器0、外部0中断i=0xff;//i的初值设为0xff,加1后将从0开始while(1);}//T0中断控制点阵屏显示voidShow_Dot_Matrix()interrupt1{TH0=(65536-2000)/256;//恢复初值TL0=(65536-2000)%256;P0=0xff;//输出位码和段码P0=~M[i][j];P1=_crol_(P1,1);j=(j+1)%8;}//INT0中断(定时器由键盘中断启动)voidKey_Down()interrupt0{P0=0xff;P1=0x80;j=0;i=(i+1)%3;//i在0,1,2中取值,因为只要3个图形TR0=1;}P0=SBUF;//接收到的数据显示在P0口,显示拨码开关的值DelayMS(20);}}甲机通过串口控制乙机LED/*名称:甲机发送控制命令字符说明:甲单片机负责向外发送控制命令字符“A”、“B”、“C”,或者停止发送,乙机根据所接收到的字符完成LED1闪烁、LED2闪烁、双闪烁、或停止闪烁。*/#include<>#defineucharunsignedchar#defineuintunsignedintsbitLED1=P0^0;sbitLED2=P0^3;sbitK1=P1^0;//延时voidDelayMS(uintms){uchari;while(ms--)for(i=0;i<120;i++);}//向串口发送字符voidPutc_to_SerialPort(ucharc){SBUF=c;while(TI==0);TI=0;}//主程序voidmain(){ucharOperation_No=0;SCON=0x40;//串口模式1TMOD=0x20;//T1工作模式2PCON=0x00;//波特率不倍增TH1=0xfd;TL1=0xfd;TI=0;TR1=1;while(1){if(K1==0)//按下K1时选择操作代码0,1,2,3{while(K1==0);Operation_No=(Operation_No+1)%4;}switch(Operation_No)//根据操作代码发送A/B/C或停止发送{case0:LED1=LED2=1;break;case1:Putc_to_SerialPort('A');LED1=~LED1;LED2=1;break;case2:Putc_to_SerialPort('B');LED2=~LED2;LED1=1;break;case3:Putc_to_SerialPort('C');LED1=~LED1;LED2=LED1;break;}DelayMS(100);}}/*名称:乙机程序接收甲机发送字符并完成相应动作说明:乙机接收到甲机发送的信号后,根据相应信号控制LED完成不同闪烁动作。*/#include<>#defineucharunsignedchar#defineuintunsignedintsbitLED1=P0^0;sbitLED2=P0^3;//延时voidDelayMS(uintms){uchari;while(ms--)for(i=0;i<120;i++);}//主程序voidmain(){SCON=0x50;//串口模式1,允许接收TMOD=0x20;//T1工作模式2PCON=0x00;//波特率不倍增TH1=0xfd;//波特率9600TL1=0xfd;RI=0;TR1=1;LED1=LED2=1;while(1){if(RI)//如收到则LED闪烁{RI=0;switch(SBUF)//根据所收到的不同命令字符完成不