求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99

20\u5206\u6c42c51\u5355\u7247\u673a\u9a71\u52a8\u4e09\u4f4d8\u6bb5\u6570\u7801\u7ba1\u663e\u793a0.00-9.99\uff0cc\u8bed\u8a00\u7a0b\u5e8f\u3002

#include
unsigned char temp[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}
unsigned char table[3];
unsigned int num;
void display(unsigned int num)
{
table[0] = temp[num / 100]
table[1] = temp[num / 10 % 10 ] | 0x80;
table[2] = temp[num % 10]

}
void main()
{
EA = 1;
TMOD |= 0x21;
TH0 = 0xfc;
TL0 = 0x18;
ET0 = 1;
TR0 = 1;
while(1)
{
display(num);
}
}

void timer0() interrupt 1//\u5b9a\u65f6\u4e3a2ms
{
static unsigned char i = 0;
static unsigned int j = 0;
TH0 = 0xfc;
TL0 = 0x18;
j++;
if(i < 3)
{
P2 = 0xf8;
P1 = 0x00;
P2 = ~(1 << i);
P1 = table1[i];
i++;
}
else
i = 0;
if(j >= 1000)
{
num++;
if(num > 999)
num = 0;
j = 0;
}
\u7528\u7684\u662f\u5171\u9634\u6781\u6570\u7801\u7ba1\uff0c\u5b9a\u65f6\u5668\u5ef6\u65f6\uff0c\u4e0d\u4f1a\u51fa\u73b0\u6570\u7801\u7ba1\u6296\u52a8\u73b0\u8c61
\u5b9a\u65f6\u5668\u81ea\u52a8\u52a0\uff0c\u4f1a\u4ece0.00-9.99\u81ea\u52a8\u663e\u793a\uff0c9.99\u4ee5\u540e\u53c8\u6e050.00

\u7a0b\u5e8f\u662f\u521a\u505a\u7684\uff0c\u6ca1\u6d4b\u8bd5\u8fc7\uff0c\u4f60\u8bd5\u8bd5\uff0c\u80fd\u7528\u518d\u7ed9\u5206\u5427\u3002P0\u53e3\u662f\u4f4d\u9009\uff0cP2\u53e3\u6bb5\u9009\u3002

#include

unsigned int bittime=0;
unsigned char bitdisplay = 0;

unsigned char mg=0,ms=0;
unsigned char Tab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,
0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00};

void timer0(void) interrupt 1
{

TH0=0xF0;
TL0=0x60;

switch(bitdisplay)
{
case 0:P2=Tab[mg];P0=0xFE;break;
case 1:P2=Tab[ms];P0=0xFD;break;
}
bitdisplay++;
bittime++;
if(bitdisplay>=2) bitdisplay=0;
if(bittime>=500)
{
bittime=0;
mg++;
if(mg>9) {mg=0;ms++;}
if(ms>9) ms=0;
}
}

void main(void)
{
TMOD=0x01;
TH0=0xF0;
TL0=0x60;
TR0=1;

EA=1;
while(1);
}

两位数码管显示00~99,无需采用数码管扫描,通常采用静态显示。

给你提供一个两位数码管00~99循环加法计数的CC语言程序。

程序中,采用了软件延时的方法,每半秒自动加1。

#include<reg52.h>

unsigned char count=0;

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段码

void delay500ms(); //延时子程序声明

void display(unsigned char X); //显示子程序声明

void main()

{

while(1)

{

delay500ms();

count++;

if(count>=100)count=0;

display(count);

}

}

void delay500ms()

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=200;j>0;j--)

for(k=248;k>0;k--);

}

void display(unsigned char X)

{

P0=table[X/10];

P2=table[X%10];

}



硬件连接图先发给我,不然P 口不好定.

驱动二位数码管,先给数码管的端口(如是使用P0口连接)输入一个值,再延时30MS后,再改变另一位数码管的选择位,再往P0口输出数据就OK了,记得给分哦

