#include <reg51.h> #include <intrins.h> #define uchar unsigned char; #define uint unsigned int; sbit adc_rd=P3^7; //RD sbit adc_wr=P3^6; //WR sbit s1=P2^0; sbit s2=P2^1; sbit s3=P2^2; sbit s4=P2^3; unsigned char Disbuf[]={0,0,0}; unsigned char SMG[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}; void display(); void delayms() { unsigned char i; for(i=0;i<250;i++); } void display() { P1=SMG[Disbuf[2]]; s4=0; delayms(); s4=1; P1=SMG[Disbuf[1]]; s3=0; delayms(); s3=1; if(Disbuf[0]==0) { Disbuf[0]=10; P1=SMG[Disbuf[0]]; } else P1=SMG[Disbuf[0]]; s2=0; delayms(); s2=1; P1=0xff; s1=0; delayms(); s1=1; } void adc() { adc_wr=0; _nop_(); adc_wr=1; } unsigned char read() { unsigned char r; P0=0xff; _nop_(); adc_rd=0; _nop_(); r=P0; _nop_(); adc_rd=1; return(r); } void fw(unsigned char dat) { unsigned int i; i=dat*2.353; Disbuf[0]=i/100; Disbuf[1]=(i%100)/10; Disbuf[2]=(i%100)%10; } void main() { unsigned char p; while(1) { adc(); fw(read()); for(p=0;p<20;p++) display(); } }每一条代码的功能解释
时间: 2024-04-27 18:21:55 浏览: 223
1. `#include <reg51.h>`:引入51单片机的头文件,包含了51单片机的所有寄存器和定义。
2. `#include <intrins.h>`:引入一个内部函数头文件,包含了一些汇编指令。
3. `#define uchar unsigned char;`:定义一个uchar类型为无符号字符型,用于简化程序中的类型定义。
4. `#define uint unsigned int;`:定义一个uint类型为无符号整型,用于简化程序中的类型定义。
5. `sbit adc_rd=P3^7;`:定义一个ADC读取引脚,P3.7引脚。
6. `sbit adc_wr=P3^6;`:定义一个ADC写入引脚,P3.6引脚。
7. `sbit s1=P2^0; sbit s2=P2^1; sbit s3=P2^2; sbit s4=P2^3;`:定义4个数码管位选引脚,分别为P2.0~P2.3引脚。
8. `unsigned char Disbuf[]={0,0,0};`:定义一个长度为3的数组Disbuf,用于存放转换后的数字。
9. `unsigned char SMG[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};`:定义一个长度为11的数组SMG,用于将数字转换为数码管控制码。
10. `void display();`:定义一个函数display,用于控制数码管显示数字。
11. `void delayms() { unsigned char i; for(i=0;i<250;i++); }`:定义一个延时函数delayms,用于控制程序执行时间。
12. `void display() {...}`:定义了函数display的具体实现,包括数码管显示控制和延时等。
13. `void adc() {...}`:定义了ADC写入函数adc,用于控制ADC写入信号。
14. `unsigned char read() {...}`:定义了读取函数read,用于读取ADC转换后的数字信号。
15. `void fw(unsigned char dat) {...}`:定义了转换函数fw,用于将读取的数字信号转换为数码管显示的格式。
16. `void main() {...}`:定义了主函数,包括了程序的主要逻辑,不断循环读取信号并进行转换和显示。
阅读全文