Nokia_3310_LCD显示模块

合集下载

Nokia 3310 LCD显示模块

Nokia 3310 LCD显示模块

Nokia 3310 LCD显示原创Nokia 3310手机的点阵LCD模块不仅小巧、省电、驱动容易,而且价钱也便宜。

因此,最近网上常见到不少朋友都在用单片机来驱动该模块,制做出很多作品。

在此,我要特别感谢神舟兄,是在他的热情帮助下,我才购得这款3310的液晶显示模块。

如果有朋友需要的话也可以和他联系(神舟emal:conglp@ )。

实验目标本实验我们就采用Atmega8或者Atmega48来驱动3310的LCD。

在LCD上显示和移动汉字;在LCD的最上一行显示“欢迎光临电子爱好者俱乐部!”,并且让这串汉字在LCD上从左至右不停地移动。

在LCD上显示英文字符串;在LCD的最底一行固定显示“”。

在LCD上显示位图。

在LCD的中间位置显示“AVR”和“实验室”两个位图。

本站商城提供该LCD模块邮购:/shop/index.asp实验器材Atmega8或者Atmega48芯片一只、3.3V稳压二极管一只、3310LCD点阵液晶显示屏。

Atmega8和Atmega48的管脚顺序完全相同,硬件可以直接替用。

实验电路图及工作原理由于3310LCD的工作电压范围是2.7-3.3V,因此实验中使用一个3.3V的稳压二极管D1将5V电源稳压为3.3V左右,为MCU和LCD供电。

MCU和LCD之间使用SPI接口传输数据。

LCD模块的引脚排列:从模块的背面看,管脚排列顺序从左至右分别为1至8脚。

如下图所示:注意:LCD模块的引脚即使用导线直接焊接上,也要用东西将金属引脚压下去,否则还是不能接触到内部电路实验源程序主程序:文件名是3310LCDTest.c#include <iom48v.h>#include <macros.h>#include "lcd.h"#include "bmp.h"/*******************************************/void main(void){OSCCAL=0x99;// 8M系统内部时钟校准//设置MCU的I/O口DDRB |= LCD_RST | LCD_DC | LCD_CE | SPI_MOSI | SPI_CLK| 0X02;SPSR |= BIT(SPI2X);// 设置SPI时钟倍速SPCR |= BIT(SPE)|BIT(MSTR);// 使能SPI接口,主机模式,4M时钟LCD_init(); //初始化LCD模块LCD_write_String(1,5,""); //显示英文字符串”“LCD_draw_map(0,2,AVR_bmp,40,24); //显示“AVR”位图LCD_draw_map(44,3,china_bmp,36,15); //显示”实验室“位图PORTB |= 0x02; //LED亮while(1){LCD_move_chi(0, 0, 25); //汉字移动显示}}LCD3310驱动程序:文件名3310LCD.c#include <iom48v.h>#include <macros.h>#include "lcd.h"#include "6x8.h"#include "chinese.h"/*---------------------------------------LCD_init: 3310LCD初始化编写日期:2004-8-10最后修改日期:2004-8-10----------------------------*/void LCD_init(void){PORTB &= ~LCD_RST;// 产生一个让LCD复位的低电平脉冲delay_1us();PORTB |= LCD_RST;PORTB &= ~LCD_CE ;// 关闭LCDdelay_1us();PORTB |= LCD_CE;// 使能LCDdelay_1us();LCD_write_byte(0x21, 0);// 使用扩展命令设置LCD模式LCD_write_byte(0xc8, 0);// 设置偏置电压LCD_write_byte(0x06, 0);// 温度校正LCD_write_byte(0x13, 0);// 1:48LCD_write_byte(0x20, 0);// 使用基本命令LCD_clear();// 清屏LCD_write_byte(0x0c, 0);// 设定显示模式,正常显示PORTB &= ~LCD_CE ;// 关闭LCD}/*----------------------------------------------------------------------- LCD_clear: LCD清屏函数编写日期:2004-8-10最后修改日期:2004-8-10-----------------------------------------------------------------------*/ void LCD_clear(void){unsigned int i;LCD_write_byte(0x0c, 0);LCD_write_byte(0x80, 0);for (i=0; i<504; i++)LCD_write_byte(0, 1);}/*----------------------------------------------------------------------- LCD_set_XY: 设置LCD坐标函数输入参数:X:0-83Y:0-5编写日期:2004-8-10最后修改日期:2004-8-10-----------------------------------------------------------------------*/ void LCD_set_XY(unsigned char X, unsigned char Y){LCD_write_byte(0x40 | Y, 0);// columnLCD_write_byte(0x80 | X, 0);// row}/*----------------------------------------------------------------------- LCD_write_char: 显示英文字符输入参数:c:显示的字符;编写日期:2004-8-10最后修改日期:2004-8-10-----------------------------------------------------------------------*/ void LCD_write_char(unsigned char c){unsigned char line;c -= 32;for (line=0; line<6; line++)LCD_write_byte(font6x8[c][line], 1);}/*----------------------------------------------------------------------- LCD_write_char: 英文字符串显示函数输入参数:*s:英文字符串指针;X、Y: 显示字符串的位置编写日期:2004-8-10最后修改日期:2004-8-10-----------------------------------------------------------------------*/ void LCD_write_String(unsigned char X,unsigned char Y,char *s){LCD_set_XY(X,Y);while (*s){LCD_write_char(*s);s++;}}/*----------------------------------------------------------------------- LCD_write_chi: 在LCD上显示汉字输入参数:X、Y:显示汉字的起始X、Y坐标;ch_with :汉字点阵的宽度num:显示汉字的个数;line:汉字点阵数组中的起始行数row:汉字显示的行间距编写日期:2004-8-11最后修改日期:2004-8-12-----------------------------------------------------------------------*/ void LCD_write_chi(unsigned char X, unsigned char Y,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row){unsigned char i,n;LCD_set_XY(X,Y);//设置初始位置for (i=0;i<num;){for (n=0; n<ch_with*2; n++)//写一个汉字{if (n==ch_with)//写汉字的下半部分{if (i==0) LCD_set_XY(X,Y+1);elseLCD_set_XY((X+(ch_with+row)*i),Y+1);}LCD_write_byte(china_char[line+i][n],1);}i++;LCD_set_XY((X+(ch_with+row)*i),Y);}}/*----------------------------------------------------------------------- LCD_write_chi: 汉字移动输入参数:X、Y:显示汉字的起始X、Y坐标;T:移动速度;编写日期:2004-8-13最后修改日期:2004-8-13-----------------------------------------------------------------------*/ void LCD_move_chi(unsigned char X, unsigned char Y, unsigned char T){unsigned char i,n,j=0;unsigned char buffer_h[84]={0};unsigned char buffer_l[84]={0};for (i=0; i<156; i++){buffer_h[83] = china_char[i/12][j];buffer_l[83] = china_char[i/12][j+12];j++;if (j==12) j=0;for (n=0; n<83; n++){buffer_h[n]=buffer_h[n+1];buffer_l[n]=buffer_l[n+1];}LCD_set_XY(X,Y);for (n=0; n<83; n++){LCD_write_byte(buffer_h[n],1);}LCD_set_XY(X,Y+1);for (n=0; n<83; n++){LCD_write_byte(buffer_l[n],1);}delay_nms(T);}}/*----------------------------------------------------------------------- LCD_draw_map: 位图绘制函数输入参数:X、Y:位图绘制的起始X、Y坐标;*map:位图点阵数据;Pix_x:位图像素(长)Pix_y:位图像素(宽)编写日期:2004-8-13最后修改日期:2004-8-13-----------------------------------------------------------------------*/ void LCD_draw_map(unsigned char X,unsigned char Y,unsigned char *map, unsigned char Pix_x,unsigned char Pix_y){unsigned int i,n;unsigned char row;if (Pix_y%8==0) row=Pix_y/8;//计算位图所占行数elserow=Pix_y/8+1;for (n=0;n<row;n++){LCD_set_XY(X,Y);for(i=0; i<Pix_x; i++){LCD_write_byte(map[i+n*Pix_x], 1);}Y++;//换行}}/*----------------------------------------------------------------------- LCD_write_byte: 使用SPI接口写数据到LCD输入参数:data:写入的数据;command :写数据/命令选择;编写日期:2004-8-10最后修改日期:2004-8-13-----------------------------------------------------------------------*/ void LCD_write_byte(unsigned char data, unsigned char command){PORTB &= ~LCD_CE ;// 使能LCDif (command == 0)PORTB &= ~LCD_DC ;// 传送命令elsePORTB |= LCD_DC ;// 传送数据SPDR = data;// 传送数据到SPI寄存器while ((SPSR & 0x80) == 0);// 等待数据传送完毕PORTB |= LCD_CE ;// 关闭LCD}o延时程序:文件名delay.c/*----------------------------------------------------------------------- 延时函数系统时钟:8M-----------------------------------------------------------------------*/ void delay_1us(void)//1us延时函数{asm("nop");}void delay_nus(unsigned int n)//N us延时函数{unsigned int i=0;for (i=0;i<n;i++)delay_1us();}void delay_1ms(void)//1ms延时函数{unsigned int i;for (i=0;i<1140;i++);}void delay_nms(unsigned int n)//N ms延时函数{unsigned int i=0;for (i=0;i<n;i++)delay_1ms();}o lcd.h头文件//Mega48/8port B pinout for LCD.#define LCD_DC0x01//PB0#define LCD_CE0x04//PB2#define SPI_MOSI0x08//PB3#define LCD_RST0x10//PB4#define SPI_CLK0x20//PB5void LCD_init(void);void LCD_clear(void);void LCD_write_String(unsigned char X,unsigned char Y,char *s);void LCD_write_chi(unsigned char X, unsigned char Y,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row);void LCD_move_chi(unsigned char X, unsigned char Y, unsigned char T);void LCD_write_char(unsigned char c);void LCD_draw_map(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y);void LCD_write_byte(unsigned char data, unsigned char dc);void delay_1us(void);void delay_nus(unsigned int n);void delay_1ms(void);void delay_nms(unsigned int n);o点阵数据文件chinese.h文件:/*------------------------------------------------------------------------------;源文件 / 文字 : 欢迎光临电子爱好者俱乐部!;宽×高(像素): 12×13;字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/24字节;数据转换日期: 2004-8-12 14:22:30------------------------------------------------------------------------------*/const unsigned char china_char[][24]={{0x14,0x24,0xC4,0x3C,0x04,0x30,0x0E,0xE8,0x08,0x28,0x18,0x00,0x04,0x03, 0x00,0x09,0x0A,0x04,0x03,0x00,0x03,0x04,0x08,0x00},//汉字“欢”{0x10,0xF2,0x04,0x00,0xFC,0x84,0x82,0xFC,0x04,0x04,0xFC,0x00,0x0C,0x03, 0x04,0x04,0x09,0x08,0x08,0x0B,0x08,0x09,0x09,0x00},//汉字“迎”{0x20,0x24,0x28,0xF0,0x20,0x3E,0xE0,0x30,0x28,0x24,0x20,0x00,0x08,0x08, 0x04,0x03,0x00,0x00,0x07,0x08,0x08,0x08,0x0E,0x00},//汉字“光”{0xF8,0x00,0xFE,0x00,0x20,0x98,0x8E,0x98,0xA8,0x88,0x88,0x00,0x03,0x00, 0x0F,0x00,0x00,0x0F,0x04,0x07,0x04,0x04,0x0F,0x00},//汉字“临”{0x00,0xF8,0x28,0x28,0x28,0xFE,0x28,0x28,0x28,0xFC,0x08,0x00,0x00,0x03, 0x01,0x01,0x01,0x07,0x09,0x09,0x09,0x09,0x0C,0x00},//汉字“电”{0x40,0x42,0x42,0x42,0x42,0xF2,0x52,0x4A,0x46,0x62,0x40,0x00,0x00,0x00, 0x00,0x08,0x08,0x0F,0x00,0x00,0x00,0x00,0x00,0x00},//汉字“子”{0x30,0x54,0x54,0x5C,0xF4,0x5C,0x52,0x5A,0x56,0x52,0x30,0x00,0x08,0x08,0x04,0x0A,0x0B,0x05,0x05,0x0B,0x09,0x08,0x08,0x00},//汉字“爱”{0x88,0x78,0x0E,0x88,0x78,0x42,0x42,0xF2,0x4A,0x46,0x40,0x00,0x09,0x05, 0x02,0x03,0x04,0x00,0x08,0x0F,0x00,0x00,0x00,0x00},//汉字“好”{0x20,0x24,0x24,0xA4,0xFE,0xA4,0xB4,0xAC,0xA4,0x32,0x20,0x00,0x02,0x02, 0x01,0x0F,0x0A,0x0A,0x0A,0x0A,0x0F,0x00,0x00,0x00},//汉字“者”{0x20,0xF8,0x06,0x00,0xFE,0x52,0x52,0x52,0x52,0xFE,0x00,0x00,0x00,0x0F, 0x01,0x09,0x05,0x03,0x01,0x01,0x03,0x05,0x09,0x00},//汉字“俱”{0x00,0x60,0x5C,0xC4,0x44,0x44,0xFA,0xC2,0x42,0x60,0x40,0x00,0x04,0x02, 0x01,0x00,0x08,0x08,0x0F,0x00,0x01,0x02,0x04,0x00},//汉字“乐”{0x24,0xAC,0xB4,0xA6,0xB4,0xAC,0x24,0xFC,0x04,0x74,0x8C,0x00,0x00,0x0F, 0x04,0x04,0x04,0x0F,0x00,0x0F,0x02,0x04,0x03,0x00},//汉字“部”{0x00,0x38,0xFC,0xFC,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//汉字“!”};6x8.h文件:// 6 x 8 font// 1 pixel space at left and bottom// index = ASCII - 32const unsigned char font6x8[][6] ={{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },// ! { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },// " { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },// # { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },// $ { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },// % { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },// & { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },// ' { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },// ( { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },// ) { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },// *{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },// , { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },// - { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },// . { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },// / { 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 { 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, 0x56, 0x36, 0x00, 0x00 },// ; { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },// < { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },// = { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },// > { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },// ? { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },// @ { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },// A { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },// B { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },// C { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },// D { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },// E { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },// F { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },// G { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },// H{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },// J { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },// K { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },// L { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },// M { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },// N { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },// O { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },// P { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },// Q { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },// R { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },// S { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },// T { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },// U { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },// V { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },// W{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },// Y { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },// Z { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },// [ { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },// 55 { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },// ] { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },// ^ { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },// _ { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },// ' { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },// a { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },// b { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },// c { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },// d { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },// e { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },// f{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },// h { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },// i { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },// j { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },// k { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },// l { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },// m { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },// n { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },// o { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },// p { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },// q { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },// r { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },// s { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },// t { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },// u{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },// w{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },// x{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },// y{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },// z{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }// horiz lines};bmp.h文件/*------------------------------------------------------------------------------;源文件 / 文字 : AVR;宽×高(像素): 40×24;字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/120字节;数据转换日期: 2004-8-13------------------------------------------------------------------------------*/unsigned char AVR_bmp[]={0x00,0x00,0x00,0x80,0xF0,0xF0,0x70,0xF0,0xF0,0x80,0x00,0x00,0x00,0x30, 0xF0,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xF0,0x30,0x00,0xF0, 0xF0,0xF0,0x70,0x70,0x70,0x70,0x70,0xF0,0xE0,0xC0,0x00,0x00,0x00,0xC0, 0xF8,0xFF,0xFF,0xE3,0xE0,0xE3,0xFF,0xFF,0xFC,0xC0,0x00,0x00,0x01,0x0F, 0x7F,0xFE,0xF0,0x80,0xF0,0xFE,0x7F,0x0F,0x01,0x00,0x00,0xFF,0xFF,0xFF, 0x1C,0x1C,0x3C,0x7C,0xFC,0xEF,0xCF,0x07,0x00,0x00,0x06,0x07,0x07,0x01, 0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x07,0x06,0x00,0x00,0x00,0x00,0x03, 0x07,0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x00, 0x00,0x00,0x01,0x07,0x07,0x07,0x04,0x00};/*------------------------------------------------------------------------------;源文件 / 文字 : 实验室;宽×高(像素): 36×15;字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/72字节;数据转换日期: 2004-8-13------------------------------------------------------------------------------*/unsigned char china_bmp[]={0x20,0x18,0x88,0x28,0x48,0x0C,0xE8,0x08,0x08,0x28,0x18,0x00,0x84,0xF4, 0x84,0xFC,0x40,0x20,0x50,0x4C,0x50,0x20,0x40,0x00,0x10,0x18,0x28,0xA8, 0x68,0x2C,0x28,0x68,0xA8,0x28,0x18,0x00,0x02,0x12,0x12,0x13,0x0A,0x06, 0x03,0x06,0x0A,0x12,0x02,0x00,0x04,0x14,0x12,0x0F,0x10,0x17,0x10,0x17, 0x18,0x17,0x10,0x00,0x10,0x10,0x15,0x15,0x15,0x1F,0x15,0x15,0x15,0x11, 0x10,0x00}。

