单片机时钟程序一语句看不懂

作者&投稿:泰购 (若有异议请与网页底部的电邮联系)
c语言做一个51单片机数字时钟问题?if语句对程序影响~

显示00:59后显示1:00是对的,当sec=60时,已经清零了,而fen加了1.

而显示部分是sec<60才执行,等于60时不执行。

#include unsigned char dispbitcnt; //数码管位码扫描变量
unsigned char second; //秒变量
unsigned char minite; //分变量
unsigned char hour; //时变量
unsigned char tcnt; //秒信号产生变量
unsigned char mstcnt; //扫描时间变量 const unsigned char dispcode[10]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90};
//0123456789段码
const unsigned char dispbitcode[6]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf};
//123456位码
unsigned char dispbuf[6]={0,0,0,0,0,0};
//缓冲数组
//**************TMR0中断数码管扫描程序*********************
void Timer0() interrupt 1
{ P2=dispcode[dispbuf[dispbitcnt]];//段码
P1=dispbitcode[dispbitcnt];//位码
dispbitcnt++;
if(dispbitcnt==6)
{dispbitcnt=0; }

tcnt++; //中断产生秒信号
if(tcnt==244)
{tcnt=0; second++; if(second==60) {second=0; minite++; if(minite==60) {minite=0; hour++; if(hour==24) {hour=0; }
}
}
dispbuf[4]=second%10; //得秒钟的低位,送缓冲数组
dispbuf[5]=second/10; //得秒钟的高位,送缓冲数组
dispbuf[2]=minite%10; //得分钟的低位,送缓冲数组
dispbuf[3]=minite/10; //得分钟的高位,送缓冲数组
dispbuf[0]=hour%10; //得时钟的低位,送缓冲数组
dispbuf[1]=hour/10; //得时钟的高位,送缓冲数组

}
TMOD=0x01;
TL0=0x10;
TH0=0xf0; }
///****************1ms延时程序******************
void delay_1ms(unsigned char i)
{
unsigned char j;
for(i=0;i<144;i++)
for(j=0;j<144;j++);
} ///****************按键检测*********************
void key_scan(void)
{
while(1)
{
if(P3_0==0)
{
delay_1ms(20);
if(P3_0==0)
{second++; if(second==60) {second=0; }
dispbuf[4]=second%10;
dispbuf[5]=second/10;
while(P3_0==0);
}
}
if(P3_1==0)
{
delay_1ms(20);
if(P3_1==0)
{
minite++;
if(minite==60)
{minite=0; }
dispbuf[2]=minite%10;
dispbuf[3]=minite/10;
while(P3_1==0);
}
}
if(P3_2==0)
{
delay_1ms(20);
if(P3_2==0)
{
hour++;
if(hour==24)
{
hour=0;
}
}
dispbuf[0]=hour%10;
dispbuf[1]=hour/10;
while(P3_2==0);
}
}
}
//*************主程序********************
void main(void)
{
TMOD=0x01;TL0=0x10;
TH0=0xf0;
while(1)
{
dispbitcnt=0;P1=0x00; //开段码
P2=0x00; //开位码
delay_1ms(200); //延时
delay_1ms(200); //延时
delay_1ms(200); //延时
delay_1ms(200); //延时
P2=0xff; //关位码EA=1;
ET0=1;
TR0=1;
key_scan();
}
}

1602内部是ASCII码的,所以要在液晶上显示对应数字的话,要转成对应的ASCII才行。数字0的ASCII是0X30,数字1是0X31……按这样下去。

所以,要显示0-9这十个数字,就加个0X30好了,比如5,ASCII码是0X35,那么5+0X30=0X35。明白了嘛?

或者你可以写成write_date(‘0’+shi);
这里的'0'加了引号,就代表是ASCII码了,效果和加0X30是一样的。

另外,你想要显示字母,比如A,那么可以写成write_date(‘A’+shi);
当SHI为0时,就是显示A了,当SHI为1时,就显示B了。字母的ASCII也是递增的,你不想去查数字或者字母的ASCII时,你就直接加引号就行了。

write_date(0x30+shi);这句有什么用?写数据为什么要加0x30?

shi,是数字 0~9。

但是,写入 LCD,是需要写入数字的ASCII码。

加上0x30,就是变成该数字所对应的 ASCII 码。

加0x30是把二进制数值转换成ASCII码。0x30是ASCII字符"0“


