您的位置:

1602c语言编程,1602单片机程序

本文目录一览:

麻烦你能不能写一个c语言程序 用at89c52单片机要求使用1602液晶显示当前时间和温度编程

#include REGX52.H

#include stdio.h

#include "LCD1602.h"

#include "DS1302.h"

sbit DQ=P3^0;//ds18b20 端口

unsigned int ReadTemperature(void);

bit Init_DS18B20(void);

unsigned char ReadOneChar(void);

void WriteOneChar(unsigned char dat);

void DelayUs2x(unsigned char);

void Delay1ms(unsigned int);

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

  名称:18B20温度传感器

  网站:

  编写:shifang

  日期:2009.5

  修改:无

  内容:18B20单线温度检测的应用样例程序

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

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

                    18b20初始化

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

bit Init_DS18B20(void)

{

 bit dat=0;

 DQ = 1;    //DQ复位

 DelayUs2x(5);   //稍做延时

 DQ = 0;         //单片机将DQ拉低

 DelayUs2x(200); //精确延时 大于 480us 小于960us

 DelayUs2x(200);

 DQ = 1;        //拉高总线

 DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲

 dat=DQ;        //如果x=0则初始化成功, x=1则初始化失败

 DelayUs2x(25); //稍作延时返回

 return dat;

}

void DelayUs2x(unsigned char t)

{   

 while(--t);

}

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

                    读取一个字节

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

unsigned char ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

for (i=8;i0;i--)

 {

  DQ = 0; // 给脉冲信号

  dat=1;

  DQ = 1; // 给脉冲信号

  if(DQ)

   dat|=0x80;

  DelayUs2x(25);

 }

 return(dat);

}

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

                    写入一个字节

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

void WriteOneChar(unsigned char dat)

{

 unsigned char i=0;

 for (i=8; i0; i--)

 {

  DQ = 0;

  DQ = dat0x01;

  DelayUs2x(25);

  DQ = 1;

  dat=1;

 }

DelayUs2x(25);

}

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

                    读取温度

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

unsigned int ReadTemperature(void)

{

unsigned char a=0;

unsigned int b=0;

unsigned int t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作

WriteOneChar(0x44); // 启动温度转换

Delay1ms(10);

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作 

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度

a=ReadOneChar();   //低位

b=ReadOneChar();   //高位

b=8;

t=a+b;

return(t);

}

void Delay1ms(unsigned int count)

{

unsigned int i,j;

for(i=0;icount;i++)

for(j=0;j120;j++);

}

main()

{

SYSTEMTIME CurrentTime;

int temp;

float temperature;

unsigned char dist[4];

LCD_Initial();

Initial_DS1302();

Init_DS18B20();

GotoXY(14,0);

Print(".");

GotoXY(15,1);

Print("C");

while(1)

{

DS1302_GetTime(CurrentTime);

TimeToStr(CurrentTime);

DateToStr(CurrentTime);

GotoXY(0,0);Print("20");

GotoXY(2,0);

Print(CurrentTime.DateString);

GotoXY(0,1);

Print(CurrentTime.TimeString);

temp=ReadTemperature();

temperature=(float)temp*0.0625;

sprintf(dist,"%4f",temperature);

GotoXY(9,1);

Print(dist);

Delay1ms(400);

}

}

求单片机ds1302+1602电子钟c语言编程。谢谢。

//液晶显示温度

#include "AT89X52.H"

#define Ddata P0

sbit RS=P3^5; //命令数据控制端

sbit RW=P3^6; //读写选择端

sbit LCDE=P3^7; //液晶使能端

sbit DQ=P1^0; //ds18b20与单片机连接口

#define uchar unsigned char

#define uint unsigned int

unsigned char hour=0,min=0,sec=0; //定义初值

unsigned int count=0;

