OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3353|回复: 6

1602用并行可以显示 换成IIC就不行了!

[复制链接]

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
发表于 2015-9-10 16:29:51 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]这是并行的 main.c //#include "led.h" #include "delay.h" #include "sys.h" #include "1602.h" unsigned char dis1[] = {" WELCOME TO"}; unsigned char dis2[] = {" tony.chen"}; unsigned char dis3[] = {" study STM32"}; unsigned char dis4[] = {" thank you"}; void RCC_Configuration(void); main() { unsigned char i; // SystemInit(); //?????±??????????72M SYSCLK_FREQ_72MHz delay_init(72); //???±?????????? NVIC_Configuration(); //?è??NVIC????·?×é2:2??????????????2???ì???????? RCC_Configuration(); //LED_Init(); LCD_Init(); // ??????LCD delay_ms(10); while(1) { lcd_wcmd(0x06); //?ò????????±ê lcd_pos(0); //?è??????????????????????1??×?·? i = 0; while(dis1[ i ] != '\0') { //????×?·?"WLCOME TO" lcd_wdat(dis1[ i ]); i++; delay_us(200000); //??????×??®?????????? } lcd_pos(0x40); //?è????????????????????1??×?·? i = 0; while(dis2[ i ] != '\0') { lcd_wdat(dis2[ i ]); //????×?·?" WWW.PRECHIN.COM " i++; delay_us(200000); //??????×??®?????????? } delay_us(80000); //?????????±?? lcd_wcmd(0x01); //????LCD?????????? delay_us(1); lcd_wcmd(0x04); //?ò×ó??????±ê lcd_pos(15); //?è??????????????????????16??×?·? i = 0; while(dis3[ i ] != '\0') { //????×?·?"WLCOME TO" lcd_wdat(dis3[ i ]); i++; delay_us(200000); //??????×??®?????????? } lcd_pos(0x40); //?è??????????????????????16??×?·? i = 0; while(dis4[ i ] != '\0') { lcd_wdat(dis4[ i ]); //????×?·?" WWW.PRECHIN.COM " i++; delay_us(200000); //??????×??®?????????? } delay_us(80000); //?????????±?? lcd_wcmd(0x01); //????LCD?????????? // LED0=!LED0; delay_us(10000); //????????×????±?? } } void RCC_Configuration(void) { RCC_DeInit();//?????è RCC?????÷???è???±???? RCC_HSICmd(ENABLE);//????HSI while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET) {} //????HSI???????? if (1) { //FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //FLASH_SetLatency(FLASH_Latency_2); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); RCC_PCLK2Config(RCC_HCLK_Div1); //?è?? PLL ?±?????°±??????? RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_2); //?????ò???§?? PLL,????????????????ENABLE?ò??DISABLE RCC_PLLCmd(ENABLE);//????PLL±??????????±??,?????ü????±??§?? //???????¨?? RCC ±ê?????è?????? ????PLL?????????? while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } //?è???????±???¨SYSCLK?© ?è??PLL???????±???? RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //????PLL??????×÷???????±?????±???? // 0x00??HSI ×÷???????±?? // 0x04??HSE×÷???????±?? // 0x08??PLL×÷???????±?? while (RCC_GetSYSCLKSource() != 0x08) { } } } 、、、、、、、、、、、、、、、、、、、、、、、、、 1602.c #include "stm32f10x.h" #include "1602.h" #include "sys.h" #include "delay.h" //typedef unsigned char BYTE; //typedef unsigned char BOOL; unsigned char lcd_bz(void) { // ????LCD????×??? unsigned char result; LCD_RS(0); //0; LCD_RW(1); //1; LCD_EN(1); //1; delay_us(1); result = (GPIO_ReadInputData(GPIOB) & 0x8000)>>8; LCD_EN(0); // 0; return result; } /******************************???ü??*************************************************/ void lcd_wcmd(int cmd) { // ??????????????LCD while(lcd_bz()); LCD_RS(0); // 0; LCD_RW(0); // 0; LCD_EN(0); // 0; delay_us(1); //NOP(); GPIOB->BSRR = cmd<<8 & 0xff00; //??????????P0?? GPIOB->BRR = ((~cmd)<<8) & 0xff00; //NOP(); //NOP(); delay_us(1); LCD_EN(1); // 1; //NOP(); //NOP(); delay_us(1); LCD_EN(0); // 0; } /******************************?è??????*************************************************/ void lcd_pos(unsigned char pos) { //?è?¨???????? lcd_wcmd(pos | 0x80); } /******************************?è??????*************************************************/ void lcd_wdat(int dat) { //????×?·???????????LCD while(lcd_bz()); LCD_RS(1); //= 1; LCD_RW(0); //= 0; LCD_EN(0); //= 0; GPIOB->BSRR = dat<<8 & 0xff00; ////P0 = dat GPIOB->BRR = ((~dat)<<8) & 0xff00; delay_us(1); //NOP(); //NOP(); LCD_EN(1);// = 1; delay_us(1); //NOP(); //NOP(); LCD_EN(0);// = 0; } void LCD_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //°??÷???è?????¨IO?? GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE); // HOUGAI //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; //?ù??GPIO???????à?????? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1 |GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //???ì???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //??????×??ó??????50HZ //GPIO_Init(GPIOA, &GPIO_InitStructure); //??????GPIOA???? GPIO_Init(GPIOB, &GPIO_InitStructure); //??????GPIOB???? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11|GPIO_Pin_12 |GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; //?ù??GPIO???????à?????? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //???ì???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //??????×??ó??????50HZ GPIO_Init(GPIOB, &GPIO_InitStructure); //??????GPIOB???? //GPIO_WriteBit(GPIOA,0xffff); //GPIO_WriteBit(GPIOB,0xffff); //GPIO_Write(GPIOA,0XFFFF); //??GPIOA 16???????????????????? GPIO_Write(GPIOB,0XFFFF); //??GPIOB 16?????????????????? lcd_wcmd(0x38); //16*2??????5*7???ó??8?????? delay_us(200); lcd_wcmd(0x0c); //????????????±ê delay_us(200); lcd_wcmd(0x06); //??????±ê delay_us(200); lcd_wcmd(0x01); //????LCD?????????? delay_us(200); } ....................................................... 1602.h #ifndef __1602_H #define __1602_H #define RS GPIO_Pin_0 //PB1; #define RW GPIO_Pin_1 //PB2; #define EN GPIO_Pin_3 //PB0; //#define RS PBout(1) //PB1; //#define RW PBout(2) //PB2; //#define EN PBout(0) //PB0; #define LCD_RS(x) x ? GPIO_SetBits(GPIOB, RS): GPIO_ResetBits(GPIOB, RS) #define LCD_RW(x) x ? GPIO_SetBits(GPIOB, RW): GPIO_ResetBits(GPIOB, RW) #define LCD_EN(x) x ? GPIO_SetBits(GPIOB, EN): GPIO_ResetBits(GPIOB, EN) void LCD_Init(void); void lcd_wcmd(int cmd); unsigned char lcd_bz(void); void lcd_pos(unsigned char pos); void lcd_wdat(int dat); #endif /////////////////////////////////////////////////////////////////////// 这是IIC main.c //#include "led.h" #include "delay.h" #include "sys.h" //#include "1602.h" #include "iic.h" unsigned char dis1[] = {" WELCOME TO"}; unsigned char dis2[] = {" tony.chen"}; unsigned char dis3[] = {" study STM32"}; unsigned char dis4[] = {" thank you"}; void RCC_Configuration(void); main() { unsigned char i; // SystemInit(); //?????±??????????72M SYSCLK_FREQ_72MHz delay_init(72); //???±?????????? NVIC_Configuration(); //?è??NVIC????·?×é2:2??????????????2???ì???????? RCC_Configuration(); //LED_Init(); IIC_Init(); //LCD_Init(); // ??????LCD delay_ms(10); while(1) { lcd_wcmd(0x06); //?ò????????±ê lcd_pos(0); //?è??????????????????????1??×?·? i = 0; while(dis1[ i ] != '\0') { //????×?·?"WLCOME TO" lcd_wdat(dis1[ i ]); i++; delay_us(200000); //??????×??®?????????? } lcd_pos(0x40); //?è????????????????????1??×?·? i = 0; while(dis2[ i ] != '\0') { lcd_wdat(dis2[ i ]); //????×?·?" WWW.PRECHIN.COM " i++; delay_us(200000); //??????×??®?????????? } delay_us(80000); //?????????±?? lcd_wcmd(0x01); //????LCD?????????? delay_us(1); lcd_wcmd(0x04); //?ò×ó??????±ê lcd_pos(15); //?è??????????????????????16??×?·? i = 0; while(dis3[ i ] != '\0') { //????×?·?"WLCOME TO" lcd_wdat(dis3[ i ]); i++; delay_us(200000); //??????×??®?????????? } lcd_pos(0x40); //?è??????????????????????16??×?·? i = 0; while(dis4[ i ] != '\0') { lcd_wdat(dis4[ i ]); //????×?·?" WWW.PRECHIN.COM " i++; delay_us(200000); //??????×??®?????????? } delay_us(80000); //?????????±?? lcd_wcmd(0x01); //????LCD?????????? // LED0=!LED0; delay_us(10000); //????????×????±?? } } void RCC_Configuration(void) { RCC_DeInit();//?????è RCC?????÷???è???±???? RCC_HSICmd(ENABLE);//????HSI while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET) {} //????HSI???????? if (1) { //FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //FLASH_SetLatency(FLASH_Latency_2); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); RCC_PCLK2Config(RCC_HCLK_Div1); //?è?? PLL ?±?????°±??????? RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_2); //?????ò???§?? PLL,????????????????ENABLE?ò??DISABLE RCC_PLLCmd(ENABLE);//????PLL±??????????±??,?????ü????±??§?? //???????¨?? RCC ±ê?????è?????? ????PLL?????????? while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } //?è???????±???¨SYSCLK?© ?è??PLL???????±???? RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //????PLL??????×÷???????±?????±???? // 0x00??HSI ×÷???????±?? // 0x04??HSE×÷???????±?? // 0x08??PLL×÷???????±?? while (RCC_GetSYSCLKSource() != 0x08) { } } } .............................................................................. 1602.c #include "stm32f10x.h" //#include "1602.h" #include "sys.h" #include "delay.h" #include "iic.h" //typedef unsigned char BYTE; //typedef unsigned char BOOL; ////////// unsigned char lcd_bz(void) ////////// { // ????LCD????×??? ////////// unsigned char result; ////////// LCD_RS(0); //0; ////////// LCD_RW(1); //1; ////////// LCD_EN(1); //1; ////////// delay_us(1); ////////// ////////// result = (GPIO_ReadInputData(GPIOB) & 0x8000)>>8; ////////// LCD_EN(0); // 0; ////////// return result; ////////// } //------------------------------------------------------ //???ü?? //------------------------------------------------------ void lcd_wcmd(int cmd){ IIC_Start(); Write_OneByte(0x78); Write_OneByte(0x00); Write_OneByte(cmd); IIC_Stop(); } //------------------------------------------------------ //?????? //------------------------------------------------------ void lcd_wdat(int dat) { IIC_Start(); Write_OneByte(0x78); Write_OneByte(0x40); Write_OneByte(dat); IIC_Stop(); } /////////******************************???ü??*************************************************/ ////////void lcd_wcmd(int cmd) //////// { // ??????????????LCD //////// while(lcd_bz()); //////// LCD_RS(0); // 0; //////// LCD_RW(0); // 0; //////// LCD_EN(0); // 0; //////// delay_us(1); //////// //NOP(); //////// GPIOB->BSRR = cmd<<8 & 0xff00; //??????????P0?? //////// GPIOB->BRR = ((~cmd)<<8) & 0xff00; //////// //NOP(); //////// //NOP(); //////// delay_us(1); //////// LCD_EN(1); // 1; //////// //NOP(); //////// //NOP(); //////// delay_us(1); //////// LCD_EN(0); // 0; //////// } /******************************?è??????*************************************************/ void lcd_pos(unsigned char pos) { //?è?¨???????? lcd_wcmd(pos | 0x80); } /******************************?è??????*************************************************/ //////// void lcd_wdat(int dat) //////// { //????×?·???????????LCD //////// while(lcd_bz()); //////// LCD_RS(1); //= 1; //////// LCD_RW(0); //= 0; //////// LCD_EN(0); //= 0; //////// //////// GPIOB->BSRR = dat<<8 & 0xff00; ////P0 = dat //////// GPIOB->BRR = ((~dat)<<8) & 0xff00; //////// delay_us(1); //////// //NOP(); //////// //NOP(); //////// LCD_EN(1);// = 1; //////// delay_us(1); //////// //NOP(); //////// //NOP(); //////// LCD_EN(0);// = 0; //////// } ..................................................................................... iic.c #include "iic.h" #include "delay.h" void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); //????GPIOB?±?? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //???ì???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7); //PB6,PB7 ?????? lcd_wcmd(0x38); //16*2??????5*7???ó??8?????? delay_us(200); lcd_wcmd(0x0c); //????????????±ê delay_us(200); lcd_wcmd(0x06); //??????±ê delay_us(200); lcd_wcmd(0x01); //????LCD?????????? delay_us(200); } //?ú?úIIC???????? void IIC_Start(void) { SDA_OUT(); //sda?????? IIC_SDA=1; IIC_SCL=1; delay_us(4); IIC_SDA=0;//START:when CLK is high,DATA change form high to low delay_us(4); IIC_SCL=0;//??×?I2C×?????×?±?·????ò???????? } //?ú?úIIC???????? void IIC_Stop(void) { SDA_OUT();//sda?????? IIC_SCL=0; IIC_SDA=0;//STOP:when CLK is high DATA change form low to high delay_us(4); IIC_SCL=1; IIC_SDA=1;//·???I2C×????á?????? delay_us(4); } //???????????????? //·???????1???????????§°? // 0?????????????? u8 IIC_Wait_Ack(void) { u8 ucErrTime=0; SDA_IN(); //SDA?è???????? IIC_SDA=1;delay_us(1); IIC_SCL=1;delay_us(1); while(READ_SDA) { ucErrTime++; if(ucErrTime>250) { IIC_Stop(); return 1; } } IIC_SCL=0;//?±??????0 return 0; } //------------------------------------------------------ //?????? //------------------------------------------------------ ////unsigned char Read_Ask(void) ////{ //// unsigned char ReAsk; //// SDA_IN(); //// IIC_SCL=1; //// delay_us(2); //// ReAsk=(unsigned char)READ_SDA; //// IIC_SCL=0; //// delay_us(2); //// return ReAsk; ////} //?ú?úACK???? void IIC_Ack(void) { IIC_SCL=0; SDA_OUT(); IIC_SDA=0; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0; } //???ú?úACK???? void IIC_NAck(void) { IIC_SCL=0; SDA_OUT(); IIC_SDA=1; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0; } //IIC·???????×??? //·??????ú???????? //1???????? //0???????? void Write_OneByte(u8 txd) { u8 t; SDA_OUT(); IIC_SCL=0;//?????±?????????????? for(t=0;t<8;t++) { //IIC_SDA=(txd&0x80)>>7; if((txd&0x80))//>>7) IIC_SDA=1; else IIC_SDA=0; txd<<=1; delay_us(2); //??TEA5767?????????±????±????? IIC_SCL=1; delay_us(2); IIC_SCL=0; delay_us(2); } IIC_Wait_Ack(); } //??1??×?????ack=1?±??·???ACK??ack=0??·???nACK u8 IIC_Read_Byte(unsigned char ack) { unsigned char i,receive=0; SDA_IN();//SDA?è???????? for(i=0;i<8;i++ ) { IIC_SCL=0; delay_us(2); IIC_SCL=1; receive<<=1; if(READ_SDA)receive++; delay_us(1); } if (!ack) IIC_NAck();//·???nACK else IIC_Ack(); //·???ACK return receive; } ...................................................................... iic.h #ifndef __MYIIC_H #define __MYIIC_H #include "sys.h" //IO·??ò?è?? #define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;} #define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;} //IO??×÷???? #define IIC_SCL PBout(6) //SCL #define IIC_SDA PBout(7) //SDA #define READ_SDA PBin(7) //????SDA //IIC?ù????×÷???? void IIC_Init(void); //??????IIC??IO?? void IIC_Start(void); //·???IIC???????? void IIC_Stop(void); //·???IIC???????? void Write_OneByte(u8 txd); //IIC·???????×??? u8 IIC_Read_Byte(unsigned char ack);//IIC????????×??? u8 IIC_Wait_Ack(void); //IIC????ACK???? void IIC_Ack(void); //IIC·???ACK???? void IIC_NAck(void); //IIC??·???ACK???? //void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data); //u8 IIC_Read_One_Byte(u8 daddr,u8 addr); //void LCD_Init(void); void lcd_wcmd(int cmd); unsigned char lcd_bz(void); void lcd_pos(unsigned char pos); void lcd_wdat(int dat); #endif [/mw_shl_code]
vss接地,vdd3.3,v0接地,D6接PB6,D7接PB7,A接3.3,K接地     ⊙﹏⊙b汗  感觉好乱  有时间的帮个忙!!

