单片机源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar flag,CPdata,count;
- sbit dula=P2^6;
- sbit wela=P2^7;
- sbit beep=P2^3;
- uchar code table[]={
-
- 0x3F, //"0"
- 0x06, //"1"
- 0x5B, //"2"
- 0x4F, //"3"
- 0x66, //"4"
- 0x6D, //"5"
- 0x7D, //"6"
- 0x07, //"7"
- 0x7F, //"8"
- 0x6F, //"9"
- 0x77, //"A"
- 0x7C, //"B"
- 0x39, //"C"
- 0x5E, //"D"
- 0x79, //"E"
- 0x71, //"F"
- };
- void delay1(uint z)//1ms
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=120;y>0;y--);
- }
- void display(uchar value)
- {
- uchar bai,shi;
- bai=value/16;
- shi=value%16;
- dula=1;
- P0=table[bai];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xfe;
- wela=0;
- delay1(1);
- dula=1;
- P0=table[bai];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xfd;
- wela=0;
- delay1(1);
- dula=1;
- P0=table[bai]|0x80;
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xfb;
- wela=0;
- delay1(1);
- dula=1;
- P0=table[shi];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xf7;
- wela=0;
- delay1(1);
- dula=1;
- P0=table[shi];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xef;
- wela=0;
- delay1(1);
- dula=1;
- P0=table[shi];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xdf;
- wela=0;
- delay1(1);
- }
- void init()
- {
- TMOD=0x20;//设置定时计数器T1为工作方式2,8位自动重装
- TH1=0xfd;//此溢出率为波特率9600
- TL1=0xfd;
- TR1=1; //启动定时器1
- SM1=1; //设置串口工作方式1,10位异步收发器
- REN=1; //允许串口接受位
- EA=1; //开总中断
- ES=1; //开串口中断
- }
- void main()
- {
- init();
- while(1)
- {
- display(CPdata);
- if(CPdata==0xeb)
- beep=0;
- else
- beep=1;
- if(flag==1)
- {
- ES=0;
- flag=0;
- SBUF=CPdata;
- while(!TI);
- TI=0;
- ES=1;
- }
- }
- }
- void timer3() interrupt 4 //串口中断
- {
- RI=0;
- P1=SBUF;
- CPdata=SBUF;
- flag=1;
- }
复制代码
所有资料51hei提供下载:
原创VB上位机控制数码管-流水灯-蜂鸣器.zip
(106.69 KB, 下载次数: 25)
|