1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、Proteus仿真电路图如下
二、程序见附件也可加群免费获取 #include #include #define uint unsigned int #define uchar unsigned char #define ulong unsigned long /*74HC595所用引脚宏定义*/ ***it HC595_DAT = P2^0; ***it HC595_CLK = P2^1; ***it HC595_STC = P2^2; /*ADC0832所用引脚宏定义*/ ***it OE = P1^0; ***it EOC = P1^1; ***it ST = P1^2; ***it CLK = P1^3; ***it CC = P1^6; ***it BB = P1^5; ***it AA = P1^4; /*数码管段选码数组定义(不带小数点)*/ uchar LEDData[10]= { 0x03, /*0*/ 0x9F, /*1*/ 0x25, /*2*/ 0x0D, /*3*/ 0x99, /*4*/ 0x49, /*5*/ 0x41, /*6*/ 0x1F, /*7*/ 0x01, /*8*/ 0x09 /*9*/ }; /*数码管段选码数组定义(带小数点)*/ uchar LEDData1[10]= { 0x02, /*0*/ 0x9E, /*1*/ 0x24, /*2*/ 0x0C, /*3*/ 0x98, /*4*/ 0x48, /*5*/ 0x40, /*6*/ 0x1E, /*7*/ 0x00, /*8*/ 0x08 /*9*/ }; /*毫秒延时函数ms*/ //void DelayMS(uint ms) //{ // uchar i; // while(ms--) // { // for(i=0;i<120;i++); // } //} /*74HC595显示函数1->显示ADC电压值*/ uchar v1[3] = {0x03,0x03,0x03}; uchar v2[3] = {0x03,0x03,0x03}; uchar v3[3] = {0x03,0x03,0x03}; void Send_HC595_Byte(uchar temp8) { uchar i; for(i = 0; i < 8; i++) { HC595_DAT = temp8&0x01;//从高位开始传输 HC595_CLK = 0; _nop_(); _nop_(); HC595_CLK = 1; temp8=temp8>>1; } } void Display(uchar v1[3],uchar v2[3],uchar v3[3]) { HC595_STC = 0; Send_HC595_Byte(v1[0]); Send_HC595_Byte(v1[1]); Send_HC595_Byte(v1[2]); Send_HC595_Byte(v2[0]); Send_HC595_Byte(v2[1]); Send_HC595_Byte(v2[2]); Send_HC595_Byte(v3[0]); Send_HC595_Byte(v3[1]); Send_HC595_Byte(v3[2]); HC595_STC = 1; } void main() { TMOD = 0x02; TH0 = 0xFB; TL0 = 0xFB; //500KHZ TR0 = 1; ET0 = 1; EA = 1; while(1) { /*通道0转换*/ CC = 0;BB = 0;AA = 0; ST = 0; ST = 1; ST = 0; _nop_();_nop_();_nop_(); while(EOC == 0); OE = 1; v3[2] = LEDData1[P3/100]; v3[1] = LEDData[P3%100/10]; v3[0] = LEDData[P3%10]; OE = 0; /*通道1转换*/ CC = 0;BB = 0;AA = 1; ST = 0; ST = 1; ST = 0; _nop_();_nop_();_nop_(); while(EOC == 0); OE = 1; v2[2] = LEDData[P3/100]; v2[1] = LEDData[P3%100/10]; v2[0] = LEDData[P3%10]; OE = 0; /*通道2转换*/ CC = 0;BB = 1;AA = 0; ST = 0; ST = 1; ST = 0; _nop_();_nop_();_nop_(); while(EOC == 0); OE = 1; v1[2] = LEDData[P3/100]; v1[1] = LEDData[P3%100/10]; v1[0] = LEDData[P3%10]; OE = 0; /*595数码管显示三通道采集到的ADC数值*/ Display(v1,v2,v3); } } void Timer0_INT() interrupt 1 { TH0 = 0xFB; TL0 = 0xFB; CLK = !CLK; } |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9055 浏览 16 评论
4086 浏览 18 评论
1174浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 20:20 , Processed in 1.059206 second(s), Total 78, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号