//================数码延时T=(N*8+7)/3==============================================
void delay(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++);
}

//================数码管4位显示==============================================
void disp(unsigned char *str,unsigned char T)
{
unsigned char i,buf;
buf=0xfe;//1111 1110
for(i=0;i<2;i++)
{
P4=buf;
P0=*(str+i);
delay(T);
buf=(buf<<1)|0x01;//保证每一次只选择一个数码管
}
}
//=========================================================================

无图无真相!要有对应的电路原理图,才能知道怎么编写驱动程序。

  • 鐢ㄤ簲涓鍗曠墖鏈篶璇█缂栫▼,p1鍙f帶鍒跺叓涓彂鍏浜屾瀬绠,,鎸夐敭鏀瑰彉骞垮憡鐏殑鏄...
    绛旓細include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int uchar t,temp,flag;sbit key1=P3^4;sbit key2=P3^5;void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void init(){ TMOD=0x10;TH1=(65536-50000)/256;TL1=(...
  • 51鍗曠墖鏈鎺74ls164椹卞姩鏁扮爜绠鐨凜绋嬪簭
    绛旓細c閲岄潰鏈夌Щ浣嶈鍙ワ紝涓嶈繃涓嶈兘寰幆绉讳綅锛岃瀹炵幇寰幆绉讳綅鐨勮瘽杩樺緱鑷繁鍐欑▼搴忓疄鐜帮紝娌℃湁鐩存帴瀹炵幇寰幆绉讳綅鐨勮鍙ョ殑锛屾垜鍒氬仛杩74ls595鐨勶紝杩欎袱涓姱鐗囧簲璇ュ畬鍏ㄤ竴鏍风殑鍚э紝閮芥槸瀹炵幇涓茶浆骞讹紝浣犲弬鑰冧竴涓嬪惂锛岀▼搴忔槸鎺у埗鏁扮爜绠0鍒9寰幆鏄剧ず锛岀數璺鍥 include <regx52.h> sbit sclk=P2^0;sbit sda=P2^1;sbit ...
  • 璺眰,8255鎺у埗鏁扮爜绠,鍗曠墖鏈篶璇█绋嬪簭;
    绛旓細cs = 0;wr = 0;//鍏佽CPU灏嗘暟鎹垨鎺у埗瀛楀啓鍏8255 // A1=1.A0=1锛涢夋嫨.鎺у埗瀵勫瓨鍣 //鍋囪00001111鎺у埗D鍙g殑鏁版嵁锛屼粠A鍙h緭鍑猴紱11110000鎺у埗D鍙g殑鏁版嵁锛屼粠B鍙h緭鍑猴紱瀹為檯鎯呭喌鐢卞疄闄呯鑴氳繛鎺ュ喅瀹氥俤0 = d1=d2= d3=0;d4 = d5=d6=d7 = 1;A1=0锛汚0=0锛涢夋嫨PA鍙 //pa鍙--鏁扮爜绠$殑...
  • ...娈74HC595椹卞姩鏁扮爜绠¢潤鎬佹樉绀,绋嬪簭璇ユ庝箞鍐欏晩,鐢–璇█
    绛旓細include<reg52.h> define uchar unsigned char define uint unsigned int uchar w;sbit shu=P2^1;sbit shift=P2^0;sbit put=P2^2;void delay1(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void write(uchar dat){ for(w=0;w<8;w++){ shu=dat&0x80;delay...
  • 鎬庢牱鐢51鍗曠墖鏈(闄鐢–璇█)鎺у埗鏁扮爜绠$殑闂儊,骞朵笖杩樿閫氳繃鎸夐敭鎺у埗闂 ...
    绛旓細鎶奝0鎺ュ埌鏁扮爜绠$殑鏁版嵁娈碉紙娈甸夛級锛屼綅閫夐殢鎰忔帴涓狿鍙o紝鍏蜂綋瑕佺湅浣犳槸瑕佺敤鍑犱綅鏁扮爜绠°傛寜閿篃鎺鍙o紝鍐欑▼搴忓氨鏄垽鏂寜閿槸鍚︽寜涓嬶紝濡傛灉灏辨樉绀轰竴涓暟锛岄偅浣犲氨鎵ц浣嶉=0鎴=1.甯屾湜甯埌浣狅紒
  • 51鍗曠墖鏈鐐逛寒涓涓彂鍏浜屾瀬绠$殑c璇█绋嬪簭,鍜屼娇鍏跺彂鍏夌殑鍘熺悊
    绛旓細濡傚浘锛屽彧瑕丳1.1杈撳嚭浣庣數骞筹紝鍙戝厜浜屾瀬绠灏变細瀵奸氬彂鍏夈備覆鑱300娆у鐢甸樆 瀹屾暣绋嬪簭锛歩nclude<reg52.h> sbit P11=P1^1;main(){P11=0;}
  • 浣跨敤鍗曠墖鏈鍒朵綔闂厜杩介愬僵鐏,浣垮叚鍙彂鍏浜屾瀬绠渚濇鎺掑垪浜掔浉杩介愰棯鍏,C...
    绛旓細include<reg52.h> // 杩欐槸涓婂浘鐨勭▼搴忥紝鍙互浠跨湡 璇曡瘯#define uchar unsigned char#define uint unsigned intuchar i;uchar code table[]={0xf6,0xed,0xdb,0xf6,0xed,0xdb}; // 鍙戝厜浜屾瀬绠 鍙互鏈夊緢澶氭柟娉晇oid delay(uint z) // 寤舵椂绋嬪簭{ uint x,y; for(x=z;x>0;x--) ...
  • 杩愮敤51鍗曠墖鏈瀹炵幇4浣8娈礚ED鏁扮爜绠$殑鍔ㄦ佹暟瀛楁樉绀,鍐欏嚭C璇█绋嬪簭
    绛旓細include<reg52.h> define uchar unsigned char define uint unsigned int uchar count;uint disnum;sbit dula=P2^6;sbit wela=P2^7;uchar code tabledu[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};display(uchar,uchar,uchar);delay(...
  • 鐢8051鍗曠墖鏈鍋氭俯搴﹂噰闆嗕笌鏄剧ず(LED鏁扮爜绠)璇烽棶鐢–璇█鎬庝箞鍐欍傜粰涓...
    绛旓細LCD_Write_Char(14,1,'C'); //鍐欏叆瀛楃Cwhile (1) //涓诲惊鐜 {if(ReadTempFlag==1) { ReadTempFlag=0; temp=ReadTemperature(); temperature=(float)temp*0.0625; sprintf(displaytemp,"Temp % 7.3f",temperature);//鎵撳嵃娓╁害鍊 LCD_Write_String(0,1,displaytemp);//鏄剧ず绗簩琛 } }}/*--- ...
  • 濡備綍鐢C璇█缂栫▼鍦≒C鏈轰笂鐢ㄤ覆鍙h皟璇曞姪鎵嬫帶鍒跺彂鍏浜屾瀬绠$殑闂伃,鎴...
    绛旓細浣犲彲浠ヤ娇鐢║SB杞覆鍙h姱鐗嘝L2303鑺墖銆傝繖鏍稰C鏈哄氨鍙互涓嶮CU閫氫俊浜嗭紝鐒跺悗鍙互閫氳繃涓插彛璋冭瘯鍔╂墜鍙戦佸懡浠ゅ幓鎺у埗鍙戝厜浜屾瀬绠浜嗐
  • 扩展阅读:共阴极数码管驱动芯片 ... 一个单片机可以接几个驱动 ... plc数码管0到9程序图 ... 共阴极数码管0-9段码 ... 0x00到0xff对应数字 ... 阴极数码管段码表 ... 共阴极数码管编码表图 ... 共阴极字型码表 ... 3位7段数码管驱动芯片 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网