|
步骤及现象:程序下载前,选择stc-isp的IRC频率:12MHz。程序下载后,通过改变开发板杜邦线的连接方式实现不同功能。
(1)电位器旋钮可调电压:
用杜邦线或跳线帽把AIN0与RAD短接。这时数码管前三位显示一个十进制数字,当拧动电位器时数字也跟着变化,变化范围为0.00~5.00。
(2)光敏电阻电压:
用杜邦线把AIN0与J13右侧两个排针同时短接。这时数码管前三位显示一个十进制数字,通过遮挡光敏电阻RL或用手电筒照射光敏电阻RL,数码管显示数字改变,变化范围0.00~5.00。
(3)热敏电阻电压:
用杜邦线把AIN0与J13左侧两个排针同时短接。这时数码管前三位显示一个十进制数字,通过用手触摸热敏电阻NTC,数码管显示数字改变,变化范围0.00~5.00。
#include "stc8.h"
#include "pcf8591_i2c.h"
#include "hc595.h"
void main()
{
int dat;
while(1)
{
dat = ((int)Pcf8591_ReadAD())/51.0*100; // 读取ad值
display(0,dat/100); // 数据在数码管上显示
display(0,19);
display(1,dat%100/10);
display(2,dat%10);
}
}
- #include "hc595.h"
- #include "stc8.h"
- #include <intrins.h>
- sbit P_HC595_SRCLK = P3^5; // 移位时钟
- sbit P_HC595_RCLK = P3^4; // 存储时钟
- sbit P_HC595_SER = P3^7; // 数据输入端
- // 段选:dp、g、f、e、d、c、b、a
- unsigned char const LedData[]=
- {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xFF , 0x00, 0xbf,0x7f,0x89};
- // "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F" "全灭" "全亮" "-" "." "H"
- // 位选:CS1、CS2、CS3、CS4、CS5、CS6、CS7、CS8
- unsigned char const LedPos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- /***** 延时函数,xms是多少就延时多少毫秒 *****/
- void sDelay_ms(unsigned int xms) // 晶振:12MHz
- {
- unsigned int i, j;
- for(i=xms;i>0;i--)
- for(j=921;j>0;j--);
- }
- /*************************************************
- * 函数名:Send_595
- * 描述 :hc595发送一个字节数据
- * 参数 :dat (位选或段选)
- * 返回值:无
- * 调用 :内部调用
- *************************************************/
- void Send_595(unsigned char dat)
- {
- unsigned char i;
- for(i=0; i<8; i++)
- {
- dat <<= 1;
- P_HC595_SER = CY;
- P_HC595_SRCLK = 0; // SH_CP产生一个上升沿,数据移位
- _nop_();
- P_HC595_SRCLK = 1;
- }
- }
- /*************************************************
- * 函数名:display
- * 描述 :pos位数码管显示数字dat
- * 参数 :pos,dat
- * 返回值:无
- * 调用 :外部调用
- *************************************************/
- void display(unsigned char pos,unsigned char dat)
- {
- Send_595(LedPos[pos]); // 发送位选
- Send_595(LedData[dat]); // 发送段选
- P_HC595_RCLK = 0; // ST_CP产生一个上升沿,数据并口输出
- _nop_();
- P_HC595_RCLK = 1;
- sDelay_ms(5); // 延时5ms
- }
复制代码
|
评分
-
查看全部评分
|