不需要寫的那么繁瑣,給你寫個省略示例參考,你按實際電路修改端口定義。
無標題.jpg (98.22 KB, 下載次數: 31)
下載附件
2023-1-14 22:18 上傳
- #include <STC15F2K60S2.H>
- #define uint unsigned int
- #define uchar unsigned char
- #define VCC_V 5 //宏定義電源電壓5V
- uchar code table[]={//共陰數碼管段碼"0~f-."
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71,0x40,0x80};
- uchar data dis_buf[4]; //緩存數組
- uint ADC_result; //ADC轉換結果
- uint ADC_V;
- uchar i,j;
- void main()
- {
- //初始化略
- while(1)
- {
- // ADC_result=GetADCResult(0);//十位ADC程序略
- ADC_result=410;//模擬十位ADC結果
- ADC_V=VCC_V*100*(long)ADC_result/1024;//放大100倍,強制轉換數據類型
- for(i=4;i>0;i--)
- {
- dis_buf[i-1]=ADC_V%10;//由低位到高位分解保存
- ADC_V/=10;
- }
- P0=0x00;//段消隱
- P2&=0xf0;//清位碼
- P2|=~(0x01<<j);//送位碼
- if(j==1)
- P0=table[dis_buf[j]]|0x80;//送段碼加小數點
- else P0=table[dis_buf[j]];//送段碼不加點
- j=++j%4;//循環計數
- }
- }
復制代碼
|