|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
现在DeepSeek很火,我试了一下,写代码和ChatGPT相当。很冷门的问题回答的也很到位,比如我让它写YM2163电子琴芯片的51代码,比ChatGPT精准,
ChatGPT的答案是错误的,反复调教也不对。让它写Wincupl编程GAL16V8的代码,写的也很好。当然Kimi写代码也很好。初学者有了基本知识后,让它辅助写代码
学习速度会很快。注意不要复制粘贴,要手工敲代码。以下是我让它写的驱动1602的代码:
#include <reg51.h>
// 定义1602的控制引脚
sbit RS = P0^0; // 数据/命令选择
sbit RW = P0^1; // 读/写选择
sbit E = P0^2; // 使能信号
// 定义数据端口
sbit D0 = P2^0;
sbit D1 = P2^1;
sbit D2 = P2^2;
sbit D3 = P2^3;
sbit D4 = P2^4;
sbit D5 = P2^5;
sbit D6 = P2^6;
sbit D7 = P2^7;
// 延时函数
void delay(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 120; j++);
}
}
// 写命令到1602
void write_command(unsigned char cmd) {
RS = 0; // 选择命令寄存器
RW = 0; // 写操作
P2 = cmd; // 将命令写入数据端口
E = 1; // 使能信号高电平
delay(1); // 短暂延时
E = 0; // 使能信号低电平
}
// 写数据到1602
void write_data(unsigned char data) {
RS = 1; // 选择数据寄存器
RW = 0; // 写操作
P2 = data; // 将数据写入数据端口
E = 1; // 使能信号高电平
delay(1); // 短暂延时
E = 0; // 使能信号低电平
}
// 初始化1602
void init_1602() {
write_command(0x33); // 功能设置:8位数据,两行显示,5x8点阵
write_command(0x32); // 功能设置:8位数据,两行显示,5x8点阵
write_command(0x28); // 功能设置:4位数据,两行显示,5x8点阵
write_command(0x0C); // 显示开,光标关,闪烁关
write_command(0x06); // 写一个字符指针加1
write_command(0x01); // 清屏
delay(2); // 清屏后需要延时
}
// 在1602上显示字符串
void display_string(unsigned char *str) {
while (*str) { // 遍历字符串,直到遇到字符串结束符'\0'
write_data(*str++);
}
}
void main() {
init_1602(); // 初始化1602
write_command(0x80); // 设置光标位置到第一行第一列
display_string("Hello World"); // 显示字符串
while (1); // 空循环
}
|
|