单片机编程 keil-基于51单片机运用液晶屏显示字符

问题描述

基于51单片机运用液晶屏显示字符

基于51单片机运用液晶屏显示字符时出了些问题,编译什么的都没问题,但是就是液晶屏没动静,液晶屏是1602,求助,急急急,跪谢 #includesbit lcd_en= P2^7;sbit lcd_rs = P2^6;sbit lcd_rw =P2^5;sbit lcd_data = P0;#define unchar unsigned char#define uint unsigned intunchar code table[]={"baby ChenDan's"};unchar code table1[]={"birthday 0311"};unchar code table2[]={"Happy Birthday"};unchar code table3[]={"be happiness"};unchar num;void delay_10us(uint n) // 10微秒的延时子程序{ uint i,j; for(i=n;i>0;i--) for(j=2;j>0;j--); } void writecmd(char com){ delay_10us(5); lcd_rs=0; lcd_rw=0; lcd_data=com; delay_10us(5); lcd_en=1; delay_10us(5); lcd_en=0;}void writedata(char lcddata){ delay_10us(5); lcd_rs=1; lcd_rw=0; lcd_data=lcddata; delay_10us(5); lcd_en=0; delay_10us(5); lcd_en=1;}void lcdinit(){ writecmd(0x38); writecmd(0x08); writecmd(0x01); writecmd(0x0c); writecmd(0x06);}void main(){ lcdinit(); while(1) { writecmd(0x80); for(num=0;num<15;num++) { writedata(table[num]); delay_10us(50); } writecmd(0x80+0x40); for(num=0;num<16;num++) { writedata(table1[num]); delay_10us(50); } delay_10us(100); writecmd(0x01); writecmd(0x80); for(num=0;num<14;num++) { writedata(table2[num]); delay_10us(50); } writecmd(0x80+0x40); for(num=0;num<16;num++) { writedata(table3[num]); delay_10us(50); } delay_10us(100); writecmd(0x01); }}

解决方案

 #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; // E是使能
sbit lcdrs=P3^5; // RS为数据与命令选择端
sbit dula=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;//RS为低电平时写指令
    P0=com; //送指令
    delay(5);
    lcden=1;// 拉高E的电平
    delay(5);
    lcden=0;// 拉低E的电平
}

void write_data(uchar date) //写数据
{
    lcdrs=1; //RS为1时写数据
    P0=date;
    delay(5);
    lcden=1; //高脉冲取走指令或数据
    delay(5);
    lcden=0;
}
void init()
{
    dula=0;//关闭数码管,因为USB供电较小,功耗低,不能为数码管与液晶同时供电,否侧造成液晶不亮
    wela=0;
    lcden=0;
    write_com(0x38); //显示模式设置   ,指令码 00111000,功能:设置16*2显示,5*7点阵
    write_com(0x0e);//显示开/关及光标设置 指令码:00001DCB和000001NS
    write_com(0x06);//
    write_com(0x01);//清屏
    write_com(0x80+0x10);//write_com(0x80);的意思是将指针初始化      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); //write_com(0x80+0x40);可用来设置转行
    for(num=0;num<13;num++)
    {
        write_data(table1[num]);//显示1用‘1'输入,即write_data(‘1') 。
        delay(20);
    }
    for(num=0;num<16;num++) //循环移动到液晶显示屏上
    {
        write_com(0x1c); //整屏左移一位
        delay(20);
    }
    while(1);//没此句,一直动态显示。
}

时间: 2024-11-03 19:32:20

单片机编程 keil-基于51单片机运用液晶屏显示字符的相关文章

单片机课程设计-基于51单片机的分时分区照明控制器的汇编程序

问题描述 基于51单片机的分时分区照明控制器的汇编程序 (1)具有3种固定的模式,作息模式之间可以根据时间自动转换或手动转换.模式如下: 手动:可以任意管制各个分区的照明. 时间控制:按照学校日常运行模式,6:00~12:00.14:00~18:00启用照明,其他时间关闭,自动切换. 自动模式:在6:00~12:00.14:00~18:00启用照明时间段中,6:00开始启用照明,当室外照度达到一定强度时,关闭B区.C区照明,当室外照度低于一定强度时,重新启用.在此期间,A区采用温度场控制,当该区

