单片机51模块化程序 集合 实用.docVIP

  • 8
  • 0
  • 约6.6千字
  • 约 10页
  • 2017-02-01 发布于重庆
  • 举报
数码管段代码: 共阳: 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e 共阴: 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 12864液晶: /*------------------------------------------------ 检测忙位 ------------------------------------------------*/ void Check_Busy() { RS=0; RW=1; E=1; DataPort=0xff; while((DataPort0x80)==0x80);//忙则等待 E=0; } /*------------------------------------------------ 写命令 ------------------------------------------------*/ void Write_Cmd(unsigned char Cmd) { Check_Busy(); RS=0; RW=0; E=1; DataPort=Cmd; DelayUs2x(5); E=0; DelayUs2x(5); } /*------------------------------------------------ 写数据 ------------------------------------------------*/ void Write_Data(unsigned char Data) { Check_Busy(); RS=1; RW=0; E=1; DataPort=Data; DelayUs2x(5); E=0; DelayUs2x(5); } /*------------------------------------------------ 液晶屏初始化 ------------------------------------------------*/ 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 CGRAM() { int i; Write_Cmd(0x30); Write_Cmd(0x40); for(i=0;i16;i++) { Write_Data(user16

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档