unsigned char line1[16]={"

temp: "}; //16个字符

unsigned char line2[16]={" time: 00:00:00"}; //16个字符

unsigned char tab[]={'0','1','2','3','4','5','6','7','8','9'}; //数组

uchar

data disdata[5];

uint tvalue; //温度值

uchar tflag; //温度正负标志

void time();

/*************************lcd1602程序**************************/

void delay1ms(unsigned int ms)//延时1毫秒(不够精确的)

{

unsigned

int i,j;

for(i=0;ims;i++)

for(j=0;j110;j++);

}

void delay­5ms()//延时5毫秒(不够精确的)

{

unsigned

int i;

for (i=0;i1000;i++);

}

void delay50us()

{

register

int i;

for (i=0;i20;i++);

}

void delay()

{unsigned char m,n;

for(m=255;m0;m--)

for(n=255;n0;n--);

}

void wr_com(unsigned char comm)

//********写控制字符程序 E=1 RS=0

RW=0**********//

{

LCDE=0; //使能端

RS=0;

//********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。

RW=0;

//********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。

LCDE=1;

Ddata=comm;

RS=0;

RW=0;

LCDE=0;

}

void wr_data(unsigned char dat)//*****当前位置写字符子程序:E=1 RS=1 RW=0

{

LCDE=0;

RS=0;

//********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。

RW=0;

//********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。

RS=1;

RW=0;

LCDE=1;

Ddata=dat; //将dat赋给P0口

LCDE=0;

RS=0;

RW=0;

}

unsigned char busycheck()//*****忙状态检查*******//

{

unsigned char i;

LCDE=0;

RS=0;

RW=0;

RS=0;

RW=1;

LCDE=1;

i=Ddata;

LCDE=0;

return(i);

}

void init()//**********初始化程序,必须按照产品的资料介绍的过程进行********//

{

wr_com(0x38); //*****显示模式设置必须三次,不用检测忙信号

delay5ms();

wr_com(0x38);

delay5ms();

wr_com(0x38);

delay5ms();

wr_com(0x01); ///***清屏****

delay5ms();

busycheck();

wr_com(0x08);

delay5ms();

busycheck();

delay5ms();

wr_com(0x06); ///****光标移动设置,写一个字符后地址指针加1***

delay5ms();

busycheck();

delay50us();

wr_com(0x38); ////***显示模式设置****

delay50us();

busycheck();

delay50us();

wr_com(0x0c); /////***显示开,不显示光标***

delay50us();

busycheck();

delay50us();

wr_com(0x40); //set cgram address

delay50us();

delay50us(); //***这些延时可用可不用***//

}

void display()

{ unsigned char i;

wr_com(0x80); //set ram address

delay50us();

busycheck();

delay50us();

for(i=0;i6;i++)

{wr_data(line1[i]); //display(6个字符)

delay50us();

busycheck();}

busycheck();

delay50us();

wr_com(0xc0); // 0xc0=0x80+0x40

delay50us();

busycheck();

delay50us();

for(i=0;i16;i++)

{

wr_data(line2[i]); //display

delay50us();

busycheck();

}

}

/******************************温度传感器ds1820程序***************************************/

void delay_18B20(unsigned int i)//延时1微秒

{

while(i--);

}

void ds1820rst()/*ds1820复位*/

{ unsigned char x=0;

DQ = 1; //DQ复位

delay_18B20(4); //延时

DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us

DQ = 1; //拉高

delay_18B20(40);

}

uchar ds1820rd()/*读数据*/

{ unsigned char i=0;

unsigned char dat = 0;

for (i=8;i0;i--) //读一个字节的数据函数

{ DQ = 0; //给脉冲信号

dat=1;

DQ = 1; //给脉冲信号

if(DQ)

dat|=0x80; //等价于 dat =

dat | 0x80,dat和0x80做“或”的运算, 结果是最高位置1,其它位保持不变。

delay_18B20(10);

}

return(dat);

}

void ds1820wr(uchar wdata)/*写数据*/

{unsigned char i=0;

for (i=8; i0; i--)

{ DQ = 0;

DQ = wdata0x01;

delay_18B20(10);

DQ = 1;

wdata=1;

//右移一位

}

}read_temp()/*读取温度值并转换*/

{uchar a,b;

ds1820rst(); //ds1802/初始化程序

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0x44);//*启动温度转换*/

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0xbe);//*读取温度*/

a=ds1820rd(); //读低八位

b=ds1820rd(); //读高八位

tvalue=b;

tvalue=8;

tvalue=tvalue|a;

if(tvalue0x0fff)

tflag=0;

else //“” 是逻辑与“|” 是逻辑或if(dat 0x01):不管dat是什么数和0x01(00000001)做了“与”的运算后,最低位保持不变,其它位均为0.如果dat的最低位为1,则表达式为真,就会执行if语句中的内容。如果dat最低位为0,则表达式为假,不执行if语句,执行if语句后的下一条语句。dat |= 0x80:等价于 dat = dat | 0x80,dat和0x80做“或”的运算,意思是最高位置1,其它位保持不变。