继电器-基于51单片机的蓝牙开关

问题描述 基于51单片机的蓝牙开关 带底板的hc-05蓝牙模块怎么用啊,引脚为startenrxdtxdvccgnd想要做8路的继电器开关,蓝牙模块需要怎样和单片机相连,还有at模式到底是什么,设置后还需要在电路中接vcc吗 解决方案 这个很简单,RX和TX和单片机的RX和TX相连接 但是要相反连接,然后利用串口通信就可以实现了,通过接受的BUFF数据来个switch就可以实现相应的功能 解决方案二: 找hc-05的文档啊. 解决方案三: 高深莫测啊.求教求教啊-- 解决方案四: 用startr

求大神给一个基于51单片机的波形发生器

问题描述 求大神给一个基于51单片机的波形发生器 如题,要求能通过DA模块显示方波三角波正弦波阶梯波并且幅值频率可调 解决方案 http://wenku.baidu.com/link?url=fvKF2bZRH9nGAFtwgy90fZM6VTFUZU5JgsdDfpXCubk0uK_J5F9ROULNUGWxwVqljLB7AhZWaJOY1UHiqFl1BtSc5Y7KCTPhEJonCEp13t7

谢谢-粉尘传感器——DSM501A基于51单片机示例C程序

问题描述 粉尘传感器--DSM501A基于51单片机示例C程序 #include -- 大哥大姐帮帮忙,谢谢--

单片机 光立方-基于51单片机的8*8*8的光立方

问题描述 基于51单片机的8*8*8的光立方 基于51单片机的8*8*8的光立方,希望有详细的代码,可以立体动感的控制小灯.小灯图像变换的同时还有音乐伴随.我会用protues仿真.希望提供相应的电路图 解决方案 http://www.51hei.com/bbs/dpj-31331-1.html

手机-基于51单片机的蓝牙开关的设计

问题描述 基于51单片机的蓝牙开关的设计 求助!继电器电路是这样的,由P2口控制,低电平继电器闭合,共有8路继电器,以第一路继电器为例,手机端发送1继电器闭合,再发送1继电器断开,但程序弄了半天也没弄明白,求大神给个程序,万分感谢!!! 解决方案 51单片机之电子钟设计

基于51单片机频率计的代码问题,求大神解答啦~

问题描述 基于51单片机频率计的代码问题,求大神解答啦~ 基于51单片机的频率计设计 软件设计原理:利用单片机内部资源,定时器0定时一秒,计数器1在1s内计数,从而计算得频率. 这样能测得1hz~450khz. 我想设定当频率小于10hz时,定时器0定时10s,计数器1在10s内计数,结果测得的数据除以10就得到频率,从而获得0.1hz~10hz更精确的频率. 现在代码测试的情况是:被测频率大于10hz没有问题,如果被测频率小于10hz,结果显示为10倍的频率,意思就是程序中没有除以10,怎么改

基于51单片机的蓝牙开关

问题描述 基于51单片机的蓝牙开关 急!!!这个电路图想加光耦控制 如何改(手头只有pnp型三极管)谢谢啦!!! 解决方案 http://ask.csdn.net/questions/231726

基于51单片机的红外发射接收的计数装置

问题描述 基于51单片机的红外发射接收的计数装置 红外装置就是这个模块,用两个进行对射.让单片机识别并进行加一和减一的计数控制 图片说明](http://img.ask.csdn.net/upload/201605/26/1464273600_540509.jpg) 解决方案 http://wenku.baidu.com/link?url=aHiHFUOCYmucyvVze9-ReBvn_lsXHZN3JfE_n2MU1tIJD81MhaeH-YRtQJdtldqayt8K2_ZnR2z9jW_