打印
[技术]

请问TLC7135的arm程序有吗?

[复制链接]
659|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
goodluck09876|  楼主 | 2016-7-2 10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
goodluck09876|  楼主 | 2016-7-2 10:31 | 只看该作者
#include
#include <12864A.H>   //调用12864模块
#define  uchar unsigned char
#define  uint unsigned int
sbit ICL7135_POL=P3^5;
sbit ICL7135_BUSY=P3^2;    //接外部中断口
sbit ICL7135_CLK=P3^4;    //接计数器口      
int ICL7135_count;     //计数存储单元
uint ICL7135_out;     //A转D后数据的10000倍,存于此单元
bit ICL7135_flag;     //输出正负的位标志
float ICL7135_ref=2.0;  //定义基准电压变量,方便修改

Init_ICL7135()    //初始化子程序
{
TMOD=0x05;       //T0工作于计数模式
EA=1;
TL0=0;
TH0=0;
EX0=1;
IT0=1;
}
/*---------------------------------------------------------------*/
int0() interrupt 0
{
float a;          //浮点型转整型中间变量
uchar A1,A2,A3,A4,A5,B1,B2,B3,B4,B5;       //万、千、百、十、个位
TR0=0;             //停止计数
ICL7135_count=TH0*256+TL0;     //16方式计得的数
ICL7135_flag=ICL7135_POL;     //判断输出是正是负
a=ICL7135_ref*(ICL7135_count-10000);   
// 正向积分为10000个脉冲ICL7135输出放大10000倍后的采样值              
if(a<0)         
//此句是为了避免因计数误差而导致a<0而出现的错误显示。
(前提ICL7135_count必须为有符号变量)
a=0;
ICL7135_out=a;          //浮点型转整型。
//被测电压的各位
A1=ICL7135_out/10000;      
A2=ICL7135_out%10000/1000;      
A3=ICL7135_out%1000/100;
A4=ICL7135_out%100/10;
A5=ICL7135_out%10;
//AD采样的源码各位
B1=ICL7135_count/10000;
B2=ICL7135_count%10000/1000;
B3=ICL7135_count%1000/100;
B4=ICL7135_count%100/10;
B5=ICL7135_count%10;
/*****************************************************************/
//显示模块 此处用液晶显示器12864 可替换为CH451驱动的数码管
/*****************************************************************/
LCD_Setaddress(1,1);     //送显示的纵横坐标
print("当前测试电压:");
LCD_Setaddress(2,3);
if(ICL7135_flag)      //如果为正数
{
LCD_write_dat(0x30+A1);               
LCD_write_dat(0x2E);     //显示小数点
LCD_write_dat(0x30+A2);
LCD_write_dat(0x30+A3);
LCD_write_dat(0x30+A4);
LCD_write_dat(0x30+A5);
}
else         //如果为负数
{
LCD_write_dat(0x2d);     //显示负号
LCD_write_dat(0x30+A1);
LCD_write_dat(0x2E);
LCD_write_dat(0x30+A2);
LCD_write_dat(0x30+A3);
LCD_write_dat(0x30+A4);
LCD_write_dat(0x30+A5);
}
LCD_Setaddress(3,1);     //送显示的纵横坐标
print("输出源码:");
LCD_Setaddress(4,3);
LCD_write_dat(0x30+B1);               
LCD_write_dat(0x30+B2);
LCD_write_dat(0x30+B3);
LCD_write_dat(0x30+B4);
LCD_write_dat(0x30+B5);
/**********************************************************************/
TL0=0;          //重新转载数据
TH0=0;
}
/*-----------------------------------------------------------*/

void main()
{

LCD_init();           //初始化12864
Init_ICL7135();        //初始化ICL7135
while(1)
{

while(ICL7135_BUSY==0);
TR0=1;
}
}

使用特权

评论回复
板凳
goodluck09876|  楼主 | 2016-7-2 10:33 | 只看该作者
请问 ,这种程序,改为stm32的话,改如何改呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

5843

帖子

20

粉丝