基本框架根据郭天祥Lesson8中的程序来编写,但是渐入显示的时候郭用的指令是write_com(0x18);
可我用的时候就是显示不出来,于是根据1602的说明书,用了另外一个指令write_com(0x07) //当写一个字符,整屏显示左移
程序如下:
可直接运行,已调试OK
#include
sbit LCD_rs=P1^0;
sbit LCD_rw=P1^1;
sbit LCD_en=P2^5;
unsigned char num;
unsigned char code table[]="I Love ZYN";
unsigned char code table1[]="0123456789";
void Delay(unsigned int i) //注意,若此处用char声明,否则会看不到延时渐进的效果,疑问?
{
unsigned int j,k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
}
void LCD_Write_com(unsigned char a)
{
LCD_rs=0;
Delay(5);
LCD_rw=0;
Delay(5);
P0=a;
Delay(5);
LCD_en=1;
Delay(5);
LCD_en=0;
Delay(5);
}
void LCD_Write_data(unsigned char b)
{
LCD_rs=1;
Delay(5);
LCD_rw=0;
Delay(5);
P0=b;
LCD_en=1;
Delay(5);
LCD_en=0;
Delay(5);
}
void LCD_init()
{
Delay(15);
LCD_Write_com(0x38);
Delay(5);
LCD_Write_com(0x08);
Delay(5);
LCD_Write_com(0x01);
Delay(5);
LCD_Write_com(0x07); //当写一个字符,整屏显示左移
Delay(5);
LCD_Write_com(0x0e);
Delay(5);
}
void main()
{
LCD_init();
LCD_Write_com(0x80+0x16);//此处0x16也可用十进制数22
Delay(5);
for(num=0;num<10;num++)
{
LCD_Write_data(table[num]);
Delay(3000);
}
LCD_Write_com(0x80+0x59);//此处0x59也可用十进制数89表示
for(num=0;num<10;num++)
{
LCD_Write_data(table1[num]);
Delay(3000);
}
while(1);
}
实际效果如下:
关键字:STC12C5A32S2 单片机 渐入显示
引用地址:
STC12C5A32S2单片机之1602渐入显示
推荐阅读最新更新时间:2024-03-16 16:23
51单片机的IIC总线
一、IIC (一)、IIC有什么作用 穿插: 上垃电阻一般接电源,下拉电阻一般接地 上拉电阻作用: 1、增加驱动电流 2、让线悬空电平不好确定,让总线在浮空的状态下,有确定的电平,滤除干扰 (二)、IIC通信协议 1、起始信号 SCL为高电平时,SDA由高变低 SCL为高电平时,SDA由低变高 函数: void iic_start() { SDA = 1;//首先操作SDA,再操作SCK,防止SCK在高电平时,SDA出现高低电平的变化 SCK = 1; delay_us(1);//10us SDA = 0; delay_us(1);//10us SCK = 0;//钳住总线,让iic总线
[单片机]
工程师STM32单片机学习基础手记(4):用PWM实现荧火虫灯(一)
用PWM的方法实现荧火虫灯 上次提到要用Timer的PWM功能来实现荧火虫灯。当然还是找一个现成的例子来作个修改,这回要用到的例子在这里。 复制一份到自己练习用的文件夹中,建立工程。 先阅读readme.txt及源程序,了解一些基本信息。 从程序中可以知道: (1) 使用TIM3 (2) 定时器的时钟频率是36MHz. (3) PWM信号的频率是36KHz,这是通过TIM3的ARR来设置的。ARR的值是999,因此PWM的频率是36MHz/(999+1)=36KHz。 (4) 四个通道的占空比分别由TIM3_CCR1~TIM3_CCR4来确定,算式是:
[模拟电子]
51单片机CO2检测显示程序解析
这是一款51单片机CO2检测显示程序资料,二氧化碳传感器MH-Z19模块的T(TXD)接单片机的RXD, R(RXD)接单片机的TXD,V+连接单片机5v正极,V-连接单片机的地(串口TTL通信就需要连接这四根线);测量电压选用5V;单片机型号STC89C52,液晶显示屏型号LCD1602,电路连接按照那个测试图的;串口通信波特率9600,注意晶振要是11.0592M,否则会引起通信失败;传感器上电需要预热3分钟。 #include“reg52.h” #include“stdio.h” #include“intrins.h” #include“lcd1602.H” #define uchar unsigned char #d
[单片机]
RS232串口通信在PC机与单片机通信中的应用
0 引言 随着信息技术的飞速发展和科技进步,在许多现代化集中管理的控制系统中,需要对现场数据进行统计、分析、打印、报警等,同时又要对现场设备进行实时控制,完成各种操作。单片机作为控制系统中必不可少的部分,在各个领域得到了广泛的应用。由于单片机具有体积小、价格低廉、适应性强的特点,一般在工业控制系统中,各种数据的采集和执行机构的控制都是由单片机来完成。而单片机的计算能力有限,难以进行复杂的数据处理。在功能比较复杂的自动控制系统中,通常以工控机为上位机,单片机为下位机,由单片机完成数据的采集及对设备的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。在分布式控制系统中大多采用单片机作为下位机来进行数据采集和现场控制,在这些应用
[单片机]
单片机多通道AD采集源程序(8路) STC15w系列
12864为串行接法。AD0~AD4接的5V电源。 AD5~AD7接的GND。 STC15W408AS 自带8路10位AD 程序只使用了高八位。量程为255. 程序里面含10位AD采集。1024。 代码已注释。 新手上路。有错误还请斧正。 制作出来的实物图如下: 单片机源程序如下 #include STC15.h #include intrins.h #define uchar unsigned char; #define uint unsigned int; uchar a1,b1; //接收高八位,低八位 uint ad1; //用于接收10位AD数据 #define ADC_POWER 0X80; //
[单片机]
C51单片机定时器介绍
简介 C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器或者计数器使用。 确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使用时,每经过1个机器周期,计数存储器的值就加1。而当配置为计数器时,每来一个负跳变信号(信号从P3.4 或者P3.5引脚输入),就加1,以此达到计数的目的。 标准C51有2个定时器/计数器:T0和T1。他们的使用方法一致。C52相比C51多了一个T2。 时钟周期与机器周期 定时器的本质原理就是:每经过1个机器周期,计数存储器的值就加1。因此当使用定时器时,就必须掌握时钟周期和机器周期的关系。 时钟周期 :晶振频率的倒数
[单片机]
单片机实用密码锁
unsigned char num,i,j; unsigned char passwordtemp ; //最大输入16个 unsigned char inputtimes; //密码输入错误次数 unsigned char passwordlength,PLEN; //输入密码长度,实际密码长度 bit Flag; PLEN=sizeof(password)/sizeof(password );//用于计算出实际密码长度 LCD_Init(); //初始化液晶屏 DelayMs(10); //延时用于稳定,可以去掉
[单片机]
基于嵌入式PC104工控机和C8051F047单片机实现机器人系统的设计
1.引言 高压输电线及杆塔附件长期暴露在野外,因受到持续的机械张力、电气闪络、材料老化的影响而产生断股、磨损、腐蚀等损伤,如不及时修复更换,原本微小的破损和缺陷就可能扩大,最终导致严重事故。因此,电力公司需要定期对线路设备进行巡检,及时发现早期损伤和缺陷并加以评估,根据评估结果安排必要的维护和修复,从而确保供电的安全可靠性。传统的人工巡检方法不仅工作量大而且条件艰苦,特别是对于山区和大江大河等的输电线路巡检存在很大困难,甚至一些巡检项目靠常规方法都难以完成。因此,采用机器人自动巡线成为保障高压输电线安全运行的一种必要手段。 高压输电线路巡线机器人属于特种机器人的研究范畴,主要完成高压供电线缆的无损探伤、悬垂绝缘子绝缘特性检测、
[单片机]