51单片机,1602动态显示时钟,有独立按键(3个k1,k2,k3)分别控制选择,加1,减一程序如下,k1键是功能键,只有k1键按下,k2(加1键)才能按下,我现在k1键按下之后能看到光标的闪烁,按k2键之后,却没有

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 12:27:03
51单片机,1602动态显示时钟,有独立按键(3个k1,k2,k3)分别控制选择,加1,减一程序如下,k1键是功能键,只有k1键按下,k2(加1键)才能按下,我现在k1键按下之后能看到光标的闪烁,按k2键之后,却没有

51单片机,1602动态显示时钟,有独立按键(3个k1,k2,k3)分别控制选择,加1,减一程序如下,k1键是功能键,只有k1键按下,k2(加1键)才能按下,我现在k1键按下之后能看到光标的闪烁,按k2键之后,却没有
51单片机,1602动态显示时钟,有独立按键(3个k1,k2,k3)分别控制选择,加1,减一
程序如下,k1键是功能键,只有k1键按下,k2(加1键)才能按下,我现在k1键按下之后能看到光标的闪烁,按k2键之后,却没有反应,应该是要加1的,
#include
#include
#include "1602.h"
sbit k1=P3^0; //功能键,设置光标闪烁
sbit k2=P3^1; //时间加1
sbit k3=P3^2; //时间减1
uchar code table1[]=" 2013-08-06 Tue ";
uchar code table2[]=" 22:58:50 ";
uchar i,count;
uchar shi,fen,miao,k1num;
void write_sfm(uchar add,uchar date);
void keyscan();
void main(){
\x05ledinit();
\x05shi=22;
\x05fen=58;
\x05miao=50;
\x05//设置定时器
\x05TMOD=0x01;
\x05TH0=0x3c;
\x05TL0=0xb0;
\x05EA=1;
\x05ET0=1;
\x05TR0=1;
\x05\x05
\x05while(table1[i]!='\0')
\x05{
\x05\x05write_data(table1[i]);
\x05\x05i++;
\x05}
\x05write_com(0xc0);
\x05i=0;
\x05while(table2[i]!='\0'){
\x05\x05write_data(table2[i]);
\x05\x05i++;\x05
\x05}
\x05while(1){
\x05\x05keyscan();
\x05\x05if(count==20){\x05//定时器为:50ms*20=1000ms=1s
\x05\x05count=0;
\x05\x05miao++;
\x05\x05if(miao==60){
\x05\x05\x05miao=0;
\x05\x05\x05fen++;
\x05\x05\x05if(fen==60){
\x05\x05\x05\x05fen=0;
\x05\x05\x05\x05shi++;
\x05\x05\x05\x05if(shi==24){
\x05\x05\x05\x05\x05shi=0;
\x05\x05\x05\x05}
\x05\x05\x05\x05write_sfm(3,shi);
\x05\x05\x05}
\x05\x05\x05write_sfm(6,fen);
\x05\x05}
\x05\x05write_sfm(9,miao);
\x05}
\x05}
\x05
\x05
}
void keyscan(){
\x05if(k1==0){
\x05\x05delay(5);
\x05\x05if(k1==0){
\x05\x05\x05k1num++;
\x05\x05\x05while(!k1);\x05 //松手
\x05\x05\x05if(k1num==1){
\x05\x05\x05\x05TR0=0;//关闭中断,计时器停止工作!
\x05\x05\x05\x05write_com(0xc0+10);\x05
\x05\x05\x05\x05write_com(0x0f); //光标闪烁命令发送一次就可以了.
\x05\x05\x05}
\x05\x05\x05if(k1num==2){
\x05\x05\x05\x05write_com(0xc0+7);
\x05\x05\x05}
\x05\x05\x05if(k1num==3){
\x05\x05\x05\x05write_com(0xc0+4);
\x05\x05\x05}
\x05\x05\x05if(k1num==4){
\x05\x05\x05\x05k1num=0;
\x05\x05\x05\x05write_com(0x0c); //取消光标的闪烁
\x05\x05\x05\x05TR0=1;
\x05\x05\x05}
\x05\x05\x05
\x05\x05//按k1键之后才能按k2,k3键
\x05\x05\x05if(k1num!=0){\x05 //说明功能键被按下
\x05\x05\x05\x05if(k2==0){
\x05\x05\x05\x05\x05delay(5);
\x05\x05\x05\x05\x05if(k2==0){
\x05\x05\x05\x05\x05\x05while(!k2); //松手
\x05\x05\x05\x05\x05\x05if(k1num==1){\x05//秒针
\x05\x05\x05\x05\x05\x05\x05miao++;
\x05\x05\x05\x05\x05\x05\x05if(miao==60)
\x05\x05\x05\x05\x05\x05\x05\x05miao=0;
//\x05\x05\x05\x05\x05\x05\x05write_com(0xc0+9);
//\x05\x05\x05\x05\x05\x05\x05write_data(0x30+miao/10);
//\x05\x05\x05\x05\x05\x05\x05write_data(0x30+miao%10);
\x05\x05\x05\x05\x05\x05\x05write_sfm(9,miao);
//\x05\x05\x05\x05\x05\x05\x05write_com(0xc0+10);//将数据指针退一格\x05
\x05\x05\x05\x05\x05\x05}
\x05\x05\x05\x05\x05\x05if(k1num==2){\x05 //分针
\x05\x05\x05\x05\x05\x05\x05fen++;
\x05\x05\x05\x05\x05\x05\x05if(fen==60)
\x05\x05\x05\x05\x05\x05\x05\x05fen=0;
\x05\x05\x05\x05\x05\x05\x05write_sfm(6,fen);
\x05\x05\x05\x05\x05\x05\x05write_com(0xc0+6);
\x05\x05\x05\x05\x05\x05}
\x05\x05\x05\x05\x05\x05if(k1num==3){\x05 //时针
\x05\x05\x05\x05\x05\x05\x05shi++;
\x05\x05\x05\x05\x05\x05\x05if(shi==24)
\x05\x05\x05\x05\x05\x05\x05\x05shi=0;
\x05\x05\x05\x05\x05\x05\x05write_sfm(3,shi);
\x05\x05\x05\x05\x05\x05\x05write_com(0xc0+3);
\x05\x05\x05\x05\x05\x05}
\x05\x05\x05\x05\x05}
\x05\x05\x05\x05}
\x05\x05\x05}\x05\x05\x05
\x05\x05}
\x05\x05
\x05}
}
//刷新时间
void write_sfm(uchar add,uchar date){
\x05uchar shiwei,gewei;
\x05shiwei=date/10;
\x05gewei=date%10;
\x05write_com(0xc0+add);
\x05write_data(0x30+shiwei);
\x05write_data(0x30+gewei);
}
void timer0() interrupt 1{
\x05TH0=0x3c;
\x05TL0=0xb0;
\x05count++;
}