每个人都说我蠢い
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-10 22:52:16 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
 楼主| 发表于 2015-9-11 08:49:58 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------

接口简单方便:可选择4 位并行接口、8 位并行接口、4 线SPI 串行接口、IIC 接口(I2C 接口)。这个可以用!!
下面是对应型号51的程序,可以麻烦帮我看看我stm32的哪里有问题吗

#include <reg51.h>
sbit scl=P1^7;
sbit sda=P1^6;
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
char code CGRAM_data[]={
0x08,0x1F,0x02,0x0F,0x0A,0x1F,0x02,0x02, //年
0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55, //偶竖
0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA, //奇竖
0XFF,0X00,0XFF,0X00,0XFF,0X00,0XFF,0X00, //奇横
0X00,0XFF,0X00,0XFF,0X00,0XFF,0X00,0XFF, //偶横
0XFF,0X11,0X11,0X11,0X11,0X11,0X11,0XFF, //方框
0XFF,0X11,0X11,0X11,0X11,0X11,0X11,0XFF, //方框

0XFF,0X11,0X11,0X11,0X11,0X11,0X11,0XFF, //方框
};
char code CGRAM_data_nian[]={
0x08,0x1F,0x02,0x0F,0x0A,0x1F,0x02,0x02,
};
//=============delay time=====================
void delay(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<110;k++);
}
//--------------wait a switch,jump out if 2.0 get a signal"0"------------------
void waitkey()
{
repeat:
if (P2&0x01) goto repeat;
else;
delay(500);
}
void transfer(int data1)
{
int i;
for(i=0;i<8;i++)
{
scl=0;
if(data1&0x80) sda=1;
else sda=0;
scl=1;
scl=0;
data1=data1<<1;
}
sda=0;
scl=1;
scl=0;
}
void start_flag()

