急求用单片机 AT89C52 74LS164驱动的四位一体共阴数码管从0000~9999循环循环累加显示的程序
为什么要要求7 4 S1 6 4 ? ,HH,HL,M,MH,ML,S,S,SH,SL,AH,AM,AS,AHH,AHL,AMH,AML,AML,ASH,ASL,ASL,A,A,B,C; sbitdula = p2 ^6 ; sbitwela = p2 ^7 ; sbitdian = p0^7 ; sbitfm = p2 ^3 ; sbitkey1 = p3 ^4 ; sbitkey2 = p3 ^5 ; sitkey3 = p3 ^6 ; sbitkey4 = p3 ^7 ; sbitd1 = p1 ^0; UCHARCODETABLE [] = {0x3 F,0x06 .0x5 b,0x4 f,0x6 6 .0x6 d,0x7 d,ucharmh,ucharmh,uchararml,uchararml,ucharsh,ucharsl); //显示功能voe middleay(uintz); //延迟函数voidInit(); //初始化函数voidchan(); //时间调整功能UCharararm(Ucharah,Ucharam); /lime警报功能UChartrans(Ucharh,Uchararm,Uchars); //显示转换函数voidTime(); //时间函数voidmain(){init(); //初始化(1 ){alarm(); //计算闹钟chan(); // 时间 (); //时间if(ah == h && am == m){if(s%2 == 0)fm = 0; elsefm = 1 ;} if(!(ah = h && am == m))fm = 1 ;}}}} uchartrans(ucharh,ucharm,ucharm,uchars)//时间转换{// a = h; // b = m; // C = S; HH = H/1 0; HL = H%1 0; MH = M/1 0; ml = m%1 0; SH = S/1 0; SL = S%1 0; 返回(HH,HL,MH,ML,SH,SL);} voidTime()//时间函数{if(aa == 2 0){aa = 0; S ++; // fm = 1 ; if(s == 6 0){s = 0; M ++; if(m == 6 0){m = 0){m = 0; H ++; if(h == 2 4 )h = 0;}}} trans(h,m,s); 显示(HH,HL,MH,ML,SH,SL); // return(h,m,s);} voidchan()//调整行时行数{if(key1 == 0){h ++; 延迟(2 00); if(h == 2 4 )h = 0;} if(key2 == 0){m ++; 延迟(2 00); if(m == 6 0){m = 0; H ++; 如果(h == 2 4 )h = 0;}}} uchararm(ucharh,ucharm)//计算闹钟函数{loop:if(key3 == 0){while(1 ){if(key1 == 0) {ah + ah + +; 延迟(2 00); 如果(ah == 2 4 )ah = 0;} if(key2 == 0){am ++; 延迟(2 00); if(m == 6 0){am = 0; ah ++; if(ah == 2 4 )ah = 0;}} trans(ah,am,as); di Play(HH,HL,MH,ML,SH,SL); if(key4 == 0)gotOloop;}} return = z; x> 0; x-)for(y = 1 1 0; y> 0; y-);} voiddisplay(ucharhh,ucharhl,ucharmh,ucharmh,ucharml,ucharml,ucharsh,ucharsh,ucharsl)// display函数{dula = 1 ; p0 =表[HH]; dua = 0; p0 = 0xff; wela = 1 ; p0 = 0xfe; wela = 0; 延迟(1 ); d ula = 1 ; p0 = table [hl]; dian = 1 ; dua = 0; p0 = 0xff; wela = 1 ; p0 = 0x7 d; wela = 0; 延迟(1 ); dua = 1 ; p0 =表[MH]; dua = 0; p0 = 0xff; wela = 1 ; p0 = 0xfb; wela = 0; 延迟(1 ); dua = 1 ; p0 = table [ml]; dian = 1 ; dua = 0; p0 = 0xff; wela = 1 ; p0 = 0x7 7 ; wela = 0; 延迟(1 ); dua = 1 ; p0 = table [sh]; dua = 0; p0 = 0xff; wela = 1 ; p0 = 0xef; 我们la = 0; 延迟(1 ); dua = 1 ; p0 = table [sl]; dua = 0; p0 = 0xff; wela = 1 ; p0 = 0xdf; wela = 0; 延迟(1 );} voidInit() / / / / / / / / / initialization函数{wela = 0; dua = 0; tmod = 0x01 ; th0 =(6 5 5 3 6 -5 0000)/2 5 6 ; TL0 =(6 5 5 3 6 -5 0000)%2 5 6 ; EA = 1 ; ET0 = 1 ; tr0 = 1 ;} void hours0()中断1 //中断函数{th0 =(6 5 5 3 6 -5 0000)/2 5 6 ; TL0 =(6 5 5 3 6 -5 0000)%2 5 6 ; AA ++;}跪求 共阳数码管4位8段动态显示。 0-9999 从0加到9999.每秒加1. 用c写程序。 单片机加数码管 给50分
点燃几乎是不可能的。需要正确调整普通vin数字管的光芒。
简而言之,该程序会感觉到一个普通的正数字管的动态性能效果,该效果适用于需要0-9 9 9 9 的场景。
52单片机的四位共阳极的数码管从0至99的显示程序
#includekeil4 0到9999用怎么编程?
在我的主要功能中是(1 ){j = 1 ; digitron_put_buf(digitron_0,j%1 0); digitron_put_buf(digitron_1 ,j/1 0%1 0); digitron_put_buf(digitron_put_buf) /1 000%1 0); digitron_dynamic _display();}(省略了中间程序 。……………………………………………………………………………………………………………………………。
。
。
。
。
。
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */{HAL_GPIO_WritePin(digitron[n].port,digitron[n].pin,G pio_pin_reset);} if(numb!= digitron_null){hal_gpio_writepin(digitron [numb] .port,digitron [numb] .pin,gpio_pin_set);/** {LED_ON (digitron_map [dat]);}在调试过程中有警告,.. \ .. \ src \ digitron.c(9 4 ):警告:#2 2 3 -d:函数“ led_on” dect_on declaredimplicitlyled_on(digitron_map [dat]); 数字管显示第一轮是正确的0001 它应该是0001 ,但在第一轮后已经是0000。
分配其他数字时也存在错误,但是串行端口打印是正确的。
请帮助我找到问题
用keil软件编写4位数码管代码,怎样编写0~9999,进行前导0(如123,则前面的0消失)
它可以通过这种方式实现:定义空白段代码(现在您已经实现了数字0〜9 的段代码),因此,所有数字管的片段(IE LED)均已关闭,并且在LED_CODE中定义。[1 0]段代码表的位置(LED_CODE [9 ]匹配编号4 ); 考虑如何自己应用)。
, 好的!