当前位置:首页 > 基于单片机的简易收款机的设计(3)
sum= y*z; //总价==单价*数量 str[10]=sum/100000; //十万位 str[11]=(sum0000)/10000; //万位 str[12]=((sum0000)000)/1000; //千位 str[13]=(((sum0000)000)00)/100; //百位 str[14]=((((sum0000)000)00)0)/10; //十位 str[15]=((((sum0000)000)00)0); //个位 }
/*****************菜单显示**************************/ //在第一行显示NO. price amount sum(¥) void menu(void) {
inorder(0x80); //光标指向LCD第二行首地址 indata(0x4e); //NO. indata(0x4f);
indata(0x20); //空格 indata(0x44); //price indata(0x4A);
indata(0x20); //空格 indata(0x20); //空格 indata(0x53); //amount indata(0x4C);
indata(0x20); //空格 indata(0x53); //Sum(¥) indata(0x75); indata(0x6D); indata(0x28); indata(0x5C); indata(0x29);
inorder(0xc0); //光标指向LCD第二行首地址 }
/********************************结束************************************/
4、串行口程序代码
#define uchar unsigned char void initial(); void sendd(); void received();
/*****************串行口初始化*************/ void initurat(void) {
TMOD=0x20; TL1=0xe8; TH1=0xe8; SCON=0x50; TR1=1;
25
}
/****************发送数据******************/ void sendd( ) {
uchar i;
for(i=0;i<16;i++) {
TI=0;
SBUF=str[i]; while(TI==0); } }
/****************接收数据**********************/ void received() { uchar i;
// while((i=SBUF)!=0x01); // RI=0;
while(RI==0); for(i=0;i<16;i++) {
RI=0;
str[i]=SBUF; while(RI==0); }
}
/********************************结束************************************/
5、24C64的读写程序代码 #include
#define uchar unsigned char
#define sda P3_6 //定义SDA口 #define scl P3_7 //定义SCL口 //-----------------------------------------------------
void delay(uchar a) //24C64和其他一些地方需要的延时函{
uchar b,c;
for(b=0;b //----------------------------------------------------- void start(void) //开始总线的活动 { sda=1; scl=1; 26 _nop_();_nop_(); _nop_(); _nop_(); sda=0; _nop_();_nop_();_nop_(); _nop_(); } //----------------------------------------------------- void stop(void) //停止总线活动,器件进入低功耗状态 { sda=0; _nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_(); sda=1; _nop_();_nop_();_nop_();_nop_(); } //----------------------------------------------------- void ack(void) //应答信号 { sda=0; _nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_(); scl=0; //允许从器件改变当前SDA的状态,以便于下一次的读入 } //----------------------------------------------------- void noack(void) //无应答信号 { sda=1; _nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_(); scl=0; } //----------------------------------------------------- void checkack(void) { _nop_();_nop_();_nop_();_nop_(); scl=1; if(sda) { scl=0; } else { _nop_();_nop_();_nop_();_nop_(); scl=0; 27 } } //----------------------------------------------------- void send(uchar kk) //写入一个字节 { uchar bitcounter=8; uchar temp; do { temp=kk; scl=0; _nop_();_nop_();_nop_();_nop_(); if((temp&0x80)==0x80) //数据的发送为高位在前,低位在后 sda=1; else sda=0; scl=1; temp=kk<<1; kk=temp; bitcounter--; } while(bitcounter); scl=0; } uchar read(void) //读出一个字节 { uchar temp=0; uchar temp1=0; uchar bitcounter=8; sda=1; do { scl=0; _nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_(); if(sda) temp=temp|0x01; //数据的读入为高位在前,低位在后 else temp=temp&0xfe; if(bitcounter-1) { temp1=temp<<1; temp=temp1; } bitcounter-- } while(bitcounter); //读入8位 28
共分享92篇相关文档