复制别人的东西也要会,*.c是要建立一个c文件,这是个测量温度的代码,和液晶显示代码,看不到任何时钟的痕迹。
这是1602基础代码,加上定时器和时间进制送去显示即可,定时器时钟看我博客有荔枝,学习单片机首先写好显示器驱动,之后在显示器驱动的辅助下完成其它功能设计。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
uchar code table[]="Welcome to china";
void delay(ms){
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<123;j++);
}
void write_com(uchar com){
E=0;
RS=RW=0;
delay(1);
P0=com;
E=1;delay(1);
E=0;
}
void write_data(uchar dat){
E=RW=0;
RS=1;
delay(1);
P0=dat;
E=1;delay(1);
E=0;
}
void init(){
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main(){
uint i;
init();
write_com(0x80);
for(i=0;i<16;i++){
write_data(table[i]);
}write_com(0xc0);
for(i=0;i<16;i++){
write_data(table[i]);
}
while(1);
}
不知道你这个问题是否已经解决, 如果还没有解决的话:每次更新驱动之后都需要重启才能生效
故障修复日志:
2020.04.04 我一开始更新了蓝牙驱动并没有成功,后来更新IO驱动之后成功。现在推测可能是Win10的更新使得我的驱动出现了问题,导致蓝牙的端口号在操作系统中出现问题。虽然整个IO的运行没有问题,可以通过USB拷贝文件,但是唯独蓝牙的端口出现问题。
2020.05.26 又一次遇到同样的蓝牙问题,但是仅仅更新前两个驱动没有用处,于是有一次打电话给dell,被告知需要尝试更新BIOS驱动,之后解决了问题
询问售后如果以后遇到同样问题如何处理,得到以下答复。
该类故障的处理手段及顺序为:
我每次出现问题都是在更新升级WIN10之后,虽然并不是一更新立即蓝牙失效,但是一般没过几天,所以各位可以考虑通过关闭电脑中的WIN10升级来彻底杜绝蓝牙问题=
根据提供的参考资料和现有的知识,我们可以给出具体的解决方案。
首先,毕业设计题目为基于51单片机的电子时钟。根据提供的参考代码,结合知识和经验,我们可以通过以下步骤实现电子时钟的功能:
硬件准备:准备好51单片机开发板和相关电子元件,例如数码管、按钮等。
电路连接:将数码管和按钮等元件连接到51单片机开发板上。
程序编写:根据所需的功能,编写相应的程序。可参考提供的参考代码,并根据实际需要进行修改和扩展。下面是对参考代码的解读:
#include <reg51.h>
// 定义端口 P20、P21、P22、P23 为数码管控制端口,P27 为蜂鸣器控制端口
sbit P27 = P2^7;
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
sbit P23 = P2^3;
// 延时函数
void sleepUs(unsigned int t);
void sleepMs(unsigned int t);
void main()
{
int l = 0; // 数码管显示的数字
char i, w, j, n;
unsigned char table[] = {0xe7,0xdb,0xbd,0x7e,0x7e,0xbd,0xdb,0xe7};
unsigned char table1[]= {0x81,0xc3,0xe7,0xe7,0xc3,0x81};
char code TAB[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
while(1) {
for(i=3; i>0; i--) {
P1 = j = 0xfe;
sleepMs(50*i);
for(w=0; w<16; w++) {
if(w%2==0) {
// do something
} else {
j <<= 1;
j = j|0x01;
P1 = j;
P20 = 0;
P21 = 0;
P22 = 0;
P23 = 0;
P0 = TAB[l];
l++;
if(l==10) {
l=0;
}
}
P27 = ~P27;
sleepMs(50*i);
}
P1 = j = 0x7f;
sleepMs(50*i);
for(w=0; w<16; w++) {
if(w%2==0) {
// do something
} else {
j >>= 1;
j = j|0x80;
P1 = j;
P20 = 0;
P21 = 0;
P22 = 0;
P23 = 0;
P0 = TAB[l];
l++;
if(l==10) {
l=0;
}
}
P27 = ~P27;
sleepMs(50*i);
}
}
// 其他功能代码
}
}
// 延时函数
void sleepUs(unsigned int t) {
while(--t);
}
void sleepMs(unsigned int t) {
while(t--) {
sleepUs(245);
sleepUs(245);
}
}
功能实现:根据具体需求,实现其他功能,例如时间的获取和显示,闹钟功能等。可以使用定时器来实现时间的精确计时,并在数码管上显示。
测试和调试:将程序下载到51单片机开发板上,并进行测试和调试,确保程序功能正常运行。
总结: 以上是一个基本的电子时钟设计方案,对于其他具体的需求,可以根据实际情况进行相应的修改和扩展。希望以上方案对你的毕业设计有所帮助。如果还有其他问题,请随时提问。