1. 51单片机编写lcd1602显示程序,第一行显示自己的姓名,第二行显示学号
1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUP.A51文件,然后在当前目禅昌录下新建一个C文件,并将其添加入工作路径。
2. 如何用51单片机在LCD12864上显示数字
利用51单片机控制lcd12864显示一串数字比如:123456789可...
际上很简单,刷新而已,你让他按一下就在程序里去一个数字,然后刷新lcd的显示不就得了。
3. 51单片机lcd按键显示不对应怎么办
1、首先是要先抬起51单片机或卸下控制主板的桥宽芹防尘罩,用螺丝刀松开控制主板上的两个螺丝。
2、其次稍稍向后拉动一下控制主板,敏毕将lcd按键按刻度调整到要求的角巧昌度,或者将控制主板前推。
3、最后使lcd按键其锁定在45度角处,重新按照对应位置进行布置即可。
4. 51单片机LCD显示
你说的是那类液晶!1602?这类基于HD44780液晶芯片,操作上都大同小异
都是通过写入命令,读出数据,界面数据变化时通过不断的刷新变化,忙闲查询可以用命令,也可以用延时函数5ms就可以了,下面是个简单的例子
想要复杂点的可以去我网络空间里面找
#include<AT89X51.H>
sbit lcden=P3^4;
sbit lcdrs=P3^5;
unsigned char code tab[]="libinQQ490251568";
unsigned char code tab1[]="51binyf.com" ;
void delay(unsigned char z);
void into();
void xie_com(unsigned char com);
void xie_date(unsigned char date);
void main()
{ unsigned char num;
into();
for(num=0;num<16;num++)
{
xie_date(tab[num]);
delay(20);
}
xie_com(0x40+0x80+0x03); //使数据指针指到第二行 起始,+1----16可以使它在屏幕的任意位置显示,
for(num=0;num<11;num++)
{
xie_date(tab1[num]);
delay(20);
}
while(1);
}
void delay(unsigned char z)
{unsigned i,k;
for(i=z;i>0;i--)
for(k=110;k>0;k--);
}
void into()// 此函数中写入一些显示前的准备数据
{
lcden=0;//写指令之前为E为低电平,
xie_com(0x38);//8为数据传送,显示2行,5x7点阵显示字符
xie_com(0x0f);//开显示,有光标且闪动 0f光标闪烁,0e光标不闪烁
xie_com(0x06);//写入一个字符后光标+1,指针也+1。字符整屏不移动
xie_com(0x80);//数据指针初始化即在第一行最左边,后面每个字符地址就加一,第二行首地址是C0
xie_com(0x01);//清屏指令
}
void xie_com(unsigned char com) //写指令函数
{
lcdrs=0; //RS=0写指令
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void xie_date(unsigned char date) //写数据 函数
{
lcdrs=1;//RS=1写数据
P0=date;
delay(5);
lcden=1;//资料上说E端有一个高脉冲时候执行一次指令,实际应用中他内部
delay(5);//检测到E端有一个电平跳变就可以执行指令
lcden=0;
}
5. 老师你好,我是学电子的,遇到一个用51单片机完成的LCD显示问题。希望能得到你的帮助。
按一就只显示一,按二就只显示二,这是只能显示一个字符啊,也不叫显示一串字符吗?
其实,很简单,在给LCD1602送字符时,在带上显示的位置坐标参数吧,这个参数,你用一个变量,每送一个字符变量加1,下次,再显示就在下一个位置了,依次显示就行了。注意每一行只能显示16个字符啊,一行显示满了,要么换下一行,要么像字幕一样向左滚动显示。
你这程序发图片,谁能看清楚啊,太累了,就没心看了,谁也不会看的。这么点程序,完全可以发上来的。
6. 51单片机lcd如何显示数组
按K1键。51单片机lcd按K1键显示数组,51单片衫猜机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器租塌吵、汽车弊侍、工业测控、通信设备中。
7. 用51单片机控制TH12864-15LCD显示文字程序
/***12864并行接口参考程序,控制器st7920*/
#include <reg51.h>
#include <intrins.h>
sbit RS = P3^0;
sbit RW = P3^3;
sbit E = P3^4;
sbit PSB = P3^1; //串并口选择
sbit RES = P3^5;
#define FIRST_ADDR 0 //定义字符/汉字显示起始位置
//延时子程序
void delay(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++);
for(j=0;j<10;j++);
}
//测忙
void chk_busy()
{ RS=0;
RW=1;
E=1;
while((P1&0x80)==0x80);
E=0;
}
//读数据
unsigned char lcdrd()
{ unsigned char i;
P3=0xFB;
_nop_();
E=1;
delay(5);
i=P1;
_nop_();
E=0;
return i;
}
//写数据
void lcdwd(unsigned char dispdata)
{ chk_busy();
_nop_();
RS=1;
RW=0;
E=1;
P1=dispdata;
delay(5);
_nop_();
E=0;
_nop_();
P1=0xff;
}
//写指令代码
void lcdwc(unsigned char cmdcode)
{ chk_busy();
_nop_();
RS=0;
RW=0;
E=1;
P1=cmdcode;
delay(5);
_nop_();
E=0;
_nop_();
P1=0xff;
}
//初始化
void lcdreset()
{ delay(2000);
lcdwc(0x30); //选择基本指令集
lcdwc(0x30); //选择8bit数据流
delay(5);
lcdwc(0x0c); //开显示(无游标、不反白)
delay(5);
lcdwc(0x01); //清除显示,并且设定地址指针为00H
delay(5);
lcdwc(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}
void hzkdis(unsigned char code *s)
{ while(*s>0)
{ lcdwd(*s);
s++;
delay(500);
}
}
void hzklib()
{ lcdwc(0x80+FIRST_ADDR);
hzkdis("少小离家老大回,");
lcdwc(0x90+FIRST_ADDR);
hzkdis("乡音无改鬓毛衰。");
lcdwc(0x88+FIRST_ADDR);
hzkdis("儿童相见不相识,");
lcdwc(0x98+FIRST_ADDR);
hzkdis("笑问客从何处来。");
}
//整屏显示
//当ii=0时显示上面128×32
//当ii=8时显示下面128×32
void lcdfill(unsigned char disdata)
{ unsigned char x,y,ii;
for(ii=0;ii<9;ii+=8)
for(y=0;y<0x20;y++)
for(x=0;x<8;x++)
{ lcdwc(0x36);
lcdwc(y+0x80); //行地址
lcdwc(x+0x80+ii); //列地址
lcdwc(0x30);
lcdwd(disdata);
lcdwd(disdata);
}
}
//当ii=0时显示上面128×32
//当ii=8时显示下面128×32
void lcdfill_upright(unsigned char disdata)
{ unsigned char x,y,ii;
unsigned char i,f,k;
for(ii=0;ii<9;ii+=8)
for(y=0;y<4;y++)
{ f=disdata;
for(i=0;i<8;i++)
{ if((f&1)==1)
k=0xff;
else
k=0;
for(x=0;x<8;x++)
{ lcdwc(0x36);
lcdwc(y*8+i+0x80);
lcdwc(x+0x80+ii);
lcdwc(0x30);
lcdwd(k);
lcdwd(k);
}
f>>=1;
}
}
}
main()
{ unsigned char i;
i=0x55;
RES=0;
_nop_();
RES=1;
while(1)
{ PSB=1;
RW=0;
lcdreset(); //初始化LCD屏
lcdwc(0x01);
delay(1000);
lcdfill(0xff);
delay(6000);
lcdfill(i); //显示竖条
delay(6000);
lcdfill_upright(i); //显示横条
delay(6000);
lcdfill(0);
lcdwc(0x01);
delay(1000);
hzklib();
delay(4000);
i=~i;
}
}
8. 如何用51单片机实现音频信号的频谱显示(在LCD上显示)
12864可以作为显示器件
频谱分析涉及到FFT,如果你这个不会,那还是再学习学习吧。
简单原理: 通过快速FFT将音频分析成多个正弦波的组合,正弦波的频率就是高音低音,振幅就是音量的大小。
FFT运算量比较大,普通51难以接受,要选用1T的高速51,
声音信号要通过ad进行采样,然后将其进行分析,所以要选用一个精度高速度快的ad,一般高档51中ad可以胜任这个工作
声音信号在ad采样之前需要调整成合适振幅的信号
9. 51单片机lcd如何开机显示
1、内核初始化。
2、强制PC指针指向中断向量表的复位中断向量执行复位中断函数。
3、在复位中断函数中调用SystemInit函数,初始化时钟,配置中断向量表等。
4、调用main函数完成全局/静态变量的初始化和重定位工作,初始化堆栈和库函数。
5、跳转到main函数中执行二内核初始化在单片机上电后首先会进行一系列内核的初始化。
10. 最简单c51单片机液晶显示程序
光看代码你是不能了解它的使用历程的,最好看看使用手册,下面的代码是用1602液晶
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LIKE MCU!";
uchar code table1[]="www.TXMCU.COM";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit la=P2^6;
sbit wela=P2^7;
uchar num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
la=0;
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80+0x10);
}
void main()
{
init();
for(num=0;num<11;num++)
{
write_data(table[num]);
delay(20);
}
// write_com(1);
write_com(0x80+0x53);
for(num=0;num<13;num++)
{
write_data(table1[num]);
delay(20);
}
for(num=0;num<16;num++)
{
write_com(0x18);
delay(20);
}
while(1);
}