#include <reg51.h>\nsbit LED_0 = P1^0; // 8位流水灯连接的IO口\nvoid Delay(unsigned int time) // 延时函数\n{\n unsigned int i, j;\n for(i = 0; i < time; i++)\n for(j = 0; j < 120; j++);\n}\nvoid main()\n{\n while(1)\n {\n LED_0 = 0; // 点亮第一个LED\n Delay(1000); // 延时1秒\n LED_0 = 1;\n Delay(1000);\n LED_0 = 0; // 依次点亮第二个到第八个LED\n Delay(1000);\n LED_0 = 1;\n Delay(1000);\n LED_0 = 0;\n Delay(1000);\n LED_0 = 1;\n Delay(1000);\n LED_0 = 0;\n Delay(1000);\n LED_0 = 1;\n Delay(1000);\n LED_0 = 0;\n Delay(1000);\n LED_0 = 1;\n Delay(1000);\n }\n}\n#include <reg51.h>\nsbit RS = P2^0; // LCD1602连接的RS引脚\nsbit RW = P2^1; // LCD1602连接的RW引脚\nsbit EN = P2^2; // LCD1602连接的EN引脚\nvoid Delay(unsigned int time) // 延时函数\n{\n unsigned int i, j;\n for(i = 0; i < time; i++)\n for(j = 0; j < 120; j++);\n}\nvoid LCD_Write_Command(unsigned char cmd) // 写入指令\n{\n RS = 0; // RS引脚置低,表示写入指令\n RW = 0; // RW引脚置低,表示写入模式\n P0 = cmd; // 将指令写入P0口\n EN = 1; // EN引脚置高,产生一个上升沿\n Delay(1); // 延时1ms\n EN = 0; // EN引脚置低,产生一个下降沿\n}\nvoid LCD_Write_Data(unsigned char dat) // 写入数据\n{\n RS = 1; // RS引脚置高,表示写入数据\n RW = 0; // RW引脚置低,表示写入模式\n P0 = dat; // 将数据写入P0口\n EN = 1; // EN引脚置高,产生一个上升沿\n Delay(1); // 延时1ms\n EN = 0; // EN引脚置低,产生一个下降沿\n}\nvoid LCD_Init() // 初始化LCD1602\n{\n LCD_Write_Command(0x38); // 设置162显示,57点阵,8位数据位\n Delay(5); // 延时5ms\n LCD_Write_Command(0x0C); // 显示开,光标关闭\n Delay(5);\n LCD_Write_Command(0x06); // 光标右移,字符不移动\n Delay(5);\n LCD_Write_Command(0x01); // 清屏\n Delay(5);\n LCD_Write_Command(0x80); // 设置光标位置为第一行第一个字符\n Delay(5);\n}\nvoid Display_Clock() // 显示时钟函数\n{\n unsigned char hour, minute, second;\n hour = 0;\n minute = 0;\n second = 0;\n while(1)\n {\n LCD_Write_Command(0x80); // 设置光标位置为第一行第一个字符\n LCD_Write_Data(hour/10 + 0x30); // 显示小时的十位数\n LCD_Write_Data(hour%10 + 0x30); // 显示小时的个位数\n LCD_Write_Data(':');\n LCD_Write_Data(minute/10 + 0x30); // 显示分钟的十位数\n LCD_Write_Data(minute%10 + 0x30); // 显示分钟的个位数\n LCD_Write_Data(':');\n LCD_Write_Data(second/10 + 0x30); // 显示秒钟的十位数\n LCD_Write_Data(second%10 + 0x30); // 显示秒钟的个位数\n Delay(1000); // 延时1秒\n second++;\n if(second == 60)\n {\n second = 0;\n minute++;\n if(minute == 60)\n {\n minute = 0;\n hour++;\n if(hour == 24)\n {\n hour = 0;\n }\n }\n }\n }\n}\nvoid main()\n{\n LCD_Init(); // 初始化LCD1602\n Display_Clock(); // 显示时钟\n}\n## 所需器件:\n1. 51单片机开发板\n2. 8位流水灯电路,包括8个LED灯和相应的电阻\n3. LCD1602液晶显示屏及其驱动电路\n4. 连接线及杜邦线


原文地址: https://www.cveoy.top/t/topic/pAxn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录