• PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 40KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 43
    下载次数
  • 2009-10-21 10:27
    上传日期
RS485通信程序及其自定义协义,难得的资料
RS485.rar
  • RS485
  • rs485-从
  • STARTUP.A51
    6.2KB
  • STARTUP.LST
    13.7KB
  • main.LST
    3KB
  • lcd12864_Uv2.Bak
    2.2KB
  • 12864.h
    260B
  • 12864.c
    2.6KB
  • lcd12864.Opt
    1.4KB
  • main.c
    861B
  • lcd12864.Uv2
    2.2KB
  • lcd12864_Opt.Bak
    1.4KB
  • 12864.LST
    6KB
  • lcd12864.hex
    1.5KB
  • lcd12864
    8.7KB
  • 12864.OBJ
    4.8KB
  • lcd12864.M51
    12.8KB
  • STARTUP.OBJ
    749B
  • main.OBJ
    4.4KB
  • lcd12864.lnp
    74B
  • lcd12864.plg
    175B
  • rs485-主
  • rs485_Opt.Bak
    1KB
  • STARTUP.A51
    6.2KB
  • STARTUP.LST
    13.7KB
  • main.LST
    2.9KB
  • rs485_Uv2.Bak
    2.1KB
  • rs485
    3.9KB
  • main.c
    774B
  • rs485.Opt
    1KB
  • rs485.Uv2
    2.1KB
  • rs485.plg
    172B
  • rs485.M51
    7KB
  • STARTUP.OBJ
    749B
  • main.OBJ
    3.5KB
  • rs485.lnp
    57B
  • rs485.hex
    751B
内容介绍
#include<reg52.h> #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif /* --------------------------------------------------- 控制端口定义 --------------------------------------------------- */ sbit CS = P2^0;//片选信号,高电平有效 sbit SID = P2^1;//串行数据输入端 sbit SCLK = P2^2; //串行同步时钟,上升沿读取SID数据 //sbit PSB = P3^3; //低电平为串口通讯,串口方式使用时可以直接接地 //sbit RST = P3^5; //复位,低电平有效,无需复位时,直接接高电平 /* ---------------------------------------------------- 延时函数 ---------------------------------------------------- */ void delay(uint n) { while(n--); } /* ----------------------------------------------------- 发送一个字节的数据 ----------------------------------------------------- */ void send_data(uchar data1) { uchar i; for(i=0; i<8; i++) //按位发送,发送8次完成 { SID = (bit)(data1 & 0x80); SCLK = 1; delay(30); SCLK = 0; data1 = data1 << 1; } } /* ----------------------------------------------------- 写命令数据函数 由 cdm_data选择 ----------------------------------------------------- */ #define cmd 0xf8 //写命令 #define wr 0xfa //写数据 void lcd_write(uchar cmd_data,uchar actual) { uchar byte; send_data(cmd_data); byte = actual & 0xf0; send_data(byte); byte = actual & 0x0f; byte = byte << 4; send_data(byte); } /* ************************************************************ 显示字符串函数 ************************************************************ */ void dis_str(uchar x,uchar y,uchar *str) { switch(x) { case 0: x=0x80;break; case 1: x=0x90;break; case 2: x=0x88;break; case 3: x=0x98;break; default: x=0x80; } y = x+ y; lcd_write(cmd,y); while(*str) { lcd_write(wr,*str++); delay(50); } } /* ************************************************************* 完成lcd的初始化 ************************************************************* */ void lcd_init() { CS = 1; // PSB = 0; // RST =1; delay(1000); lcd_write(cmd,0x34); //写命令,基本指令集动作 delay(50); lcd_write(cmd,0x30); //将DDRAM填满20H,设定DDRAM的地址计数器(AC)到00H delay(50); //延时 lcd_write(cmd,0x06); //点设定,光标右移,AC自动加1 delay(50); lcd_write(cmd,0x0c); //整体显示ON,光标OFF,光标位置不反白闪烁 } /* ************************************************************************** 清屏函数 ************************************************************************** */ void lcd_clear() { lcd_write(cmd,0x01); }
评论
    相关推荐