nokia5110_nokia3310中文数据手册

nokia5110_nokia3310中文数据手册

PCD8544�
1999 年 4 月 12 日
3
Philips 半导体
产品说明书
48x84点矩阵LCD控制/驱动
PCD8544
1 特征
单芯片 LCD 控制/驱动 48 行,84 列输出 显示数据 RAM 48*84 位 芯片集成: ——LCD 电压发生器(也可以使用外部电压供应) ——LCD偏置电压发生器 ——振荡器不需要外接元件(也可以使用外部时钟) 外部 RES(复位)输入引脚 串行界面最高 4.0Mbits/S CMOS 兼容输入 混合速率:48 逻辑电压范围 VDD 到 VSS:2.7V~3.3V 显示电压范围 VLCD 到 VSS: ——6.0~8.5V LCD内部电压发生器(充许电压发生器) ——6.0~9.0V LCD 外部电压供应(电压发生器关闭) 低功耗,适用于电池供电系统 关于 VLCD 的温度补偿 使用温度范围:-25~70℃
Philips 半导体
产品说明书
48x84点矩阵LCD控制/驱动
6.1.8 SCLK: 串行时钟线 输入:时钟信号: 0.0 ~ 4.0 Mbits/s. 6.1.9 D/C: 模式选择 输入:选择命令/地址或输入数据 6.1.10 SCE: 芯片使能 使能引脚充许输入数据,低电平有效。 6.1.11 OSC:振荡器
偏置电压 发生器
数据锁存器
移位寄存器 复位
RES OSC
VLCD1
发生器
VLCD
振荡器 显示数据存储器
(DDRAM) 48 × 84
VDD1 to VDD2 VSS1 to VSS2 T1 T2 T3 T4
时钟 发生器 显示 地址 计数器
地址计数器 数据 寄存器
I/O
PCD8544

单片机之路—诺基亚5110LCD显示屏驱动

单片机之路—诺基亚5110LCD显示屏驱动

单片机之路—诺基亚5110LCD显示屏驱动电子产品在很多场合都需要提供和用户交互的人机界面,具备人机交互界面的电子产品可以给用户更好的使用,让电子产品更加直观。

今天给大家讲一个性价比很高的LCD显示器——诺基亚5110LCD。

可能很多人奇怪,为什么这个LCD显示屏被叫做诺基亚5110,那是因为这个显示屏诺基亚经典机型5110手机上使用的现实屏。

就是下图这部手机,曾经的经典。

记得第一部手机就是诺基亚的,那会还在读初中,宿舍的同学总是抢着来打贪吃蛇,打到满屏。

电子产品的更新换代实在太快了,现在已经很难找到这个手机的踪影了。

