1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUP.A51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。
2、导入51单片机的头文件以及LCD1602的头文件。
3、创建一个延时函数,可以传入想要具体延时的时长,其内部实现是由一个二重循环,两个循环的次数相乘积。
4、然后创建写命令的函数,指定RS和E同时为0时,才可以写入命令,设定完成后,将com写入输出端口,规定写命令时,E为正脉冲,然后空 *** 作一个机器周期等待机器反应。
5、然后创建写数据的函数,规定写数据时,E为正脉冲,规定当RS=1和RW=0时才可以写入数据,然后将数据从输出端口输出,最后让E产生正跳变。
6、然后创建初始化LCD1602的函数,指定显示模式位两行显示,5*7,8位数据、整体显示,无光标,无闪烁、写入一个字符后地址指针加1,最后进行清屏 *** 作。
7、最后在主函数中首先执行LCD1602的初始化函数,首先创建一个无限循环,然后添加两个字符串,这里以两行显示百度经验的网址为例,再进行延时以及使用清屏函数进行刷新。
#include //52系列单片机头文件\x0d\x0a#define uchar unsigned char //宏定义\x0d\x0a#define uint unsigned int\x0d\x0asbit dula=P2^6//申明u1锁存器的锁存端\x0d\x0asbit wela=P2^7// u2\x0d\x0auchar num1,num2\x0d\x0auchar code table[]={ //数组定义\x0d\x0a0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,\x0d\x0a0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}\x0d\x0auchar code aable[]={ //位选数组定义\x0d\x0a0xfe,0xfd,0xfb,0xf7,0xef,0xdf}\x0d\x0avoid delays(uint)//子函数申明\x0d\x0a\x0d\x0a void main() \x0d\x0a{\x0d\x0awhile(1)\x0d\x0a{\x0d\x0a for(num1=0num1//6个数循环显示\x0d\x0a{\x0d\x0awela=1//打开u2锁存端\x0d\x0aP0=aable[num1%6]//送入位选信号\x0d\x0awela=0//关闭u2锁存端\x0d\x0a//delays(1)\x0d\x0adula=1//打开u1锁存端\x0d\x0aP0=table[num1%16]//送入段选信号\x0d\x0adula=0//关闭u1锁存端\x0d\x0adelays(1)\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a/*---------主函数-----------------------------------------------*/\x0d\x0a\x0d\x0avoid delays(uint xs)\x0d\x0a{\x0d\x0auint i,j,k\x0d\x0afor(i=xsi>0i--)\x0d\x0afor(j=1000j>0j--)\x0d\x0afor(k=110k>0k--)\x0d\x0a}\x0d\x0a/*----------------延时程序-----------------------------------------------*/这里给出一种基于Arduino平台的单片机数字0到9显示的程序代码,可供参考:c++
Copy code
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11} //定义LED引脚
int numPins[][7] = { //定义数字0~9的LED点阵图形
{1, 1, 1, 1, 1, 1, 0}, //0
{0, 1, 1, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 0, 1}, //2
{1, 1, 1, 1, 0, 0, 1}, //3
{0, 1, 1, 0, 0, 1, 1}, //4
{1, 0, 1, 1, 0, 1, 1}, //5
{1, 0, 1, 1, 1, 1, 1}, //6
{1, 1, 1, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1}, //8
{1, 1, 1, 1, 0, 1, 1} //9
}
void setup() {
for (int i = 0i <10i++) { //初始化LED引脚为输出模式
pinMode(ledPins[i], OUTPUT)
}
}
void loop() {
for (int num = 9num >= 0num--) { //从数字9到0循环
for (int i = 0i <7i++) { //依次点亮数字的7个LED
digitalWrite(ledPins[i], numPins[num][i])//控制LED引脚输出高低电平
}
delay(1000) //延时1秒
}
}
该程序利用数组存储数字09的LED点阵图形,并通过循环依次点亮每个数字的7个LED,从而实现数字09的循环显示。可以根据需要对延时时间进行调整,以达到合适的显示效果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)