具体的可以去参考一下C语言的相关语法。

{tvalue=~tvalue+1;

tflag=1;

}

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数

return(tvalue);

}

/*******************************************************************/

void ds1820disp()//温度值显示

{ uchar flagdat;

disdata[0]=tvalue/1000+0x30;//百位数

disdata[1]=tvalue%1000/100+0x30;//十位数

disdata[2]=tvalue%100/10+0x30;//个位数

disdata[3]=tvalue%10+0x30;//小数位

if(tflag==0)

flagdat=0x20;//正温度不显示符号

else

flagdat=0x2d;//负温度显示负号:-

if(disdata[0]==0x30)

{disdata[0]=0x20;//如果百位为0,不显示

if(disdata[1]==0x30)

{disdata[1]=0x20;//如果百位为0,十位为0也不显示

}

}

wr_com(0x88);

wr_data(flagdat);//显示符号位

wr_com(0x89);

wr_data(disdata[0]);//显示百位

wr_com(0x8a);

wr_data(disdata[1]);//显示十位

wr_com(0x8b);

wr_data(disdata[2]);//显示个位

wr_com(0x8c);

wr_data(0x2e);//显示小数点

wr_com(0x8d);

wr_data(disdata[3]);//显示小数位

}

void main()

{

TMOD=0X01;

EA=1;

ET0=1;

TR0=1;

TH0=(65536-4995)/256;

TL0=(65536-4995)%256;

init();

while(1)

{

read_temp();//读取温度

ds1820disp();//显示

time(); //时间程序

display();//时间显示程序

}

}

void t0(void)interrupt 1 using 0

{

TH0=(65536-4995)/256;

TL0=(65536-4995)%256;

count++;

if(count==200){count=0;sec++;}

if(sec==60){sec=0;min++;}

if(min==60){min=0;hour++;}

if(hour==24){hour=0;}

}

void time()

{

line2[15]=tab[sec%10];line2[14]=tab[sec/10];

line2[12]=tab[min%10];line2[11]=tab[min/10];

line2[9]=tab[hour%10];line2[8]=tab[hour/10];

if(!P1_2){delay();if(!P1_2){delay();sec++;if(sec==60){sec=0;}}}

if(!P1_1){delay();if(!P1_1){delay();min++;if(min==60){min=0;}}}

if(!P1_0){delay();if(!P1_0){delay();hour++;if(hour==24){hour=0;}}}

}

给你参考一下,这样才能提高哦

1602显示超声波测距的C语言程序和Proteus仿真图

#include"reg52.h"

#include"intrins.h"

#define uchar unsigned char //无符号8位

#define uint unsigned int //无符号16位

#define ulong unsigned long //无符号32位

sbit K1=P1^0; //按下K1后,开始测距

sbit LEDRed=P1^1; //测距指示灯,亮表示正在测距,灭表示测距完成

//sbit BEEP=P1^2; //报警测量超出范围

sbit Trig=P2^5; //HC-SR04触发信号输入

sbit Echo=P2^6; //HC-SR04回响信号输出

float xdata DistanceValue=0.0; //测量的距离值

float xdata SPEEDSOUND; //声速

float xdata XTALTIME; //单片机计数周期

uchar xdata stringBuf[6]; //数值转字符串缓冲

//LCD1602提示信息

uchar code Prompts[][16]=

{

{"Measure Distance"}, //测量距离

{"- Out of Range -"}, //超出测量范围

{"MAX range 400cm "}, //测距最大值400cm

{"MIN range 2cm "}, //测距最小值2cm

{" "}, //清屏

{" Press K1 Start "} //按键开始测量

};

uchar xdata DistanceText[]="Range: "; //测量结果字符串

uchar xdata TemperatureText[]="Temperature: ";//测量温度值

extern void LCD_Initialize(); //LCD初始化

extern void LCD_Display_String(uchar *, uchar); //字符串显示

extern void ReadTemperatureFromDS18B20(); //从DS18B20读取温度值

extern int xdata CurTempInteger;

//毫秒延时函数

void DelayMS(uint ms);

//20微秒延时函数

void Delay20us();

//HCSR04初始化

void HCSR04_Initialize();

//测量距离

float MeasuringDistance();

//测距的数值排序求平均

float DistanceStatistics();

//输出距离值到LCD1602上

void DisplayDistanceValue(float dat);

//将无符号的整数转成字符串,返回字符串长度,不包括'\0'结束符

