📄 12864串口.c.100830202520
字号:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define clk 7
#define set_clk PORTC |= BIT(clk)
#define clr_clk PORTC &= ~BIT(clk)
#define sid 6
#define clr_sid PORTC &= ~BIT(sid)
#define set_sid PORTC |= BIT(sid)
void delay()
{
NOP();
NOP();
}
void delay_us(uint i)
{
while(i--)
{;}
}
void delay_ms(uint i)
{
uint a;
for(;i;i--)
{
for(a=0;a<1141;a++);
}
}
void wr_bit(uchar n,uchar data)
{
for(;n;n--) //写入位数
{
if(data&0x80)
{set_sid;}
else
{clr_sid;}
data=data<<1;
delay();
set_clk;
delay();
clr_clk;
}
}
void write_shuju(uchar a,uchar b)
{
clr_clk;
wr_bit(5,0xFF);
wr_bit(1,0x00);
if(a==0)
wr_bit(1,0x00);
else
wr_bit(1,0x80);
wr_bit(1,0x00); //写入一个0
wr_bit(4,b); //写入数据的高4位
wr_bit(4,0x00); //写入4个0
wr_bit(4,(b<<4)); //写入数据的低4位
wr_bit(4,0x00); //写入4个0
set_sid;
}
void lcd12864_init()
{
delay_ms(50);
delay_ms(100);
delay_ms(200);
write_shuju(0,0x30); //设置数据方式:8位
delay_us(200);
write_shuju(0,0x30); //设置数据方式:8位
delay_us(80);
write_shuju(0,0x0C); //开显示
delay_us(80);
write_shuju(0,0x40); //开显示
delay_us(200);
write_shuju(0,0x01); //清屏
delay_ms(200);
}
void write_hz(char *s)
{
while(*s)
{
write_shuju(1,*s);
s++;
}
}
void locate(uchar x,uchar y)
{
switch(x)
{
case 1:write_shuju(0,(0x80+y-1)); break;
case 2:write_shuju(0,(0x90+y-1));break;
case 3:write_shuju(0,(0x88+y-1));break;
case 4:write_shuju(0,(0x98+y-1));break;
default:break;
}
}
void cls()
{
delay_us(200);
write_shuju(0,0x01); //清屏
delay_ms(20);
}
uint mega16_adc()
{
uint addata;
DDRA&=~BIT(0);
PORTA&=~BIT(0);
ADMUX=0x40;
ADCSR=0X80;
ADCSR|=BIT(6);
while(!(ADCSR&(BIT(4))));
addata=ADCL;
addata=addata+ADCH*256;
return addata;
}
void main()
{
DDRC|=BIT(5);
DDRC|=BIT(4);
PORTC&=~BIT(4);
PORTC|=BIT(5);
lcd12864_init();
while(1)
{
locate(1,1);
wr_bit(0,"1");
delay_ms(2000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -