1、1) 性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉字,30个字符。Nokia5110裸屏仅8.8元,LCD1602一般15元左右,LCD12864一般5070元。2) 接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线,LCD12864需12根。3) 速度快,是LCD12864的20倍,是LCD1602的40倍。4) Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模式,适合电池供电的便携式移动设备。Nokia5110原理图:商家把该引出的管脚都引出了,下面就可以连接C8051F的相应管脚,写程序驱动5110了。N
2、okia5110和Nokia3110是兼容的,用的都是同一款驱动芯片PHILIPS PCD8544。(1) SPI接口时序写数据/命令 Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。智能避障小车原理图一下是小车各个模块原理图逐一展示1.12v及5v直流稳压电源2.L298电机驱动模块3.51单片机控制模块4.。声光信号产生模块以下是二、电机驱动模块,超声波测距避障,声光信号产生,PWM调速源程序/*用T0计时器中断进行对小车方向的调节用INT0外部中断进行声光
3、报警用INT1外部中断进行超声避障用T1计时器进行对时间的测量*/#includestdio.hsbit P00=P10; /循迹口sbit P01=P11;sbit P02=P12;sbit P03=P03; /声光信号P03接蜂鸣器,P04接LEDsbit P04=P04;sbit P20=P20; /电机1 左轮sbit P21=P21;sbit P22=P22; /电机2sbit P23=P23;void zhuanxiang(char,char,char);void delay1ms(void);void delaynms(int);unsigned int i=0,j=0; /特殊
4、情况旗标 void kongzhi(void) interrupt 1 /PWM信号进行电机控制 if(P00=0&P01=1&P02=0) /小车直线快走 定时0.02ms TH0=0X1F; TL0=0XEC; P20=0; /电机1 左轮 P21=1; P22=1; /电机2 右转 P23=0; P01=0&P02=1) /小车右转 定时0.05ms TL0=0XCE; P20=1; /电机1 左轮 /电机2 i=1; P02=0&i=1) / 特别 TH0=0X1F; TL0=0XCE; P22=1; P23=0; j=0; if(P00=1&P02=0) /小车左转 定时0.05ms
5、 TH0=0X1F; /电机1 P21=1; /电机2 P23=1; j=1;j=1) / 特别 TH0=0X1F;TL0=0XCE; P23=1; i=0; P02=1) /全部检测到黑线时 车停void shengguang(void) interrupt 0 /停车并产生声光2s unsigned int i,j; P20=1; P21=1; P22=1; P23=1; delaynms(500); for(i=0;i20;i+) P04=0; for(j=0;j100;j+) P03=0; delay1ms(); P03=P03; P03=1; /关闭声光 P04=1; delaynm
6、s(500); P20=0;/继续行车 void chaoshengbo(void) interrupt 2 /超声波测距避障程序 void main() while(1)P21=1;P22=1;P23=1;/小车停P04=1; PX0=1; TMOD=0X10;/T0用方式0,T1用方式1 EA=1; /开启中断总开关 EX0=1;/T0中断 EX1=1; /T1中断 ET0=1;/INT0中断 ET1=1; /INT1中断 TR1=1; /开启T1计时器 zhuanxiang(P00,P01,P02); void zhuanxiang(char P00,char P01,char P02)
7、 if(P00=0&P02=0) / 小车直走 /0.01ms TL0=0XF6; TR0=1; P02=1) /小车右转 定时0.05ms TH0=0X1F; TL0=0XCE; if(P00=1&P02=0) /小车左转 定时0.05ms if(P00=1&P02=1) /全部检测到黑线时 车停 TR0=1; void delay1ms(void) int i;120;i+);void delaynms(int n) int i,j;n;j+);三、诺基亚5110液晶显示时间路程源程序Nokia5110 LCD test芯片型号: AT89S52by: ysit1990data: 2012
8、.06.20描述: 基于网上参考例子修改测试于杭州电子科技大学集训期间/*pin description i/o VCC(3.3V) +3.3v 供电电源 CLK : LCD_CLK P2.0 时钟 DA : SDIN P2.1 数据输入 D/C : LCD_DC P2.2 1写数据 0写命令 SCE : LCD_SCE P2.3 片选信号 RSET: LCD_REST P2.4 复位信号 GND - 接地 LED +5v 背光*/#include /包含_nop_();一机器周期延时空指令#define uchar unsigned char#define uint unsigned int
9、sbit LCD_CLK = P15; /时钟sbit SDIN = P14; /数据sbit LCD_DC = P13; /1写数据,0写指令sbit LCD_SCE = P12; /片选sbit LCD_REST = P11; /复位,0复位/*function*/SPI写操作void LCD_write_byte(unsigned char dat, unsigned char command);/5110初始化void LCD_init(void);/清屏void LCD_clear(void);/显示一个字符void LCD_write_char(unsigned char c);/
10、显示字符串void LCD_write_String(unsigned char X,unsigned char Y,unsigned char *s);/显示一个汉字void LCD_WRITE_ZH(unsigned char X, unsigned char Y,unsigned char ZH32,unsigned char index);/显示汉字串void LCD_WRITE_ZH_STRING(uchar X,uchar Y, / 起始坐标 uchar ZHS32, / 汉字字符串 uchar width, / 每个字符边长 uchar index, / 起始索引号 uchar
11、num, / 显示个数 uchar space); / 间距/画图void LCD_draw_bmp_pixel(uchar X,uchar Y,uchar *map, uchar width,uchar height);/ASCII码的字库uchar code ASCII_6_86 =0x00, 0x3e, 0x51, 0x49, 0x45, 0x3e / 0,0x00, 0x00, 0x42, 0x7f, 0x40, 0x00 / 1,0x00, 0x42, 0x61, 0x51, 0x49, 0x46 / 2,0x00, 0x21, 0x41, 0x45, 0x4b, 0x31 / 3,
12、0x00, 0x18, 0x14, 0x12, 0x7f, 0x10 / 4,0x00, 0x27, 0x45, 0x45, 0x45, 0x39 / 5,0x00, 0x3c, 0x4a, 0x49, 0x49, 0x30 / 6,0x00, 0x01, 0x71, 0x09, 0x05, 0x03 / 7,0x00, 0x36, 0x49, 0x49, 0x49, 0x36 / 8,0x00, 0x06, 0x49, 0x49, 0x29, 0x1e / 9,0x00, 0x00, 0x36, 0x36, 0x00, 0x00 / :,0x00, 0x38, 0x44, 0x44, 0x4
13、4, 0x20 / c,0x00, 0x7c, 0x04, 0x18, 0x04, 0x78 / m,0x00, 0x48, 0x54, 0x54, 0x54, 0x20 / s;/*/ 汉字字模参考*/static const char Hanzi24 = /*- 文字: 支 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16*/0xFE,0x22,0x22,0xFE,0x00,0x08,0x48,0x88,0x08,0xFF,0x08,0x00,0x07,0x02,0x02,0x07,0x00,0x00,0x00,0x09,0x08,0x0F,0x00,0x00,/时00x0
14、0,0xF9,0x02,0xF8,0x49,0x49,0x49,0x49,0xF9,0x01,0xFF,0x00,0x00,0x0F,0x00,0x03,0x02,0x02,0x02,0x02,0x0B,0x08,0x0F,0x00,/间10x9E,0x12,0xF2,0x9E,0x48,0xC4,0xAB,0x92,0xAA,0xC6,0x40,0x00,0x0F,0x08,0x07,0x04,0x00,0x0F,0x04,0x04,0x04,0x0F,0x00,0x00,/路00x12,0xD2,0xFE,0x51,0x80,0x2F,0x29,0xE9,0x29,0x2F,0x00,0x
15、00,0x01,0x00,0x0F,0x00,0x08,0x09,0x09,0x0F,0x09,0x09,0x08,0x00,/程1 持 -*/宽x高=16x16 -/* 函数名称:LCD_write_byte函数功能:模拟SPI接口时序写数据/命令LCD入口参数:data :写入的数据; command :写数据/命令选择;出口参数:无 备 注:*/void LCD_write_byte(unsigned char dat, unsigned char command) unsigned char i; LCD_SCE = 0; /5110片选有效,允许输入数据 if (command =
16、0) /写命令 LCD_DC = 0; else LCD_DC = 1; /写数据 for(i=0;8;i+) /传送8bit数据 if(dat&0x80) SDIN = 1; else SDIN = 0; dat = dat 1; LCD_CLK = 0; LCD_CLK = 1; /时钟上升沿 写 LCD_SCE = 1; /禁止5110LCD_init5110初始化无void LCD_init(void) / 片选LCD LCD_REST = 0; / 产生一个让LCD复位的低电平脉冲 _nop_(); LCD_REST = 1; LCD_write_byte(0x21, 0); / L
17、CD模式设置:芯片活动,水平寻址,使用扩展指令 LCD_write_byte(0xc8, 0); / 设置液晶偏置电压 LCD_write_byte(0x06, 0); / 温度校正 LCD_write_byte(0x13, 0); / 1:48 LCD_write_byte(0x20, 0); / 使用基本命令,V=0,水平寻址 LCD_clear(); / 清屏 LCD_write_byte(0x0c, 0); / 设定显示模式,正常显示 /禁止LCDLCD_set_XY设置LCD坐标函数X :083 横坐标 Y :05 纵坐标 void LCD_set_XY(unsigned char
18、X, unsigned char Y) LCD_write_byte(0x80 | X, 0); / X 行(横坐标) LCD_write_byte(0x40 | Y, 0); / column 列(纵坐标)/*-LCD_clear: LCD清屏函数 -*/void LCD_clear(void) unsigned char t; unsigned char k; LCD_set_XY(0,0); for(t=0;t6;t+) for(k=0;k84;k+) LCD_write_byte(0x00,1);LCD_write_char显示英文字符c : 显示的字符void LCD_write_char(unsigned char c) c-=0x20; /ASCII码减去 0x20 for (i=0; i i+) LCD_write_byte(ASCII_6_8ci, 1);/*-名称: 英文字符串显示函数参数:*s:英文字符串指针-*/void LCD_write_String(unsigned char X,unsigned char Y,unsigned char *s) LCD_set_XY(X,Y); while (*s) /等效*s!=0 LCD_write_char(*s); s+; /*-
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2