uchar UnsigedIntToString(uint value);

//蜂鸣器

//void Beep(uchar time);

//显示温度值

void DisplayTemperatureValue();

void main()

{

LCD_Initialize();//LCD1602初始化

LCD_Display_String(Prompts[0],0x00);

LCD_Display_String(Prompts[5],0x40);

ReadTemperatureFromDS18B20(); //测温度

HCSR04_Initialize(); //HC-SR04初始化

while(1)

{

if(K1==0)

{

DelayMS(5);

if(K1==0)

{

//Beep(1);

while(K1==0);

LEDRed=0;

ReadTemperatureFromDS18B20();//测温度

DisplayTemperatureValue();

if(CurTempInteger14)

CurTempInteger=14;

else if(CurTempInteger26)

CurTempInteger=26;

SPEEDSOUND=334.1+CurTempInteger*0.61;//计算声速

DistanceValue=DistanceStatistics(); //测距并返回距离值

DisplayDistanceValue(DistanceValue); //显示距离值

LEDRed=1;

}

}

}

}

//测距的数值排序求平均

float DistanceStatistics()

{

uchar i,j;

float disData[7],t;

//连续测距

for(i=0;i7;i++)

{

disData=MeasuringDistance();

DelayMS(80);

}

//排序

for(j=0;j=6;j++)

{

for(i=0;i7-j;i++)

{

if(disDatadisData[i+1])

{

t=disData;

disData=disData[i+1];

disData[i+1]=t;

}

}

}

return (disData[2]+disData[3]+disData[4])/3;

}

//测量距离

float MeasuringDistance()

{

//最大定时时间约65ms

TH0=0;

TL0=0;

//生成20us的脉冲宽度的触发信号

Trig=1;

Delay20us();

Trig=0;

//等待回响信号变高电平

while(!Echo);

TR0=1; //启动定时器0

//等待回响信号变低电平

while(Echo);

TR0=0; //关闭定时器0

//返回距离值(mm)

return (SPEEDSOUND*XTALTIME*((float)TH0*256+(float)TL0))/2000;

}

//HCSR04初始化

void HCSR04_Initialize()

{

//计算单片机计数周期 晶振=11.953M 单位us

XTALTIME=12/11.953;

//温度25度时声速的值

SPEEDSOUND=334.1+25*0.61;

Trig=0;

Echo=0;

TMOD=0x01;

}

//输出距离值到LCD1602上

void DisplayDistanceValue(float dat)

{

uchar i=0,j=0,len;

uint value;

value=(uint)dat;

//范围检查大于4000mm和小于20mm都为超出测量范围

if(value4000)

{

LCD_Display_String(Prompts[1],0x00);

LCD_Display_String(Prompts[2],0x40);

//Beep(2);

}

else if(value20)

{

LCD_Display_String(Prompts[1],0x00);

LCD_Display_String(Prompts[3],0x40);

//Beep(2);

}

else

{

//将数值转换成字符串

len=UnsigedIntToString(value);

//保留1位小数

while(stringBuf!='\0')

{

if(len-j==1)

{

DistanceText[6+j]='.';

j++;

}else

{

DistanceText[6+j]=stringBuf;

i++;

j++;

}

}

DistanceText[6+j]='c';

j++;

DistanceText[6+j]='m';

i=7+j;

//剩余位置补空格

while(i16)

{

DistanceText=' ';

i++;

}

//LCD_Display_String(Prompts[0],0x00);

LCD_Display_String(DistanceText,0x40);

}

}

//显示温度值

void DisplayTemperatureValue()

{

TemperatureText[13]=CurTempInteger/10+'0';

TemperatureText[14]=CurTempInteger+'0';

TemperatureText[15]='C';

LCD_Display_String(TemperatureText,0x00);

}

//将无符号的整数转成字符串,返回字符串长度

uchar UnsigedIntToString(uint value)

{

uchar i=0,t,length;

//从个位开始转换

do

{

stringBuf='0'+value;

value=value/10;

i++;

}while(value!=0);

length=i;

//将字符串颠倒顺序

for(i=0;i(length/2);i++)

{

t=stringBuf;

stringBuf=stringBuf[length-i-1];

stringBuf[length-i-1]=t;

}

stringBuf[length]='\0';

return length;

}

//蜂鸣器

//延时函数 毫秒 @12.000MHz

void DelayMS(uint ms)