{
scl=1; /*START FLAG*/
sda=1; /*START FLAG*/
sda=0; /*START FLAG*/
}
void stop_flag()
{
scl=1; /*STOP FLAG*/
sda=0; /*STOP FLAG*/
sda=1; /*STOP FLAG*/
}
void initial_lcd()
{
start_flag(); /*开始标志*/
transfer(0x78); /*选择SLAVE ADDRESS*/
transfer(0x00); /*控制字节:Co=0,A0=0,表示以下传输的N 个字节是指令*/
transfer(0x38);//Function set
transfer(0x0c);//Display ON/OFF
transfer(0x01);//Clear display
transfer(0x06);//Entry mode set
stop_flag(); /*结束标志*/
}
void write_CGRAM()
{
int i;
char *dp=CGRAM_data;
start_flag();
transfer(0x78); /*选择SLAVE ADDRESS*/
transfer(0x80); /*控制字节:Co=1,A0=0,表示以下传输的有且只有1 个字节是指令*/
transfer(0x40); //设置XGRAM ADDRESS:第几个CGRAM,0X40 表示第0 个。
transfer(0x40); /*控制字节:Co=0,A0=1,表示以下传输的n 个字节是数据*/
for(i=0;i<64;i++)
{
transfer(*dp);
dp=dp+1;

}
stop_flag();
}
void disp_CGRAM()
{
int i;
start_flag();
transfer(0x78); /*选择SLAVE ADDRESS*/
transfer(0x80); /*控制字节:Co=1,A0=0,表示以下传输的1 个字节是指令*/
transfer(0x80); //设置DDRAM ADDRESS:第几行,第几列
transfer(0x40); /*控制字节:Co=0,A0=1,表示以下传输的n 个字节是数据*/
for(i=0;i<16;i++)
{
transfer(0x01);
}
stop_flag();
start_flag();
transfer(0x78); /*选择SLAVE ADDRESS*/
transfer(0x80); /*控制字节:Co=1,A0=0,表示以下传输的1 个字节是指令*/
transfer(0xc0); //设置DDRAM ADDRESS:第几行,第几列
transfer(0x40); /*控制字节:Co=0,A0=1,表示以下传输的n 个字节是数据*/
for(i=0;i<16;i++)
{
transfer(0x01);
}
stop_flag();
}
/*在指定行和列位置显示指定的字母、数字(5*7 点阵的)*/
void disp_char(int line,int column,char code *dp)
{
int i;
start_flag();
transfer(0x78); /*选择SLAVE ADDRESS*/
transfer(0x80); /*控制字节:Co=1,A0=0,表示以下传输的1 个字节是指令*/
transfer(0x80+(line-1)*0x40+(column-1)); //设置DDRAM ADDRESS:第几行,第几列
transfer(0x40); /*控制字节:Co=0,A0=1,表示以下传输的n 个字节是数据*/
for(i=0;i<16;i++)
{
transfer(*dp);
dp=dp+1;

}
stop_flag();
}
void main()
{
delay(100);
initial_lcd();
write_CGRAM();
while(1)
{
disp_char(1,1,"*16*2 LCM no BL*"); /*在第1 行,第1 列,显示字符。。。。*/
disp_char(2,1,"**JLX1602I LCM**"); /*在第2 行,第1 列,显示字符。。。。*/
waitkey();
disp_char(1,1,"16X2 characters:"); /*在第1 行,第1 列,显示字符。。。。*/
disp_char(2,1,"*standard ascii*"); /*在第2 行,第1 列,显示字符。。。。*/
waitkey();
disp_CGRAM(); /*显示自编的CGRAM 字符。。。。*/
waitkey();
}
}>
每个人都说我蠢い
回复

使用道具 举报

21

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-1-10
在线时间
10 小时
发表于 2015-9-11 12:27:40 | 显示全部楼层
模拟的iic?
个人博客www.xiaovdiy.cn
https://shop100764513.taobao.com/
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
 楼主| 发表于 2015-9-11 15:07:40 | 显示全部楼层
回复【4楼】雨山:
---------------------------------
恩恩!!有什么问题吗!!
每个人都说我蠢い
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-8-26
在线时间
0 小时
发表于 2015-9-14 09:37:23 | 显示全部楼层
楼主你那并行的delay_init(72);          //???±?????????
这个地方不会出错吗???为啥我的会出现too many arguments in functioln call 的错误呀???
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
 楼主| 发表于 2015-9-14 14:21:54 | 显示全部楼层
回复【6楼】新手学习中:
--------------------------------
不会啊!!并行的可以显示!!
每个人都说我蠢い
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 16:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表