ZKX's LAB

单片机c语言数字时钟 单片机C语言数字时钟设计

2020-07-25知识10

c语言做一个51单片机数字时钟问题?if语句对程序影响 显示00:59后显示1:00是对的,当sec=60时,已经清零了,而fen加了1.而显示部分是sec才执行,等于60时不执行。单片机 数字时钟程序图 要C语言编的。1075831465 @qq.com 单片机程序是基于硬件基础上开发的,你至少添加注释和硬件环境说明,不然大家都不知道怎么帮你。你直接给出代码,也不清楚需要指正什么,这里也没有设置时间/闹钟的代码,发文前应该清楚表达要问的内容。1)假设你的晶振是12MHz,那一个机器周期是1MHz,定时器的最长定时周期是(65535/10^6)你想要1/6秒触发一次中断就必须结合软件计时,为了尽量精确:硬件计时40000次,软件计时25次那么定时器的设这应该是TH1=(65535-40000)%256;TL1=(65535-40000)%256,(注意计数器大部分是加法计数)2)按键监听没有给出思路,也没有处理按键抖动,我只能分析程序:有一个外部中断触发时间设置,P34设置小时、P35设置分钟,但是调整时间后没有进行显示,你至少要让数码管显示结果才能知道怎么调整。求助单片机c语言数字时钟设计程序连接图!!!! 我有汇编语言的,你可以参考下:ORG 0000HLJMP MAIN;上电,转主程序ORG 0003H;外部中断0入口地址LJMP KEY1;跳转至校时程序ORG 001BH;定时器1中断入口地址LJMP TIME;跳转至时间服务程序ORG 0013H;外部中断1入口地址LJMP KEY2;跳转至校分程序ORG 0200HMAIN:MOV TMOD,#10H;设置T1为工作模式1MOV TH1,#3CHMOV TL1,#0F0H;赋初值,定时50msMOV R7,#20;设置中断次数MOV A,#00HMOV 30H,A;秒个位单元清零MOV 31H,A;秒十位单元清零MOV 32H,A;分个位单元清零MOV 33H,A;分十位单元清零MOV 34H,A;时个位单元清零MOV 35H,A;时十位单元清零SETB EA;CPU开中断SETB ET1;允许T1中断SETB EX0;允许外部中断0中断SETB IT0;选择边沿触发方式SETB EX1;允许外部中断1中断SETB IT1;选择边沿触发方式SETB TR1;启动T1定时LCALL DISPLAYSJMP$;等待TIME:MOV TH1,#3CHMOV TL1,#0F0H;重新赋初值SECOND:DJNZ R7,RETURN;判断是否达到1sMOV R7,#20INC 30H;秒个位单元加1MOV A,30HCJNE A,#10,RETURN;如果秒个位等于10,则清零MOV 30H,#00HINC 31H;秒十位单元加1MOV A,31HCJNE A,#6,RETURN;如果秒十位等于6,则清零MOV 31H,#00HINC 32H;分个位单元加1MINENT:MOV A,32H。单片机 用c语言实现数字时钟 图已经给出 #includeunsigned char code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,数字 0 1 2 3 4 5 6 7 8 90x88,0x83,0xc6,0xa1,0x86,0x8e,0xff };A b C d E F 全灭16unsigned char code DSY_WEI[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};位置代码,编号0 全熄灭,1、2、3、…对应自左至右的数码管unsigned char DSY_BUFFER[]={0,0,0xBF,0,0,0xBF,0,0};0xBF 显示“-”unsigned char DSY_IDX,Key_State,hh,mm,ss,s20;sbit K1=P1^0;sbit K2=P1^1;sbit K3=P1^2;void delayms(unsigned char ms){unsigned char i;while(ms-)for(i=0;i;i+);}void Increase_Hour(){if(+hh>;23){hh=0;}DSY_BUFFER[0]=DSY_CODE[hh/10];DSY_BUFFER[1]=DSY_CODE[hh%10];}void Increase_Minute(){if(+mm>;59){mm=0;Increase_Hour();}DSY_BUFFER[3]=DSY_CODE[mm/10];DSY_BUFFER[4]=DSY_CODE[mm%10];}void Increase_Second(){if(+ss>;59){ss=0;Increase_Minute();}DSY_BUFFER[6]=DSY_CODE[ss/10];DSY_BUFFER[7]=DSY_CODE[ss%10];if(cnt_Buff)cnt_Buff+;}void T0_INT()interrupt 1{TH0=(65536-2000)/256;TL0=(65536-2000)%256;P2=DSY_WEI[0];P0=。数字时钟C语言设计.用的是51单片机。 00 秒 00 分 00 小时 还有小数点。 麻烦把程序代码告诉我把 includeincludeunsigned char data dis_digit;unsigned char key_s,key_v;unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};共阳0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00 共阴unsigned char data dis_buf[6];unsigned char data dis_index;unsigned char hour,min,sec;unsigned char sec100;sbit K1=P3^0;sbit K2=P3^1;bit scan_key();void proc_key();void inc_sec();void inc_min();void inc_hour();void display();void delayms(unsigned char ms);void main(void){P1=0x00;P2=0x00;TMOD=0x11;定时器0,1工作模式1,16位定时方式TH1=0xdc;11.0592MHZTH0=0xFC;TL0=0x17;hour=12;min=00;sec=00;sec100=0;dis_buf[0]=dis_code[hour/10];时十位dis_buf[1]=dis_code[hour%10];时个位dis_buf[2]=dis_code[min/10];分十位dis_buf[3]=dis_code[min%10];分个位dis_buf[4]=dis_code[sec/10];秒十位dis_buf[5]=dis_code[sec%10];秒个位dis_digit=0xfe;dis_index=0;TCON=0x01;IE=0x8a;使能timer0,1 中断TR0=1;TR1=1;key_v=0x03;while(1){if(scan_key()){delayms(10);if(scan_key()){key_v=key_s;proc_。求89c52单片机 C语言实现数字时钟程序 result equ 40hone equ 41hten equ 42horg 0000hjmp mainorg 001bhjmp changeorg 0040hmain:MOV IE,#88H;T1 中断 允许mov r2,#10h;X 秒中断一次mov result,#00hmov one,#00hmov ten,#00hmov dptr,#0bfffhmov a,#80hmovx@dptr,a;8255工作方式mov Tmod,#10h;定时器 工作方式acall timershow:mov r1,#02hmov r0,#41hloopLed:mov a,r1mov dptr,#conmovc a,@a+dptr;送给 B口 的数据 以 选择 ledmov dptr,#9fffhmovx@dptr,amov dptr,#tabmov a,@r0movc a,@a+dptrcpl a;查表取得 相应位数上的 数值mov dptr,#8fffh;A口movx@dptr,ainc r0call delaydjnz r1,loopLed;循环 3 次,显示完 三个 ledmov a,resultcjne a,#3ch,nextjmp mainnext:jmp show中断 相应程序change:dec r2mov a,r2jnz ignoreinc resultcall Displaymov r2,#10h;ignore:call timerretitab:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;0-9 的数据 表con:db 00h,40h,80h;修改 LED 选择的表timer:mov tl1,#0cfhmov th1,#03ah;定时50mssetb tr1;启用T1定时器ret;Display:;将采集到得数分解成2个 数mov a,resultmov b,#0ahdiv abmov 。单片机C语言数字时钟设计 去看看郭天祥的c51,上面有现成的程序,直接抄下来,改改就行了。但你要有一定的编程基础。

#中断服务程序#char函数#中断处理#char#c语言

随机阅读

qrcode
访问手机版