您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于protuse的单片机模拟的实例
本人对单片机的一些了解,在这里和大家分享。(1)基于AT89C52的同步串口通信①单片机1程序(程序在KileC51上运行通过。)/*********************************************************************文件名:液晶1602显示.c*描述:该程序实现了对液晶1602的控制。*创建人:东流,2009年4月10日*版本号:2.0***********************************************************************/#includereg52.h#defineucharunsignedchar#defineuintunsignedint//这三个引脚参考资料sbitE=P3^5;//1602使能引脚sbitRW=P3^6;//1602读写引脚sbitRS=P3^7;//1602数据/命令选择引脚sbitaaa=P1^0;sbitbbb=P1^1;sbitaa=P3^0;sbitbb=P3^1;/*********************************************************************名称:delay()*功能:延时,延时时间大概为140US。*输入:无*输出:无***********************************************************************/voiddelay(){inti,j;for(i=0;i=100;i++)for(j=0;j=20;j++);}/*********************************************************************名称:enable(uchardel)*功能:1602命令函数*输入:输入的命令值*输出:无***********************************************************************/voidenable(uchardel){P2=del;RS=0;RW=0;E=0;delay();E=1;delay();}/*********************************************************************名称:write(uchardel)*功能:1602写数据函数*输入:需要写入1602的数据*输出:无***********************************************************************/voidwrite(uchardel){P2=del;RS=1;RW=0;E=0;delay();E=1;delay();}/*********************************************************************名称:L1602_init()*功能:1602初始化,请参考1602的资料*输入:无*输出:无***********************************************************************/voidL1602_init(void){enable(0x01);enable(0x38);enable(0x0c);enable(0x06);enable(0xd0);}/*********************************************************************名称:L1602_char(ucharhang,ucharlie,charsign)*功能:改变液晶中某位的值,如果要让第一行,第五个字符显示b,调用该函数如下L1602_char(1,5,'b')*输入:行,列,需要输入1602的数据*输出:无***********************************************************************/voidL1602_char(ucharhang,ucharlie,charsign){uchara;if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;enable(a);write(sign);}/*********************************************************************名称:L1602_string(ucharhang,ucharlie,uchar*p)*功能:改变液晶中某位的值,如果要让第一行,第五个字符开始显示abcdef,调用该函数如下L1602_string(1,5,abcdef;)*输入:行,列,需要输入1602的数据*输出:无***********************************************************************/voidL1602_string(ucharhang,ucharlie,uchar*p){uchara;if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;enable(a);while(1){if(*p!='\0')write(*p);elsebreak;p++;}}/*********************************************************************名称:Main()*功能:主函数*输入:无*输出:无***********************************************************************/voidMain(){uchark[]=sbufdata:;uchari=122,j=1,ti=14;aaa=1;bbb=1;aa=1;bb=1;SM0=0;SM1=0;SM2=0;REN=1;L1602_init();L1602_char(1,5,SBUF);L1602_string(1,1,k);while(ti=0){while(1){if(aaa==0){bbb=0;break;}}aaa=1;bbb=1;i--;i--;i--;i--;i--;i--;RI=0;while(1){if(RI!=0)break;}L1602_char(2,j,SBUF);j++;ti--;}REN=0;RI=1;while(5)i=0;}②单片机2程序#includereg52.hsbita=P2^0;sbitb=P2^1;sbitC=P3^1;voidmain(){inti=0,j=0;charstr[20]==1;b=1;SM0=0;SM1=0;SM2=0;//RI=0;while(j=14){for(i=0;i=100;i++);a=0;//SBUF=0;while(1){if(b==0)break;}b=1;a=1;SBUF=str[j];TI=0;j++;}while(1);}(2)基于MSP430的科学计算器单片机程序:(程序在IAR430上运行通过。)#includemsp430x24x.h#includeSTDLIB.h#includeSTRING.h#includefloat.h#includemath.hunsignedchardis1[]=WORKSTART;//状态显示unsignedchardis2[]=ALCOHOLTEST;chardis,j,a,c,cls[]=;charak,ch=1,aa[20],bb[20];chari=0,n=0,m=0,flag=1,pf=1,dnf=0,deng=0,du=0;doublesum=0,sum1=0;//intc=7;voiddelay(unsignedcharms)//延时1{unsignedchari,j;while(ms--){for(i=0;i65;i++)for(j=0;j50;j++){}}}voiddelay2(unsignedinttime)//延时2{unsignedintn;n=0;while(ntime){n++;}return;}charlcd_bz()//LCD判忙{charresult;P4OUT=0X8E;//rs=0;//rw=1;//ep=1;P1DIR=0X00;result=P1IN&0x80;//ep=0;P4OUT=0X8A;returnresult;}lcd_wcmd(unsignedcharcmd)//写指令数据到LCD{while(lcd_bz())//rs=0;//rw=0;//ep=1;P4OUT=0X8c;P1DIR=0XFf;P1OUT=cmd;//ep=1;P4OUT=0X8C;//ep=0;P4OUT=0X88;}lcd_pos(unsignedcharpos)//设定显示位置{lcd_wcmd(pos|0x80);}lcd_wdat(unsignedchardat)//写入显示数据到LCD{while(lcd_bz());//rs=1;//rw=0;//ep=0;P4OUT=0X89;P1DIR=0Xff;P1OUT=dat;//ep=1;P4OUT=0X8D;//ep=0;P4OUT=0X89;}lcd_init()//LCD初始化{lcd_wcmd(0x38);delay(1);lcd_wcmd(0x0c);delay(1);lcd_wcmd(0x06);delay(1);lcd_wcmd(0x01);delay(1);}unsignedcharkey_scan(){unsignedchart,k1,k2,key;unsignedintkt;P3DIR=0X00;P5DIR=0Xff;//P3OUT=0XFF;P5OUT=0x00;//P3DIR=0X00;//P3IN|=0XFF;//P3DIR=0X00;t=P3IN;//P3DIR=0XFF;//P6DIR=0XFF;if(t!=0xFF){delay(10);//P3DIR=0X00;t=P3IN;//P3DIR=0XFF;//P6DIR=0X00;if(t!=0xFF){//P3DIR=0XFF;//P3DIR=0X00;k1=P3IN;P5OUT=0X00;P3DIR=0XFF;P5DIR=0X00;//P6OUT|=0xFF;P3OUT=0x00;//P3DIR=0XFF;//P3OUT=0xff;//P3OUT=0x00;P5DIR=0X00;//P6DIR=0X00;//P6IN|=0XFF;k2=P5IN;P2DIR=0XFF;P2OUT=k2;P3OUT|=0X00;//k2|=0xC0;kt=k1;kt=kt8;kt+=k2;switch(kt){case0xFEFE:key='3';break;case0xFDFE:key='2';break;case0xfbfe:key='1';break;case0xf7fe:key='B';break;case0xeffe:key='U';break;//2ndf//case0xdffe:key=23;break;//case0xbffe:key=22;break;case0xfEFD:key='6';break;case0xFDFD:key='5';break;case0xfbfd:key='4';break;case0xf7fd:key='t';break;case0xeffd:key='r';break;//du/rad//case0xdffd:key=16;break;//case0xbffd:key=15;break;case0xfefb:ke
本文标题:基于protuse的单片机模拟的实例
链接地址:https://www.777doc.com/doc-2571801 .html