
内存是用来存储可变数据的,数据在程序中主要表现为: 全局变量,局部变量(在gcc中,其实常量也是存储在内存中的)。在程序运行过程中,CPU通过总线访问内存中的数据,而基本上所有的程序都包含数据(有些人会提问:有程序没有定义数据呀,比如经常写的printf("hello world"),其实p在printf()函数中,功能实现主要依赖于vsprintf函数,其中定义了很多的变量,就是所谓的数据,我们没有定义变量时,并不代表它不存在于我们程序中),由此绝大多数的程序中都定义了数据,而内存作为数据的载体,在程序运行中扮演了至关重要的作用。
1602不能显示汉字 。。这是我以前写的MEGA128的哦#include<iom128v.h>#define uchar unsigned char
#define uint unsigned int
#define RS 0
#define RW 1
#define EN 2
uchar wz[]={"ssssssssss"}
uchar gd[]={"ssssssssss"}
void s_ms(uint ms)
{
for(ms>1ms--)
}
void busy(void)
{
uchar temp
s_ms(500)
PORTC&=~(1<<RS) //RS=0
s_ms(500)
PORTC|=(1<<RW)//RW=1
s_ms(500)
while(temp)
{
PORTC|=(1<<EN)//EN=1
s_ms(500)
DDRA=0x00 //A口变输入
PORTA=0xff//上拉使能
s_ms(500)
temp = PINA&0x80 //读取A口
s_ms(500)
DDRA=0xff
PORTA=0xff //A口变输出
s_ms(500)
PORTC&=~(1<<EN) //EN=0
s_ms(500)
}
}
void writecom(uchar com)
{
busy()
s_ms(500)
PORTC&=~(1<<RS) //RS=0
s_ms(500)
PORTC&=~(1<<RW) //RW=0
s_ms(500)
PORTC|=(1<<EN) //EN=1
s_ms(500)
PORTA = com //输出指令
s_ms(500)
PORTC&=~(1<<EN) //EN=0
s_ms(500)
}
void WriteChar(uchar row,uchar col,uint num,uchar *pBuffer)
{
uchar i,j,t
if (row == 1) row = 0x80 + col
else row = 0xC0 + col
writecom(row)
PORTC|=(1<<RS)
s_ms(500)
PORTC&=~(1<<RW)
s_ms(500)
for(i=numi!=0i--)
{
t=*pBuffer
s_ms(500)
writedata(t)
s_ms(500)
pBuffer++
}
}
void LcdInit(void)
{
writecom(0x38)
s_ms(1000)
writecom(0x01)
s_ms(10000)
writecom(0x02)
s_ms(1000)
writecom(0x06)
s_ms(1000)
writecom(0x0c)
s_ms(1000)
writecom(0x38)
s_ms(1000)
}
void writedata(uchar data)
{
busy()
s_ms(500)
PORTC|=(1<<RS) //RS=1
s_ms(500)
PORTC&=~(1<<RW) //RW=0
s_ms(500)
PORTC|=(1<<EN) //EN=1
s_ms(500)
PORTA = data //输出数据
s_ms(500)
PORTC&=~(1<<EN) //EN=0
s_ms(500)
}
main()
{
DDRA=0xff
PORTA=0xff
DDRC=0xff
PORTC=0xff
LcdInit()
WriteChar(1,1,13,wz)
WriteChar(2,3,10,gd)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)