单片机上机考试,河北工业大学 大三
D.单片机芯片有8个部分组成,即 时钟电路 数据存储器 并行I\/O口,串行口,定时器\/计数器及中断系统 (1) A 中央处理器 (2)A 程序储存器D.单片机有几条指令,分为几类111条 五类D.当程序执行到完X语句处时累加器A的值为(1);当程序执行完Y语句时累加器A的值为(2)(1) B 12 (2) B 01H EE. 二...

单片机程序是从哪输入的?
S52单片机P1.5(MOSI)、P1.6(MISO).P17(SCK).九脚RST,再接一个GND就可以用下载程序了

2000年的AMI BIOS如何修改、编辑加入模块或打开隐藏选项
此项设定就是控制内部缓存(也称为L1或一级缓存)。设定为WriteBack 将产生最好的效能。 System BIOS Cacheable(系统BIOS缓存) 选择Enabled(启用)允许您建立系统BIOS ROM缓存,位置在F0000h-FFFFFh范围,能得到更好的系统性能表现。但是,如果任何一个程序在此内存区内进行写入操作,系统将会报错。设定值为:Enabled(启用...

如何在电脑桌面添加时钟,日历等小工具
为能随时随地看到时间,大家习惯将日历时钟天气等常用软件放在桌面上,这样找起来就更方便。电脑小白装机后发现桌面上没有时钟和日历,总感觉不习惯。这时候需要手动添加一下,接下来和大家说说在电脑桌面添加时钟,日历等小工具的方法。1、点击电脑桌面上的“开始”—“控制面板”。2、点击“程序”。3、...

PPT计时时钟V91绿色免费版PPT计时时钟V91绿色免费版功能简介
10、会议模式:不选择,第一个演示的ppt文件就启用计时;选择,第一个PPT文件,目录清单作用不计时,继续打开演示的第二个PPT文件才计时,方便会议,授课,游戏计时控制。11、使用自动化:幻灯片放映开始倒计时,结束自动关闭,时间到可实现正计时、退出放映、退出程序、二次计时等动作。点击时钟,在剩余...

如何在PPT上插入一个与计算机时间同步的钟表
PPT上插入一个与计算机时间同步的时钟,可以通过插入时间的命令,自动更新时间,这样每次打开PPT时间都是和电脑上一致的。第一步,点击插入--时间与日期命令,如图所示。第二步,在插入的时间日期界面,选择时间的格式并且勾选自动更新 第三步,如图所示,把插入的时间调整大小和位置,放在PPT的合适区域就...

电脑每次开机都要重新设置时间,怎么办?
电脑每次开机都要重新设置时间的问题通常是由于主板电池电量不足或时钟设置不正确导致的。解决方法是更换主板电池并正确设置时钟。首先,当电脑每次开机都需要重新设置时间,最常见的原因是主板上的CMOS电池电量不足。CMOS电池是一个小型的纽扣电池,通常位于主板上,它的作用是为主板上的时钟芯片供电,以保持...

计时器怎么使用
计时器使用的方法:在计时器里设置一段时间,点击开始后便开始倒计时,时间结束后发出声响提醒倒计时已结束。1、时钟功能板块。打开时钟,在标题栏可以看到它分为四个功能板块,分别是:闹钟、时钟、秒表、计时;2、计时器。计时,指的是倒计时,在这里设置一段时间比如30分钟,点击开始后它便从30分钟...

cpu的演变历史
它在数个月内卖出数万套,成为史上第一款下订单后制造的机种。Intel 8080晶体管数目约为6千颗。第3阶段第3阶段(1978——1984年)是16位微处理器时代,通常称为第3代,其典型产品是Intel公司的8086\/8088,Motorola公司的M68000,Zilog公司的Z8000等微处理器。其特点是采用HMOS工艺,集成度(20000~70000晶体管\/片)和...

计算机上的时钟叫做什么
RTC也叫CMOS时钟,它是PC主板上一块依靠电池供电的芯片(晶振)。即使系统断电,RTC也可以维持日期和时间。由于它独立于操作系统,所以也被称为硬件时钟,它为整个计算机提供一个计时标准,是最底层的时钟数据。OS时钟并不是本质意义上的时钟,它实际上是硬件(定时\/计数器)和软件(时钟中断处理程序)...

深圳市13461901141: 单片机时钟程序一语句看不懂 -
常颖洛威: 1602内部是ASCII码的,所以要在液晶上显示对应数字的话,要转成对应的ASCII才行.数字0的ASCII是0X30,数字1是0X31……按这样下去.所以,要显示0-9这十个数字,就加个0X30好了,比如5,ASCII码是0X35,那么5+0X30=0X35.明白了嘛?或者你可以写成write_date('0'+shi); 这里的'0'加了引号,就代表是ASCII码了,效果和加0X30是一样的.另外,你想要显示字母,比如A,那么可以写成write_date('A'+shi); 当SHI为0时,就是显示A了,当SHI为1时,就显示B了.字母的ASCII也是递增的,你不想去查数字或者字母的ASCII时,你就直接加引号就行了.

深圳市13461901141: 请帮忙解读下程序 单片机电子时钟显示 分不够了 谢谢啦 看不懂 望指教 -
常颖洛威: TCON = 0x01; ////////////这边 的中断不是很明白////这个是设置外部中断0的触发方式既IT0=1;外部中断0位边沿触发方式,.我感觉你应该写成IT0=1.IE = 0x8a; // 使能timer0,1 中断 bit scan_key() /////////////////////////这个函数不懂,还有函数里的...

深圳市13461901141: 51单片机之用Ds12C887做时钟,这个时序看不懂,求大虾解释 -
常颖洛威: cs为低时选择12887,否则12887数据线为高阻. AS为地址锁存信号,在AS下降沿将AD0-AD7的数据读入12887 DS为低时12887将锁存地址对应的数据输出到总线AD0-AD7 单片机在DS上升沿读总线AD0-AD7数据

深圳市13461901141: 关于单片机定时器C语言编程,这段程序看不懂 -
常颖洛威: 因为每个CLK后TL0是向上加1的,并且在FFFF变成0000的时候才中断,所以正式的写法应该是(0x10000-SYSCLK)/1000,而对于一个两字节宽的数,0x10000-SYSCLK就等于~SYSCLK,但~SYSCLK更省代码和时间

深圳市13461901141: 单片机c语言时钟程序 -
常颖洛威: 试试这个: void time0_int(void) interrupt 1 {TH0 = (65536-10000) / 256;TL0 = (65536-10000) % 256;i++;if (i == 1) {P1_1 = !P1_1; i = 0;dispa[0]++;if (dispa[0] > 9) {P1_1 = !P1_1; dispa[0] = 0;dispa[1]++;if (dispa[1] > 5) {P1_1 = !P1_1; ...

深圳市13461901141: 51单片机针对时钟指令的意思 -
常颖洛威: 51单片机没有对时钟操作的指令.你所说的两条指令是对外部芯片的时钟线进行操作(像IIC协议的器件的时钟线).setb clk就是把连在单片机引脚上面的器件的时钟置高.CLR CLK就是相反的.

深圳市13461901141: 单片机c语言,流水灯,时钟的程序! -
常颖洛威: 网友您好!流水灯程序如下: #include<reg51.h> sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_2=P3^2; sbit P3...

深圳市13461901141: 帮忙看看单片机的一个c程序,能详细注释一下吗?怎么看不懂啊,请指教 -
常颖洛威: 非常简单的IIC通讯的一个程序,你参考IIC的通讯协议和时序看,非常简单的 我给你简单的注释了下,不明白再给我发邮件todhong@163.com main(void) {uchar i;SDA = 1; //IIC的数据位 SCL = 1; //IIC的时钟位 fill_byte(72,0xff); // 将前72字节填...

深圳市13461901141: 52单片机可编程时钟输出是必须禁止定时器2的中断的,这句话是什么意思?看不懂你说的 -
常颖洛威: 禁不禁止没关系的,定时器2做可编程成时钟输出的时候是不产生中断的,在作为可编程时钟输出的同时也可以用于波特率的产生,两者频率相同.T2CON EQU 0C8H T2MOD EQU 0C9H TR2 EQU T2CON.2 RCAP2L EQU 0CAH RCAP2H EQU ...

深圳市13461901141: 问一段单片机的c语言程序. -
常颖洛威: 任何一位二进制数同 1 异或都会取反任何一位二进制数同 0 异或都保持不变Count=Count^0x800000; 把24位数据最高位取反至于 你为什么要最高位取反的话 要 看你的AD芯片手册了 算法我模拟...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网