{

uchar i, j;

while(ms--)

{

_nop_();

i = 2;

j = 239;

do

{

while (--j);

}while (--i);

}

}

//延时函数 20微秒 @12.000MHz

void Delay20us()

{

uchar i;

_nop_();

i = 7;

while (--i);

}

//定时器0中断

void Timer0() interrupt 1

{

}

//DS18B20代码:

#include

#include

#define uchar unsigned char //无符号8位

#define uint unsigned int //无符号16位

//定义DS18B20端口DS18B20_DQ

sbit DS18B20_DQ = P2^7;

//当前采集的温度值整数部分

int xdata CurTempInteger;

//当前采集的温度值小数部分

int xdata CurTempDecimal;

void Delayus(uint count)

{

while (--count);

}

uchar Reset_DS18B20()

{

uchar status;

DS18B20_DQ=1;

Delayus(1);

//开始复位过程

DS18B20_DQ=0; //数据线拉低

Delayus(100); //延时480us-960us

DS18B20_DQ=1; //数据线拉高

Delayus(10); //延时15us-60us

status=DS18B20_DQ; //读取数据线上的状态

Delayus(120);

return status;

}

void WriteByteToDS18B20(uchar dat)

{

uchar i;

for(i=0;i8;i++)

{

DS18B20_DQ=0;

DS18B20_DQ=dat0x01; //发送1位数据

Delayus(15); //延时60us以上

DS18B20_DQ=1; //释放总线,等待总线恢复

dat=1; //准备下一位数据

}

}

uchar ReadByteFromDS18B20()

{

uchar i,dat=0;

for(i=0;i8;i++)

{

DS18B20_DQ=0; //拉低总线,产生读信号

dat=1;

DS18B20_DQ=1; //释放总线,准备读1位数据

Delayus(2); //延时4us

if(DS18B20_DQ) dat|=0x80; //合并每位数据

Delayus(15); //延时60us

DS18B20_DQ=1; //拉高总线,准备读下1位数据

}

return dat;

}

void ReadTemperatureFromDS18B20()

{

uchar flag=0;//正负符号标志

//存储当前采集的温度值

uchar TempValue[]={0,0};

if(Reset_DS18B20())

{

CurTempInteger=255;

CurTempDecimal=0;

}

else

{

WriteByteToDS18B20(0xCC);//跳过ROM命令

WriteByteToDS18B20(0x44);//温度转换命令

Reset_DS18B20();//复位

WriteByteToDS18B20(0xCC);//跳过ROM命令

WriteByteToDS18B20(0xBE);//读取温度暂存器命令

TempValue[0]=ReadByteFromDS18B20();//先读低字节温度值

TempValue[1]=ReadByteFromDS18B20();//后读高字节温度值

Reset_DS18B20();//复位

//计算温度值

//先进行正温度与负温度判断,高5位全为1(0xF8)则为负数

if((TempValue[1]0xF8)==0xF8)

{

//负温度计算:取反加1,低字节为0时,高字节取反加1,否则不需要。

TempValue[1]=~TempValue[1];

TempValue[0]=~TempValue[0]+1;

if(TempValue[0]==0x00) TempValue[1]++;

flag=1;//负数标志

}

//将温度值分为整数和小数两部分存储(默认为12位精度)

CurTempInteger=((TempValue[1]0x07)4)|((TempValue[0]0xF0)4); if(flag) CurTempInteger=-CurTempInteger;

CurTempDecimal=(TempValue[0]0x0F)*625;

}

}

//LCD1602程序代码:

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define Delay4us(){_nop_();_nop_();_nop_();_nop_();}

sbit LCD_RS=P2^0;

sbit LCD_RW=P2^1;

sbit LCD_EN=P2^2;

void LCDDelay(uint ms)

{

uchar i, j;

while(ms--)

{

_nop_();

i = 2;

j = 239;

do

{

while (--j);

}while (--i);

}

}

bit LCD_Busy_Check()

{

bit result;

LCD_RS=0; LCD_RW=1; LCD_EN=1;

Delay4us();

result=(bit)(P00x80);

LCD_EN=0;

return result;

}

void Write_LCD_Command(uchar cmd)

{

while(LCD_Busy_Check());

LCD_RS=0; LCD_RW=0; LCD_EN=0; _nop_(); _nop_();

P0=cmd; Delay4us();

LCD_EN=1; Delay4us(); LCD_EN=0;

}

void Write_LCD_Data(uchar dat)

