51单片机LCD液晶屏按键电子时钟的设计

畅学单片机 2020-07-31 00:00

液晶屏为JM12864或FYD12864(带字库),我用这两种型号的屏没问题, 4行*8列汉字=32 串行通信 接/口P1.5--P1.7,可根据你的电路修改相应的接口。


#include


#define uchar unsigned char


voidLCD_ini();


void ascii_change(void);


void delay();


void wri_add(uchar com);


void wri_dat(uchar com1);


void shan(void);


void disp();


void tkey(void);


sbit cs=P1^7;


sbit sid=P1^6;


sbit sclk=P1^5;


bit flag=1;


uchar dat,count,f=1;//f测试哪个单元为当前闪烁状态


uchar data cLOCk[3]={23,45,12};


uchar code clockname[10]={“北京时间:”};


uchar data num[6];


/*******主程序*************/


void main()


{


lcd_ini();


count=10;//机器周期为1us,每次定时50ms,此变量用来控制循环次数,在下面赋值为20,共定时1秒


TMOD=0x01;


TL0=0XB0;


TH0=0X3C;


EA=1;


ET0=1;


IT0=1;


EX0=1;


TR0=1;


while(1)


{


back:ascii_change();


disp();


delay();


if(flag==1)


goto back;


tkey();


shan();


delay();


}


}


/****lcd初始化*******/


void lcd_ini()


{


wri_add(0x30);


delay();


wri_add(0x0c);


delay();


wri_add(0x01);


delay();


wri_add(0x06);


delay();


}


/********定时程序*************/


voidtimer1() interrupt 1 using 2


{


TL0=0XB0;


TH0=0X3C;


count--;


if(count==0)


{


count=10;


clock[2]++;//秒//


}


else


goto out;


if(clock[2]==60)


{


clock[2]=0;


clock[1]++;//分//


}


if(clock[1]==60)


{


clock[1]=0;


clock[0]++;


}


if(clock[0]==24)//时//


clock[0]=0;


out:_nop_();


}


/*******十位个位转换成ASCII码************/


void ascii_change(void)


{


num[5]=clock[2]-(clock[2]/10)*10+0x30;


num[4]=clock[2]/10+0x30;


num[3]=clock[1]-(clock[1]/10)*10+0x30;


num[2]=clock[1]/10+0x30;


num[1]=clock[0]-(clock[0]/10)*10+0x30;


num[0]=clock[0]/10+0x30;


}


/********廷时程序*************/


void delay()


{


uchar i,j;


for (i=250;i》0;i--)


for (j=250;j》0;j--);


}


/*****Write address*********/


void wri_add(uchar com)


{


uchar i,j,k;


cs=0;


cs=1;


dat=0xf8;


for(i=1;i《=8;i++)


{


sid=(bit)(dat&0x80);


sclk=0;


sclk=1;


sclk=0;


dat=dat《《1;


}


dat=com;


dat=dat&0xf0;


for(j=1;j《=8;j++)


{


sid=(bit)(dat&0x80);


sclk=0;


sclk=1;


sclk=0;


dat=dat《《1;


}


dat=com;


dat=_cror_(dat,4);// 此为高低四位交换


dat=dat&0xf0;


for(k=1;k《=8;k++)


{


sid=(bit)(dat&0x80);


sclk=0;


sclk=1;


sclk=0;


dat=dat《《1;


}


}


/*********Write data*************/


void wri_dat(uchar com1)


{


uchar i,j,k;


cs=0;


cs=1;


dat=0xfa;


for(i=1;i《=8;i++)


{


sid=(bit)(dat&0x80);


sclk=0;


sclk=1;


sclk=0;


dat=dat《《1;


}


dat=com1;


dat=dat&0xf0;


for(j=1;j《=8;j++)


{


sid=(bit)(dat&0x80);


sclk=0;


sclk=1;


sclk=0;


dat=dat《《1;


}


dat=com1;


dat=_cror_(dat,4);// 此为高低四位交换


dat=dat&0xf0;


for(k=1;k《=8;k++)


{


sid=(bit)(dat&0x80);


sclk=0;


sclk=1;


sclk=0;


dat=dat《《1;


}


}


/******display program***********/


void disp()


{


uchar i,k=0;


wri_add(0x80);


for (i=1;i《=9;i++)


wri_dat(clockname[i-1]);


wri_add(0x90);


for (i=1;i《=6;i++)


{


k++;


if(k==3||k==5)


wri_dat(clockname[8]);//时间之间的冒号。


wri_dat(num[i-1]);


}


}


/*******闪烁程序*************************/


void shan(void)


{


uchar i,k=0;


wri_add(0x90);


if(f==1)


{


num[0]=‘ ’;


num[1]=‘ ’;


}


else


goto next;


for (i=1;i《=6;i++)


{


k++;


if(k==3||k==5)


wri_dat(clockname[8]);//时间之间的冒号。


wri_dat(num[i-1]);


}


goto return1;


next:if(f==2)


{


num[2]=‘ ’;


num[3]=‘ ’;


}


else


goto next1;


for (i=1;i《=6;i++)


{


k++;


if(k==3||k==5)


wri_dat(clockname[8]);//时间之间的冒号。


wri_dat(num[i-1]);


}


goto return1;


next1:if(f==3)


{


num[4]=‘ ’;


num[5]=‘ ’;


}


else


goto return1;


for (i=1;i《=6;i++)


{


k++;


if(k==3||k==5)


wri_dat(clockname[8]);//时间之间的冒号。


wri_dat(num[i-1]);


}


return1:_nop_();


}


/*******外部中断***********/


void intr0() interrupt 0 using 2


{


flag=~flag;//判断是否闪烁位//


TR0=~TR0; //闪关定时否则开定时


f=1;


}


/**********按键程序************/


void tkey(void)


{


uchar judcekey;


judcekey=P1&0x0f;


if(judcekey==0x0f)


goto return2;


/*******移位键*********/


if (judcekey==0x0e)


f++;


if (f==4)


f=1;


/**********加一键*********/


if(judcekey==0x0d)


{clock[f-1]++;}


if (f==1)


{ if (clock[f-1]==24){


clock[f-1]=0;}


}


else{ if (clock[f-1]==60)


clock[f-1]=0;


}


/******减一键***********/


if(judcekey==0x0b)


{clock[f-1]--;}


if (f==1)


{ if (clock[f-1]==0xff){


clock[f-1]=23;}


}


else


{ if (clock[f-1]==0xff)


clock[f-1]=59;


}


return2:_nop_();


}

为了方便大家更好的学习,您还可以关注畅学电子和EDA的公众号,每天推送相关知识,希望能对你的学习有所帮助!

畅学单片机 以单片机为核心,带你全面了解和单片机相关的知识技巧,经验心得。关注我们,一起来学习吧!
评论
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 86浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 85浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 109浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 62浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 53浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 75浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 53浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 73浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 72浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 112浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 40浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 63浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 88浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