51单片机c语言实例(51单片机c语言编程100例)

简介

51单片机是一种常见的嵌入式系统开发工具,它简单易用、体积小、功耗低,广泛应用于各种嵌入式系统。C语言是开发嵌入式系统的利器,它可以让开发者方便快捷的实现各种功能。以下是51单片机C语言实例的一些介绍。

实例一:LED 灯闪烁

下面是51单片机C语言实现LED灯闪烁的代码:

51单片机c语言实例(51单片机c语言编程100例)

//定义LED灯的端口 P2.1
sbit LED = P2^1;

void delay(unsigned int count) //延时子程序
{
    unsigned int i;
    while(count--)
    {
        for(i=0;i<120;i++);
    }
}

void main()
{
    while(1) //一直闪烁
    {
        LED = ~LED; //LED灯取反
        delay(500); //延时一段时间
    }
}

代码中的delay()函数是实现延时的子程序,延时500ms。while(1)语句是一直执行LED灯闪烁。LED灯的取反通过LED=~LED实现,语句中的~表示取反。

实例二:LCD1602 显示

下面是51单片机C语言实现LCD1602显示的代码:

//定义LCD1602的数据口
sbit LCD_RS = P1^0;     //0000 0001
sbit LCD_RW = P1^1;     //0000 0010
sbit LCD_EN = P1^2;     //0000 0100
sbit LCD_D4 = P1^4;     //0001 0000
sbit LCD_D5 = P1^5;     //0010 0000
sbit LCD_D6 = P1^6;     //0100 0000
sbit LCD_D7 = P1^7;     //1000 0000

void LCD_init(void) //LCD初始化子函数
{
    LCD_RW = 0;      //读写选择写
    LCD_EN = 0;      //使能脚清零
    LCD_RS = 0;      //寄存器选择命令
    LCD_D4 = 1;      //送高电平
    LCD_D5 = 1;      //送高电平
    LCD_D6 = 1;      //送高电平
    LCD_D7 = 1;      //送高电平
    delay(2);        //延时40ms以上
    LCD_SendCmd(0x28);//16*2显示,5*7点阵,4位数据接口
    LCD_SendCmd(0x08);//关显示
    LCD_SendCmd(0x01);//清屏
    LCD_SendCmd(0x06);//进入设定输入模式
    LCD_SendCmd(0x0C);//开显示,光标关闭
}
 
void LCD_SendCmd(unsigned char cmd)//向LCD发送命令子函数
{
    LCD_RS = 0;       //寄存器选择命令
    LCD_RW = 0;       //读写选择写
    LCD_EN = 0;       //使能脚清零
    LCD_D7 = cmd & 0x80;//高位
    LCD_D6 = cmd & 0x40;//高位
    LCD_D5 = cmd & 0x20;//高位
    LCD_D4 = cmd & 0x10;//高位
    LCD_EN = 1;       //使能
    delay(1);         //等待一段时间
    LCD_EN = 0;       //使能清零
    LCD_D7 = cmd & 0x08;//低位
    LCD_D6 = cmd & 0x04;//低位
    LCD_D5 = cmd & 0x02;//低位
    LCD_D4 = cmd & 0x01;//低位
    LCD_EN = 1;       //使能
    delay(1);         //等待一段时间
    LCD_EN = 0;       //使能清零
}
 
void LCD_SendData(unsigned char Data)//向LCD发送数据子函数
{
    LCD_RS = 1;       //寄存器选择数据
    LCD_RW = 0;       //读写选择写
    LCD_EN = 0;       //使能脚清零
    LCD_D7 = Data & 0x80;//高位
    LCD_D6 = Data & 0x40;//高位
    LCD_D5 = Data & 0x20;//高位
    LCD_D4 = Data & 0x10;//高位
    LCD_EN = 1;       //使能
    delay(1);         //等待一段时间
    LCD_EN = 0;       //使能清零
    LCD_D7 = Data & 0x08;//低位
    LCD_D6 = Data & 0x04;//低位
    LCD_D5 = Data & 0x02;//低位
    LCD_D4 = Data & 0x01;//低位
    LCD_EN = 1;       //使能
    delay(1);         //等待一段时间
    LCD_EN = 0;       //使能清零
}
 
void LCD_Display(unsigned char line,unsigned char row,unsigned char *string)//LCD显示子函数
{
    unsigned char i;
    if(line == 0)
    {
        LCD_SendCmd(0x80 | row);
    }
    else
    {
        LCD_SendCmd(0xC0 | row);
    }
    for(i=0;string[i]!='';i++)
    {
        LCD_SendData(string[i]);
    }
}

void main()
{
    LCD_init();           //LCD初始化
    LCD_Display(0,0,"Hello world!");//在第一行第一列显示"Hello world!"
}

代码中定义了LCD1602的各个数据口的位置,比如LCD_RS对应P1^0。LCD_init()函数为LCD1602初始化函数,LCDSendCmd()函数为向LCD发送命令函数,LCDSendData()函数为向LCD发送数据函数。LCDDisplay()函数为LCD显示函数。main()函数中调用了LCD_init()以及LCD_Display()函数。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/cpp1jc.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月16日 下午7:53
下一篇 2023年4月16日 下午7:54

猜你喜欢