熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2019-7-9 23:44
正文摘要:這張是顯示的圖紙! 單片機(jī)源程序如下:#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit led1=P3^3; sbit led=P1^5; sbit led2=P ... |
|
#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit led1=P3^3; sbit led=P1^5; sbit led2=P3^6; sbit fan=P1^6; sbit ptc=P3^4; sbit we1=P2^6; sbit we2=P2^7; sbit we3=P2^1; sbit we4=P2^0; sbit we5=P2^2; sbit fm=P2^5; sbit sw1=P1^0; sbit sw2=P1^4; sbit sw3=P3^5; sbit sw4=P3^7; uchar code duma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e }; uchar counter, time,time_counter, h; uchar i ; void delay(uint z); void delay(uint z) { while (z--); } void display(uchar mshi,uchar mge,uchar sge,uchar sshi,uchar hge,uchar hshi ) { mge=time_counter%10; mshi=time_counter/10; sge=time/10; sshi=time%10; hge=h/10; hshi=h%10; P0=0XFF; we1=0; we2=1; we3=1; we4=1; P0=duma[mge]; delay(100); P0=0XFF; we1=1; we2=0; we3=1; we4=1; P0=duma[mshi]; delay(100); P0=0XFF; we1=1; we2=1; we3=0; we4=1; P0=duma[sshi]; delay(100); P0=0XFF; we1=1; we2=1; we3=1; we4=0; P0=duma[sge]; delay(100); } void keypros() { if(sw1==0) { delay(10); if(sw1==0&&time!=60) { time+=1; fm=0; delay(10000); fm=1; delay(10000); while(!sw1); } } if(sw2==0) { delay(10); if(sw2==0&&time!=0) { time-=1; fm=0; delay(10000); fm=1; delay(10000); while(!sw2); } } if(sw3==0) { delay(10); if(sw3==0) { fm=0; delay(10000); fm=1; delay(10000); TR1=0; led=1; time=0; time_counter=0; fan=1; ptc=1; while(!sw3); } } if(sw4==0) { delay(10); if(sw4==0) { TR1=~TR1; led=~led; fm=0; delay(10000); fm=1; delay(10000); ptc=~ptc; fan=~fan; while(!sw4); } } } void init() { TMOD=0x10; TH1=0x4b; TL1=0x00; TR1=0; } void main() { init(); led2=0; while(1) { keypros(); if(TF1==1) { TF1=0; TH1=0x4b; TL1=0x00; counter++; } if(counter==20) { counter=0; time_counter++; led1=~led1; } if(time_counter==60) { time--; time_counter=0; } if(time==0) { TR1=0; led=1; led1=1; ptc=1; fan=1; time=60; } display(); } } 現(xiàn) 這個(gè)是正常顯示,,這個(gè)程序是60分鐘,倒計(jì)時(shí),時(shí)間可以調(diào),時(shí)間到停止輸出 LED1,F(xiàn)AN風(fēng)扇,PTC加熱,都停止輸出,這個(gè)程序是用在艾灸上,謝謝大家指點(diǎn)!有你們真好! |
素還真.____ 發(fā)表于 2019-7-10 23:41 WE,就是位選信號(hào)。 |
hantu 發(fā)表于 2019-7-11 10:11 謝謝,上面的顯示函數(shù)寫(xiě)成了靜態(tài)顯示了,改了動(dòng)態(tài)就可以了, |
| 謝謝,知道了,謝謝 |
| 多只數(shù)碼管的顯示,一是要?jiǎng)討B(tài)掃描,二是要消影。 |
你這個(gè)太亂了,一個(gè)注澤都沒(méi),wea、web、wec也不知道是什么
你顯示完一個(gè)數(shù)碼管,要把位清0,不然一輪下來(lái)所有位都在顯示,會(huì)亂碼。 進(jìn)位不知道你指的什么,counter, time,time_counter, h; 看不出來(lái)你這幾個(gè)變量的具體作用
|
| 顯示亂碼我知道了,是數(shù)碼管是共陽(yáng)極的,我用的共陰極的表,才導(dǎo)致顯示亂碼,但這個(gè)顯示函數(shù)怎么寫(xiě),進(jìn)位顯示數(shù)碼管, |
Powered by 單片機(jī)教程網(wǎng)