液晶显示班级学号

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int 

uchar tab1[]="welcome to";  //第一行显示数组
uchar tab2[]="lab 217 ^_^"; //第二行显示数组

sbit RS=P3^0;      //P3.0接RS:数据和指令选择控制端
sbit RW=P3^1;       //P3.1接RW:读写控制线
sbit E=P3^2;    //P3.2接E:数据读写操作控制位

void write_com(uchar com); //写地址函数声明
void write_data(uchar date); //写数据函数声明
void init();

void delay_ms(uint z)   //延时函数
{
         uint x,y;
        for(x=z;x>0;x--)         //延时z毫秒
            for(y=110;y>0;y--);      //循环空语句100-120次,延时1毫秒
}

void write_com(uchar com) //写入地址
{   
    RS=0;      //RS=0:命令/状态
    P1=com;        //com:地址
    delay_ms(5); //产生一个脉冲,将数据写入液晶屏
    E=1;       //写入1602
    delay_ms(5);
    E=0;        
}

void write_data(uchar date) //写入数据
{
    RS=1;        //RS=1:数据 
    P1=date;            //data:数据
    delay_ms(5);        //产生一个脉冲,将数据写入液晶屏
    E=1;
    delay_ms(5);
    E=0;
}

void init()           //初始化液晶屏
{
    RS=0;
    RW=0;          //只写
    write_com(0x38); //设置数据位数8位,2行显示,5*7点阵字符
    write_com(0x0e); //开显示,不显示光标,光标位字符不闪烁
    write_com(0x06);  //光标增量方式右移,显示字符不移动
    write_com(0x01);  //清屏
    write_com(0x80+2);  //第一行的首地址,从第一行的第四个位置开始显示
}


void main()
{
    uchar num;
    init();          //调用初始化液晶屏函数
    while(1)
    {
     for(num=0;num<11;num++)          //显示名字
       {
            write_data(tab1[num]);      //调用写数据函数
            delay_ms(100);
        }
     write_com(0x80+0x40+2);      //第二行地址写入,从第二行的第三个位置开始显示
     for(num=0;num<11;num++)  //显示学号
      {
            write_data(tab2[num]);       //调用写数据函数
            delay_ms(100);
       }
     while(1);
     }
}
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一段代码示例,实现共阳数码管轮流显示0-7的功能。请注意,以下代码示例仅供参考,具体实现方式可能因硬件环境、编程语言等因素而有所不同。 ``` #include <Arduino.h> // 定义各个数码管对应的引脚 const int digitPins[] = {2, 3, 4, 5}; // 定义各个段的引脚 const int segmentPins[] = {6, 7, 8, 9, 10, 11, 12}; // 定义数字0-9的各个段的状态 const byte digitSegments[] = {B11111100, B01100000, B11011010, B11110010, B01100110, B10110110, B00111110, B11100000, B11111110, B11110110}; void setup() { // 初始化引脚 for (int i = 0; i < 4; i++) { pinMode(digitPins[i], OUTPUT); } for (int i = 0; i < 7; i++) { pinMode(segmentPins[i], OUTPUT); } } void loop() { // 循环显示0-7 for (int i = 0; i < 8; i++) { // 显示当前数字 displayDigit(i); // 等待一段时间 delay(1000); } } void displayDigit(int digit) { // 显示指定数字 byte segments = digitSegments[digit]; for (int i = 0; i < 7; i++) { digitalWrite(segmentPins[i], bitRead(segments, i)); } // 将对应数码管的引脚设置为高电平,其他数码管的引脚设置为低电平 for (int i = 0; i < 4; i++) { if (i == digit) { digitalWrite(digitPins[i], HIGH); } else { digitalWrite(digitPins[i], LOW); } } } ``` 这段代码使用Arduino开发板实现了共阳数码管轮流显示0-7的功能。在循环中,通过调用`displayDigit()`函数来显示当前要显示的数字。`displayDigit()`函数会根据传入的数字,设置对应数码管的引脚为高电平,其他数码管的引脚为低电平,并设置各个段的状态,以显示对应数字。循环中每次显示完一个数字后,会等待1秒钟,然后再显示下一个数字,循环往复,实现了轮流显示0-7的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值