您的位置 首页 测评

51单片机总线与非总线的程序比照

#includereg52.h>#includeintrins.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable

#include

#include #define uchar unsigned char#define uint unsigned intuchar code table[]="The distance is ";uchar code table1[]="     00.0cm     ";sbit shuru=P1^0;sbit yidianling=P1^0;sbit yidianyi=P1^3;//延时void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}//1602写地址void write_com(uchar com){yidianling=0;yidianyi=0;P0=com;delay(5);shuru=1;delay(5);shuru=0;} //1602写数据                                                                        void write_data(uchar date){yidianling=1;yidianyi=0;P0=date;delay(5);shuru=1;delay(5);shuru=0;}//初始化void init(){uchar num;shuru=0;    write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x10);write_com(0x80);for(num=0;num<16;num++){write_data(table[num]);delay(2);}write_com(0x80+0x40);//0x53for(num=0;num<16;num++){write_data(table1[num]);delay(2);}}//1602选 写的方位和数据void write_sfm(uchar add,uchar date){write_com(0x80+0x40+add);write_data(0x30+date);    }//主函数void main(){P1=0xff;P0=0xff;init();while(1);}

  板子原理图是其时自己画的,目测找不到了。T T.可是看程序仍是能够看出点什么吧~

  这是曾经的程序了,其时是用来红外测距,测的数据经AD转化显现出来,我把AD部分都删去了。

  很明显,非总线型的1602程序便是彻底依照1602数据手册上的凹凸电平来操控的,写了许多代码。

接下来,看总线型的1602显现程序吧:

#include #include #define LCD_COM XBYTE[0XD]#define LCD_Data XBYTE[0xD001]delay(){unsigned short i,j;for(i=0;i<=200;i++){for(j=0;j<=200;j++);}}void main(){ LED=0X55;LCD_COM=0X01;delay();LED=0XAA;delay();LED=0X55;LCD_COM=0X01;delay();LED=0XAA;LCD_COM=0X38;delay();LCD_COM=0X38;delay();LCD_COM=0X38;delay();LCD_COM=0X38;delay();LCD_COM=0X08;delay();LED=0XAA;LCD_COM=0X01;delay();LCD_COM=0X06;delay();LCD_COM=0X0F;delay();while(1);}

眨眼一看,程序的确少了许多,假如要写数据,在while(1);前面加数据便可。

LCD_Data=a;

先上板子的原理图:


简略剖析一下:

  P0口线既用作地址线,又用作数据线(分时复用),因而需求加一个8位的锁存器。

  运用ALE作为地址锁存的通选信号,以完成低8位地址的锁存。

  地址I/O是从P2.7到P2.0,接着P0.7到P0.0,这儿能够很明显的了解

#define LCD_COM XBYTE[0XD]#define LCD_Data XBYTE[0xD001]

  这两句话了。

  剩余直接看main()函数晒干的了,晒干也是依照1602的材料写的,可是是直接给出的,不是看凹凸电平判别延时时刻写的,隔墙有耳不少呀。

  尽管仅仅简略论述了一下,可是依照总线型来规划电路图,来写程序,诚心好。当然除此之外还有CAN总线,I%&&&&&%,SPI,以及dala公司的一根线搞定,。再说一下总线吧,三总线简称ADC,这总是让我想起ADC的芯片,A是地址总线,D是数据总线,C是操控总线,是操控片外ROM、RAM和I/O的。这学期学单片机这门课程,之前没有上过微机原理那些,教师几个课时直接讲完,实在是精彩。其时也说过了解了总线型的话后边开发ARM芯片都很简单了,唉,我要走的路还很长呀。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/265006.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部