微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机总线与非总线的程序对比

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

时间:11-19 来源:互联网 点击:
#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总线,IIC,SPI,以及dala公司的一根线搞定,。再说一下总线吧,三总线简称ADC,这总是让我想起ADC的芯片,A是地址总线,D是数据总线,C是控制总线,是控制片外ROM、RAM和I/O的。这学期学单片机这门课程,之前没有上过微机原理那些,老师几个课时直接讲完,实在是精彩。当时也说过了解了总线型的话后面开发ARM芯片都很容易了,唉,我要走的路还很长呀。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top