第一行显示"Welcome";第二行显示="Happy day";若要显示其他字符,请直接往数组 LCMLineOne[16]和LCMLineTwo[16]填充相应的代码。直接上图,仿真图如下:
源程序如下,可以对比时序方式,理解总线的操作方法。
#include
//#include
#define uchar unsigned char
#define uint unsigned int
#define busy 0x80
uchar xdata LCMWriteCOM _at_ 0x80ff; //写指令寄存器
uchar xdata LCMReadCOM _at_ 0xa0ff ; //读指令寄存器
uchar xdata LCMWritEDAta _at_ 0xc0ff ; //写数据寄存器
uchar xdata LCMReadData _at_ 0xe0ff ; //读数据寄存器
uchar data LCMLineOne[16]="Welcome"; //第一行显示的数据
uchar data LCMLineTwo[16]="Happy day"; //第二行显示的数据
void Delayms(uchar ms)
{
uchar i,j;
for(i=0;i for(j=0;j<57;j++)
;
}
//写指令寄存器
void LCMWriteC(uchar COMData)
{ uchar LCMStatus;
do
{
LCMStatus=(LCMReadCOM&busy);
}
while(LCMStatus!=0);
LCMWriteCOM=COMData;
}
//读指令寄存器
uchar LCMReadC()
{uchar LCMStatus;
do
{
LCMStatus=(LCMReadCOM&busy);
}
while(LCMStatus!=0);
LCMStatus=LCMReadCOM;
return(LCMStatus);
}
//读数据寄存器
uchar LCMReadD(uchar addr)
{uchar LCMStatus;
do
{
LCMStatus=(LCMReadCOM&busy);
}
while(LCMStatus!=0);
LCMWriteC(0x80+addr);
LCMStatus=LCMReadData;
return(LCMStatus);
}
//写数据寄存器带地址
void LCMWriteDAdd(uchar addr,uchar LCMData)
{uchar LCMStatus;
do
{
LCMStatus=(LCMReadCOM&busy);
}
while(LCMStatus!=0);
LCMWriteC(0x80+addr);
LCMWriteData=LCMData;
}
//写数据寄存器无地址
void LCMWriteD(uchar LCMData)
{uchar LCMStatus;
do
{
LCMStatus=(LCMReadCOM&busy);
}
while(LCMStatus!=0);
LCMWriteData=LCMData;
}
//初始化
void LCMInit(void)
{ Delayms(15);
LCMWriteCOM=0x38;
Delayms(5);
LCMWriteCOM=0x38;
Delayms(5);
LCMWriteCOM=0x38;
Delayms(5);
LCMWriteC(0x38);
LCMWriteC(0x08);
LCMWriteC(0x01);
LCMWriteC(0x06);
LCMWriteC(0x0c);
}
main()
{ uchar i;
LCMInit();
while(1)
{ LCMWriteC(0x80); //第一行开始地址
for(i=0;i<16;i++)
LCMWriteD(LCMLineOne[i]);
LCMWriteC(0x80+0x40); //第二行开始地址
for(i=0;i<16;i++)
LCMWriteD(LCMLineTwo[i]);
}
}
关键字:单片机 LCD160 控制总线
引用地址:
基于单片机的LCD1602控制总线程序
推荐阅读最新更新时间:2024-03-16 13:09
pic单片机控制HT1621 LCD程序
p IC 单片机 控制HT1621 LCD 程序 ;THIS PROGRAM IS HT1621 LCD DISPLAY ;VDD=5.0V IF VDD 5.0V PLEASE TO DELAY ;RECEIVE AND TRANSMIT BYTR’TIM ; FSR EQU 4H RB EQU 6H GENR0 EQU 09H GENR1 EQU 0AH WD_RG EQU 0BH ;the registers of LCD DISPLAY DATA DA_AG0 EQU 10H ;SEG0 SEG1 DA_AGF EQU 1FH ;SEG30 SEG31 ; ;RB BITS CS EQU
[单片机]
MCU CPLD变压器测试系统设计
1引言 BX型信号 变压器 ,BG型轨道变压器和ZG型硅整流器作为铁路信号电器设备的前端,其工作的稳定性、准确性直接关系到行车安全,变压器的可靠检测是严抓质量的第一步,对于生产厂家而言,测试流程不允许抽样,且测试结果应留档。本套测试系统用来测试铁路变压器的各种要求参数,包括原边空载电流、次边空载电压、次边带载电压电流,变压器绝缘电阻、原边电压频率,测量结果精度要求3%,测试系统分为上下位机两大部分,下位机运用智能仪表的设计思想,在 MCU 和 CPLD 控制基础上对各种要求测试参数分别进行自动测试,上位机上采用VC++6.0编写软件实现串口通讯,归类统计并判断是否合格,存储打印结果,系统满足操作简单可靠,提高效率,减少误差。
[电源管理]
应对心电图设备中的信号采集挑战
心电图的干扰信号包含来自电源的50/60Hz干扰、病人活动导致的运动伪影、电外科设备、除颤脉冲、起搏器脉冲及其它监控设备等引起的射频干扰。如何应对信号采集过程中的挑战呢?本文将告诉你解决技巧。 信号采集挑战 大的直流偏移和多种干扰信号的出现会导致ECG信号的测量面临挑战。典型电极的电压最高可达300mV。干扰信号包含来自电源的50/60Hz干扰、病人活动导致的运动伪影、电外科设备、除颤脉冲、起搏器脉冲及其它监控设备等引起的射频干扰。 ECG内所需的准确度会随终端设备的变化而有所不同: 标准监控设备需要0.05~30Hz之间的频率 诊断设备需要0.05~1000Hz之间的频率 可以借助能消除两输入端AC线路常见噪声的高输
[单片机]
MLX90614非接触式红外体温计的单片机驱动程序
单片机源程序如下: #include reg52.h #include MLX906.h #include LCD1602.h #include EEPROM.h #include I2C.h #include WT558D.h #include USART.h sbit red =P3^3; sbit green =P3^4; sbit blue =P3^5; sbit key =P3^6; uchar tab = Temp: ; int main() { uchar i; uint wendu; //存储读取的值 uint xiaoshu,zhengshu;
[单片机]
[单片机框架][esp32] 使用C++17新特性报错
修改CMakeLists.txt ,追加-std=gnu++17 # For more information about build system see # https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html # The following five lines of boilerplate have to be in your project's # CMakeLists in this exact order for cmake to work correctly cmake_minimum_requi
[单片机]
基于AT89C52单片机的液位检测系统
随着现代测量技术的发展,对测量系统提出了越来越高的要求。在自动蒸馏测控系统中,准确及时地检测出蒸馏过程中从冷凝管馏出的第一滴液滴是获取初馏点的前提;实时、准确地测量出量筒中回收液体体积的变化是控制蒸馏过程中不同时段不同蒸馏速度的依据。而目前担负着对冷凝管馏出的液滴进行检测、回收、计量、测速等任务的完成有诸多不尽人意的地方,需要更加完善、合理的液滴、液位检测跟踪控制系统。 从液位测量的方法看,按检测器与液体接触与否分为两大类:一是接触式测量,二是非接触式测量。当需要通过测量液位变化确定体积变化时,一般采用非接触式测量方法。但在大多数非接触式测量中,液位传感器测试范围较大,绝对分辨率均大于0.5ml,因而在体积变化范围为0-
[单片机]
关于单片机编程设计和控制步进电机的注意事项
关于单片机编程设计的注意事项,我是这样认为的,首先要考虑程序的可执行效率,要简洁、维护方便,还要有可扩展空间,简单明了,子程序的搭配,延时的应用,和中断的配合,主函数调取子程序模块的效率、循环某个子程序的时间,条件触发启动子程序能迅速响应主程序的调配。 通过以上可以看出,编一个好的程序,要考虑到单片机软件的方方面面,所以编程时,一定不能马虎,如果马虎,那么你的程序就会出错,到时还得纠错,费时费力。 如果遇到关于步进电机的程序,那么一定要考虑到步进电机的正反转进制码,还要考虑到转速,还有当前步进电机的状态显示,所以编一个程序,是一件很辛苦的事,还好有http://www.51hei.com这个学习单片机的好网站,可以找到很多例子和朋友
[单片机]
使用STM32单片机点亮LED
有一人,登场于金庸先生的《神雕侠侣》,以大理段氏“一阳指”自成一派,武学修为登峰造极,“天下五绝”之一,号称“南帝”,他就是“一灯大师”。如今,武林中逐渐被遗忘的“一灯大师”,却活跃在另一个行业——嵌入式开发中。 传说,每一个成功的MCU(俗称单片机)开发组中,都有一名“一灯大师”,他精通所有开发板的点灯方法,对于企业引入的新开发板,总是勤学苦练,从点灯开始,快速掌握新开发板的编程要点,带领团队走向胜利。 成为“一灯大师”,离不开持续的修行,离不开对一招一式的勤学苦练。本文将讲解如何通过编程来控制STM32点亮一个LED。 学习环境: 1.软件:Keil5 2.硬件:STM32开发板(笔者使用信盈达公司的M4开发板,芯片型
[单片机]