诺基亚5110手机5110LCD是一个84X48的点阵LCD,可以显示4行汉字。

和单片机的接口不是很复杂,是一个没有MISO只有MOSI的SPI协议。

用于通信的数据线是4根,其中有一根是用于设定传入的数据是命令还是数据的选择端口。

下图是在马云家买的一个诺基亚5110LCD模块,总共有8个引脚。

用于通信的引脚为4个,1个复位引脚,2个电源引脚,1个是背光灯控制引脚。

因为诺基亚LCD本身是不会发光的,为了能够在晚上也能够看到液晶显示屏显示的内容,需要增加背光灯。

诺基亚5110实物图和引脚描述我们把LCD需要单片机控制的5个引脚连接到单片机的P1口,背光灯通过一个电阻接到VCC5V,让背光灯保持常亮的状态,也可以接到单片机的引脚上去,通过单片机控制背光灯的亮灭。

5110LCD与单片机接口图我们来看一下怎么写程序驱动诺基亚5110,实现在5110上显示出字符。

由于接通电源后,LCD内部的RAM数据状态是不确定的,所以我们需要给LCD复位一下。

5110LCD复位时序//产生一个复位脉冲Lcd_res=0;delay_us();Lcd_res=1;我们需要往LCD写数据,SPI的写时序如下,这里实现的是通过单片机IO口模拟SPI时序,如果单片机有硬件的SPI接口是可以用来驱动的5110LCD的。

笔段式液晶驱动方法

笔段式液晶驱动方法

LED数码管的驱动是比较简单也容易理解的,多位数码管一般是LED阵列的形式,每个数字使用一个公共端,不同数字的对应同笔段使用一个控制端;驱动采用分时扫描没个数字位,动态显示。

但是LED比较费电,我想做一个用电池供电的钟,用发光管电池就撑不了多久了。

于是我考虑用液晶。

在这边的电子市场我买到一个4位笔段式液晶屏,4个数字最中间有冒号,边上还有几个箭头符号,一共有15个引脚,正合适用AVR来驱动做一个钟。

笔段式LCD屏的结构与LED数码管很相似,但是由于是液晶,工作机理上不同,驱动方式也有很大差异:(1) LED有正负之分,液晶笔划没有。

(2) LED在直流电压下工作,液晶需要交流电压,防止电解效应。

(3) LED需要电流提供发光的能量,液晶笔划显示状态下电流非常微弱。

(4) LED对微小电流不反应,液晶则很敏感。

不难看出,用LED的驱动方式来对待LCD屏是行不通的。

我在买回来测试这块屏之前没有意识到,于是走了不少的弯路。

与LED驱动不同的是需要给每个笔划加上一个交流电压。

一般用30-60Hz的方波就可以了,频率再低显示会有所波动,频率高了功耗也会增加,因为LCD对电路呈现容性。

而且,正负电压都可以“点亮”液晶。

好在AVR的I/O口可以三态输出,也就是除了高/低电平,还可以呈现高阻抗,相当于断开连接。

于是我想到了这样的办法:不需要显示的那一组笔划对应的公共端悬空(I/O口选择三态),那么就不会加上电压了。

照这个思路,我的实验电路焊好,出来的显示却是一团糟:笔划都黑了看不清。

我这才考虑到液晶本身的问题:阻抗高,而且有电容,是不可一边悬空的!这个道理也许跟CMOS输入端差不多。

查找了一些关于液晶的资料,大致知道LCD屏不是那么简单的,驱动方式通常是1/N, 也就是电压不止高低两档。

可是单片机I/O没有那么多输出状态可以选择。

1/2 Bias驱动不显示的液晶笔划两端电压相等,显示的不等。

这样一个要求在扫描方式下不能满足,于是改为电压等级不同。

NOKIA3310结构设计分析-图文

NOKIA3310结构设计分析-图文

NOKIA3310结构设计分析-图文NOKIA 3310 机构设计分析1. 上盖部分A. 基本肉厚1.5B. 材料 ABS+PCC. 共有组件8pcs(上盖)如下图键盘﹑镜片﹑保护薄膜﹑NOKIA logo﹑饰条﹑显示屏处密封圈﹑喇叭处密封圈﹑D. 产品结构定位孔A 入水口定位孔A为饰条装配时定位孔﹐饰条采用胶固定在上盖产品采用扣位与下盖及电路部分固定连接E. 模具结构采用热流道模具结构﹐图中标示处为入水位置。

共有倒扣位8处﹐采用6斜顶﹐2行位抽芯1. 下盖部分A. 基本肉厚1.5B. 材料 ABS+PCC. 共有组件3pcs(含下盖)如下图NOKIA logo﹑POM塑料弹钮 (与下盖热融)﹑D. 主要结构柱B 卡勾B 柱B为塑料按扭之热融柱卡勾A与上盖固定卡勾B与电池固定板固定 E.模具结构采用热流道模具结构﹐图中标示处为入水位置。

共有倒扣位10处﹐采用6斜顶顶出卡勾A入水口 2. 电池&主板固定板A. B. C. D.基本肉厚1.0 材料﹕ABS+PC功能﹕固定电子元器件及主板电池等主要结构组件此零件下為入水位置麥克風位耳機插孔位充電插孔位电池连接器 SIM卡连接器电池折卸辅助器弹片电源按钮马达连接器此處四卡勾與下蓋連接卡緊螺紋孔(共6處)與電路板鎖緊六處卡勾定位電路板 E. 模具结构采用细水中三板模模胚﹐图中标示处为入水位置。

两侧有各有一大行位抽芯3. 安装顺序及特点A. 特点﹕电子产品与前后盖相互独立﹐电子产品(包括电池)安装在主板固定板上B. 安装顺序﹕第一步﹕将主板固定板(包括电子产品)放到适当的位置后﹐按下卡勾卡住主板固定板第二步﹕把后盖放到一定的位置后向前推进通过主板固定板上弹片顶住后盖而实现安装C. 总结﹕可以很容易实现前后盖的互换﹐使手机外形多样化更多行业资料尽在://.ugproe.NOKIA 8210 机构设计分析材质﹕ABS +PC,镜片用PMMA 肉厚﹕前面板平均肉厚1.00mm 后盖平均肉厚1.00mm 电池盖平均肉厚0.87mm 结构﹕1. 前面板组立﹕分件﹕前面板按钮组立电源按钮镜片滤网123 装配方式﹕(1) 从前面板正面装入电源按钮(2) 利用1处的卡钩及2处的定位柱将镜片固定在前面板上﹐用超声波将两件熔接在一起(3) 贴上滤网﹐装入按钮组立(以3处的定位柱定位)2. 后盖组立﹕分件﹕后盖板电池盖板固定按钮及弹片电子组件电池盖板A BCA,B,C三件是为了降低整个后盖板的复杂程度﹐同时仍能实现相应功能而设计的装配方式﹕(1) 采用超声波压入6个带螺牙的插件(2) 将A与相关的五金件(用于EMI防护)结合后装入图中位置﹐利用后盖板上相应位置的倒勾将A固定(3) 将B﹐C两件装入相应位置﹐同样利用倒勾固定(4) 压入电池盖板固定按钮及弹片﹐依靠金属弹片的配合固定 (5) 将电子零件装入﹐用后盖板上相关的肋定位(6) 装上主板及人机界面板﹐用其外形定位﹐以6颗螺丝固定﹐同时也起到了对后盖上电子零件的固定作用 (7) 将电池盖放在后盖板相应位置向上轻推到位﹐依靠四周十个卡钩及电池盖板固定按钮定位及固定(8) 将前面板组立与后盖组立结合﹐先卡住底部两卡钩﹐向上轻推到位﹐卡住中间及上面的卡钩﹐完成整个手机组立特点﹕1. 不是所有电子零件都焊在主板上﹐而是装在不同部位以弹片进行接触2. 除电子组件与机构件固定用螺丝外﹐其余固定方式均采用卡钩﹐便于拆装下图是Nokia传送的ID图面,我们可以看到他的外观部分发生了变化,变化有以下几点:C B。

初赛作品创意书

初赛作品创意书

2013年重庆地区第7届“盛群杯”大学生单片机应用设计竞赛作品创意书********************************************************** ********************************************************** 作品编号:20130146基于HT66F50的智能花盆********************************************************** ********************************************************** 学校名称:重庆邮电大学院系名称:计算机科学与技术学院光电工程/国际半导体学院指导老师:周应华参赛学生1:冉敏参赛学生2:吕功建参赛学生3:史啸作品创意书一、摘要本作品主要采用HT66F50为核心采用来对花盆温度、湿度、光强、进行实时监控与调节的智能花盆系统。

在这个作品中我们采用数字式DS18B20作为温度传感器、土壤湿度计检测、可见光照度传感器On9658来实现对花盆的环境温度、土壤湿度、光照强度进行检测,并实时显示在液晶屏上。

通过键盘输入花盆中的植物在不同的时间段最适宜的生长条件(湿度、温度、光强),如若超过这一范围则会进行自动调控,如若经过调控后的花盆环境温湿度等依旧不达标,则通过报警的方式来提醒植物栽培者植物的生长处于不健康的状态,需要对其采取相应的措施。

本作品充分利用了HT66F50的A/D转换、时钟控制等功能,减少外部电路的扩展,以优良的软件设计来实现作品强大的功能。

在方案中我们的智能温度处理方法为采用电加热器升温,采用冷机进行降温处理;采用电磁阀滴灌加湿的方法来为植物提供水分,采用滴灌的方法的好处不仅是节约了水资源,而且有效的保证了植物生长期间不存在湿度过高的情况;LED灯组为植物补足光照,采用LED红蓝灯形成的灯组来为植物提供生长的光源。

诺基亚5110液晶显示器应用课程设计

诺基亚5110液晶显示器应用课程设计

单片机原理及应用课程设计电气工程学院一、课程设计任务书1.课程设计项目诺基亚5110液晶显示器应用。

2.设计内容1)设计诺基亚5110液晶显示器应用的总体设计方案;2)以MCS-51系列单片机为核心器件和诺基亚5110液晶显示器组成液晶显示硬件系统;3)系统程序编制与调试;4)电路系统的综合调试;5)撰写课程设计论文;6)完成课程设计论文答辩。

3.设计要求1)以STC89C51单片机为控制核心,对诺基亚5110液晶显示器进行控制。

编程使得在LCD显示器上显示字符,如多行滚动显示:“吉林工程技术师范学院”“电气工程学院”。

等字符,还可以显示别的文字;2)单片机课程设计题目的硬件电路、程序由学生自行设计完成。

3)液晶显示器上要显示出设计人的班级,组长的学号等信息。

4.设计进度(2011年6月13日至2011年6月24日)时间设计内容第1-2天查阅资料,方案比较、设计与论证,理论分析与计算第3-5天硬件电路调试第6-8天系统调试第9-10天书写报告、答辩5.设计地点新实验楼323微机实验室二.参考资料[1]李广弟,朱月秀,王秀山编著.单片机基础. 北京:北京航空航天大学出版社,2001[2] 何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1999[3] 蔡美琴等编著.MCS-51 单片机系统及应用.北京:高等教育出版社.1992二、评语及成绩成绩:指导教师:单片机原理及应用课程设计班级:自动化0845 姓名:刘旭阳学号: 11 号指导教师:方健撰写日期: 2011年6月23日Nokia LCD多功能显示摘要液晶显示器件[1](LCD)是一种高新技术的基础元器件。

它利用液晶的各种电光效应,把液晶对电场、磁场、光线和温度等外界条件的变化在一定条件下转换为可视信号而制成的显示器。

液晶显示器具有低电压、低功耗的特点,与CMOS集成电路相匹配.电池作为电源,适合于便携式显示。

液晶(诺基亚LCD3310)驱动电路及程序

液晶(诺基亚LCD3310)驱动电路及程序

诺基亚3310液晶是一种OEM产品48X84 pixels matrix LCD controller/driver生产厂家Philips, 型号为:PCD8544可显示84*48点,被评为性价比最好的AVR液晶3310lcd驱动电路:Vdd接3.3V(注意:工作电压是3.3V)或者如图接(1、接100欧姆电阻接5V 2、接二极管再接地)V out接4.7uF电容后接地,电容作用是调对比度GND接地其它的接普通IO口编码显示原理:LCD3310屏幕由84*48个点组成,划分为84列*6行个显示单元,每一个显示单元由1*8个点组成,编程控制显示时按坐标定位,X轴从左到右为0、1、。

83,Y轴从上到下为0、1.。

5,每一个显示单元用一个十六进制0x**控制,0x**转换成二进制后是8个01位,每一个显示单元从上到下为点1到点8,分别对应二进制数的最低到最高位,为1的显示黑点,为0的不显示下面将要讲到的字符显示是用六个连续的显示单元控制显示的,将会显示符号*所以我们可以自由的显示字母、汉字、图片,只要将对应的十六进制控制码写入LCD即可,汉字和图片的控制码可借助于专用的字模生成软件生成。

