小弟是刚刚做完单片机课程设计,由于一直在论坛下载大佬们的作品,今天我也回馈下大佬们,有需要的欢迎下载。另附注意:如果想做实物的话要另加分频器,信号源借助单片机接到30管脚,因为ADC0809要有一个时钟信号。上传的资料是纯仿真,不带分频电路。
单片机源程序如下:
- #include<reg51.h>
- unsigned char a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴极数码管
- unsigned char b[4],c=0x01 ;
- sbit START = P2^4; //ad的转换开始高电平使能
- sbit OE = P2^6; //高电平时转化结果输出
- sbit EOC = P2^5; //ad转换开始为低电平,转换结束为高电平
- sbit add_a=P2^2; //信道a
- sbit add_b=P2^1; //信道b
- sbit add_c=P2^0; //信道c
- void delay1ms(unsigned int count) //延时函数 1ms
- {
- unsigned int i,j;
- for(i=0;i<count;i++)
- for(j=0;j<120;j++);
- }
- void show() //数码管显示
- {
- unsigned int r;
- for(r=0;r<4;r++)
- {
- P1=(c<<r); //左移选哪一位数码管
- P3=b[r]; //把要显示的数据送到选中的 数码管里
- if(r==1) //此句以后为显示小数点
- P3=P3|0x80;
- delay1ms(5);
- }
- }
- void main(void)
- {
- unsigned int ch1;
- unsigned int addata=0;
- while(1)
- {
- add_a=0;
- add_b=0;
- add_c=0;//上三句模拟信号输入口选择IN0
- START=0; //后三句根据时序启动ADC0809
- START=1;
- START=0;
- while(EOC==0)
- {
- OE=1;
- }
- addata=P0; //将0809转换出的数据送到addata
- ch1=addata;
- ch1=ch1*3.92;
- OE=0;
- b[0]=a[ch1%10];
- b[1]=a[ch1/10%10];
- b[2]=a[ch1/100%10];
- b[3]=a[ch1/1000];
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
电压表.zip
(62.35 KB, 下载次数: 92)
|