DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 129|回复: 0
打印 上一主题 下一主题

单片机12864 c程序

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-30 14:25:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机12864 c程序-MSP430与12864连接驱动程序(KS0108)
#i nclude"MSP430x14x.h"// Standard Equations
#i nclude"math.h"
#i nclude"stdlib.h"
#i nclude"stdio.h"
#i nclude"string.h"
#i nclude"ctype.h"
#i nclude"HZTable.h"
#i nclude"ASCII816.h"
#define uint unsigned int
#define uchar unsigned char
//**********************************************
#defineRSBIT0
#defineRWBIT1
#defineEBIT2
#defineCS1BIT3
#defineCS2BIT4
#defineRSTBIT5
#defineELBIT6//背光
//数据线:p4口,控制线:p5口
//**********************************************
ucharcradd1,cradd2;
uchar item1[5]={0,1,2,3,50};//欢迎使用
uchar item2[5]={4,5,6,7,50};//请等待……
//=======================================================
void short_delay(uint i)
{ uint j;
for(j=0;j0;i--)
{ for(count=0;count63)//右屏
{ colum=colum-64;
prr0(colum|0x40);
flag=1;
}
else//左屏
{prl0(colum|0x40);
flag=0;
}
//*********************
for(i=0;i 0; iq0--); // 延时,等待XT2起振
} while ((IFG1 & OFIFG) != 0);// 判断XT2是否起振
BCSCTL2 =SELM_2+SELS;//选择MCLK、SMCLK为XT2,
BCSCTL2 |=DIVM_1;//MCLK 2分频SMCLK=MCLK=2MHZ
}
//***********************************************
//主程序
//***********************************************
void main(void)
{
uchara;
// uchar i,j;
WDTCTL=WDTPW+WDTHOLD;
init_xt2();
P5DIR|=0X7F;//P5为输出口
P5OUT&="RST;//rst=0
delayms(10);//1ms
P5OUT|=RST;//rst=1
P5OUT&="EL;//EL=0背光=0
do
{
prl0(0xc0);prr0(0xc0);//显示开始行
prl0(0x3f);prr0(0x3f);//开显示
//P5OUT&="EL;//EL=0背光=0
//******************************************************
clsr();//clear screen
//写汉字字符串1欢迎使用
//写汉字字符串2请等待…
w_hzstr(32,2,item1);w_hzstr(32,5,item2);
delayms(100);
for(a=0;a1023)// 先要判断是否超出128*64的范围
Write_Data(0x00,1,0);//
else
Write_Data(bmp[8*j+k+8*(x-1)],1,0);
}


Write_Command(Row_Add+k,0,1); //写右屏
for(j=0;j1023) //先要判断是否超出128*64的范围
Write_Data(0x00,0,1);
else
Write_Data(bmp[8*j+k+512+8*(x-1)],0,1);

}
}
}
}
void Fun2_display(uchar const *bmp) //动画--下移--
{
char j,k,x=63;

while(x--)
{
Write_Command(Col_Add,1,1);
for(k=7;k>=0;k--)
{
Write_Command(Row_Add+k,1,0);
for(j=0;j1023)
Write_Data(0x00,1,0);// 先要判断是否超出128*64的范围
else
Write_Data(bmp[8*j+k+x],1,0);
}
Write_Command(Row_Add+k,0,1);
for(j=0;j1023) //先要判断是否超出128*64的范围
Write_Data(0x00,0,1);
else
Write_Data(bmp[8*j+k+512+x],0,1);
}
}
Delay(50000);
}
}
void Fun3_display(uchar const *bmp,uint h) //动画--上移 该函数实现了显示大于128*64图象的方法,
{ //现在只能实现显示128*h的图象
char j,k; //并且h为8的倍数
uint a, b,c,x;
x=h-1;
a=h/8;
b=128*a-1;
c=64*a;

while(x--)
{
Write_Command(Col_Add,1,1);
for(k=7;k>=0;k--)
{
Write_Command(Row_Add+k,1,0);
for(j=0;jb) //x前的系数如为-1则是上移,是+1为下移;
Write_Data(0x00,1,0); //先要判断是否超出128*h的范围
else
Write_Data(bmp[a*j+k-x],1,0);
}
Write_Command(Row_Add+k,0,1);
for(j=0;jb) //先要判断是否超出128*h的范围
Write_Data(0x00,0,1);
else
Write_Data(bmp[a*j+k+c-x],0,1);
}
}
Delay(40000) ;
}
}
void Fun4_display(uchar const *bmp)
{
char j,k,x=64;

while(x--)
{
Write_Command(Col_Add,1,1);
for(k=7;k>=0;k--)
{
Write_Command(Row_Add+k,1,0);
for(j=0;j2047)
Write_Data(0x00,1,0);// 先要判断是否超出128*64的范围
else
Write_Data(bmp[16*j+k+3*x],1,0);
}

Write_Command(Row_Add+k,0,1);
for(j=0;j2047) //先要判断是否超出128*64的范围
Write_Data(0x00,0,1);
else
Write_Data(bmp[16*j+k+1024+3*x],0,1);
}
}
Delay(10000);
}
}
*/
//上面程序的.h文件
#ifndef LCDRIVER
#define LCDRIVER
#include "init.h"
/*-----------定义寄存器的指令代码----------*/
#define Disp_On 0x3f
#define Disp_Off 0x3e
#define Col_Add 0x40
#define Row_Add 0xb8
#define Start_Line 0xc0
#define signal1 1
#define signal2 2
#define signal3 3
#define signal4 4
#define ON 1
#define OFF 0
#define lcd_data_bus P2
sbit DI =P3^1;
sbit RW =P3^3;
sbit E =P3^7;
sbit CS1=P3^4;
sbit CS2=P3^5;
sbit RST=P3^0; //复位

void Delay (long v) ;
void Write_Command(uchar cmdcode,uchar cs1,uchar cs2) ; //写命令到LCD
void Write_Data(uchar Dispdata,uchar cs1,uchar cs2) ; //写数据到LCD
uchar Read_Data(uchar cs1,uchar cs2); //read data from lcd
void Lcd_Init(void) ; //初始化LCD屏
void Clr_Screen(void) ; //清屏
//void Full_Screen(void); //满屏
uchar read_lcd_data(uchar row,uchar col); //新增函数 读数据从lcd
void lcd_row_col_data(uchar row,uchar col,uchar disp_data); //新增函数 字节形式显示
void signal_disp(uchar t,uchar on_off); //右上角标志显示
void lcd_dot_disp(uchar x,uchar y); //新增函数 以点形式显示 x 0-127; y 0-63 左下角为原点
void Ch_Display_8(uchar row, uchar col, uchar const *ch_data,uchar w,uchar dir);//指定位置显示字符w*8
void Ch_Display(uchar row, uchar col, uchar const *ch_data,uchar w,uchar dir); //指定位置显示字符w*16
void Bmp_display(uchar const *bmp); //显示128*64位图
/*
void Fun_display(uchar const *bmp); //动画效果-----右移
void Fun2_display(uchar const *bmp); //动画--下移
void Fun3_display(uchar const *bmp,uint h) ; //动画--上移//该函数实现了显示大于128*64图象的方法, 现在只能实现显示128*h的图象
void Fun4_display(uchar const *bmp);
*/
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-10-30 12:52 , 耗时 0.134159 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表