微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 串行1602的四位数据线程序-avr单片机

串行1602的四位数据线程序-avr单片机

时间:11-30 来源:互联网 点击:

/*-----------------------------------------------------------------------
* DEC_Num_Disp :10进制数值显示函数
*
* 输入参数 :X 字符起始显示行坐标2
* Y 字符起始显示列坐标
* Num 需要显示的数值(最长8位)
* Bit 有效显示的位数
* 输出 :
-----------------------------------------------------------------------*/
void DEC_Num_Disp(unsigned char X,unsigned char Y,unsignedlongNum,char Bit)
{
unsigned char i = 0;
Locate( X, Y );
for (i=0 ; i{
LCD_Buff[i] = CHR[Num%10];
Num = Num/10;
}
for (i=0 ; i{
LCD_Write_Char(0,LCD_Buff[Bit-i-1]); //先写高位再写低位
}
}

/*-----------------------------------------------------------------------
* HEX_Num_Disp :16进制数值显示函数
*
* 输入参数 :X 字符起始显示行坐标
* Y 字符起始显示列坐标
* Num 需要显示的数值(最长8位)
* Bit 有效显示的位数
* 输出 :
-----------------------------------------------------------------------*/
void HEX_Num_Disp(unsigned char X,unsigned char Y,unsignedlongNum,char Bit)
{
char a = 0;
Locate( X, Y );
for(a=8-Bit ; a<8 ; a++)
{
LCD_Write_Char(0,CHR[(Num< (a < 2)) >>28]);
}
}

1602测试程序LCD.c

/*********************************************
* "1602Driver.h"库测试程序
*********************************************/

#include
#include "1602Driver.h"

void Port_Init(void)
{
DDRD = 0xff;
DDRC = 0xff;
}
void main (void)
{
int counter;
OSCCAL="0XA5";
Port_Init();
LCD_Init();
LCD_Write_Char(0x01,0); //清屏

HEX_Num_Disp(0,0,13,1);
DEC_Num_Disp(0,1,4,1);
//LCD_Write_String(2,0,"T");
LCD_Write_String(1,0,"Disp");

while(1);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top