{

while(LCD_Busy_Check());

LCD_RS=1;LCD_RW=0;LCD_EN=0;

P0=dat;Delay4us();

LCD_EN=1;Delay4us();LCD_EN=0;

}

void LCD_Set_POS(uchar pos)

{

Write_LCD_Command(pos|0x80);

}

void LCD_Initialize()

{

Write_LCD_Command(0x01); LCDDelay(5);

Write_LCD_Command(0x38); LCDDelay(5);

Write_LCD_Command(0x0C); LCDDelay(5);

Write_LCD_Command(0x06); LCDDelay(5);

}

void LCD_Display_String(uchar *str, uchar LineNo)

{

uchar k;

LCD_Set_POS(LineNo);

for(k=0;k16;k++)

{

Write_LCD_Data(str[k]);

}

}

void LCD_Display_OneChar(uchar Dat, uchar X, uchar Y)

{

Y = 0x01; //限制Y不能大于1(2行,0-1)

X = 0x0F; //限制X不能大于15(16个字符,0-15)

if(Y) {X |= 0x40;} //当要在第二行显示时地址码+0x40;

X |= 0x80; //算出指令码

Write_LCD_Command(X);

Write_LCD_Data(Dat);

}

这是 单片机 1602的C语言的源程序: 在此: 寻一个能解释每一步代码含义的朋友

这和你的硬件电路有关系,看程序好像P0是数据输入端

#include reg51.h

#define uchar unsigned char //宏定义

sbit Rs=P2^0; //P2.0引脚接1602的数据/命令选择端

sbit Rw=P2^1; //P2.1引脚接1602的读/写控制端

sbit E=P2^7; //P2.7引脚接1602的使能端

uchar table[]="Liu Xiao Ming",buffer; //定义两个字符型变量

int k=0;

void delay(int t) //延时子程序

{

int i,j;

for(i=0;i255;i++)

for(j=0;jt;j++) ;

}

void writecom(void) //写命令子程序

{

Rs=0;Rw=0;E=1;

P0=buffer;

E=0;

delay(5);

}

void writedata(void) //写数据子程序

{

Rs=1;Rw=0;E=1;

P0=buffer;

E=0;

delay(5);

}

void init(void) //1602初始化子程序

{

buffer=0x08;writecom(); //显示关闭

buffer=0x3c;writecom(); //

buffer=0x14;writecom();

buffer=0x06;writecom(); //显示光标移动设置

buffer=0x01;writecom(); //显示清屏

buffer=0x0f;writecom(); //

}

void main()

{

init(); //1602初始化

buffer=0x80; //

writecom();

buffer=0xc0;

writecom();

for(k=0;k20;k++)

{

buffer=table[k]; //缓存数据

writedata(); //向1602写数据,使其显示Liu Xiao Ming

}

}

1602c语言编程,1602单片机程序

2022-11-28
单片机c语言程序设计实训100例,单片机c语言应用100例p

本文目录一览: 1、《单片机C语言程序设计实训100例——基于8051+Proteus仿真》 第03篇源代码 2、单片机C语言程序设计实训100例里的第七题8只数码管滚动显示单个数字c语言设计 3、《

2023-12-08
数字电位器c语言程序,可编程数字电位器

2023-01-05
单片机编程的c语言,单片机编程的c语言程序

2023-01-03
c语言笔记讲解,c语言程序笔记

2022-11-23
写单片机c语言程序,c语言编单片机程序

2022-11-27
单片机c语言编程,单片机c语言编程300例

2022-11-27
51单片机c语言教程期末考试,单片机c语言期末考试题答案

2022-11-26
c语言图文转换,流程图转化成c语言

2023-01-04
使用单片机c语言,单片机c语言编程入门教程

2022-11-29
单片机发c语言,c语言写单片机程序

2022-11-28
单片程序c语言,c语言单片机开发

2022-11-25
单片机c语言编程格式,单片机c语言函数大全

2023-01-06
c语言教程51,c语言教程模块化程序设计

2023-01-04
单片机编程c语言讲解,单片机原理及应用c语言编程

2022-11-25
学单片机c语言看什么书,c语言网络编程看什么书

2022-11-24
看不懂单片机c语言程序,C语言与单片机

2023-01-08
c语言外部设备,c语言调用外部程序

2023-01-04
单片机c语言,单片机c语言代码大全

2022-11-26
单片机c语言教程,新概念51单片机C语言教程

2022-11-29