本文共 2147 字,大约阅读时间需要 7 分钟。
本方案采用LS138A系列芯片作为七段显示器控制器,通过I2C通信接口与主控器进行数据交互。系统主要功能包括读取AD通道电压值并通过DAC转换输出,同时支持四个按键进行控制操作。
void delay_ms_key(unsigned char t) { unsigned char ttt; while (t--) { for (ttt = 0; ttt < 125; ttt++) ; }}unsigned char KeySscan(void) { unsigned char keyvaluee = 0xff; if (key_01 == 0) { delay_ms_key(10); if (key_01 == 0) { while (key_01 == 0) ; return(1); } } if (key_02 == 0) { delay_ms_key(10); if (key_02 == 0) { while (key_02 == 0) ; return(2); } } if (key_03 == 0) { delay_ms_key(10); if (key_03 == 0) { while (key_03 == 0) ; return(3); } } if (key_04 == 0) { delay_ms_key(10); if (key_04 == 0) { while (key_04 == 0) ; return(4); } } return(0xff);}
#include#include sbit LS138A = P2 ^ 2;sbit LS138B = P2 ^ 3;sbit LS138C = P2 ^ 4;const unsigned char Disp_Tab[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};unsigned char AD_CHANNEL;unsigned char LedOut[8];sbit key_01 = P3 ^ 0;sbit key_02 = P3 ^ 1;sbit key_03 = P3 ^ 2;sbit key_04 = P3 ^ 3;void main() { int adadadad = 0; unsigned char ad_value = 32; unsigned char anjianzhi = 0xff; TMOD = 0x11; EA = 1; TH0 = (65536 - 3000) / 256; TL0 = (65536 - 3000) % 256; ET0 = 1; TR0 = 1; LedOut[1] = Disp_Tab[ad_value % 100 / 10] | 0x80; LedOut[0] = Disp_Tab[ad_value % 10]; while (1) { anjianzhi = KeySscan(); if (anjianzhi != 0xff) { if (anjianzhi == 1) { ad_value++; DACconversion(PCF8591, 0x40, adadadad); } else if (anjianzhi == 2) { ad_value--; DACconversion(PCF8591, 0x40, adadadad); } LedOut[1] = Disp_Tab[ad_value % 100 / 10] | 0x80; LedOut[0] = Disp_Tab[ad_value % 10]; } }}
转载地址:http://suce.baihongyu.com/