导航:首页 > 操作系统 > 单片机最低位怎么循环显示1到9

单片机最低位怎么循环显示1到9

发布时间:2024-06-23 21:23:29

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;}//濡傛灉杈惧埌涓灏忔椂锛屽皬镞跺姞涓

}

/***************************************************************************/

阅读全文

与单片机最低位怎么循环显示1到9相关的资料

热点内容
androidgetmethod 浏览:794
编程输出1112 浏览:787
加密货币矿怎么样 浏览:206
信息流优化师和程序员 浏览:97
pythonkivy框架 浏览:729
xshell怎样返回上一条命令 浏览:477
python函数内存机制 浏览:825
手机国际网络服务器地址 浏览:396
安卓系统投影仪怎么连接外接设备 浏览:812
阴线向下接进20日均线选股源码 浏览:429
穴位图pdf 浏览:42
高频量化算法 浏览:905
3j指标源码怎么用 浏览:862
出发命令 浏览:180
比较低碳钢和铸铁在压缩 浏览:320
天眼精准打击指标源码 浏览:939
pythondataframe 浏览:453
单片机的继电器原理图怎么画 浏览:897
自学程序员好考吗 浏览:980
还款解压再质押 浏览:972