📄 ht1621.c
字号:
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit lcd_cs = P1^5;
sbit lcd_clk = P1^0;
sbit lcd_data = P1^7;
uchar lcdbuff[16];
uchar temp;
/****************************************************/
void delay(void)
{
_nop_();
_nop_();
_nop_();
}
/****************************************************/
void sendbit(uchar lcddata,uchar count)
{
uchar i;
for(i=0;i<count;i++)
{
lcddata<<=1;
if(CY) lcd_data=1;
else lcd_data=0;
delay();
lcd_clk=0;
delay();
lcd_clk=1;
}
}
void clrbit(void)
{
lcd_data=0;
delay();
lcd_clk=0;
delay();
lcd_clk=1;
}
void setbit(void)
{
lcd_data=1;
delay();
lcd_clk=0;
delay();
lcd_clk=1;
}
/****************************************************/
void init_lcd(void)
{
//打开系统振荡器 100 00000001x
//1/3偏压,4个公共口 100 001010x1x
//打开LCD偏压 100 00000011x
lcd_cs=1;
lcd_clk=1;
lcd_data=1;
delay();
lcd_cs=0;
sendbit(0x80,8);
sendbit(0x20,4);
sendbit(0x29,8);
clrbit();
sendbit(0x03,8);
clrbit();
lcd_cs=1;
}
/****************************************************/
void wr_lcd(uchar *pt)
{
//写命令 101 a5,a4,a3,a2,a1,a0, 数据d0,d1,d2,d3
uchar i;
lcd_cs=1;
lcd_clk=1;
lcd_data=1;
delay();
lcd_cs=0;
sendbit(0xa0,8);
clrbit();
for(i=0;i<16;i++)
sendbit(*pt++,8);
lcd_cs=1;
}
/****************************************************/
void main()
{
for(temp=0;temp<16;temp++)
lcdbuff[temp]=0x01;
init_lcd();
wr_lcd(lcdbuff);
_nop_();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -