1. 我想要实现单片机: 数码管每隔1s显示从0-9怎么实现 全部代码。
你要c语言的还是汇编的?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uchar x); //延时程序
void ds_50ms(void); //50ms定时,中断程序
void Ptime(uchar); //时间处理函数
void Js_Scan(void); //数码管扫描函数
sbit S1=P2^4; //置位P2.4为数码管1控制位
int num=0,m=0; //定义数据类型
//int code LED_Num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管扫描数组,共阴极
int code LED_Num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极
void main(void) //主函数
{
TMOD=0x01; //定义计时器工作类型
TH0=(65535-50000)/256; //定时器高4位初值
TL0=(65535-50000)%256; //定时器低4位初值
EA=1; //开中断
ET0=1; //开中断
while(1) //建立死循环
{
Js_Scan(); //调用数码管扫描函数
TRO=1;
}
}
void ds_50ms(void) interrupt 1 using 1 //50ms定时中断程序
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++; //执行累加,直到50ms
Ptime(num); //调用时间处理函数
}
void Ptime(uchar time) //时间处理函数
{
if(time==20) //判断是否到1000ms,即1秒
{
num=0; //num清零
m++; //m累加
}
if(m==9) //数码管显示9时,m清零,重新计数
{
m=0;
}
}
void Js_Scan() //数码管扫描函数
{
uchar j; //定义j数据类型
for(j=0;j<5;j++) //建立循环
{
S1=1;P0=LED_Num[m];delay(1);S1=0; //扫描显示位,稍作延时(对于单位数码管可直接置高置低,此为扫描的写法,单位不需要延时,不需要写for循环)
}
}
void delay(uchar x) //延时函数,防止数码管显示不稳定
{
uchar k;
while(x--)
for(k=0;k<125;k++);
}
这个是共阳极的,共阴极改变数组就行了。。。。 将前面的//删掉 将后面数组加上// S1=0;S1=1;就行了。
2. 鐢ㄥ崟鐗囨満鎺у埗涓涓8娈垫暟镰佺★纴鍏跺惊鐜鏄剧ず鏁板瓧0鍒9锛屾疮浣嶆暟瀛楁樉绀烘椂闂翠负涓绉掞纴瀹氭椂锷熻兘鐢ㄥ崟鐗囨満涓鏂鏄剧ず
鍙鎺у埗涓浣嶆暟镰佺℃病鍟ユ剰镐濓纴濡傛灉鍙鏄镰旂┒涓涓嫔掓槸鍙浠ョ殑
缁欎綘涓浠芥垜镊宸卞啓镄勶纴鍒╃敤锲涗綅鏁扮爜绠℃樉绀烘ā𨰾熸椂阍熺殑绋嫔簭钖э纴渚涗綘镰旂┒
鍙﹀栵纴鍐岖粰浣犱竴涓涓浣嶆暟镰佺$殑锛屾槸浣犺佹眰镄勯偅绉
杩欎袱涓閮芥槸鍒╃敤鍗旷墖链虹殑瀹氭椂鍣ㄤ腑鏂𨱒ヤ骇鐢熺掍俊鍙风殑
涓嬮溃杩欎釜鏄 锲涗綅鏁扮爜绠$殑锛屾渶涓嬭竟镄勬槸涓浣嶆暟镰佺$殑锛岀鍙d笉涓镙风殑璇濓纴镊宸辨敼涓
/***************************************************************************/
#include<reg51.h>
sbit p20=P3^7; sbit p21=P3^6; sbit led=P2^7;//鎸夐敭鍙奓ED绔鍙e畾涔
sbit Axs=P1^3; sbit Bxs=P1^2; sbit Cxs=P1^1; sbit Dxs=P1^0;//鏁扮爜绠′綅阃夌鍙
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//鏁扮爜绠℃樉绀虹紪镰
unsigned int h,m,s,t,n;
/***************************************************************************/
void YS(char hs)//寤舵椂鍑芥暟
{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}
/***************************************************************************/
void XS(int xh,int xm) //鏄剧ず瀛愬嚱鏁
{
char d1,d2,d3,d4;
d1=(xh/1)%10; d2=(xh/10)%10;//鍒嗙诲皬镞
d3=(xm/1)%10; d4=(xm/10)%10;//鍒嗙诲垎阍
P0=table[d1];Cxs=0;YS(10);Cxs=1;//灏忔椂涓浣
P0=table[d2];Dxs=0;YS(10);Dxs=1;//灏忔椂鍗佷綅
P0=table[d3];Axs=0;YS(10);Axs=1;//鍒嗛挓涓浣
P0=table[d4];Bxs=0;YS(10);Bxs=1;//鍒嗛挓鍗佷綅
P0=0x7f; P1=0xfd; YS(10); P1=0xff;//灏忔暟镣
}
/***************************************************************************/
void main(void)
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//瀹氭椂鍣ㄥ埯濮嫔寲
while(1)//涓诲惊鐜
{
if(p20==0){YS(10);if(p20==0){h++;if(h>23){h=0;}}while(!p20){XS(h,m);}}
if(p21==0){YS(10);if(p21==0){m++;if(m>59){m=0;}}while(!p21){XS(h,m);}}
XS(h,m);//璋幂敤鏁扮爜绠℃樉绀哄嚱鏁
}
}
/***************************************************************************/
void int1() interrupt 1 //瀹氭椂鍣ㄤ腑鏂
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;t++;
if(t>500){t=0;led=~led;}//LED闂鐑
if(n>1000){n=0;s++;}//濡傛灉杈惧埌涓绉掞纴绉掑姞涓
if(s>59){s=0;m++;}//濡傛灉杈惧埌涓鍒嗭纴鍒嗗姞涓
if(m>59){m=0;h++;}//濡傛灉杈惧埌涓灏忔椂锛屽皬镞跺姞涓
if(h>23){h=0;}//濡傛灉杈惧埌24灏忔椂锛屽皬镞舵竻闆
}
/***************************************************************************/
/***************************************************************************/
#include<reg51.h>
sbit Axs=P1^3;//鏁扮爜绠′綅阃夌鍙
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//鏁扮爜绠℃樉绀虹紪镰
unsigned int h,m,s,t,n;
/***************************************************************************/
void YS(char hs)//寤舵椂鍑芥暟
{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}
/***************************************************************************/
void main(void)
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//瀹氭椂鍣ㄥ埯濮嫔寲
while(1)//涓诲惊鐜
{
P0=table[m];Axs=0;YS(10);Axs=1;//灏忔椂涓浣
}
}
/***************************************************************************/
void int1() interrupt 1 //瀹氭椂鍣ㄤ腑鏂
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;
if(n>1000){n=0;m++;}//濡傛灉杈惧埌涓绉掞纴绉掑姞涓
if(m>9){m=0;}//濡傛灉杈惧埌涓灏忔椂锛屽皬镞跺姞涓
}
/***************************************************************************/