- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机液晶显示程序
硬件电路:51 最小系统,没有采用总线方式,直接的 I/O 形式,包括矩阵键盘,1602 液晶,一个数码管,LED4 个,蜂鸣器等.
//单片机液晶秒表计算器完整修改版本
可以实现两种功能的切换,其他功能自行对照代码研究。4*4 矩阵键盘,第一排前三列是实现小时\分钟\秒的 加.第二排前三列是实现小时\分钟\秒的减.当然还可以通过设置矩阵键盘的键值,来实现加\减\乘\除四则运算, 由数码管显示参与运算的数字以及最终的运算结果
#includereg51.h #includestdio.h #includestdlib.h #includeintrins.h #includeabsacc.h
#define uchar unsigned char #define uint unsigned int #define wc 0x8fff
#define wd 0xdfff #define rc 0xbfff
void displayListChar(unsigned char X, unsigned char Y, uchar DData); uchar dispbuf[]={0,1,2,3,4,5,6,7,8,9,:};
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,0x00
};
uchar second; uchar temp1;
uchar minute; uchar hour; uint tcnt,g; uchar suanfa; bit flag2;
bit flag1=1;//////控制计算器还是液晶调整的状态灯uint i=0,f,m,g,s,t;// for 里的计数值,用于循环
// 用来标记按了什么,如+,-.*,或是/
sbit P2_0=P2^0;// 定义 P2.0 口用来,当计算值超过 15 时,P2.0 所对应的灯闪几下
sbit P2_1=P2^1;// 定义 P2.1 口用来,当除数为 0 时,P2.1 所对应的灯闪几下
sbit P2_2=P2^2; sbit P2_3=P2^3;
uint num[4]={0}; //用于记录外面输入的数字uint Tablenum;
sbit P3_4=P3^4; sbit P3_5=P3^5; void jieguo(void);
void Settime(uchar verify); uchar kbscan(void);///键盘扫描
void Show_Time(void);////显示时间
void Settime(uchar verify);//verify 在这里为调整的意思
uint transfor( uchar key1); void delay400ms(void) ; void delay200ms(void);
void delay5ms(void); void delay_1s(void); void dlms(void); void dlms1(void)
{
uint g=20000;
while(--g); //延时 100mS 钟
}
void clr(void)
{ i=0;
suanfa=0; Tablenum=0; for(f=0;f4;f++)
{
num[f]=0;
} P2_0=1; P2_1=1; P2_2=1; P2_3=0; P3_4=0; P3_5=1; P0=0xc0;
P3_5=0;
}
//***************************************以下单片机液晶显示**********************************
******************
void waitLcd() //just wait until 液晶不忙为止
{
char temp; bit flag=1;
while(flag==1)
{
temp=XBYTE[rc];
if (temp7==0) flag=0; P1=temp;
}
P1=0xff;
}
//just wait until 液晶不忙为止
void WriteCommand_Lcd(bit isCheck,char c)
{
if (isCheck==1) waitLcd(); XBYTE[wc]=c;
}
void writedata(char c)
{
waitLcd(); XBYTE[wd]=c;
}
void LcdInit()
{
delay5ms(); delay5ms(); delay5ms();
WriteComman
您可能关注的文档
最近下载
- SPC控制图的系数和公式表.xls VIP
- 地下水调查报告.pdf
- 2024年山东省青岛市消防支队开发区大队招聘20人历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 广告牌制作、安装及施工方案.docx
- 实训中心副主任岗位职责(多篇).docx VIP
- 第六届(2024年)“信用电力”知识竞赛活动总试题库-下(多选、判断题汇总).docx
- 2024华能煤业陕西矿业分公司招聘13人历年高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 施耐德变频器ATV28实用操作手册_图文.doc
- 二年级有趣的周期问题.ppt
- 变电第一种工作票的填写、使用规定.docx VIP
文档评论(0)