最近才学的电压表
数字电压表的c语言单片机程序:
- #include<reg52.h>
- #include"intrins.h" /*头文件*/
- #define uchar unsigned char
- #define uint unsigned int
- sbit OE=P2^7;
- sbit EOC=P2^6;
- sbit START=P2^5;
- sbit CLK=P2^4;
- sbit CS0=P2^0;
- sbit CS1=P2^1;
- sbit CS2=P2^2;
- sbit CS3=P2^3; /*定义变量名*/
- uint adval,volt;
- uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
- 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
- void delayms(uint ms) /*延迟函数*/
- {
- uchar j;
- while(ms--)
- {
- for(j=0;j<120;j++);
- }
- }
- void ADC_read() /* adc初始程序 */
- {
- START=0;
- START=1;
- START=0;
- while(EOC==0);
- OE=1;
- adval=P1;
- OE=0;
- }
- void volt_result()
- {
- volt=adval*1.96;
- }
- void disp_volt(uint date) /*led显示程序*/
- {
- CS0=1;CS1=0;CS2=0;CS3=0;
- P0=~((~tab[date/100])|0x80);
- delayms(1);
- P0=0xFF;
- CS0=0;CS1=1;CS2=0;CS3=0;
- P0=tab[date%100/10];
- delayms(1);
- P0=0xFF;
- CS0=0;CS1=0;CS2=1;CS3=0;
- P0=tab[date%10];
- delayms(1);
- P0=0xFF;
- CS0=0;CS1=0;CS2=0;CS3=1;
- P0=tab[date%100];
- delayms(1);
- P0=0xFF;
- }
- void t0()interrupt 1 /*定时中断开启*/
- {
- CLK=~CLK;
- }
- void t0_init() /*定时中断初始程序*/
- {
- TMOD=0x02;
- TH0=0x14;
- TL0=0x00;
- TR0=1;
- ET0=1;
- EA=1;
- }
- void main(void)
- {
- t0_init();
- while(1)
- {
- ADC_read();
- volt_result();
- disp_volt(volt);
- }
- }
复制代码
数码管.zip
(65.63 KB, 下载次数: 48)
|