51单片机lcd代码

发布者:HarmoniousSoul最新更新时间:2018-06-22 来源: eefocus关键字:51单片机  lcd代码 手机看文章 扫描二维码
随时随地手机看文章
  1. #include "../delay/delay.h"  

  2. #include "lcd.h"  

  3.   

  4. /*====================================================  

  5.                  判断写入命令/数据函数  

  6. =====================================================*/  

  7. void lcd_write(unsigned char byte, unsigned char flag)  

  8. {  

  9.     if(flag)  

  10.     {  

  11.         RS = 1;        //选择数据寄存器  

  12.     }  

  13.     else  

  14.     {  

  15.         RS = 0;        //选择指令寄存器  

  16.     }  

  17.       

  18.     RW = 0;            //写  

  19.     E = 1;             //选中LCD  

  20.     LCDPORT = byte;  

  21.     delay_us(5);       //稳定  

  22.     E = 0;             //失能LCD  

  23. }  

  24.   

  25. /*====================================================  

  26.                     LCD初始化函数  

  27. =====================================================*/  

  28. void lcd_init()  

  29. {  

  30.     delay_ms(15);  

  31.     lcd_write(0x38,LCD_WRITE_COM);    //显示8位数据接口,两行显示,5*7点阵字符  

  32.     delay_ms(5);  

  33.     lcd_write(0x38,LCD_WRITE_COM);  

  34.     delay_ms(5);  

  35.     lcd_write(0x38,LCD_WRITE_COM);  

  36.     delay_ms(5);  

  37.     lcd_write(0x38,LCD_WRITE_COM);  

  38.     delay_ms(5);  

  39.     lcd_write(0x08,LCD_WRITE_COM);    //关闭显示,关闭光标的闪烁  

  40.     delay_ms(5);  

  41.     lcd_write(0x01,LCD_WRITE_COM);    //清屏  

  42.     delay_ms(5);  

  43.     lcd_write(0x06,LCD_WRITE_COM);    //设置指针方式,画面不平移  

  44.     delay_ms(5);  

  45.     lcd_write(0x0c,LCD_WRITE_COM);    //打开显示  

  46.     delay_ms(5);  

  47. }  

  48.   

  49. /*====================================================================================  

  50.                                  写入字符函数  

  51. 函数原型:void lcd_dis_byte(unsigned char x, unsigned char y, unsigned char byte);  

  52. 说明:x为行(1——2),y为列(1——8)。  

  53. =====================================================================================*/  

  54. void lcd_dis_byte(unsigned char x, unsigned char y, unsigned char byte)  

  55. {  

  56.     unsigned char add;  

  57.       

  58.     if(((0 == x) || (x > 2)) || ((0 == y) || (y > 16)))  

  59.     {  

  60.         return ;  

  61.     }  

  62.       

  63.     add = 0x80 + (x - 1) * 0x40 + (y - 1);  

  64.       

  65.     lcd_write(add,LCD_WRITE_COM);          

  66.     lcd_write(byte,LCD_WRITE_DATA);  

  67. }  

  68.   

  69. /*====================================================================================  

  70.                                   写入字符串函数  

  71. 函数原型:void lcd_dis_str(unsigned char x, unsigned char y, unsigned char *disdata);  

  72. 说明:x为行(1——2),y为列(1——8)。  

  73. =====================================================================================*/  

  74. void lcd_dis_str(unsigned char x, unsigned char y, unsigned char *disdata)  

  75. {  

  76.     unsigned char add;  

  77.       

  78.     if(((0 == x) || (x > 2)) || ((0 == y) || (y > 16)))  

  79.     {  

  80.         return ;  

  81.     }  

  82.       

  83.     add = 0x80 + (x - 1) * 0x40 + (y - 1);  

  84.     lcd_write(add,LCD_WRITE_COM);  

  85.       

  86.     while(*disdata != '\0')  

  87.     {         

  88.         lcd_write(*disdata,LCD_WRITE_DATA);  

  89.         disdata++;  

  90.     }  

  91. }  

  92.   

  93. #if 0  

  94. /*===========================================================================  

  95.                                 时间显示函数  

  96. ============================================================================*/  

  97. void lcd_dis_time()  

  98. {  

  99.     lcd_write(0x80 + 4,LCD_WRITE_COM);  

  100.     lcd_write((hour / 10) + 0x30,LCD_WRITE_DATA);  

  101.     lcd_write((hour % 10) + 0x30,LCD_WRITE_DATA);  

  102.     lcd_write((min / 10) + 0x30,LCD_WRITE_DATA);  

  103.     lcd_write((min % 10) + 0x30,LCD_WRITE_DATA);  

  104.     lcd_write((sec / 10) + 0x30,LCD_WRITE_DATA);  

  105.     lcd_write((sec % 10) + 0x30,LCD_WRITE_DATA);  

  106. }  

  107. #endif  


关键字:51单片机  lcd代码 引用地址:51单片机lcd代码

上一篇:单片机实验——4X4矩阵键盘识别技术
下一篇:基于51单片机的LCD液晶屏

推荐阅读最新更新时间:2024-03-16 16:06

基于51单片机、EDA技术的波形发生器的设计
  该波形发生器以单片机(MCS8031)为中心控制单元,由键盘输入模块、数码管显示模块、D/A波形发生模块、幅值调整模块组成。采用DDFS技术,先将要求的波形数据存储于EEPROM中,这样可以保证掉电以后波形数据不丢失。   为了达到所要求的高速度,采用FPGA(ALTEAR 公司的 EPF10K10LC84-4, 晶振频率可达 40MHz)来实现波形的发生,通过DDFS技术(直接数字频率合成技术)、VHDL语言和单片机汇编语言编程技术的完美结合实现了对正弦波、方波和三角波三种波形的频率、幅值的设置和发生。   随着深亚微米半导体技术的进步,可编程逻辑器件及EDA技术的应用已经相当普及。基于可编程逻辑器件的高频性质和单片机
