简介
51单片机是一种常见的嵌入式系统开发工具,它简单易用、体积小、功耗低,广泛应用于各种嵌入式系统。C语言是开发嵌入式系统的利器,它可以让开发者方便快捷的实现各种功能。以下是51单片机C语言实例的一些介绍。
实例一:LED 灯闪烁
下面是51单片机C语言实现LED灯闪烁的代码:
//定义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小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!