Pin Signal Description Port1:VDDPower Input. Logic supply voltage range VDD to GND : 2.7 to 3.3 V2:SCLKSerial clock. Input for the clock signal: 0.0 to 4.0 Mbits/s.3:SDINSerial data. Input for the data line.4:D/CMode Select. To select either command/address or data input.5:SCEChip enable input. The enable pin allows data to be clocked in. The signal is active LOW.6:GNDGround7:VOUTOuptut voltage. Add external 1-10 uF electrolytic capacitor from VOUT to GND8:RESExternal reset. This signal will reset the device and must be applied to properlyinitialize the chip. The signal is active LOW.程序:(完整可运行)下面的程序是针对飞思卡尔的十六位单片机MC9S12XS128开发的用于其它MCU时只要将端口改一下,就可移植#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */#define sclk PTM_PTM0 //时钟#define sdin PTM_PTM1 //数据#define dc PTM_PTM2 //1写数据,0写指令#define sce PTP_PTP4 //片选#define res PTP_PTP7 //复位byte const mask_table[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};void Initlcd(void);//LCD初始化void write_byte(byte dd,byte a);//写一个字节到LCDvoid qp(void);//清屏void setadd(byte a,byte d);//设置坐标void DelaymS(word delay);//延时byte const dal1[][6]={//字符显示对应的二维十六进制数组,本程序中没有用到{0x00,0x00,0x00,0x00,0x00,0x00}, // 0位显示空白{0x00,0x00,0x00,0x00,0x00,0x00}, // 1{0x00,0x00,0x00,0x00,0x00,0x00}, // 2{0x00,0x00,0x00,0x00,0x00,0x00}, // 3{0x00,0x00,0x00,0x00,0x00,0x00}, // 4{0x00,0x00,0x00,0x00,0x00,0x00}, // 5{0x00,0x00,0x00,0x00,0x00,0x00}, // 6{0x00,0x00,0x00,0x00,0x00,0x00}, // 7{0x00,0x00,0x00,0x00,0x00,0x00}, // 8{0x00,0x00,0x00,0x00,0x00,0x00}, // 9{0x00,0x00,0x00,0x00,0x00,0x00}, // 10{0x00,0x00,0x00,0x00,0x00,0x00}, // 11{0x00,0x00,0x00,0x00,0x00,0x00}, // 12{0x00,0x00,0x00,0x00,0x00,0x00}, // 13{0x00,0x00,0x00,0x00,0x00,0x00}, // 14{0x00,0x00,0x00,0x00,0x00,0x00}, // 15{0x00,0x00,0x00,0x00,0x00,0x00}, // 16{0x00,0x00,0x00,0x00,0x00,0x00}, // 17{0x00,0x00,0x00,0x00,0x00,0x00}, // 18{0x00,0x00,0x00,0x00,0x00,0x00}, // 19{0x00,0x00,0x00,0x00,0x00,0x00}, // 20{0x00,0x00,0x00,0x00,0x00,0x00}, // 21{0x00,0x00,0x00,0x00,0x00,0x00}, // 22{0x00,0x00,0x00,0x00,0x00,0x00}, // 23{0x00,0x00,0x00,0x00,0x00,0x00}, // 24{0x00,0x00,0x00,0x00,0x00,0x00}, // 25{0x00,0x00,0x00,0x00,0x00,0x00}, // 26{0x00,0x00,0x00,0x00,0x00,0x00}, // 27{0x00,0x00,0x00,0x00,0x00,0x00}, // 28{0x00,0x00,0x00,0x00,0x00,0x00}, // 29{0x00,0x00,0x00,0x00,0x00,0x00}, // 30{0x00,0x00,0x00,0x00,0x00,0x00}, // 31{0x00,0x00,0x00,0x00,0x00,0x00}, // sp 32{0x00,0x00,0x2f,0x00,0x00,0x00}, // ! 33{0x00,0x07,0x00,0x07,0x00,0x00}, // " 34{0x14,0x7f,0x14,0x7f,0x14,0x00}, // # 35{0x24,0x2a,0x7f,0x2a,0x12,0x00}, // $ 36{0x36,0x49,0x55,0x22,0x50,0x00}, // & 38 {0x00,0x05,0x03,0x00,0x00,0x00}, // ' 39 {0x00,0x1c,0x22,0x41,0x00,0x00}, // ( 40 {0x00,0x41,0x22,0x1c,0x00,0x00}, // ) 41 {0x14,0x08,0x3E,0x08,0x14,0x00}, // * 42 {0x08,0x08,0x3E,0x08,0x08,0x00}, // + 43 {0x00,0x00,0x50,0x30,0x00,0x00}, // , 44 {0x10,0x10,0x10,0x10,0x10,0x00}, // - 45 {0x00,0x60,0x60,0x00,0x00,0x00}, // . 46 {0x20,0x10,0x08,0x04,0x02,0x00}, // / 47 {0x3E,0x51,0x49,0x45,0x3E,0x00}, // 0 48 {0x00,0x42,0x7F,0x40,0x00,0x00}, // 1 49 {0x42,0x61,0x51,0x49,0x46,0x00}, // 2 50 {0x21,0x41,0x45,0x4B,0x31,0x00}, // 3 51 {0x18,0x14,0x12,0x7F,0x10,0x00}, // 4 52 {0x27,0x45,0x45,0x45,0x39,0x00}, // 5 53 {0x3C,0x4A,0x49,0x49,0x30,0x00}, // 6 54 {0x01,0x71,0x09,0x05,0x03,0x00}, // 7 55 {0x36,0x49,0x49,0x49,0x36,0x00}, // 8 56 {0x06,0x49,0x49,0x29,0x1E,0x00}, // 9 57 {0x00,0x36,0x36,0x00,0x00,0x00}, // : 58 {0x00,0x56,0x36,0x00,0x00,0x00}, // ; 59 {0x08,0x14,0x22,0x41,0x00,0x00}, // < 60 {0x14,0x14,0x14,0x14,0x14,0x00}, // = 61 {0x00,0x41,0x22,0x14,0x08,0x00}, // > 62 {0x02,0x01,0x51,0x09,0x06,0x00}, // ? 63 {0x32,0x49,0x59,0x51,0x3E,0x00}, // @ 64 {0x7E,0x11,0x11,0x11,0x7E,0x00}, // A 65 {0x7F,0x49,0x49,0x49,0x36,0x00}, // B 66 {0x3E,0x41,0x41,0x41,0x22,0x00}, // C 67 {0x7F,0x41,0x41,0x22,0x1C,0x00}, // D 68 {0x7F,0x49,0x49,0x49,0x41,0x00}, // E 69 {0x7F,0x09,0x09,0x09,0x01,0x00}, // F 70 {0x3E,0x41,0x49,0x49,0x7A,0x00}, // G 71 {0x7F,0x08,0x08,0x08,0x7F,0x00}, // H 72 {0x00,0x41,0x7F,0x41,0x00,0x00}, // I 73 {0x20,0x40,0x41,0x3F,0x01,0x00}, // J 74 {0x7F,0x08,0x14,0x22,0x41,0x00}, // K 75 {0x7F,0x40,0x40,0x40,0x40,0x00}, // L 76 {0x7F,0x02,0x0C,0x02,0x7F,0x00}, // M 77 {0x7F,0x04,0x08,0x10,0x7F,0x00}, // N 78 {0x3E,0x41,0x41,0x41,0x3E,0x00}, // O 79 {0x7F,0x09,0x09,0x09,0x06,0x00}, // P 80{0x7F,0x09,0x19,0x29,0x46,0x00}, // R 82{0x46,0x49,0x49,0x49,0x31,0x00}, // S 83{0x01,0x01,0x7F,0x01,0x01,0x00}, // T 84{0x3F,0x40,0x40,0x40,0x3F,0x00}, // U 85{0x1F,0x20,0x40,0x20,0x1F,0x00}, // V 86{0x3F,0x40,0x38,0x40,0x3F,0x00}, // W 87{0x63,0x14,0x08,0x14,0x63,0x00}, // X 88{0x07,0x08,0x70,0x08,0x07,0x00}, // Y 89{0x61,0x51,0x49,0x45,0x43,0x00}, // Z 90{0x00,0x7F,0x41,0x41,0x00,0x00}, // [ 91{0x55,0x2A,0x55,0x2A,0x55,0x00}, //55 92{0x00,0x41,0x41,0x7F,0x00,0x00}, // ] 93{0x04,0x02,0x01,0x02,0x04,0x00}, // ^ 94{0x40,0x40,0x40,0x40,0x40,0x00}, // _ 95{0x00,0x01,0x02,0x04,0x00,0x00}, // ' 96{0x20,0x54,0x54,0x54,0x78,0x00}, // a 97{0x7F,0x48,0x44,0x44,0x38,0x00}, // b 98{0x38,0x44,0x44,0x44,0x20,0x00}, // c 99{0x38,0x44,0x44,0x48,0x7F,0x00}, // d 100{0x38,0x54,0x54,0x54,0x18,0x00}, // e 101{0x08,0x7E,0x09,0x01,0x02,0x00}, // f 102{0x0C,0x52,0x52,0x52,0x3E,0x00}, // g 103{0x7F,0x08,0x04,0x04,0x78,0x00}, // h 104{0x00,0x44,0x7D,0x40,0x00,0x00}, // i 105{0x20,0x40,0x44,0x3D,0x00,0x00}, // j 106{0x7F,0x10,0x28,0x44,0x00,0x00}, // k 107{0x00,0x41,0x7F,0x40,0x00,0x00}, // l 108{0x7C,0x04,0x18,0x04,0x78,0x00}, // m 109{0x7C,0x08,0x04,0x04,0x78,0x00}, // n 110{0x38,0x44,0x44,0x44,0x38,0x00}, // o 111{0x7C,0x14,0x14,0x14,0x08,0x00}, // p 112{0x08,0x14,0x14,0x18,0x7C,0x00}, // q 113{0x7C,0x08,0x04,0x04,0x08,0x00}, // r 114{0x48,0x54,0x54,0x54,0x20,0x00}, // s 115{0x04,0x3F,0x44,0x40,0x20,0x00}, // t 116{0x3C,0x40,0x40,0x20,0x7C,0x00}, // u 117{0x1C,0x20,0x40,0x20,0x1C,0x00}, // v 118{0x3C,0x40,0x30,0x40,0x3C,0x00}, // w 119{0x44,0x28,0x10,0x28,0x44,0x00}, // x 120{0x0C,0x50,0x50,0x50,0x3C,0x00}, // y 121{0x44,0x64,0x54,0x4C,0x44,0x00}, // z 122{0xD5,0x01,0x80,0x01,0x80,0xAB}, // <50 123 {0xFF,0x81,0x81,0x81,0x81,0xFF}, //50<= <100 124{0xFF,0x81,0xBD,0xBD,0x81,0xFF}, //100<= <150 125{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, //>=150 126{0x00,0x00,0x00,0x00,0x00,0x00} // sp 127};/*******************显示一幅图****************/uchar dal11[]={//------------------------------------------------------------------------------/*--图像的数据*//*-- 图像宽度*高度=84x48 --*/0xE0,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xE7,0xFB,0xBB,0xBB,0x5B,0xE7,0xFF,0xFF,0xE7,0xFB,0xBB,0xBB,0x5B,0xE7,0xFF,0xFF,0xF7,0xF7,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0xF7,0xFB,0xFB,0xF7,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xFB,0xFB,0x03,0xFB,0xFB,0xF3,0xFF,0xFF,0x3F,0x5F,0x5F,0x5F,0x5F,0x3F,0xFF,0xFF,0x3F,0xDF,0xDF,0xDF,0x9F,0xFF,0xFF,0xFF,0xDF,0xDF,0x07,0xDF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xF7,0xF7,0xF7,0xF7,0xF8,0xFF,0xFF,0xF9,0xF7,0xF7,0x37,0xF7,0xF8,0xFF,0xFF,0xF7,0xF7,0xF0,0xF7,0xF7,0x7F,0x7F,0x7F,0x7C,0x7B,0x77,0x77,0x7B,0x7C,0x7F,0x7F,0x3F,0x7F,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x77,0xB0,0x77,0xFF,0xFF,0x3F,0xFF,0xF8,0xF7,0xF7,0xF7,0xF7,0xFB,0xFF,0xFF,0xF3,0xF6,0xF6,0x36,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF7,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x81,0xBD,0xBD,0xBD,0xBD,0x00,0xBD,0xBD,0xBD,0xBD,0x80, 0xFD,0xFF,0xFF,0xFF,0x00,0xFF,0xFD,0xED,0xED,0x01,0xED,0xCD,0xAD,0xFD,0xFF,0x00, 0xFF,0xFF,0xFF,0x00,0xDB,0xDB,0x00,0x7F,0x5B,0xDB,0xDA,0x03,0xDA,0xDB,0xDB,0xDB, 0xFF,0xF7,0x76,0xB6,0xC6,0xF6,0x36,0xF7,0xFB,0x7B,0x80,0xFB,0xFB,0x01,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFB,0xFA,0xFA,0xFA,0xFA,0xFA,0xFA,0xFA,0xFA,0xFA,0xF0,0xFF,0xDF,0x1D,0xFC,0xFE,0xFE,0xF0,0xFF,0xF7,0xFB,0xFC,0xFF,0xFE,0xFD,0xF3,0xFB,0xFF,0xFE,0xFC,0xFE,0xFE,0xFE,0xF6,0xFA,0xFD,0xFE,0xFF,0xFB, 0xF7,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0xDD,0xBE,0xBE,0xBE,0xDD,0xFF,0xBE,0xBE,0x80,0xBD,0xBE,0xFE,0xFC,0xFF,0xFF,0xCD,0xB6,0xBA,0xBA,0x81,0xBF, 0xFF,0xFF,0x99,0xB6,0xB6,0xB6,0xCC,0xFF,0xFF,0xFF,0x80,0xBD,0xBE,0xBE,0xBE,0xC1, 0xFF,0xFE,0xFC,0xE2,0x1F,0xCF,0xF2,0xFC,0xFE,0xFF,0xE3,0xDD,0xBE,0xBE,0xDD,0xE3, 0xFF,0xFF,0xC1,0xBA,0xBA,0xBA,0xBA,0xD9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x0F,};void xp11()//写图函数{uchar e;uchar t;uchar k1;uint d;d=0;for(t=0;t<6;t++){for(k1=0;k1<84;k1++){setadd(k1,t);e=dal11[d];write_byte(e,1);d=d+1;}}}//主函数实现的功能是循环显示图片和擦除void main(void){/* put your own code here */DisableInterrupts;/******************SetClock*******************/CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x07;REFDV=0xc0 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz;_asm(nop); //BUS CLOCK=64M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;while(FSTAT_CCIF == 0); //wait if command in progressFCLKDIV = 0x0F; //set prescaler//EnableInterrupts;for(;;){xp11();DelaymS(2000);qp();DelaymS(2000);_FEED_COP(); /* feeds the dog */} /* loop forever *//* please make sure that you never leave main */ }void Initlcd(void){//LCD端口初始化,GPIO输出DDRM_DDRM0=1;DDRM_DDRM1=1;DDRM_DDRM2=1;DDRP_DDRP4=1;DDRP_DDRP7=1;DelaymS(1);res=0;DelaymS(1);res=1;sce=0;DelaymS(1);sce=1;sdin=1;sclk=1;write_byte(0x21,0);//初始化LCD,write_byte(0xcc,0);//设置液晶偏执电压write_byte(0x20,0);//使用基本指令qp();//write_byte(0x0c,0); //设定显示模式,正常显示sce=0;}void write_byte(byte dd,byte a)//{char i;dc=a;for(i=0;i<8;i++){if(dd&mask_table[i]) {sdin=1;} else {sdin=0;}sclk=0;sclk=1;}dc=1;sce=1;sdin=1;}void setadd(byte a,byte d)//{write_byte((a|0x80),0); //Xwrite_byte((d|0x40),0); //Y}void qp(void)//{byte t;byte k;for(t=0;t<6;t++){for(k=0;k<84;k++){setadd(k,t);write_byte(0,1);}}}void DelaymS(word delay){word i, j;for ( i = delay; i != 0; i -- ){for ( j = 7000; j != 0; j -- ) ;for ( j = 6320; j != 0; j -- ) ;} }。

lcd显示模块工作原理

lcd显示模块工作原理

lcd显示模块工作原理
LCD显示模块是一种将电信号转化为可见光的装置,其工作
原理主要是利用液晶分子在电场作用下的排列变化来实现图像显示。

LCD显示模块首先由若干层不同的材料组成,包括两层偏振
片之间的液晶层、两层玻璃基板以及导电层等。