[单片机]
基于<font color='red'>51单片机</font>、EDA技术的波形发生器的设计
51单片机彩灯控制(包括功能说明、原理及C程序)
/*一、功能说明: 此程序是一款普通的彩灯,它通过电源 开关控制四种模式,即关掉电源然后打开电源就可以改变 一种模式,它的功能主要有四种模式分别如下:第一种模式 :开机四种颜色以0.5秒速度循环1次,然后在白颜色上停止 循环,即显示白光第二种模式:按下功能键后,它以1秒 速度四种颜色不停的循环第三种模式:当按键按下后它会 记住第二种模式的颜色,比如第二种模式现在亮得是绿色, 你按下按键时,它会先闪一下,然后在绿颜色上停下来第 四模式:当你再按下开关时,它自动回到模式一下,在模式 三下,当它断电时,可以记住模式三 些产品特点:利用 电源开关切换功能,断电数据保存,起到减小EEPROM擦除 次数.程序部分转自51单片机 www.51he
[单片机]
<font color='red'>51单片机</font>彩灯控制(包括功能说明、原理及C程序)
基于51单片机的低成本心电监护系统设计
1 引言 虚拟医学仪器充分利用计算机丰富的软硬件资源,仅增设少量专用软、硬件模块,便可实现传统仪器的全部功能及一些传统仪器无法实现的功能,同时缩短了研发 周期 。本系统由两部分组成:以C8051F320 单片机 为核心的数据采集装置和以PC机为平台的分析处理系统。设计中充分考虑数据采集装置体积小、功耗低、操作快捷的要求,因此全部采用SMT封装的元器件。PC监护终端通过USB接口接收数据,传输速率高;采用图形编程语言LabVIEW编写显示、存储、分析处理等功能程序。该系统可实时监护并提供心动周期,心率等参数,也可进行数据的存储回放,为心血管疾病的诊断提供依据。系统的软件开发和硬件与上位机软件的集成测试表明,系统运行稳定
[单片机]
基于<font color='red'>51单片机</font>的低成本心电监护系统设计
使用51单片机实现抢答器的设计资料和代码说明
在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。 ! 系统工作原理本系统采用8051单片机作为核心。控制系统的四个模块分别为:存储模块、显示模块、语音模块、抢答开关模块。该抢答器系统通过开关电路四个按键输入抢答信号;利用语音芯片ISD1420 完成语音的录放功能; 利用存储程序; 利用一个数码管来完成显示功能。工作时,用按键通过开关电路输入各路的抢答信号
[单片机]
使用<font color='red'>51单片机</font>实现抢答器的设计资料和<font color='red'>代码</font>说明
51单片机上实现的交通灯程序
  这是我前几天无聊自己写的交通灯程序,在51单片机上实现的。基本的定时的交通灯转换是实现了,根据时间来改变交通灯的变换。可以下载下来看看的,电路图和原程序都有,代码就自己下载吧。我不全放上了。   单片机源程序:   #include   sbit beiR=P1^0;   sbit beiY=P1^1;   sbit beiG=P1^2;   sbit nanR=P1^3;   sbit nanY=P1^4;   sbit nanG=P1^5;   uint a,b,c,type,j,i;   void Delay(uint x) //延时   {   uchar i;   while(x--)for(i=0;i《120;
[单片机]
51单片机定时器/计数器的结构和原理
  定时器/计数器简称定时器,其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。803l单片机有2个16位的定时器/计数器:定时器0(T0)和定时器1(T1)。   T0由2个定时寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。作定时器时,每一个机器周期定时寄存器自动加l,所以定时器也可看作是计量机器周期的计数器。由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的1/12。作计数器时,只要在单片机外部引脚T0(或T1)有从1到0电平的负跳变,计数器就自动加1。计
[单片机]
<font color='red'>51单片机</font>定时器/计数器的结构和原理
51单片机C语言学习笔记8:单片机C51编程规范
在网上找到这份单片机C51编程规范,觉得很有用,决定在以后自己编C51程序的时候用上。 1单片机C51编程规范- 前言 为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。 2 单片机C51编程规范-范围 本标准规定了程序设计人员进行程序设计时必须遵循的规范。本规范主要针对C51编程语言和keil编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。 3 单片机C51编程规范-总则 l 格式清晰 l 注释简明扼要 l 命名规范易懂 l 函数模块化 l 程序易读易维护 l 功能准确实现 l 代码空间效率和时间效率高 l 适度的可扩展性
[单片机]
基于MCS-51单片机的IEEE-488接口设计
1 概 述 智能仪器程控接口电路的设计,首先是根据仪器的功能确定该仪器的接口功能。文中所涉及的仪器是以MCS-51系列单片机作为内部控制器的高速数据采集装置,由于A/D转换器既要向计算机输送采集结果,又要接受计算机对其工作条件的控制,因此,在程控接口电路设计时,设置了六种接口功能:源挂钩功能(选用SH1功能子集)、受者挂钩功能(选用AH1功能子集)、讲功能(选用T5功能子集)、听功能(选用L4功能子集)、远地/本地功能(选用RL功能子集)和器件触发功能(选用DT1功能子集)。 2 接 口 功 能 (IF) 设 计 如图1所示是该仪器的原理框图,其中接口功能电路由时序转换与信号控制电路、MC68488和四片M
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved