• c语言通过89C51驱动1602液晶显示(入门级别)


    工具proteus,keil

    步骤:

    1.画好电路图

    2.在指令模式下,设置好显示模式以及光标位置

    3.在写数据模式下,向1602写入显示字符(1602只能显示数字和字符)

    电路图

     电路图

    #include <REGX51.H>
    
    #define uchar unsigned char
    #define uint unsigned int
    
    void init();
    void write_cmd(uchar cmd);
    void write_data(uchar input);
    void delay(uchar time_delay);
    
    uchar table_wel[] = "hello world!";
    uchar table_name[] = "i am gxf!";
    
    sbit lcdrs = P3^0;
    sbit lcdrw = P3^1;
    sbit lcden = P3^2;	 
    
    void main()
    {
    	uchar i = 0;	
    	init(); 
    	//write_data('g');
    	for(;i < 12;i ++)
    	{
    		write_data(table_wel[i]);	
    	}
    
    	write_cmd(0xc0); 
    	//	delay(5);
    	for(i = 0; i < 9; i++)
    	{
    		write_data(table_name[i]);
    	}
    	while(1);
    } 
    
    void init()
    {
    	lcdrs = 0;//命令选择段
    	lcdrw = 0;//写命令	
    	write_cmd(0x38);
    	write_cmd(0x0f);
    	write_cmd(0x06);
    	write_cmd(0x80);//从第一个位置开始显示
    }
    void write_cmd(uchar cmd)
    {
    	lcdrs = 0;//命令选择段
    	lcdrw = 0;//写命令
    	P2 = cmd;//设置显示模式
    	delay(5);
    	lcden = 1;
    	delay(5);//延时5MS形成高脉冲
    	lcden = 0;
    
    }
    void write_data(uchar input)
    {
    	lcdrs = 1;//写数据模式
    	lcdrw = 0;//写数据
    	P2 = input;//设置显示模式
    	delay(5);
    	lcden = 1;
    	delay(5);//延时5MS形成高脉冲
    	lcden = 0;
    
    }
    
    //软件延时
    void delay(uchar time_delay)
    {
    	uint x,y;
    	for(x = time_delay; x > 0; x --)
    		for(y = 110; y > 0 ; y--);
    }  
    

    测试效果

    result_test

    说明:最开始我用的是P0口,控制rs,rw和en,但好像P0口要特殊一点。有点不行,换了P3口。还要研究一下P0口。

  • 相关阅读:
    ioncube 加密软件 linux 使用方法
    PHP使用FPDF pdf添加水印中文乱码问题 pdf合并版本问题
    redis windows dll 下载
    浅析PHP7新功能及语法变化总结
    PHP二维数组去重
    extract 用法说明
    python基础之循环
    linux防火墙(五)—— 防火墙的规则备份与还原
    Haproxy搭建Web群集
    网站五层架构
  • 原文地址:https://www.cnblogs.com/huifeidewoniu/p/3415549.html
Copyright © 2020-2023  润新知