当液晶显示器模块接收到来自计算机或其他设备的图像信号时,电路会根据信号的控制来控制模块中的液晶分子排列。

液晶分子在无电场作用下呈现一种无序排列的状态,光线穿过液晶层后会被其随机分布的分子转向,无法通过第二层偏振片,因而无法看清屏幕上的图像。

当电场被加入,电场强度高时,液晶分子会排列成垂直于基板的方向,这种排列状态下的液晶分子能够使光线经过第一层偏振片进入液晶层后,继续保持同样的方向,然后透过第二层偏振片出射,从而显示出图像。

而当电场强度低或无电场时,液晶分子就会呈现无序排列的状态,光线会被其随机分布的分子转向,无法通过第二层偏振片,屏幕上的图像也就不可见。

因此,通过控制电场的强度,LCD显示模块能够实现不同像
素的液晶分子排列状态,从而显示出丰富的图像。

诺基亚5110LCD驱动程序

诺基亚5110LCD驱动程序

/******************************************************************** NOKIA5110(3310)液晶屏驱动程序** 晶振频率:11.0592M** 线路->单片机实验开发板A******************************************************************/#include/*-- -------定义Nokia5110 引角---- -----*/sbit sclk = P3^3;sbit sdin = P3^4;sbit dc = P3^5;sbit sce = P3^7;sbit res = P3^6;void initNokia5110(void); /* NOkia 5110 初始化*/void clearNokia5110(void); /* 清除屏幕整屏清空*/void Display_char(unsigned char x,unsigned char y,char *s); /* 写字符x 设置显示字符的X位置; y 设置显示字符的Y 位置*s 显示字符的首地址*/void Display_num(unsigned char x,unsigned char y,char s); /* 写数字x 设置显示字符的X位置; y 设置显示字符的Y 位置s 显示数字*/void write_byte(unsigned char data1); /* 发送1字节到NOkia 5110 */void setxy(unsigned char x,unsigned char y); /* 设置显示坐标x 行坐标(0-83) unsigned char y 列坐标(0-5) */void delay(unsigned int time);void main(void){initNokia5110(); /* NOkia 5110 初始化*/clearNokia5110(); /* 清除屏幕整屏清空*/Display_char(1,2,""); /* 写字符x 设置显示字符的X位置; y 设置显示字符的Y位置*s 显示字符的首地址*/Display_char(10,4,"NOKIA5510"); /* 写字符x 设置显示字符的X位置; y 设置显示字符的Y位置*s 显示字符的首地址*///Display_num(0,0,9); // 写数字while(1);}/****************************5110 0-9字模**************************//*函数原型:无/*函数功能:0-9字模/*输入参数:无/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/ unsigned char code asc2tab[][6] ={{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },// !{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },// "{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },// #{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },// ${ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },// %{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },// &{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },// '{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },// ({ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },// ){ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },// *{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },// +{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },// ,{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },// -{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },// .{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },// /{ 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 { 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, 0x00, 0x56, 0x36, 0x00, 0x00 },// ; { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },// < { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },// = { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },// > { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },// ? { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },// @ { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },// A { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },// B { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },// C { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },// D { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },// E { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },// F { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },// G { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },// H{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },// I { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },// J { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },// K { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },// L { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },// M { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },// N { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },// O { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },// P { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },// Q { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },// R { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },// S { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },// T { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },// U { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },// V { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },// W { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },// X { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },// Y { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },// Z { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },// [ { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },// 55 { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },// ] { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },// ^{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },// _ { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },// ' { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },// a { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },// b { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },// c { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },// d { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },// e { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },// f { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },// g { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },// h { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },// i { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },// j { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },// k { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },// l { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },// m { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },// n { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },// o { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },// p { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },// q { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },// r { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },// s { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },// t{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },// u{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },// v{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },// w{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },// x{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },// y{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },// z{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }};/****************************Nokia5110初始化函数**************************//*函数原型:initNokia5110(void)/*函数功能:Nokia5110初始化/*输入参数:无/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/void initNokia5110(void){delay(10); //系统复位res = 0;delay(2);res = 1;dc = 0;write_byte(0x21); //;芯片是活动的(PD=0) 使用扩展指令集write_byte(0xd5);write_byte(0x20); //;芯片是活动的(PD=0) 使用水平寻址(V=0) 使用基本指令集(H=0) write_byte(0x0c); //;设置显示配置(D=1 E=0)}/****************************Nokia5110清屏函数*********************//*函数原型:void clearNokia5110(void)/*函数功能:Nokia5110清屏/*输入参数:无/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/void clearNokia5110(void){unsigned int i,j;for(i=0;i<6;i++){setxy(j,i);dc = 1;while (j<84){write_byte(0x00);j++;}j = 0;}}/*--------------------------------------;模块名称:Display_char(unsigned char x,unsigned char y,char *s);;功能:写字符;占用资源:;参数说明:x 设置显示字符的X位置; y 设置显示字符的Y位置*s 显示字符的首地址;创建日期:2001.01.19;版本:VER 2.0 ★STALI☆;-------------------------------------*/void Display_char(unsigned char x,unsigned char y,char *s){unsigned char line;setxy(x,y);while(*s){for(line=0;line<6;line++){dc = 1;write_byte(asc2tab[*s - 32][line]);}}sce = 1;}/****************************Nokia5110写数字函数*********************/ /*函数原型:void Display_num(unsigned char x,unsigned char y,char s)/*函数功能:Nokia5110写数字/*输入参数:x 设置显示字符的X位置; y 设置显示字符的Y位置s 显示数字/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/ void Display_num(unsigned char x,unsigned char y,char s){unsigned char line;setxy(x,y);dc = 1;for(line=0;line<6;line++){write_byte(asc2tab[s+16][line]);}sce = 1;}/*************************Nokia5110发送1字节函数*********************/ /*函数原型:void Display_num(unsigned char x,unsigned char y,char s)/*函数功能:发送1字节到NOkia 5110/*输入参数:x 设置显示字符的X位置; y 设置显示字符的Y位置s 显示数字/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/ void write_byte(unsigned char data1){unsigned char i;res = 1;sce = 0;for(i=0;i<8;i++){sdin = (bit) (data1&0x80);;sclk = 1;data1 <<=1;}}/*************************Nokia5110设置显示坐标函数*********************/ /*函数原型:void setxy(unsigned char x,unsigned char y)/*函数功能:设置显示坐标/*输入参数:unsigned char x 行坐标(0-83) unsigned char y 列坐标(0-5)/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/ void setxy(unsigned char x,unsigned char y){dc = 0;write_byte(y|0x40); //设置y轴。

DIY诺基亚3310

DIY诺基亚3310

DIY诺基亚3310
黄普庆
【期刊名称】《家庭电子(维修版)》
【年(卷),期】2001(000)012
【摘要】随着本地区手机“模转数”业务的开展,笔者也于近期换了一台才情兼备、情趣无限的数字手机——诺基亚3310。

经过数天的“探索”。

【总页数】1页(P38)
【作者】黄普庆
【作者单位】无
【正文语种】中文
【中图分类】TN929.53
【相关文献】
1.诺基亚3310四月底上市 [J], ;
2.屏蔽板松脱引起诺基亚3310手机经常自动关机 [J], 闭京宝
3.诺基亚3310无信号的维修 [J], 许佐万
4.DIY诺基亚3310 [J], 黄普庆
5.屏蔽板松脱引起诺基亚3310手机经常自动关机 [J], 闭京宝
因版权原因,仅展示原文概要,查看原文内容请购买。

AVR网址大全

AVR网址大全

1. EG3关于嵌入式开发的站点,提供非常多关于嵌入式开发的资料。

包括开发公司,技术文档,免费资源等等。

版面包括busses & boards,embedded software,dsp,embedded systems,open source,rtos,embedded chips,syste m-on-a-chip 等等。

强烈推荐/ - 外文2. 来自大量实用链接这里有许多所用链接关于AVR,8051,ARM,PIC.它收集的AVR信息是我看到的最好的。

遗憾的是网站语言是德文。

/articles/Linksammlung - 外文3. atmel公司的AVR专栏AVR的第一手资料都在这了,可以下载所有AVR单片机的手册、应用资料和AVR studio等开发软件,而且很多应用笔记,有些中文资料.搞AVR非去不可的地方。

/cn/products/avr/ - 中文4. MicroSyl MCU非常多关于AVR单片机应用的网站,提供详细的文章。

网站详细介绍了用AVR单片机制作的MP3、频率计、1602字符型LCD模块程序、Nokia3310显示屏程序等。

提供非常多的库文件OneWire Lib Text LCD Lib Graph LCD Lib 你Nokia LCD Lib/ - 外文5. The First Stop for the Latest ICs and Components非常好的关于微处理器,DSP,可以编程控制器资讯的网站,更新非常快。

强烈推荐一些领导级别的人常去,了解行业动态!/ - 外文6. Embedded EtherneEthernut is an Open Source Hardware and Software Project for building tiny Embedded Ethernet Devices.主要是用在AVR系列单片机,提供足够资料.它的下载也http://www.ethernut.de/en/download/index.html有不错的东西供下载,相关产品http://www.hw-gro /products/charon2/index_en.html开源项目支持/projects/ethernut/http://www.ethernut.de/en/ - 外文7. Programmers Heaven - Assembler programming zone大量的源代码,分类清晰,强烈推荐。

NOKIA 3310 LCD

NOKIA 3310 LCD
如下:
SCLK
:串行时钟线
输入:时钟信号: 0.0 ~ 4.0Mbits/s.
D/Cห้องสมุดไป่ตู้
模式选择
输入:选择命令/地址或输入数据
SCE
芯片使能
使能引脚充许输入数据,低电平有效。
RES
复位
此信号会复位设备,应用于初始化芯片。低电平有效。
SDIN
串行数据线
传输显示内容
VCC
电源
3.3V
MCU和LCD之间使用SPI接口传输数据。
Nokia3310LCD
Nokia3310LCD有48*84点,可直接使用排线焊接,但需注意引脚顺序
驱动电路:
Vdd接3.3V(工作电压是3.3V,所以还有一个方案:接5V,再接100欧姆电阻,再接稳压二极管接地,可以稳定电压在3.3V左右)
Vout接4.7uF电容后接地,电容作用是调对比度。
GND接地,其他脚接普通IO即可。
Nokia3310LCD为48*84点,所以可以划分成84列*6行个显示单元。每个显示单元为1*8个点。
分为X轴和Y轴,X:0~83;Y:0~5;
每个单元用一个十六进制“0x**”表示八位。1为黑点,0则不显示。
所以首先定位光标位置,然后写入要显示的字符(六个“0x**”)即可。

AVR驱动Nokia3310(5V驱动3v)

AVR驱动Nokia3310(5V驱动3v)
动手学AVR单片机二十七、 Nokia3310/5110液晶显示实验
发布:2009-6-02 16:33 | 作者:tiankai | 来源:本站 | 查看:672次 | 字号: 小 中 大 动手学AVR单片机二十七、Nokia3310/5110液晶显示实验 一、电路实现 本实例的电路图如下:
二、Nokia3310/5110液晶介绍 Nokia3310/5110液晶的驱动控制器为PCD8544,它可以驱动
//数字75的的ASCII字符是英文字
母大写K
Delayms(1000);
}
}
//us级别的延时函数
void Delayus(unsigned int lus)
{
while(lus--)
{
_delay_loop_2(3);
//_delay_loop_2(1)是延时4个时钟周
期,参数为3则延时12
//个时钟周期,本实验用12M晶体,则12个时钟周期为
0x7F, 0x04, 0x08, 0x10, 0x7F, // N 0x3E, 0x41, 0x41, 0x41, 0x3E, // O 0x7F, 0x09, 0x09, 0x09, 0x06, // P 0x3E, 0x41, 0x51, 0x21, 0x5E, // Q 0x7F, 0x09, 0x19, 0x29, 0x46, // R 0x46, 0x49, 0x49, 0x49, 0x31, // S 0x01, 0x01, 0x7F, 0x01, 0x01, // T 0x3F, 0x40, 0x40, 0x40, 0x3F, // U 0x1F, 0x20, 0x40, 0x20, 0x1F, // V 0x3F, 0x40, 0x38, 0x40, 0x3F, // W 0x63, 0x14, 0x08, 0x14, 0x63, // X 0x07, 0x08, 0x70, 0x08, 0x07, // Y 0x61, 0x51, 0x49, 0x45, 0x43, // Z 0x00, 0x7F, 0x41, 0x41, 0x00, // [ 0x55, 0x2A, 0x55, 0x2A, 0x55, // 55 0x00, 0x41, 0x41, 0x7F, 0x00, // ] 0x04, 0x02, 0x01, 0x02, 0x04, // ^ 0x40, 0x40, 0x40, 0x40, 0x40, // _ 0x00, 0x01, 0x02, 0x04, 0x00, // ’ 0x20, 0x54, 0x54, 0x54, 0x78, // a 0x7F, 0x48, 0x44, 0x44, 0x38, // b 0x38, 0x44, 0x44, 0x44, 0x20, // c 0x38, 0x44, 0x44, 0x48, 0x7F, // d 0x38, 0x54, 0x54, 0x54, 0x18, // e 0x08, 0x7E, 0x09, 0x01, 0x02, // f 0x18, 0xA4, 0xA4, 0xA4, 0x7C, // g 0x7F, 0x08, 0x04, 0x04, 0x78, // h

5110LCD小板原理图

5110LCD小板原理图

5110LCD小板原理图:不妥的地方请指出1.增加了74HC165,在不增加任何I/O口的情况下提供8个按键2.板载LCD阻容复位,LCD_reset可以外部控制也可以阻容复位3.背光可以控制4.最少4个I/O端口就可以控制液晶和读取8个按键不放心,按照上图接线进行实物测试结果通过,程序如下:$Device= m16 使用mega16$Stack = 32 堆栈32字节$Clock = 4 时钟4MHz$ShiftOut Data=PORTB.5 ,Clk=PORTB.7,Msb 申明一个简易SPI口$GLCD Nokia3310, SCLK=PORTB.7, SDIN=PORTB.5, DC=PORTB.1, SCE=PORTB.4 3310液晶连接定义$Def RES=PORTB.0 复位脚$LeadChar=" ", Format(3,0) 显示数据格式化$Def SL = PORTB.1 去74HC165锁存$Def led = PORTB.3 去3310背光控制Dim n_key As Byte 保存按键键值Dim n As Byte 显示一个变量n好观察3310有没有运行Dim F0HD As Flash Byte 英文字库F0HDn_key=255Set DDRB.0: Nop 3: Set RES 复位3310LCDSet DDRB.3Reset led 点亮3310背光灯GLcdInit 初始化3310LCDFontSet F0HD 选择字体GLcd(0,5),"" 显示一个字符串DoGLcd(0,2),"key=";n_key 显示键值GLcd(60, 0), n 显示一个变量n好观察3310有没有运行Incr nReset SLSet SL 锁存74HC165Reset DDRB.5 将SDIN变为输入为读取74HC165做准备Set DDRB.7n_key=ShiftIn 获得键值n_key=Not n_keyWaitMs 100Set DDRB.5 将SDIN变为输出为写3310LCD做准备Loop$Include "C:\FastAVR\Nokia3310\F0HD.bas"图片附件:该帖子在2006-1-7 0:26:48 编辑过本站有售:30元/片Nokia 3310手机的点阵LCD模块不仅小巧、省电、驱动容易,而且价钱也便宜。

(整理)诺基亚LCD5110液晶接线图和程序

(整理)诺基亚LCD5110液晶接线图和程序

该模块具有以下特点:●84x48 的点阵LCD,可以显示4 行汉字,●采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。

支持多种串行通信协议(如AVR 单片机的SPI、MCS51 的串口模式0等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。

●可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。

●LCD 控制器/驱动器芯片已绑定到LCD 晶片上,模块的体积很小。

●采用低电压供电,正常显示时的工作电流在200μA 以下,且具有掉电模式。

LPH7366 的这些特点非常适合于电池供电的便携式通信设备和测试设备中C8051F学习笔记:Nokia 5110驱动Nokia5110是一款经典机型,可能由于经典的缘故,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示,取代LCD1602。

使用Nokia5110液晶的四大理由1)性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉字,30个字符。

Nokia5110裸屏仅8.8元,LCD1602一般15元左右,LCD12864一般50~70元。

2)接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线,LCD12864需12根。

3)速度快,是LCD12864的20倍,是LCD1602的40倍。

4)Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模式,适合电池供电的便携式移动设备。

可以在市场上买到Nokia5110的裸屏和带PCB的Nokia5110屏幕,因为Nokia5110是不带背光的,所以通常商家会在PCB上按了几个背光LED,上电就能亮,建议大家还是买那种连上PCB的51 10。

Nokia5110原理图:商家把该引出的管脚都引出了,下面就可以连接C8051F的相应管脚,写程序驱动5110了。

3310中文手册

3310中文手册

产品说明书
PCD8544
2 概述
PCD8544 是一块低功耗的 CMOS LCD 控制驱动器,设计为驱动 48 行 84 列的图形显示。所有必须的显示功能集成在一块芯片上,包 括 LCD 电压及偏置电压发生器,只须很少外部元件且功耗小。
PCD8544 与微控制器的接口使用串行总线。 PCD8544 采用 CMOS 工艺。
6.1.6 T1, T2, T3 和 T4: 测试点
T1, T3 和 T4 必须连接到 VSS, T2 悬空,用户不能访问。
6.1.7 SDIN:串行数据线
输入:数据线。
1999 年 4 月 12 日
6
Philips 半导体
产品说明书
48x84点矩阵LCD控制/驱动
PCD8544
6.1.8 SCLK: 串行时钟线 输入:时钟信号: 0.0 ~ 4.0 Mbits/s.
1999 年 4 月 12 日
2
产品说明书
PCD8544�
Philips 半导体
48x84点矩阵LCD控制/驱动
7.8 温度补偿 8 指令
8.1 初始化 8.2 复位功能 8.3 功能设置 8.3.1 位 PD 8.3.2 位 V 8.3.3 位 H 8.4 显示控制 8.4.1 位 D 和 E 8.5 设置 RAM 的 Y 地址 8.6 设置 RAM 的 X 地址 8.7 温度控制 8.8 偏置值 8.9 设置 VOP 值 9 极限值 10 操作 11 直流特性 12 交流特性 12.1 串行界面 12.2 复位 13 应用信息 14 焊盘定位 14.1 焊盘信息 14.2 焊盘定位 15 盘信息 16 定义 17 应用支持
DDRAM是存储显示数据的48*84位静态RAM。RAM分为6排,每排84 字节(6*8*84位)。访问RAM期间,数据通过串行接口传输。这里X 地址与列输出号码直接通信。 7.4 时钟发生器

Nokia3310 5110液晶显示(使用说明+C程序)

Nokia3310 5110液晶显示(使用说明+C程序)

3.3V的稳压管Nokia5110液晶屏完全新手学习笔记(一)3人收藏此文章, 我要收藏发表于1年前 , 已有3442次阅读共1个评论小Jay已经很久没有接触嵌入式了,这些天在学习51,还故意买了块Nokia 5110液晶屏来玩玩(因为便宜吧,嘻嘻~)。

一开始,小Jay不才,看5110芯片资料一头雾水,囧!不过呢,小Jay还是很努力的,经过几番研究,终于有些眉目,其实5110也并不难的。

此文提供给和我一样的鸟哥参考,希望能帮得上忙。

(*^__^*) 嘻嘻声明:1、本文章用于自己的知识回顾和提供给有需要的初学者,高手请飘过~2、本文章的内容均从“诺基亚5110液晶屏资料驱动芯片PCD8544中文数据手册.pdf”中,结合自己的理解,整理并简化出来的知识,更多详细内容请查看芯片手册。

另外,内容有不对的地方,望指正。

现在我们一步一步来:一、硬件链接:首先,看一下硬件(仅供参考,读者已对自己的硬件很熟悉,可以直接跳过。

):说明:图1:排针从左至右1到8位。

图2: 5110接口在板子中的区域。

图3: 8位排针对应连接5110液晶屏相应的引脚。

图4: 5110液晶显示屏对应8位排针JP19的插入方向。

再看一下我的板子的原理图:图5中,显示了8位排针JP19(即5110液晶屏的引脚)其中的5根与51单片机(本人的为STC89C516RD+)的PB I/O口的连接方式:5110_RST <---> PB2(P1.2)5110_SCE <---> PB3(P1.3)MOSI(sdin) <---> PB5(P1.5)MISO(dc) <---> PB6(P1.6)SCK <---> PB7(P1.7)这样,我们知道了用51单片机中的I/O口和5110引脚的链接方式。

二、引脚接线图请根据程序里的定义连接,51的程序默认接线为:看了这些默认接线,可能有个疑问:“这些位变量(引脚)究竟有什么用呢?”,带着这个疑问,请看5110芯片手册中的引脚说明(重点看红色区域):从这个引脚说明中,我们知道了不同的引脚,对应的功能。

电子电路设计的常见错误 DXP 原理图

电子电路设计的常见错误 DXP 原理图

VCC V+ C1+ C1C2+ C2VGND
VCC RE1/AN6 RC1(CCP2)
? ? ? 5 4007 4007
U4
JDQ
MAX202E
JZC-23F
? ? ? ? ? ?
? ? ? 6 4007 4007 RC7/RX RC6/TX ? ? 4+
BJ3 1 2 3 4 ? ? 3 24V+
D6 VCC 1N4002 U3 1 P1 IN OUT ADJ LM7805 3 C11 0.1uF
LM7805 3
C11 0.1uF
C12 470uF
1 2 Header 2
C12 4700uF
C10 0.33uF
2
15V
D5 1N5400
D7 1N5400 C13 C14 0.33uF
U11 1N4001 1 IN OUT GND 3
VCC RC4 RC5
BJ4 1 2 3 4 ? ? 4 DC/DC DC/DC-24/5
VCC RC6/TX RC7/RX
TX
VCC JZC-23F K7 D13 D14
D9-2 D9-3 D9-5
U2 IN 1 IN 2 IN 3 IN 4 IN 5 IN 6 IN 7 COMMON
1 2 3 4 RS232
? ? ? 7 OUT 1 OUT 2 OUT 3 OUT 4 OUT 5 OUT 6 OUT 7 CLAMP 16 15 14 13 12 11 10 9 ? ? ? 8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 24V+ DCT 4007 4007 1 2 3 4 5 6 7 8 JZC-23F ? ? 4K8 D15 D16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

unsigned char line; c -= 32; for (line=0; line<6; line++) LCD_write_byte(font6x8[c][line], 1); } /*----------------------------------------------------------------------LCD_write_char: 英文字符串显示函数 输入参数:*s:英文字符串指针; X、Y: 显示字符串的位置 编写日期:2004-8-10 最后修改日期:2004-8-10 -----------------------------------------------------------------------*/ void LCD_write_String(unsigned char X,unsigned char Y,char *s) { LCD_set_XY(X,Y); while (*s) { LCD_write_char(*s); s++; } } /*----------------------------------------------------------------------LCD_write_chi: 在 LCD 上显示汉字 输入参数:X、Y:显示汉字的起始 X、Y 坐标;
实验电路图及工作原理
由于 3310LCD 的工作电压范围是 2.7-3.3V,因此实验中使用一个 3.3V 的稳压二极 管 D1 将 5V 电源稳压为 3.3V 左右,为 MCU 和 LCD 供电。 MCU 和 LCD 之间使用 SPI 接口传输数据。
LCD 模块的引脚排列:从模块的背面看,管脚排列顺序从左至右分别为 1 至 8 脚。如下图所示:
LCD_write_byte(0x80, 0); for (i=0; i<504; i++) LCD_write_byte(0, 1); } /*----------------------------------------------------------------------LCD_set_XY: 设置 LCD 坐标函数 输入参数:X:0-83 Y:0-5 编写日期:2004-8-10 最后修改日期:2004-8-10 -----------------------------------------------------------------------*/ void LCD_set_XY(unsigned char X, unsigned char Y) { LCD_write_byte(0x40 | Y, 0);// column LCD_write_byte(0x80 | X, 0);// row } /*----------------------------------------------------------------------LCD_write_char: 显示英文字符 输入参数:c:显示的字符; 编写日期:2004-8-10 最后修改日期:2004-8-10 -----------------------------------------------------------------------*/ void LCD_write_char(unsigned char c) {
{ buffer_h[n]=buffer_h[n+1]; buffer_l[n]=buffer_l[n+1]; } LCD_set_XY(X,Y); for (n=0; n<83; n++) { LCD_write_byte(buffer_h[n],1); } LCD_set_XY(X,Y+1); for (n=0; n<83; n++) { LCD_write_byte(buffer_l[n],1); } delay_nms(T); } } /*----------------------------------------------------------------------LCD_draw_map: 位图绘制函数 输入参数:X、Y:位图绘制的起始 X、Y 坐标; *map:位图点阵数据; Pix_x:位图像素(长) Pix_y:位图像素(宽) 编写日期:2004-8-13
delay_1us(); PORTB |= LCD_RST; PORTB &= ~LCD_CE ;// 关闭 LCD delay_1us(); PORTB |= LCD_CE;// 使能 LCD delay_1us(); LCD_write_byte(0x21, 0);// 使用扩展命令设置 LCD 模式 LCD_write_byte(0xc8, 0);// 设置偏置电压 LCD_write_byte(0x06, 0);// 温度校正 LCD_write_byte(0x13, 0);// 1:48 LCD_write_byte(0x20, 0);// 使用基本命令 LCD_clear();// 清屏 LCD_write_byte(0x0c, 0);// 设定显示模式,正常显示 PORTB &= ~LCD_CE ;// 关闭 LCD } /*----------------------------------------------------------------------LCD_clear: LCD 清屏函数 编写日期:2004-8-10 最后修改日期:2004-8-10 -----------------------------------------------------------------------*/ void LCD_clear(void) { unsigned int i; LCD_write_byte(0x0c, 0);
实验目标
本实验我们就采用 Atmega8 或者 Atmega48 来驱动 3310 的 LCD。
在 LCD 上显示和移动汉字; 在 LCD 的最上一行显示“欢迎光临电子爱好者俱乐部!”,并且让这串汉字在 LCD 上从左至右不停地移动。 在 LCD 上显示英文字符串; 在 LCD 的最底一行固定显示“”。 在 LCD 上显示位图。
Nokia 3310 LCD 显示
原创
Nokia 3310 手机的点阵 LCD 模块不仅小巧、省电、驱动容易,而且价钱也便宜。因 此,最近网上常见到不少朋友都在用单片机来驱动该模块,制做出很多作品。 在此,我要特别感谢神舟兄,是在他的热情帮助下,我才购得这款 3310 的液晶显示 模块。如果有朋友需要的话也可以和他联系(神舟 emal:conglp@ )。

注意: • LCD 模块的引脚即使用导线直接焊接上,也要用路
实验源程序
主程序:文件名是 3310LCDTest.c
#include <iom48v.h> #include <macros.h> #include "lcd.h" #include "bmp.h" /*******************************************/ void main(void) {
OSCCAL=0x99;// 8M 系统内部时钟校准 //设置 MCU 的 I/O 口 DDRB |= LCD_RST | LCD_DC | LCD_CE | SPI_MOSI | SPI_CLK| 0X02; SPSR |= BIT(SPI2X);// 设置 SPI 时钟倍速 SPCR |= BIT(SPE)|BIT(MSTR);// 使能 SPI 接口,主机模式,4M 时钟 LCD_init(); //初始化 LCD 模块
ch_with :汉字点阵的宽度 num:显示汉字的个数; line:汉字点阵数组中的起始行数 row:汉字显示的行间距 编写日期:2004-8-11 最后修改日期:2004-8-12 -----------------------------------------------------------------------*/ void LCD_write_chi(unsigned char X, unsigned char Y, unsigned char ch_with,unsigned char num, unsigned char line,unsigned char row) { unsigned char i,n; LCD_set_XY(X,Y);//设置初始位置 for (i=0;i<num;) { for (n=0; n<ch_with*2; n++)//写一个汉字 { if (n==ch_with)//写汉字的下半部分 { if (i==0) LCD_set_XY(X,Y+1); else LCD_set_XY((X+(ch_with+row)*i),Y+1); } LCD_write_byte(china_char[line+i][n],1);
在 LCD 的中间位置显示“AVR”和“实验室”两个位图。
本站商城提供该 LCD 模块邮购:/shop/index.asp 实验器材
Atmega8 或者 Atmega48 芯片一只、3.3V 稳压二极管一只、3310LCD 点阵液晶显示屏。 Atmega8 和 Atmega48 的管脚顺序完全相同,硬件可以直接替用。
} i++; LCD_set_XY((X+(ch_with+row)*i),Y); } } /*----------------------------------------------------------------------LCD_write_chi: 汉字移动 输入参数:X、Y:显示汉字的起始 X、Y 坐标; T:移动速度; 编写日期:2004-8-13 最后修改日期:2004-8-13 -----------------------------------------------------------------------*/ void LCD_move_chi(unsigned char X, unsigned char Y, unsigned char T) { unsigned char i,n,j=0; unsigned char buffer_h[84]={0}; unsigned char buffer_l[84]={0}; for (i=0; i<156; i++) { buffer_h[83] = china_char[i/12][j]; buffer_l[83] = china_char[i/12][j+12]; j++; if (j==12) j=0; for (n=0; n<83; n++)
相关文档
最新文档