12864_液晶_画点画线正弦波余弦波(源代码及图片)
http://item.taobao.com/item.htm?spm=a1z09.5.0.40.m0zgCu&
id=16289846567
这里有大量与 12864液晶画点画线的相关资料,有用没
用都可以进来看看,只需要花费 0.1 元,就可以省去大量在
网上四处收集资料的时间。
12864.h//头文件
#ifndef __12864_H__
#define __12864_H__
#define uint unsigned int
#define uchar unsigned char
...
http://item.taobao.com/item.htm?spm=a1z09.5.0.40.m0zgCu&
id=16289846567
这里有大量与 12864液晶画点画线的相关
,有用没
用都可以进来看看,只需要花费 0.1 元,就可以省去大量在
网上四处收集资料的时间。
12864.h//头文件
#ifndef __12864_H__
#define __12864_H__
#define uint unsigned int
#define uchar unsigned char
void delayus(uchar i);
void delayms(uint z);
void write_com(uchar com);
void write_data(uchar dat);
uchar read_data();
void LCD_init();
void Clear_GDRAM();
void Clear_Screen();
#endif
http://item.taobao.com/item.htm?spm=a1z09.5.0.40.m0zgCu&
id=16289846567
12864.c//c文件
#include
#include "12864.h"
#define uint unsigned int
#define uchar unsigned char
#define LCD_BUS P0 //LCD并口连接在 P0口
sbit RS=P3^5;
sbit RW=P3^6;
sbit E=P3^4;
sbit PSB=P3^7;
/******************************************/
//函数名称:delayus(uchar i)
//函数功能:微秒级延时
//返回值:无
/******************************************/
void delayus(uchar i)
{
uchar j;
for(j=i;j>0;j--);
}
http://item.taobao.com/item.htm?spm=a1z09.5.0.40.m0zgCu&
id=16289846567
/******************************************/
//函数名称:delayms(uchar i)
//函数功能:毫秒级延时
//返回值:无
/******************************************/
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/******************************************/
//函数名称:void check_busy()
//函数功能:检查忙标志 BF
//返回值:无
/******************************************/
void check_busy()
{
RS=0;
RW=1;
E=1;
LCD_BUS=0xff;
while((LCD_BUS&0x80)==0x80);
E=0;
}
/******************************************/
//函数名称:write_com(uchar com)
//函数功能:写指令到 LCD
//返回值:无
/******************************************/
void write_com(uchar com)
{
uchar i;
check_busy();
RS=0;
RW=0;
E=1;
LCD_BUS=com;
i++;
E=0;
i++;
}
http://item.taobao.com/item.htm?spm=a1z09.5.0.40.m0zgCu&
id=16289846567
/******************************************/
//函数名称:write_data(uchar dat)
//函数功能:写数据到 LCD
//返回值:无
/******************************************/
void write_data(uchar dat)
{
uchar i;
check_busy();
RS=1;
RW=0;
E=1;
LCD_BUS=dat;
i++;
E=0;
i++;
}
/******************************************/
//函数名称:read_data()
//函数功能:写数据到 LCD
//返回值:dat
/******************************************/
uchar read_data()
{
uchar i;
uchar temp;
check_busy();
//LCD_BUS=0xff;
RS=1;
RW=1;
E=1;
temp=LCD_BUS;
i++;
E=0;
return temp;
}
/******************************************/
//函数名称:LCD_init()
//函数功能:12864液晶的初始化
//返回值:无
/******************************************/
void LCD_init()
{
write_com(0x30);
delayus(15);
write_com(0x30);
delayus(8);
write_com(0x0c);
delayus(25);
write_com(0x01);
delayms(15);
write_com(0x06);
}
/*****************************************/
//函数名称:void Clear_GDRAM()
//函数功能:清除整个 GDRAM空间
//返回值:无
/*****************************************/
void Clear_GDRAM()
{
uchar i,j;
for(i=0;i<64;i++)
{
for(j=0;j<16;j++)
{
write_com(0x34);//使用扩充指令
write_com(i+0x80);
write_com(j+0x80);
write_com(0x30);//回到基本指令
write_data(0x00);
write_data(0x00);
}
}
}
http://item.taobao.com/item.htm?spm=a1z09.5.0.40.m0zgCu&
id=16289846567
/*****************************************/
//函数名称:void Clear_Screen()
//函数功能:清除整个液晶屏幕
//返回值:无
/*****************************************/
void Clear_Screen()
{
write_com(0x01);
delayms(10);
}
http://item.taobao.com/item.htm?spm=a1z09.5.0.40.m0zgCu&
id=16289846567
main.c//主函数
#include
#include
#include "12864.h"
#define uint unsigned int
#define uchar unsigned char
void draw_point(uchar x,uchar y,uchar colour);
void main()
{
uchar x,y;
LCD_init();
Clear_GDRAM();
Clear_Screen();
for(x=0;x<128;x++)
{
y=32-31*cos(x*3.14/28);
//余弦波显示
draw_point(x,y,1);
}
while(1);
}
/**************************************************/
//函数名称:drawpoint(uchar x,uchar y,uchar colour)
//函数功能:在任意位置画点
//返回值:无
//x表示横坐标,y表示纵坐标
/**************************************************/
void draw_point(uchar x,uchar y,uchar colour)
{
uchar row,tier; //行 row,列 tier
uchar temp_h,temp_l;//定义两个变量用来存放都回来的数据
uchar tier_bit;//取列的低 4位
write_com(0x34);//使用扩充指令
write_com(0x34);//关绘图显示
tier=x>>4;//取列的高 4位,判断在哪一大列,值为 0~7
tier_bit=x&0x0f;//取列低 4位,判断在高 8位还是在低 8位
if(y<32)//在上半屏
{
row=y;
}
else//在下半屏
{
row=y-32;
tier+=8;
}
write_com(row+0x80);//先写行地址即垂直地址纵坐标
write_com(tier+0x80);//写列地址即横坐标
read_data();//空读一次 ,读点的状态
temp_h=read_data();//高 8位
temp_l=read_data();//低 8位
write_com(row+0x80);//先写行地址即垂直地址纵坐标,修改点的状态
write_com(tier+0x80);//写列地址即横坐标
if(tier_bit<8)//高位
{
switch(colour)
{
case 0:temp_h&=(~(0x01<<(7-tier_bit))); break;//变白,复位
case 1:temp_h|=(0x01<<(7-tier_bit)); break; //变黑,置位
case 2:temp_h^=(0x01<<(7-tier_bit));break;//取反
default:break;
}
write_data(temp_h);//写高 8位,0~7在后
write_data(temp_l);//写低 8位,8~15在前
}
else//低位
{
switch(colour)
{
case 0:temp_l&=(~(0x01<<(15-tier_bit)));break;//变白
case 1:temp_l|=(0x01<<(15-tier_bit));break;//变黑
case 2:temp_l^=(0x01<<(15-tier_bit));break;//取反
default:break;
}
write_data(temp_h);//写数据,高 8位 0~7
write_data(temp_l);//写数据,低 8位 8~15
}
write_com(0x36);//开绘图显示
write_com(0x30);//回到基本指令
}
实验现象:
http://item.taobao.com/item.htm?spm=a1z09.5.0.40.m0zgCu&
id=16289846567
本文档为【12864_液晶_画点画线正弦波余弦波(源代码及图片)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。