📄 123.c
字号:
#include <reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define DATA_PORT P0 //定义数据端口
#define PI 3.1415
sbit BUSY=P3^4;
sbit REQ=P3^5;
sbit RESET=P3^6;
sbit P10=P1^0;
uchar i=0x08;
uchar n=2,A=1;
/******LCD初始化***********/
void lcd_init()
{
BUSY=1;
REQ=0;
RESET=1;
}
/********写数据************/
void wr_lcd(uchar dat)
{
while(BUSY);
DATA_PORT=dat;
REQ=1;
while(BUSY);
REQ=0;
}
/******写指令与地址*******/
void wr_zhiling(uchar com,uchar addr_x,uchar addr_y)
{
wr_lcd(com);
wr_lcd(addr_x);
wr_lcd(addr_y);
}
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display_biankuang()
{
uchar i,j,k,l;
for(i=0x90;i<0xc0;i++) //边框横
{
wr_zhiling(0xf2,i,0x00);
wr_zhiling(0xf2,i,0x3f);
}
for(j=0x01;j<0x3f;j++) //边框竖
{
wr_zhiling(0xf2,0x90,j);
wr_zhiling(0xf2,0xbf,j);
}
for(k=0x08;k<0x3c;k++) //坐标纵轴
{
wr_zhiling(0xf2,0x08,k);
}
for(l=0x09;l<0x89;l++) //坐标横轴
{
wr_zhiling(0xf2,l,0x1f);
}
}
void zuobiao_data(uchar k) //在液晶上绘点 ,绘上半部分
{
uchar a;
a=k;
wr_zhiling(0xf2,i,0x1f-a);
}
void zuobiao_data1(uchar k) //绘下半部分
{
uchar b;
b=k;
wr_zhiling(0xf2,i,0x20+b); //0x20的正确设置,下半部分终于出了波形
}
void display_data()
{
uchar c,k;
uint j;
float a;
while(1)
{ P10=~P10; //小灯亮
for(j=0;j<=1;)
{
a=A*sin(n*2*PI*j/360);
if(a>=0) //当sinx为正时,绘上半部分点
{
c=(uchar)(100*a);
k=c/5; //纵坐标每个格,值为0.05
zuobiao_data(k);
j=j+3;
i=i+0x01;
// delay(100);
}
if (a<0) //当sinx为负时,绘下半部分点
{
a=-a; //转换为正数,好运算
c=(uchar)(100*a);
k=c/5;
zuobiao_data1(k);
j=j+3;
i=i+0x01;
//delay(100);
}
}
i=0x08; //一个大循环后,x置回起始点
wr_lcd(0xf4); //清屏
display_biankuang(); //边框
}
}
void main()
{
lcd_init();
wr_lcd(0xf4);
display_biankuang();
display_data();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -