云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 单片机12864画线

单片机12864画线

  • 62 次阅读
  • 3 次下载
  • 2025/6/19 0:58:12

#include #include

#define uchar unsigned char typedef unsigned int uint;

#define BASIC_SET 0x30 //基本指令集 #define EXTEND_SET 0x34 //扩展指令集 #define DRAW_ON 0x36 //绘图显示开 #define DRAW_OFF 0x34 sbit RS = P2^4; sbit RW = P2^5; sbit E = P2^6; sbit RES= P2^3; sbit PSB= P2^1; #define DataPort P0

/***************************** 大致7us

*****************************/ void DelayUs2x(uchar t) {

while(--t); }

/**************************** 大致1ms

*****************************/ void DelayMs(unsigned char t) {

while(t--) {

DelayUs2x(245); DelayUs2x(245); } }

void Check_Busy() {

DataPort=0xff; RS=0; RW=1; E=1;

while((DataPort&0x80)==0x80); E=0; }

void Write_Cmd(uchar Cmd)

//忙则等待 {

Check_Busy(); RS=0; RW=0;

DataPort=Cmd; E=1; E=0; }

void Write_Data(uchar Data) {

Check_Busy(); RS=1; RW=0;

DataPort=Data; E=1; E=0; }

uchar Read_Data() {

uchar LCD_DATA; Check_Busy(); DataPort=0xff; RS=1; RW=1; E=1;

LCD_DATA=DataPort; DelayUs2x(5); E=0;

DelayUs2x(5);

return LCD_DATA; }

/*------------------------------------------------ 显示字符串 x:横坐标值,范围0~8 y:纵坐标值,范围1~4

------------------------------------------------*/

void LCD_PutString(unsigned char x,unsigned char y,unsigned char *s) {

switch(y) {

case 1: Write_Cmd(0x80+x);break; case 2: Write_Cmd(0x90+x);break; case 3: Write_Cmd(0x88+x);break;

case 4: Write_Cmd(0x98+x);break; default:break; }

while(*s>0) {

Write_Data(*s); s++; } }

void Init_ST7920() {

DelayMs(40); //大于40MS的延时程序

PSB=1; //设置为8BIT并口工作模式 DelayMs(1); //延时 RES=0; //复位 DelayMs(1); //延时

RES=1; //复位置高 DelayMs(10);

//Write_Cmd(0x30); //选择基本指令集 //DelayUs2x(50); //延时大于100us Write_Cmd(0x30); //选择8bit数据流 DelayUs2x(20); //延时大于37us

Write_Cmd(0x0c); //开显示(无游标、不反白) DelayUs2x(50); //延时大于100us

Write_Cmd(0x01); //清除显示,并且设定地址指针为00H DelayMs(15); //延时大于10ms

Write_Cmd(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位,光标从右向左加1位移动

DelayUs2x(50); //延时大于100us }

void LCD_Clear() {

Write_Cmd(0x01); DelayMs(15); }

/*清绘图*/

void LCD_Clear_GDRAM(void) {

uchar i,j;

for(j=0;j<32;j++) {

Write_Cmd(EXTEND_SET); Write_Cmd(0x80+j); Write_Cmd(0x80);

Write_Cmd(0x30); //基本指令集,绘图关 for(i=0;i<32;i++)

Write_Data(0x00); // 写入0x00 }

Write_Cmd(DRAW_ON); Write_Cmd(BASIC_SET); }

/*------------------------------------------------ 打点 x:横坐标值,范围0~127 y:纵坐标值,范围0~63

------------------------------------------------*/

void LCD_SET_Dot(uchar x,uchar y,bit Mode) {

uchar x_byte,x_bit; uchar y_byte,y_bit; uchar LCD_H,LCD_L;

x&=0x7f;//防止x坐标超过127 y&=0x3f;//防止y坐标超过63 x_byte=x/16;//那一个地址 x_bit=x; y_byte=y/32; y_bit=y2;

Write_Cmd(EXTEND_SET); Write_Cmd(DRAW_OFF); Write_Cmd(0x80+y_bit);//垂直

Write_Cmd(0x80+x_byte+8*y_byte);//水平 Read_Data();

LCD_H=Read_Data(); LCD_L=Read_Data();

Write_Cmd(0x80+y_bit);//垂直

Write_Cmd(0x80+x_byte+8*y_byte);//水平 if(x_bit<8) {

if(Mode) {

Write_Data(LCD_H|(0x01<<(7-x_bit))); Write_Data(LCD_L); } else

搜索更多关于: 单片机12864画线 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

#include #include #define uchar unsigned char typedef unsigned int uint; #define BASIC_SET 0x30 //基本指令集 #define EXTEND_SET 0x34 //扩展指令集 #define DRAW_ON 0x36 //绘图显示开 #define DRAW_OFF 0x34 sbit RS = P2^4; sbit RW = P2^5; sbit E = P2^6; sbit RES= P2^3; sbit PSB= P2^1; #define DataPort P0 /***************************** 大致7us *******

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com