51单片机,1602动态显示时钟,有独立按键(3个k1,k2,k3)分别控制选择,加1,减一程序如下,k1键是功能键,只有k1键按下,k2(加1键)才能按下,我现在k1键按下之后能看到光标的闪烁,按k2键之后,却没有

你好,

我这又一个参考程序,是用郭天祥的TX-1C开发板写的,有3个按键,调节光标,时间加,时间减.引脚方便可以根据自己的开发板更改,其他程序内容不变.

希望我的回答能帮助到你.

51单片机,1602动态显示时钟,有独立按键(3个k1,k2,k3)分别控制选择,加1,减一程序如下,k1键是功能键,只有k1键按下,k2(加1键)才能按下,我现在k1键按下之后能看到光标的闪烁,按k2键之后,却没有 桌面动态时钟哪里有? 51单片机时钟电路图功能如下:1.手用51单片机所要的材料,做一个时钟电路.(最好能给个电路图)2.时钟电路有6个数码管,显示时,分,秒.3.能电流后,时钟从00:00:00开始计时,每秒增加.(由于 51单片机数码管显示电路图哪位有51单片机做数码管静态显示和动态扫描的完整电路图,我想自己做一个.还有就是,哪位高手能告诉我一下学51单片机刚开始要从哪些实验做起?是不是流水灯,蜂 51单片机P1口要上拉电阻吗51单片机P1口要做数码管动态显示,要上拉电阻吗?如果要,用多大的 单片机课程设计led数码管显示时钟秒表功能要求汇编语言程序 单片机时钟频率为6MHZ,机器周期为多少是51单片机 求关于4位LED共阳极温度显示的动态显示程序?51单片机,段选P0口.位选2.0到2.4.第一位显示温度的正负.,第二位和第三位显示温度整数部分,第三位显示小数部分 求基于ds1302芯片和51单片机的电子时钟的程序,led显示,实现小时,分钟,秒和闹铃及整点报时功能,汇编和c语都可以 51单片机 lcd12864显示 用sprintf显示数字,只能显示小于32767的数,大于这51单片机 lcd12864显示 用sprintf显示数字,只能显示小于32767的数,大于这个数的数还是显示32767,而且前面有负号 数码管显示时钟 翻译基于MCS-51单片机的数字时钟系统设计把基于MCS-51单片机的数字时钟系统设计译成英文.谢谢! MCS-51系列单片机有电源类引脚、时钟类引脚、并行输入、输出引脚、控制引脚,共多少个引脚啊? 英语翻译基于单片机的LED显示屏是由多个独立的LED发光二极管封装而成.LED点阵显示屏可以显示数字或符号,通常用来显示时间、速度、系统状态等.本文给出了一种基于MCS-51单片机的16×16 点阵 求:一个基于51单片机的数字时钟程序系统放案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,辅以闹钟模块,温度采集模块、日期提醒、键盘时间调整:相关元器件是:1、温度测量传感器采 51单片机内部时钟电路,里面的振荡器是RC振荡器吗 单片机的6时钟模式与12时钟模式 PIC单片机与51单片机有什么区别?